diff --git a/resources/shared/benchmark.mjs b/resources/shared/benchmark.mjs index 3398729f4..7fd490daa 100644 --- a/resources/shared/benchmark.mjs +++ b/resources/shared/benchmark.mjs @@ -132,7 +132,7 @@ export class BenchmarkConnector { async onMessage(event) { const message = event.data; if (message.appId !== this.appId || message.key !== "benchmark-connector") { - console.warning("Invalid message", message); + console.warn("Invalid message", message); return; } diff --git a/resources/shared/step-runner.mjs b/resources/shared/step-runner.mjs index 1b03d270e..3e86cbd9e 100644 --- a/resources/shared/step-runner.mjs +++ b/resources/shared/step-runner.mjs @@ -7,15 +7,13 @@ export class StepRunner { #params; #suite; #step; - #type; - constructor(frame, page, params, suite, step, type) { + constructor(frame, page, params, suite, step) { this.#suite = suite; this.#step = step; this.#params = params; this.#page = page; this.#frame = frame; - this.#type = type; } get page() { @@ -26,6 +24,10 @@ export class StepRunner { return this.#step; } + get isAsync() { + return false; + } + _runSyncStep(step, page) { step.run(page); } @@ -54,7 +56,7 @@ export class StepRunner { performance.mark(syncStartLabel); const syncStartTime = performance.now(); - if (this.#type === "async") + if (this.isAsync) await this._runSyncStep(this.step, this.page); else this._runSyncStep(this.step, this.page); @@ -96,6 +98,10 @@ export class StepRunner { } export class AsyncStepRunner extends StepRunner { + get isAsync() { + return true; + } + async _runSyncStep(step, page) { await step.run(page); } diff --git a/resources/suite-runner.mjs b/resources/suite-runner.mjs index ca87f36f3..33eb20be7 100644 --- a/resources/suite-runner.mjs +++ b/resources/suite-runner.mjs @@ -93,7 +93,7 @@ export class SuiteRunner { const stepRunnerType = this.#suite.type ?? this.params.useAsyncSteps ? "async" : "default"; const stepRunnerClass = STEP_RUNNER_LOOKUP[stepRunnerType]; - const stepRunner = new stepRunnerClass(this.#frame, this.#page, this.#params, this.#suite, step, stepRunnerType); + const stepRunner = new stepRunnerClass(this.#frame, this.#page, this.#params, this.#suite, step); let { syncTime, asyncTime } = await stepRunner.runStep(); this._recordTestResults(step, syncTime, asyncTime); } diff --git a/suites-experimental/pdf-viewer/.gitignore b/suites-experimental/pdf-viewer/.gitignore new file mode 100644 index 000000000..36170a7e3 --- /dev/null +++ b/suites-experimental/pdf-viewer/.gitignore @@ -0,0 +1,2 @@ +node_modules +public diff --git a/suites-experimental/pdf-viewer/README.md b/suites-experimental/pdf-viewer/README.md new file mode 100644 index 000000000..e30df323b --- /dev/null +++ b/suites-experimental/pdf-viewer/README.md @@ -0,0 +1,103 @@ +# PDFViewer-PDFjs + +## Description + +A document viewer built on [pdf.js](https://mozilla.github.io/pdf.js/), the way sites +embed it for inline previews. It exercises work no other suite covers: canvas 2D drawing, +rasterising glyphs from embedded fonts, and JPEG decoding. + +The viewer uses the pdf.js core API directly rather than `pdf_viewer.mjs`, whose render +queue and scroll handling schedule work with timers we don't want inside a measured step. +It has a toolbar and a thumbnail sidebar similar to Firefox's built-in viewer, and lays +pages out in a wrapping grid. The toolbar buttons are inert. + +### Benchmark steps + +`RenderPages` renders `6 * complexity` pages, each into its main canvas and its sidebar +thumbnail, and waits for all of them. The pages render concurrently, since awaiting them +one by one would leave the step idle waiting on the worker. + +Worker startup, fetching the document, `getDocument` and `getPage` all happen before the +app signals `app-ready`, so they are not measured. Nothing is rendered ahead of the step: +pdf.js caches a page's operator list, so rendering early would leave the step with a warm +cache. + +The suite is `remote`. The steps await pdf.js promises, so they run inside the workload's +frame through `BenchmarkConnector`. + +### The requestAnimationFrame shim + +pdf.js splits a render into 15ms chunks and continues each one on the next animation +frame. That ties the step's duration to the display's refresh rate, so for the duration +of the step `requestAnimationFrame` is replaced with a zero-delay timer. The shim is +scoped to the step because the harness's step scheduler also uses animation frames. + +## The document + +`document.pdf` is a 24-page report generated at build time by `scripts/generate-pdf.mjs` +with [PDFKit](https://pdfkit.org/), so what it contains is reviewable as code. The output +is byte-identical between builds. Each page is one of four layouts: text, photos, charts +and a mixed page with a table. Between them they cover three embedded subset fonts, four +JPEG photos, an image soft mask, axial and radial shadings, a tiling pattern, clipping, +dash patterns, blend modes, link annotations, an outline and a tagged structure tree. + +Everything stays inside pdf.js' free tier: no CMaps, no standard fonts and no wasm image +decoders. `npm run analyze:pdf` checks that and exits non-zero if it stops being true. + +## Params + +- `complexity` scales the number of pages rendered. +- `pdfPixelRatio` sets canvas backing-store pixels per CSS pixel. It is pinned to `2` + instead of following `devicePixelRatio`, so every machine rasterises the same number of + pixels. The harness only forwards params it knows, so to override it add it to the + suite's `url` in `suites-experimental/suites.mjs`. + +## Build + +```sh +npm install +npm run build +``` + +`prebuild` regenerates `public/document.pdf`; `public/` is gitignored and `dist/` is +committed. Format sources before building so the committed source map stays in sync. + +## Requirements + +``` +* Node (min version: 24.0.0) +``` + +## Local preview + +Run the dev server from the repo root and load the suite through the harness: + +``` +http://127.0.0.1:8080/?developerMode&iterationCount=1&suites=PDFViewer-PDFjs +``` + +`npm run dev` inside this directory serves the viewer on its own, which is useful for +layout work but does not run the steps. + +## Dev tools + +```sh +npm run generate:pdf # rebuild public/document.pdf +npm run analyze:pdf # report what the document contains +``` + +## Third-party assets + +The photos are NASA and National Park Service works in the public domain; see +[`assets/README.md`](assets/README.md) for sources. + +The toolbar and sidebar icons come from `pdfjs-dist/web/images/` (Apache-2.0) and are +inlined into the built stylesheet. + +The fonts are read from `node_modules` at build time and embedded as subsets: + +| Role | Font | License | +| -------- | ----------------------------------------------------------------- | ----------- | +| Body | [Source Serif 4](https://github.com/adobe-fonts/source-serif) | SIL OFL 1.1 | +| Headings | [Inter](https://github.com/rsms/inter) | SIL OFL 1.1 | +| Code | [Source Code Pro](https://github.com/adobe-fonts/source-code-pro) | SIL OFL 1.1 | diff --git a/suites-experimental/pdf-viewer/assets/README.md b/suites-experimental/pdf-viewer/assets/README.md new file mode 100644 index 000000000..e8dc70375 --- /dev/null +++ b/suites-experimental/pdf-viewer/assets/README.md @@ -0,0 +1,29 @@ +# Photo provenance + +Every photo here is a work of the U.S. federal government (NASA or the National Park +Service) and is therefore in the public domain in the United States. None of them +carries an attribution requirement; the credits below are recorded for traceability, +not because the license demands them. + +Each file was downloaded from Wikimedia Commons at full resolution, then resized and +re-encoded once with ImageMagick and committed in that form: + +```sh +magick -auto-orient -resize -strip -sampling-factor 4:2:0 \ + -quality 82 -interlace none -colorspace sRGB +``` + +They are committed pre-sized so `scripts/generate-pdf.mjs` can embed the JPEG bytes +verbatim as `DCTDecode` streams without re-encoding, which keeps the generated PDF +byte-deterministic. + +| File | Box | Source | Credit | +| ---------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | +| `earth-apollo17.jpg` | 1400x1400 | [The Earth seen from Apollo 17](https://commons.wikimedia.org/wiki/File:The_Earth_seen_from_Apollo_17.jpg) | NASA, Apollo 17 crew, 1972 | +| `earthrise-apollo8.jpg` | 1200x1200 | [NASA-Apollo8-Dec24-Earthrise](https://commons.wikimedia.org/wiki/File:NASA-Apollo8-Dec24-Earthrise.jpg) | NASA / Bill Anders, Apollo 8, 1968 | +| `apollo11-launch.jpg` | 1120x1400 | [Apollo 11 Launch - GPN-2000-000630](https://commons.wikimedia.org/wiki/File:Apollo_11_Launch_-_GPN-2000-000630.jpg) | NASA, 1969 | +| `grand-prismatic-spring.jpg` | 1400x1400 | [Aerial view of Excelsior Geyser and Grand Prismatic Spring]() | National Park Service / Yellowstone National Park, 2006 | + +The four subjects were picked to spread the JPEG decode work: a bright subject on a +large black field, a small low-contrast frame, a grainy daylight scan with a smooth sky +gradient, and a saturated high-frequency aerial. diff --git a/suites-experimental/pdf-viewer/assets/apollo11-launch.jpg b/suites-experimental/pdf-viewer/assets/apollo11-launch.jpg new file mode 100644 index 000000000..586d9a197 Binary files /dev/null and b/suites-experimental/pdf-viewer/assets/apollo11-launch.jpg differ diff --git a/suites-experimental/pdf-viewer/assets/earth-apollo17.jpg b/suites-experimental/pdf-viewer/assets/earth-apollo17.jpg new file mode 100644 index 000000000..de11e9486 Binary files /dev/null and b/suites-experimental/pdf-viewer/assets/earth-apollo17.jpg differ diff --git a/suites-experimental/pdf-viewer/assets/earthrise-apollo8.jpg b/suites-experimental/pdf-viewer/assets/earthrise-apollo8.jpg new file mode 100644 index 000000000..9ed41a5c3 Binary files /dev/null and b/suites-experimental/pdf-viewer/assets/earthrise-apollo8.jpg differ diff --git a/suites-experimental/pdf-viewer/assets/grand-prismatic-spring.jpg b/suites-experimental/pdf-viewer/assets/grand-prismatic-spring.jpg new file mode 100644 index 000000000..83234a049 Binary files /dev/null and b/suites-experimental/pdf-viewer/assets/grand-prismatic-spring.jpg differ diff --git a/suites-experimental/pdf-viewer/dist/assets/index.css b/suites-experimental/pdf-viewer/dist/assets/index.css new file mode 100644 index 000000000..ae52ac639 --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/assets/index.css @@ -0,0 +1 @@ +html,body{margin:0;padding:0;background-color:#2a2a2e;color:#f9f9fa;font-family:system-ui,sans-serif;font-size:12px}.pdf-app{display:flex;flex-direction:column;height:100vh}.pdf-body{display:flex;flex:1 1 auto;min-height:0}.pdf-toolbar{display:flex;flex:0 0 36px;align-items:center;gap:8px;padding:0 6px;background-color:#38383d;border-bottom:1px solid #0c0c0d}.pdf-toolbar-group{display:flex;align-items:center;gap:2px}.pdf-toolbar-group-end{margin-left:auto}.pdf-toolbar-separator{width:1px;height:18px;margin:0 4px;background-color:#5b5b60}.pdf-toolbar-button{display:flex;width:26px;height:26px;align-items:center;justify-content:center;padding:0;border:none;border-radius:3px;background-color:transparent;color:#f9f9fa}.pdf-toolbar-button:before{display:block;width:16px;height:16px;background-color:currentcolor;content:"";-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.pdf-page-field{display:flex;align-items:center;gap:6px}.pdf-page-input{width:30px;padding:3px 4px;border:1px solid #0c0c0d;border-radius:3px;background-color:#2a2a2e;color:#f9f9fa;font:inherit;text-align:end}.pdf-page-total,.pdf-zoom-level{min-width:34px;color:#cfcfd3;text-align:center}.pdf-sidebar{display:flex;flex:0 0 200px;flex-direction:column;background-color:#313134;border-right:1px solid #0c0c0d}.pdf-sidebar-tabs{display:flex;flex:0 0 auto;gap:2px;padding:4px 6px;border-bottom:1px solid #0c0c0d}.pdf-sidebar-tab-active{background-color:#4b4b50}.pdf-thumbnails{display:flex;flex:1 1 auto;flex-direction:column;align-items:center;gap:4px;padding:10px 0;overflow-y:auto}.pdf-thumbnail{display:flex;flex:0 0 auto;flex-direction:column;align-items:center;gap:2px}.pdf-thumbnail-box{background-color:#fff;box-shadow:0 0 0 1px #0c0c0d}.pdf-thumbnail-canvas{display:block}.pdf-thumbnail-label{color:#cfcfd3;font-size:10px}.pdf-viewer{display:flex;flex:1 1 auto;flex-wrap:wrap;align-content:flex-start;justify-content:center;gap:10px;padding:10px;overflow-y:auto}.pdf-page{flex:0 0 auto;background-color:#fff;box-shadow:0 1px 4px #0006}.pdf-page-canvas{display:block}.pdf-toolbar-button[data-icon=views-manager]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20d='M16%204V12.25C16%2012.7804%2015.7893%2013.2891%2015.4142%2013.6642C15.0391%2014.0393%2014.5304%2014.25%2014%2014.25H2C1.46957%2014.25%200.960859%2014.0393%200.585786%2013.6642C0.210714%2013.2891%200%2012.7804%200%2012.25V4C0%203.46957%200.210714%202.96086%200.585786%202.58579C0.960859%202.21071%201.46957%202%202%202H14C14.5304%202%2015.0391%202.21071%2015.4142%202.58579C15.7893%202.96086%2016%203.46957%2016%204ZM1.25%203.85V12.4L1.85%2013H6.75V3.25H1.85L1.25%203.85ZM14.15%2013H8V3.25H14.15L14.75%203.85V12.4L14.15%2013ZM5.35355%2010.1464C5.44732%2010.2402%205.5%2010.3674%205.5%2010.5C5.5%2010.6326%205.44732%2010.7598%205.35355%2010.8536C5.25979%2010.9473%205.13261%2011%205%2011H3C2.86739%2011%202.74021%2010.9473%202.64645%2010.8536C2.55268%2010.7598%202.5%2010.6326%202.5%2010.5C2.5%2010.3674%202.55268%2010.2402%202.64645%2010.1464C2.74021%2010.0527%202.86739%2010%203%2010H5C5.13261%2010%205.25979%2010.0527%205.35355%2010.1464ZM5.5%208C5.5%207.86739%205.44732%207.74021%205.35355%207.64645C5.25979%207.55268%205.13261%207.5%205%207.5H3C2.86739%207.5%202.74021%207.55268%202.64645%207.64645C2.55268%207.74021%202.5%207.86739%202.5%208C2.5%208.13261%202.55268%208.25979%202.64645%208.35355C2.74021%208.44732%202.86739%208.5%203%208.5H5C5.13261%208.5%205.25979%208.44732%205.35355%208.35355C5.44732%208.25979%205.5%208.13261%205.5%208ZM5.35355%205.14645C5.44732%205.24021%205.5%205.36739%205.5%205.5C5.5%205.63261%205.44732%205.75979%205.35355%205.85355C5.25979%205.94732%205.13261%206%205%206H3C2.86739%206%202.74021%205.94732%202.64645%205.85355C2.55268%205.75979%202.5%205.63261%202.5%205.5C2.5%205.36739%202.55268%205.24021%202.64645%205.14645C2.74021%205.05268%202.86739%205%203%205H5C5.13261%205%205.25979%205.05268%205.35355%205.14645Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20d='M16%204V12.25C16%2012.7804%2015.7893%2013.2891%2015.4142%2013.6642C15.0391%2014.0393%2014.5304%2014.25%2014%2014.25H2C1.46957%2014.25%200.960859%2014.0393%200.585786%2013.6642C0.210714%2013.2891%200%2012.7804%200%2012.25V4C0%203.46957%200.210714%202.96086%200.585786%202.58579C0.960859%202.21071%201.46957%202%202%202H14C14.5304%202%2015.0391%202.21071%2015.4142%202.58579C15.7893%202.96086%2016%203.46957%2016%204ZM1.25%203.85V12.4L1.85%2013H6.75V3.25H1.85L1.25%203.85ZM14.15%2013H8V3.25H14.15L14.75%203.85V12.4L14.15%2013ZM5.35355%2010.1464C5.44732%2010.2402%205.5%2010.3674%205.5%2010.5C5.5%2010.6326%205.44732%2010.7598%205.35355%2010.8536C5.25979%2010.9473%205.13261%2011%205%2011H3C2.86739%2011%202.74021%2010.9473%202.64645%2010.8536C2.55268%2010.7598%202.5%2010.6326%202.5%2010.5C2.5%2010.3674%202.55268%2010.2402%202.64645%2010.1464C2.74021%2010.0527%202.86739%2010%203%2010H5C5.13261%2010%205.25979%2010.0527%205.35355%2010.1464ZM5.5%208C5.5%207.86739%205.44732%207.74021%205.35355%207.64645C5.25979%207.55268%205.13261%207.5%205%207.5H3C2.86739%207.5%202.74021%207.55268%202.64645%207.64645C2.55268%207.74021%202.5%207.86739%202.5%208C2.5%208.13261%202.55268%208.25979%202.64645%208.35355C2.74021%208.44732%202.86739%208.5%203%208.5H5C5.13261%208.5%205.25979%208.44732%205.35355%208.35355C5.44732%208.25979%205.5%208.13261%205.5%208ZM5.35355%205.14645C5.44732%205.24021%205.5%205.36739%205.5%205.5C5.5%205.63261%205.44732%205.75979%205.35355%205.85355C5.25979%205.94732%205.13261%206%205%206H3C2.86739%206%202.74021%205.94732%202.64645%205.85355C2.55268%205.75979%202.5%205.63261%202.5%205.5C2.5%205.36739%202.55268%205.24021%202.64645%205.14645C2.74021%205.05268%202.86739%205%203%205H5C5.13261%205%205.25979%205.05268%205.35355%205.14645Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=zoom-out]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13.375%209.25C13.5408%209.25%2013.6997%209.18415%2013.8169%209.06694C13.9342%208.94973%2014%208.79076%2014%208.625C14%208.45924%2013.9342%208.30027%2013.8169%208.18306C13.6997%208.06585%2013.5408%208%2013.375%208H2.625C2.45924%208%202.30027%208.06585%202.18306%208.18306C2.06585%208.30027%202%208.45924%202%208.625C2%208.79076%202.06585%208.94973%202.18306%209.06694C2.30027%209.18415%202.45924%209.25%202.625%209.25H13.375Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13.375%209.25C13.5408%209.25%2013.6997%209.18415%2013.8169%209.06694C13.9342%208.94973%2014%208.79076%2014%208.625C14%208.45924%2013.9342%208.30027%2013.8169%208.18306C13.6997%208.06585%2013.5408%208%2013.375%208H2.625C2.45924%208%202.30027%208.06585%202.18306%208.18306C2.06585%208.30027%202%208.45924%202%208.625C2%208.79076%202.06585%208.94973%202.18306%209.06694C2.30027%209.18415%202.45924%209.25%202.625%209.25H13.375Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=zoom-in]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M7.00488%209.75V14C7.00488%2014.1658%207.07073%2014.3247%207.18794%2014.4419C7.30515%2014.5592%207.46412%2014.625%207.62988%2014.625C7.79564%2014.625%207.95461%2014.5592%208.07183%2014.4419C8.18904%2014.3247%208.25488%2014.1658%208.25488%2014V9.75L8.75488%209.25H13.0049C13.1706%209.25%2013.3296%209.18415%2013.4468%209.06694C13.564%208.94973%2013.6299%208.79076%2013.6299%208.625C13.6299%208.45924%2013.564%208.30027%2013.4468%208.18306C13.3296%208.06585%2013.1706%208%2013.0049%208H8.75488L8.25488%207.5V3.25C8.25488%203.08424%208.18904%202.92527%208.07183%202.80806C7.95461%202.69085%207.79564%202.625%207.62988%202.625C7.46412%202.625%207.30515%202.69085%207.18794%202.80806C7.07073%202.92527%207.00488%203.08424%207.00488%203.25V7.5L6.50488%208H2.25488C2.08912%208%201.93015%208.06585%201.81294%208.18306C1.69573%208.30027%201.62988%208.45924%201.62988%208.625C1.62988%208.79076%201.69573%208.94973%201.81294%209.06694C1.93015%209.18415%202.08912%209.25%202.25488%209.25H6.39188L7.00488%209.75Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M7.00488%209.75V14C7.00488%2014.1658%207.07073%2014.3247%207.18794%2014.4419C7.30515%2014.5592%207.46412%2014.625%207.62988%2014.625C7.79564%2014.625%207.95461%2014.5592%208.07183%2014.4419C8.18904%2014.3247%208.25488%2014.1658%208.25488%2014V9.75L8.75488%209.25H13.0049C13.1706%209.25%2013.3296%209.18415%2013.4468%209.06694C13.564%208.94973%2013.6299%208.79076%2013.6299%208.625C13.6299%208.45924%2013.564%208.30027%2013.4468%208.18306C13.3296%208.06585%2013.1706%208%2013.0049%208H8.75488L8.25488%207.5V3.25C8.25488%203.08424%208.18904%202.92527%208.07183%202.80806C7.95461%202.69085%207.79564%202.625%207.62988%202.625C7.46412%202.625%207.30515%202.69085%207.18794%202.80806C7.07073%202.92527%207.00488%203.08424%207.00488%203.25V7.5L6.50488%208H2.25488C2.08912%208%201.93015%208.06585%201.81294%208.18306C1.69573%208.30027%201.62988%208.45924%201.62988%208.625C1.62988%208.79076%201.69573%208.94973%201.81294%209.06694C1.93015%209.18415%202.08912%209.25%202.25488%209.25H6.39188L7.00488%209.75Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=search]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.089%2010.973L13.934%2014.817C13.9918%2014.8754%2014.0605%2014.9218%2014.1364%2014.9534C14.2122%2014.9851%2014.2936%2015.0013%2014.3757%2015.0012C14.4579%2015.0011%2014.5392%2014.9847%2014.6149%2014.9529C14.6907%2014.9211%2014.7594%2014.8746%2014.817%2014.816C14.875%2014.7579%2014.921%2014.6889%2014.9523%2014.613C14.9836%2014.5372%2014.9997%2014.4559%2014.9996%2014.3738C14.9995%2014.2917%2014.9833%2014.2104%2014.9518%2014.1346C14.9203%2014.0588%2014.8741%2013.99%2014.816%2013.932L10.983%2010.1L10.989%209.67299C11.489%208.96674%2011.8152%208.15249%2011.9413%207.29642C12.0674%206.44034%2011.9897%205.5666%2011.7145%204.74621C11.4394%203.92582%2010.9745%203.18192%2010.3578%202.57498C9.74104%201.96804%208.98979%201.51519%208.16509%201.25322C7.34039%200.991255%206.46551%200.927572%205.61157%201.06735C4.75763%201.20712%203.94871%201.54641%203.25057%202.05764C2.55243%202.56887%201.98476%203.23761%201.59371%204.0095C1.20265%204.7814%200.999236%205.63468%201%206.49999C1%207.95868%201.57946%209.35763%202.61091%2010.3891C3.64236%2011.4205%205.04131%2012%206.5%2012C7.689%2012%208.788%2011.62%209.687%2010.978L10.089%2010.973V10.973ZM6.5%2010.75C4.157%2010.75%202.25%208.84299%202.25%206.49999C2.25%204.15699%204.157%202.24999%206.5%202.24999C8.843%202.24999%2010.75%204.15699%2010.75%206.49999C10.75%208.84299%208.843%2010.75%206.5%2010.75Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.089%2010.973L13.934%2014.817C13.9918%2014.8754%2014.0605%2014.9218%2014.1364%2014.9534C14.2122%2014.9851%2014.2936%2015.0013%2014.3757%2015.0012C14.4579%2015.0011%2014.5392%2014.9847%2014.6149%2014.9529C14.6907%2014.9211%2014.7594%2014.8746%2014.817%2014.816C14.875%2014.7579%2014.921%2014.6889%2014.9523%2014.613C14.9836%2014.5372%2014.9997%2014.4559%2014.9996%2014.3738C14.9995%2014.2917%2014.9833%2014.2104%2014.9518%2014.1346C14.9203%2014.0588%2014.8741%2013.99%2014.816%2013.932L10.983%2010.1L10.989%209.67299C11.489%208.96674%2011.8152%208.15249%2011.9413%207.29642C12.0674%206.44034%2011.9897%205.5666%2011.7145%204.74621C11.4394%203.92582%2010.9745%203.18192%2010.3578%202.57498C9.74104%201.96804%208.98979%201.51519%208.16509%201.25322C7.34039%200.991255%206.46551%200.927572%205.61157%201.06735C4.75763%201.20712%203.94871%201.54641%203.25057%202.05764C2.55243%202.56887%201.98476%203.23761%201.59371%204.0095C1.20265%204.7814%200.999236%205.63468%201%206.49999C1%207.95868%201.57946%209.35763%202.61091%2010.3891C3.64236%2011.4205%205.04131%2012%206.5%2012C7.689%2012%208.788%2011.62%209.687%2010.978L10.089%2010.973V10.973ZM6.5%2010.75C4.157%2010.75%202.25%208.84299%202.25%206.49999C2.25%204.15699%204.157%202.24999%206.5%202.24999C8.843%202.24999%2010.75%204.15699%2010.75%206.49999C10.75%208.84299%208.843%2010.75%206.5%2010.75Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=highlight]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='17'%20height='16'%20viewBox='0%200%2017%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M7.10918%2011.66C7.24918%2011.8%207.43918%2011.88%207.63918%2011.88C7.83918%2011.88%208.02918%2011.8%208.16918%2011.66L14.9192%204.91C15.2692%204.57%2015.4592%204.11%2015.4592%203.62C15.4592%203.13%2015.2692%202.67%2014.9192%202.33L13.1292%200.54C12.7892%200.19%2012.3292%200%2011.8392%200C11.3492%200%2010.8892%200.2%2010.5492%200.54L3.79918%207.29C3.50918%207.58%203.50918%208.06%203.79918%208.35L4.38988%208.9407L1.40918%2011.93H5.64918L6.51419%2011.065L7.10918%2011.66ZM7.63918%2010.07L5.38918%207.82V7.81L7.8648%205.33438L10.1198%207.58938L7.63918%2010.07ZM11.1805%206.52872L13.8592%203.85C13.9892%203.72%2013.9892%203.52%2013.8592%203.39L12.0692%201.6C11.9892%201.52%2011.8892%201.5%2011.8392%201.5C11.8392%201.5%2011.6892%201.51%2011.6092%201.59L8.92546%204.27372L11.1805%206.52872Z'%20fill='%23000'/%3e%3cpath%20d='M0.40918%2014H15.4092V16H0.40918V14Z'%20fill='%23000'/%3e%3c/g%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='17'%20height='16'%20viewBox='0%200%2017%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M7.10918%2011.66C7.24918%2011.8%207.43918%2011.88%207.63918%2011.88C7.83918%2011.88%208.02918%2011.8%208.16918%2011.66L14.9192%204.91C15.2692%204.57%2015.4592%204.11%2015.4592%203.62C15.4592%203.13%2015.2692%202.67%2014.9192%202.33L13.1292%200.54C12.7892%200.19%2012.3292%200%2011.8392%200C11.3492%200%2010.8892%200.2%2010.5492%200.54L3.79918%207.29C3.50918%207.58%203.50918%208.06%203.79918%208.35L4.38988%208.9407L1.40918%2011.93H5.64918L6.51419%2011.065L7.10918%2011.66ZM7.63918%2010.07L5.38918%207.82V7.81L7.8648%205.33438L10.1198%207.58938L7.63918%2010.07ZM11.1805%206.52872L13.8592%203.85C13.9892%203.72%2013.9892%203.52%2013.8592%203.39L12.0692%201.6C11.9892%201.52%2011.8892%201.5%2011.8392%201.5C11.8392%201.5%2011.6892%201.51%2011.6092%201.59L8.92546%204.27372L11.1805%206.52872Z'%20fill='%23000'/%3e%3cpath%20d='M0.40918%2014H15.4092V16H0.40918V14Z'%20fill='%23000'/%3e%3c/g%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=free-text]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3%202.5C2.72421%202.5%202.5%202.72421%202.5%203V4.75H1V3C1%201.89579%201.89579%201%203%201H13C14.1042%201%2015%201.89579%2015%203V4.75H13.5V3C13.5%202.72421%2013.2758%202.5%2013%202.5H3Z'%20fill='black'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M11%2015H5V13.5H11V15Z'%20fill='black'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.75%202.25V14.25H7.25V2.25H8.75Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3%202.5C2.72421%202.5%202.5%202.72421%202.5%203V4.75H1V3C1%201.89579%201.89579%201%203%201H13C14.1042%201%2015%201.89579%2015%203V4.75H13.5V3C13.5%202.72421%2013.2758%202.5%2013%202.5H3Z'%20fill='black'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M11%2015H5V13.5H11V15Z'%20fill='black'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.75%202.25V14.25H7.25V2.25H8.75Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=ink]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.49913%2012.6251C2.61913%2012.6251%202.73913%2012.6051%202.85713%2012.5661L6.29013%2011.4201L13.2891%204.4221C14.0191%203.6911%2014.0191%202.5011%2013.2891%201.7701L12.2291%200.710098C11.4971%20-0.0199023%2010.3091%20-0.0199023%209.57713%200.710098L2.57813%207.7091L1.43313%2011.1451C1.29813%2011.5511%201.40213%2011.9931%201.70513%2012.2951C1.92113%2012.5101%202.20613%2012.6251%202.49913%2012.6251ZM10.4611%201.5951C10.7031%201.3511%2011.1021%201.3511%2011.3441%201.5951L12.4051%202.6561C12.6491%202.8991%2012.6491%203.2961%2012.4051%203.5391L11.3401%204.6051L9.39513%202.6601L10.4611%201.5951ZM3.67013%208.3851L8.51013%203.5451L10.4541%205.4891L5.61413%2010.3301L2.69713%2011.3031L3.67013%208.3851Z'%20fill='black'/%3e%3cpath%20d='M14.8169%2013.314L13.0229%2013.862C12.3309%2014.073%2011.5909%2014.111%2010.8859%2013.968L8.80391%2013.551C7.58491%2013.308%206.29791%2013.48%205.18491%2014.036C3.95291%2014.652%202.46691%2014.412%201.49191%2013.436L1.44091%2013.385L0.60791%2014.321C1.46291%2015.175%202.59991%2015.625%203.75291%2015.625C4.42891%2015.625%205.10991%2015.471%205.74391%2015.153C6.60891%2014.721%207.60891%2014.586%208.55891%2014.777L10.6409%2015.194C11.5509%2015.376%2012.5009%2015.327%2013.3879%2015.056L15.1819%2014.508L14.8169%2013.314Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.49913%2012.6251C2.61913%2012.6251%202.73913%2012.6051%202.85713%2012.5661L6.29013%2011.4201L13.2891%204.4221C14.0191%203.6911%2014.0191%202.5011%2013.2891%201.7701L12.2291%200.710098C11.4971%20-0.0199023%2010.3091%20-0.0199023%209.57713%200.710098L2.57813%207.7091L1.43313%2011.1451C1.29813%2011.5511%201.40213%2011.9931%201.70513%2012.2951C1.92113%2012.5101%202.20613%2012.6251%202.49913%2012.6251ZM10.4611%201.5951C10.7031%201.3511%2011.1021%201.3511%2011.3441%201.5951L12.4051%202.6561C12.6491%202.8991%2012.6491%203.2961%2012.4051%203.5391L11.3401%204.6051L9.39513%202.6601L10.4611%201.5951ZM3.67013%208.3851L8.51013%203.5451L10.4541%205.4891L5.61413%2010.3301L2.69713%2011.3031L3.67013%208.3851Z'%20fill='black'/%3e%3cpath%20d='M14.8169%2013.314L13.0229%2013.862C12.3309%2014.073%2011.5909%2014.111%2010.8859%2013.968L8.80391%2013.551C7.58491%2013.308%206.29791%2013.48%205.18491%2014.036C3.95291%2014.652%202.46691%2014.412%201.49191%2013.436L1.44091%2013.385L0.60791%2014.321C1.46291%2015.175%202.59991%2015.625%203.75291%2015.625C4.42891%2015.625%205.10991%2015.471%205.74391%2015.153C6.60891%2014.721%207.60891%2014.586%208.55891%2014.777L10.6409%2015.194C11.5509%2015.376%2012.5009%2015.327%2013.3879%2015.056L15.1819%2014.508L14.8169%2013.314Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=download]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.79407%207.31811H7.86307C7.41807%207.31811%207.19407%207.85711%207.50907%208.17211L10.1911%2010.8541C10.3861%2011.0491%2010.7031%2011.0491%2010.8981%2010.8541L13.5801%208.17211C13.8951%207.85711%2013.6721%207.31811%2013.2261%207.31811H11.2941V4.38211H11.2961V3.13211H11.2941V2.30811H9.79407V3.13211H9.79107V4.38211H9.79507V7.31811H9.79407Z'%20fill='black'/%3e%3cpath%20d='M14%203.13208H12.796V4.38208H14C14.345%204.38208%2014.625%204.66208%2014.625%205.00708V13.0071C14.625%2013.3521%2014.345%2013.6321%2014%2013.6321H2C1.655%2013.6321%201.375%2013.3521%201.375%2013.0071V3.00708C1.375%202.66208%201.655%202.38208%202%202.38208H5.643C5.82%202.38208%205.989%202.45808%206.108%202.58908L7.536%204.17508C7.654%204.30708%207.823%204.38208%208%204.38208H8.291V3.13208H8.278L7.036%201.75208C6.681%201.35808%206.173%201.13208%205.642%201.13208H2C0.966%201.13208%200.125%201.97308%200.125%203.00708V13.0071C0.125%2014.0411%200.966%2014.8821%202%2014.8821H14C15.034%2014.8821%2015.875%2014.0411%2015.875%2013.0071V5.00708C15.875%203.97308%2015.034%203.13208%2014%203.13208Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.79407%207.31811H7.86307C7.41807%207.31811%207.19407%207.85711%207.50907%208.17211L10.1911%2010.8541C10.3861%2011.0491%2010.7031%2011.0491%2010.8981%2010.8541L13.5801%208.17211C13.8951%207.85711%2013.6721%207.31811%2013.2261%207.31811H11.2941V4.38211H11.2961V3.13211H11.2941V2.30811H9.79407V3.13211H9.79107V4.38211H9.79507V7.31811H9.79407Z'%20fill='black'/%3e%3cpath%20d='M14%203.13208H12.796V4.38208H14C14.345%204.38208%2014.625%204.66208%2014.625%205.00708V13.0071C14.625%2013.3521%2014.345%2013.6321%2014%2013.6321H2C1.655%2013.6321%201.375%2013.3521%201.375%2013.0071V3.00708C1.375%202.66208%201.655%202.38208%202%202.38208H5.643C5.82%202.38208%205.989%202.45808%206.108%202.58908L7.536%204.17508C7.654%204.30708%207.823%204.38208%208%204.38208H8.291V3.13208H8.278L7.036%201.75208C6.681%201.35808%206.173%201.13208%205.642%201.13208H2C0.966%201.13208%200.125%201.97308%200.125%203.00708V13.0071C0.125%2014.0411%200.966%2014.8821%202%2014.8821H14C15.034%2014.8821%2015.875%2014.0411%2015.875%2013.0071V5.00708C15.875%203.97308%2015.034%203.13208%2014%203.13208Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=print]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13%204H12V2C12%201.46957%2011.7893%200.960859%2011.4142%200.585786C11.0391%200.210714%2010.5304%200%2010%200L6%200C5.46957%200%204.96086%200.210714%204.58579%200.585786C4.21071%200.960859%204%201.46957%204%202V4H3C2.46957%204%201.96086%204.21071%201.58579%204.58579C1.21071%204.96086%201%205.46957%201%206V11C1%2011.5304%201.21071%2012.0391%201.58579%2012.4142C1.96086%2012.7893%202.46957%2013%203%2013H4V14C4%2014.5304%204.21071%2015.0391%204.58579%2015.4142C4.96086%2015.7893%205.46957%2016%206%2016H10C10.5304%2016%2011.0391%2015.7893%2011.4142%2015.4142C11.7893%2015.0391%2012%2014.5304%2012%2014V13H13C13.5304%2013%2014.0391%2012.7893%2014.4142%2012.4142C14.7893%2012.0391%2015%2011.5304%2015%2011V6C15%205.46957%2014.7893%204.96086%2014.4142%204.58579C14.0391%204.21071%2013.5304%204%2013%204V4ZM10.75%2014.15L10.15%2014.75H5.85L5.25%2014.15V10H10.75V14.15ZM10.75%204H5.25V1.85L5.85%201.25H10.15L10.75%201.85V4V4ZM13%207.6L12.6%208H11.4L11%207.6V6.4L11.4%206H12.6L13%206.4V7.6Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13%204H12V2C12%201.46957%2011.7893%200.960859%2011.4142%200.585786C11.0391%200.210714%2010.5304%200%2010%200L6%200C5.46957%200%204.96086%200.210714%204.58579%200.585786C4.21071%200.960859%204%201.46957%204%202V4H3C2.46957%204%201.96086%204.21071%201.58579%204.58579C1.21071%204.96086%201%205.46957%201%206V11C1%2011.5304%201.21071%2012.0391%201.58579%2012.4142C1.96086%2012.7893%202.46957%2013%203%2013H4V14C4%2014.5304%204.21071%2015.0391%204.58579%2015.4142C4.96086%2015.7893%205.46957%2016%206%2016H10C10.5304%2016%2011.0391%2015.7893%2011.4142%2015.4142C11.7893%2015.0391%2012%2014.5304%2012%2014V13H13C13.5304%2013%2014.0391%2012.7893%2014.4142%2012.4142C14.7893%2012.0391%2015%2011.5304%2015%2011V6C15%205.46957%2014.7893%204.96086%2014.4142%204.58579C14.0391%204.21071%2013.5304%204%2013%204V4ZM10.75%2014.15L10.15%2014.75H5.85L5.25%2014.15V10H10.75V14.15ZM10.75%204H5.25V1.85L5.85%201.25H10.15L10.75%201.85V4V4ZM13%207.6L12.6%208H11.4L11%207.6V6.4L11.4%206H12.6L13%206.4V7.6Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=secondary]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.53406%2013.818L7.99906%208.35203L8.00006%207.64703L2.53606%202.18203C2.41769%202.06965%202.26012%202.00795%202.09692%202.01006C1.93372%202.01218%201.7778%202.07795%201.66239%202.19336C1.54698%202.30877%201.48121%202.46469%201.47909%202.62789C1.47697%202.79109%201.53868%202.94867%201.65106%203.06703L6.58506%207.99803L1.65006%2012.932C1.53754%2013.0503%201.47565%2013.2078%201.47758%2013.371C1.47951%2013.5342%201.54511%2013.6902%201.66039%2013.8057C1.77567%2013.9213%201.93152%2013.9872%202.09472%2013.9895C2.25792%2013.9918%202.41557%2013.9303%202.53406%2013.818ZM8.53406%2013.818L13.9991%208.35203L14.0001%207.64703L8.53606%202.18203C8.4177%202.06965%208.26012%202.00795%208.09692%202.01006C7.93372%202.01218%207.7778%202.07795%207.66239%202.19336C7.54698%202.30877%207.48121%202.46469%207.47909%202.62789C7.47697%202.79109%207.53868%202.94867%207.65106%203.06703L12.5851%207.99803L7.65006%2012.932C7.53754%2013.0503%207.47565%2013.2078%207.47758%2013.371C7.47951%2013.5342%207.54511%2013.6902%207.66039%2013.8057C7.77567%2013.9213%207.93152%2013.9872%208.09472%2013.9895C8.25792%2013.9918%208.41557%2013.9303%208.53406%2013.818Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.53406%2013.818L7.99906%208.35203L8.00006%207.64703L2.53606%202.18203C2.41769%202.06965%202.26012%202.00795%202.09692%202.01006C1.93372%202.01218%201.7778%202.07795%201.66239%202.19336C1.54698%202.30877%201.48121%202.46469%201.47909%202.62789C1.47697%202.79109%201.53868%202.94867%201.65106%203.06703L6.58506%207.99803L1.65006%2012.932C1.53754%2013.0503%201.47565%2013.2078%201.47758%2013.371C1.47951%2013.5342%201.54511%2013.6902%201.66039%2013.8057C1.77567%2013.9213%201.93152%2013.9872%202.09472%2013.9895C2.25792%2013.9918%202.41557%2013.9303%202.53406%2013.818ZM8.53406%2013.818L13.9991%208.35203L14.0001%207.64703L8.53606%202.18203C8.4177%202.06965%208.26012%202.00795%208.09692%202.01006C7.93372%202.01218%207.7778%202.07795%207.66239%202.19336C7.54698%202.30877%207.48121%202.46469%207.47909%202.62789C7.47697%202.79109%207.53868%202.94867%207.65106%203.06703L12.5851%207.99803L7.65006%2012.932C7.53754%2013.0503%207.47565%2013.2078%207.47758%2013.371C7.47951%2013.5342%207.54511%2013.6902%207.66039%2013.8057C7.77567%2013.9213%207.93152%2013.9872%208.09472%2013.9895C8.25792%2013.9918%208.41557%2013.9303%208.53406%2013.818Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=view-thumbnails]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.5%202C3.5%201.72421%203.72421%201.5%204%201.5H5.25C5.52579%201.5%205.75%201.72421%205.75%202V5.25C5.75%205.52579%205.52579%205.75%205.25%205.75H4C3.72421%205.75%203.5%205.52579%203.5%205.25V2ZM4%200C2.89579%200%202%200.895786%202%202V5.25C2%206.35421%202.89579%207.25%204%207.25H5.25C6.35421%207.25%207.25%206.35421%207.25%205.25V2C7.25%200.895786%206.35421%200%205.25%200H4ZM3.5%2010.75C3.5%2010.4742%203.72421%2010.25%204%2010.25H5.25C5.52579%2010.25%205.75%2010.4742%205.75%2010.75V14C5.75%2014.2758%205.52579%2014.5%205.25%2014.5H4C3.72421%2014.5%203.5%2014.2758%203.5%2014V10.75ZM4%208.75C2.89579%208.75%202%209.64579%202%2010.75V14C2%2015.1042%202.89579%2016%204%2016H5.25C6.35421%2016%207.25%2015.1042%207.25%2014V10.75C7.25%209.64579%206.35421%208.75%205.25%208.75H4ZM10.75%201.5C10.4742%201.5%2010.25%201.72421%2010.25%202V5.25C10.25%205.52579%2010.4742%205.75%2010.75%205.75H12C12.2758%205.75%2012.5%205.52579%2012.5%205.25V2C12.5%201.72421%2012.2758%201.5%2012%201.5H10.75ZM8.75%202C8.75%200.895786%209.64579%200%2010.75%200H12C13.1042%200%2014%200.895786%2014%202V5.25C14%206.35421%2013.1042%207.25%2012%207.25H10.75C9.64579%207.25%208.75%206.35421%208.75%205.25V2ZM10.25%2010.75C10.25%2010.4742%2010.4742%2010.25%2010.75%2010.25H12C12.2758%2010.25%2012.5%2010.4742%2012.5%2010.75V14C12.5%2014.2758%2012.2758%2014.5%2012%2014.5H10.75C10.4742%2014.5%2010.25%2014.2758%2010.25%2014V10.75ZM10.75%208.75C9.64579%208.75%208.75%209.64579%208.75%2010.75V14C8.75%2015.1042%209.64579%2016%2010.75%2016H12C13.1042%2016%2014%2015.1042%2014%2014V10.75C14%209.64579%2013.1042%208.75%2012%208.75H10.75Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.5%202C3.5%201.72421%203.72421%201.5%204%201.5H5.25C5.52579%201.5%205.75%201.72421%205.75%202V5.25C5.75%205.52579%205.52579%205.75%205.25%205.75H4C3.72421%205.75%203.5%205.52579%203.5%205.25V2ZM4%200C2.89579%200%202%200.895786%202%202V5.25C2%206.35421%202.89579%207.25%204%207.25H5.25C6.35421%207.25%207.25%206.35421%207.25%205.25V2C7.25%200.895786%206.35421%200%205.25%200H4ZM3.5%2010.75C3.5%2010.4742%203.72421%2010.25%204%2010.25H5.25C5.52579%2010.25%205.75%2010.4742%205.75%2010.75V14C5.75%2014.2758%205.52579%2014.5%205.25%2014.5H4C3.72421%2014.5%203.5%2014.2758%203.5%2014V10.75ZM4%208.75C2.89579%208.75%202%209.64579%202%2010.75V14C2%2015.1042%202.89579%2016%204%2016H5.25C6.35421%2016%207.25%2015.1042%207.25%2014V10.75C7.25%209.64579%206.35421%208.75%205.25%208.75H4ZM10.75%201.5C10.4742%201.5%2010.25%201.72421%2010.25%202V5.25C10.25%205.52579%2010.4742%205.75%2010.75%205.75H12C12.2758%205.75%2012.5%205.52579%2012.5%205.25V2C12.5%201.72421%2012.2758%201.5%2012%201.5H10.75ZM8.75%202C8.75%200.895786%209.64579%200%2010.75%200H12C13.1042%200%2014%200.895786%2014%202V5.25C14%206.35421%2013.1042%207.25%2012%207.25H10.75C9.64579%207.25%208.75%206.35421%208.75%205.25V2ZM10.25%2010.75C10.25%2010.4742%2010.4742%2010.25%2010.75%2010.25H12C12.2758%2010.25%2012.5%2010.4742%2012.5%2010.75V14C12.5%2014.2758%2012.2758%2014.5%2012%2014.5H10.75C10.4742%2014.5%2010.25%2014.2758%2010.25%2014V10.75ZM10.75%208.75C9.64579%208.75%208.75%209.64579%208.75%2010.75V14C8.75%2015.1042%209.64579%2016%2010.75%2016H12C13.1042%2016%2014%2015.1042%2014%2014V10.75C14%209.64579%2013.1042%208.75%2012%208.75H10.75Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=view-outline]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.25H15V2.75H3V1.25ZM15%205.25H3V6.75H15V5.25ZM15%2013.25H3V14.75H15V13.25ZM15%209.25H6V10.75H15V9.25ZM0%205.25H1.5V6.75H0V5.25ZM1.5%2013.25H0V14.75H1.5V13.25ZM0%201.25H1.5V2.75H0V1.25ZM4.5%209.25H3V10.75H4.5V9.25Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.25H15V2.75H3V1.25ZM15%205.25H3V6.75H15V5.25ZM15%2013.25H3V14.75H15V13.25ZM15%209.25H6V10.75H15V9.25ZM0%205.25H1.5V6.75H0V5.25ZM1.5%2013.25H0V14.75H1.5V13.25ZM0%201.25H1.5V2.75H0V1.25ZM4.5%209.25H3V10.75H4.5V9.25Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=view-attachments]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.5%203.75C3.5%201.67879%205.17879%200%207.25%200C9.32121%200%2011%201.67879%2011%203.75V10.25C11%2011.4922%209.99221%2012.5%208.75%2012.5C7.50779%2012.5%206.5%2011.4922%206.5%2010.25V3.5H8V10.25C8%2010.6638%208.33621%2011%208.75%2011C9.16379%2011%209.5%2010.6638%209.5%2010.25V3.75C9.5%202.50721%208.49279%201.5%207.25%201.5C6.00721%201.5%205%202.50721%205%203.75V10.75C5%2012.8208%206.67921%2014.5%208.75%2014.5C10.8208%2014.5%2012.5%2012.8208%2012.5%2010.75V3.5H14V10.75C14%2013.6492%2011.6492%2016%208.75%2016C5.85079%2016%203.5%2013.6492%203.5%2010.75V3.75Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.5%203.75C3.5%201.67879%205.17879%200%207.25%200C9.32121%200%2011%201.67879%2011%203.75V10.25C11%2011.4922%209.99221%2012.5%208.75%2012.5C7.50779%2012.5%206.5%2011.4922%206.5%2010.25V3.5H8V10.25C8%2010.6638%208.33621%2011%208.75%2011C9.16379%2011%209.5%2010.6638%209.5%2010.25V3.75C9.5%202.50721%208.49279%201.5%207.25%201.5C6.00721%201.5%205%202.50721%205%203.75V10.75C5%2012.8208%206.67921%2014.5%208.75%2014.5C10.8208%2014.5%2012.5%2012.8208%2012.5%2010.75V3.5H14V10.75C14%2013.6492%2011.6492%2016%208.75%2016C5.85079%2016%203.5%2013.6492%203.5%2010.75V3.75Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=view-layers]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M8.36645%202.34562C8.13878%202.21813%207.86122%202.21813%207.63355%202.34562L1.38355%205.84562C1.14669%205.97826%201%206.22853%201%206.5C1%206.77147%201.14669%207.02174%201.38355%207.15438L7.63355%2010.6544C7.86122%2010.7819%208.13878%2010.7819%208.36645%2010.6544L14.6165%207.15438C14.8533%207.02174%2015%206.77147%2015%206.5C15%206.22853%2014.8533%205.97826%2014.6165%205.84562L8.36645%202.34562ZM8%209.14041L3.28499%206.5L8%203.85959L12.715%206.5L8%209.14041ZM1.63647%209.0766L7.99999%2012.6404L14.3255%209.09761L15.0585%2010.4063L8.36649%2014.1543C8.13881%2014.2818%207.86122%2014.2819%207.63353%2014.1543L0.903534%2010.3853L1.63647%209.0766Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M8.36645%202.34562C8.13878%202.21813%207.86122%202.21813%207.63355%202.34562L1.38355%205.84562C1.14669%205.97826%201%206.22853%201%206.5C1%206.77147%201.14669%207.02174%201.38355%207.15438L7.63355%2010.6544C7.86122%2010.7819%208.13878%2010.7819%208.36645%2010.6544L14.6165%207.15438C14.8533%207.02174%2015%206.77147%2015%206.5C15%206.22853%2014.8533%205.97826%2014.6165%205.84562L8.36645%202.34562ZM8%209.14041L3.28499%206.5L8%203.85959L12.715%206.5L8%209.14041ZM1.63647%209.0766L7.99999%2012.6404L14.3255%209.09761L15.0585%2010.4063L8.36649%2014.1543C8.13881%2014.2818%207.86122%2014.2819%207.63353%2014.1543L0.903534%2010.3853L1.63647%209.0766Z'%20fill='black'/%3e%3c/svg%3e")} diff --git a/suites-experimental/pdf-viewer/dist/assets/index.js b/suites-experimental/pdf-viewer/dist/assets/index.js new file mode 100644 index 000000000..8b37439b2 --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/assets/index.js @@ -0,0 +1,57 @@ +var ui=d=>{throw TypeError(d)};var bs=(d,t,e)=>t.has(d)||ui("Cannot "+e);var K=(d,t,e)=>(bs(d,t,"read from private field"),e?e.call(d):t.get(d)),kt=(d,t,e)=>t.has(d)?ui("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(d):t.set(d,e),dt=(d,t,e,s)=>(bs(d,t,"write to private field"),s?s.call(d,e):t.set(d,e),e),Pt=(d,t,e)=>(bs(d,t,"access private method"),e);var fi=(d,t,e,s)=>({set _(i){dt(d,t,i,e)},get _(){return K(d,t,s)}});const mt=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),Bt=[1/0,1/0,-1/0,-1/0],Xt=new Float32Array(Bt),xs=[.001,0,0,.001,0,0],ht="http://www.w3.org/2000/svg",pt={ANY:1,DISPLAY:2,PRINT:4,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},Ut={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},he="pdfjs_internal_id_",fe="pdfjs_internal_editor_",L={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,POPUP:16,SIGNATURE:101,COMMENT:102},$={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,INK_COLOR_AND_OPACITY:24,HIGHLIGHT_COLOR:31,HIGHLIGHT_THICKNESS:32,HIGHLIGHT_FREE:33,HIGHLIGHT_SHOW_ALL:34,DRAW_STEP:41},Nn={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},it={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},Ve={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},J={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26,RICHMEDIA:27},ae={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},Me={ERRORS:0,WARNINGS:1,INFOS:5},Ot={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93,rawFillPath:94},me={moveTo:0,lineTo:1,curveTo:2,quadraticCurveTo:3,closePath:4},Bn={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let es=Me.WARNINGS;function Un(d){Number.isInteger(d)&&(es=d)}function Hn(){return es}function ss(d){es>=Me.INFOS&&console.info(`Info: ${d}`)}function N(d){es>=Me.WARNINGS&&console.warn(`Warning: ${d}`)}function G(d){throw new Error(d)}function Z(d,t){d||G(t)}function $n(d){switch(d?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function Ki(d,t=null,e=null){if(!d)return null;if(e&&typeof d=="string"&&(e.addDefaultProtocol&&d.startsWith("www.")&&d.match(/\./g)?.length>=2&&(d=`http://${d}`),e.tryConvertEncoding))try{d=jn(d)}catch{}const s=t?URL.parse(d,t):URL.parse(d);return $n(s)?s:null}function Qi(d,t,e=!1){const s=URL.parse(d);return s?(s.hash=t,s.href):e&&Ki(d,"http://example.com")?d.split("#",1)[0]+`${t?`#${t}`:""}`:""}function Cs(d){return d.substring(d.lastIndexOf("/")+1)}function D(d,t,e,s=!1){return Object.defineProperty(d,t,{value:e,enumerable:!s,configurable:!0,writable:!1}),e}const ee=(function(){function t(e,s){this.message=e,this.name=s}return t.prototype=new Error,t.constructor=t,t})();class Ts extends ee{constructor(t,e){super(t,"PasswordException"),this.code=e}}class ys extends ee{constructor(t,e){super(t,"UnknownErrorException"),this.details=e}}class ks extends ee{constructor(t){super(t,"InvalidPDFException")}}class qe extends ee{constructor(t,e,s){super(t,"ResponseException"),this.status=e,this.missing=s}}class Gn extends ee{constructor(t){super(t,"FormatError")}}class $t extends ee{constructor(t){super(t,"AbortException")}}function zn(d){(typeof d!="object"||d?.length===void 0)&&G("Invalid argument for bytesToString");const t=d.length,e=8192;if(t"u")return D(this,"isAlphaColorInputSupported",!1);const t=document.createElement("input");return t.type="color",t.setAttribute("alpha",""),t.value="#ff000080",D(this,"isAlphaColorInputSupported",t.value!=="#ff0000")}static get isBackdropFilterSupported(){return D(this,"isBackdropFilterSupported",typeof CSS<"u"&&CSS.supports("backdrop-filter","blur(1px)"))}}class x{static get hexNums(){return D(this,"hexNums",Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0")))}static makeHexColor(t,e,s){return`#${this.hexNums[t]}${this.hexNums[e]}${this.hexNums[s]}`}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static multiplyByDOMMatrix(t,e){return[t[0]*e.a+t[2]*e.b,t[1]*e.a+t[3]*e.b,t[0]*e.c+t[2]*e.d,t[1]*e.c+t[3]*e.d,t[0]*e.e+t[2]*e.f+t[4],t[1]*e.e+t[3]*e.f+t[5]]}static applyTransform(t,e,s=0){const i=t[s],n=t[s+1];t[s]=i*e[0]+n*e[2]+e[4],t[s+1]=i*e[1]+n*e[3]+e[5]}static applyTransformToBezier(t,e,s=0){const i=e[0],n=e[1],r=e[2],a=e[3],o=e[4],l=e[5];for(let h=0;h<6;h+=2){const c=t[s+h],u=t[s+h+1];t[s+h]=c*i+u*r+o,t[s+h+1]=c*n+u*a+l}}static applyInverseTransform(t,e){const s=t[0],i=t[1],n=e[0]*e[3]-e[1]*e[2];t[0]=(s*e[3]-i*e[2]+e[2]*e[5]-e[4]*e[3])/n,t[1]=(-s*e[1]+i*e[0]+e[4]*e[1]-e[5]*e[0])/n}static axialAlignedBoundingBox(t,e,s){const i=e[0],n=e[1],r=e[2],a=e[3],o=e[4],l=e[5],h=t[0],c=t[1],u=t[2],f=t[3];let p=i*h+o,g=p,m=i*u+o,b=m,y=a*c+l,A=y,v=a*f+l,w=v;if(n!==0||r!==0){const S=n*h,_=n*u,E=r*c,C=r*f;p+=E,b+=E,m+=C,g+=C,y+=S,w+=S,v+=_,A+=_}s[0]=Math.min(s[0],p,m,g,b),s[1]=Math.min(s[1],y,v,A,w),s[2]=Math.max(s[2],p,m,g,b),s[3]=Math.max(s[3],y,v,A,w)}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t,e){const s=t[0],i=t[1],n=t[2],r=t[3],a=s**2+i**2,o=s*n+i*r,l=n**2+r**2,h=(a+l)/2,c=Math.sqrt(h**2-(a*l-o**2));e[0]=Math.sqrt(h+c||1),e[1]=Math.sqrt(h-c||1)}static normalizeRect(t){const e=t.slice(0);return t[0]>t[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e}static intersect(t,e){const s=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),i=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(s>i)return null;const n=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),r=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return n>r?null:[s,n,i,r]}static pointBoundingBox(t,e,s){s[0]=Math.min(s[0],t),s[1]=Math.min(s[1],e),s[2]=Math.max(s[2],t),s[3]=Math.max(s[3],e)}static rectBoundingBox(t,e,s,i,n){n[0]=Math.min(n[0],t,s),n[1]=Math.min(n[1],e,i),n[2]=Math.max(n[2],t,s),n[3]=Math.max(n[3],e,i)}static#t(t,e,s,i,n,r,a,o,l,h){if(l<=0||l>=1)return;const c=1-l,u=l*l,f=u*l,p=c*(c*(c*t+3*l*e)+3*u*s)+f*i,g=c*(c*(c*n+3*l*r)+3*u*a)+f*o;h[0]=Math.min(h[0],p),h[1]=Math.min(h[1],g),h[2]=Math.max(h[2],p),h[3]=Math.max(h[3],g)}static#e(t,e,s,i,n,r,a,o,l,h,c,u){if(Math.abs(l)<1e-12){Math.abs(h)>=1e-12&&this.#t(t,e,s,i,n,r,a,o,-c/h,u);return}const f=h**2-4*c*l;if(f<0)return;const p=Math.sqrt(f),g=2*l;this.#t(t,e,s,i,n,r,a,o,(-h+p)/g,u),this.#t(t,e,s,i,n,r,a,o,(-h-p)/g,u)}static bezierBoundingBox(t,e,s,i,n,r,a,o,l){l[0]=Math.min(l[0],t,a),l[1]=Math.min(l[1],e,o),l[2]=Math.max(l[2],t,a),l[3]=Math.max(l[3],e,o),this.#e(t,s,n,a,e,i,r,o,3*(-t+3*(s-n)+a),6*(t-2*s+n),3*(s-t),l),this.#e(t,s,n,a,e,i,r,o,3*(-e+3*(i-r)+o),6*(e-2*i+r),3*(i-e),l)}}function jn(d){return decodeURIComponent(escape(d))}let As=null,pi=null;function Vn(d){return As||(As=/([\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,pi=new Map([["ſt","ſt"]])),d.replaceAll(As,(t,e,s)=>e?e.normalize("NFKC"):pi.get(s))}function Ji(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();const d=new Uint8Array(32);return crypto.getRandomValues(d),zn(d)}function Wn(d,t,e){if(!Array.isArray(e)||e.length<2)return!1;const[s,i,...n]=e;if(!d(s)&&!Number.isInteger(s)||!t(i))return!1;const r=n.length;let a=!0;switch(i.name){case"XYZ":if(r<2||r>3)return!1;break;case"Fit":case"FitB":return r===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(r>1)return!1;break;case"FitR":if(r!==4)return!1;a=!1;break;default:return!1}for(const o of n)if(!(typeof o=="number"||a&&o===null))return!1;return!0}const ge=()=>[],zs=()=>new Map,Ps=()=>Object.create(null),Xn=()=>new Set;typeof Iterator.prototype.join!="function"&&(Iterator.prototype.join=function(d){return[...this].join(d)});function X(d,t,e){return Math.min(Math.max(d,t),e)}class Ie{constructor({viewBox:t,userUnit:e,scale:s,rotation:i,offsetX:n=0,offsetY:r=0,dontFlip:a=!1}){this.viewBox=t,this.userUnit=e,this.scale=s,this.rotation=i,this.offsetX=n,this.offsetY=r,s*=e;const o=(t[2]+t[0])/2,l=(t[3]+t[1])/2;let h,c,u,f;switch(i%=360,i<0&&(i+=360),i){case 180:h=-1,c=0,u=0,f=1;break;case 90:h=0,c=1,u=1,f=0;break;case 270:h=0,c=-1,u=-1,f=0;break;case 0:h=1,c=0,u=0,f=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}a&&(u=-u,f=-f);let p,g,m,b;h===0?(p=Math.abs(l-t[1])*s+n,g=Math.abs(o-t[0])*s+r,m=(t[3]-t[1])*s,b=(t[2]-t[0])*s):(p=Math.abs(o-t[0])*s+n,g=Math.abs(l-t[1])*s+r,m=(t[2]-t[0])*s,b=(t[3]-t[1])*s),this.transform=[h*s,c*s,u*s,f*s,p-h*s*o-u*s*l,g-c*s*o-f*s*l],this.width=m,this.height=b}get rawDims(){const t=this.viewBox;return D(this,"rawDims",{pageWidth:t[2]-t[0],pageHeight:t[3]-t[1],pageX:t[0],pageY:t[1]})}clone({scale:t=this.scale,rotation:e=this.rotation,offsetX:s=this.offsetX,offsetY:i=this.offsetY,dontFlip:n=!1}={}){return new Ie({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:e,offsetX:s,offsetY:i,dontFlip:n})}convertToViewportPoint(t,e){const s=[t,e];return x.applyTransform(s,this.transform),s}convertToPdfPoint(t,e){const s=[t,e];return x.applyInverseTransform(s,this.transform),s}}class xe{static textContent(t){const e=[],s={items:e,styles:Object.create(null)};function i(n){if(!n)return;let r=null;const a=n.name;if(a==="#text")r=n.value;else if(xe.shouldBuildText(a))n?.attributes?.textContent?r=n.attributes.textContent:n.value&&(r=n.value);else return;if(r!==null&&e.push({str:r}),!!n.children)for(const o of n.children)i(o)}return i(t),s}static shouldBuildText(t){return!(t==="textarea"||t==="input"||t==="option"||t==="select")}}const Yn=/url\(|image-set\(/i,qn=/^on/i;class Zi{static get _allowedHtmlElements(){return D(this,"_allowedHtmlElements",new Set(["a","b","br","button","div","i","img","input","label","li","ol","option","p","select","span","sub","sup","textarea","ul"]))}static get _allowedSvgElements(){return D(this,"_allowedSvgElements",new Set(["ellipse","line","path","rect","svg"]))}static get _allowedRichTextElements(){return D(this,"_allowedRichTextElements",new Set(["a","b","br","div","i","li","ol","p","span","sub","sup","ul"]))}static get _allowedRichTextAttributes(){return D(this,"_allowedRichTextAttributes",new Set(["class","dir","style"]))}static get _allowedRichTextStyles(){return D(this,"_allowedRichTextStyles",new Set(["color","font","fontFamily","fontSize","fontStretch","fontStyle","fontWeight","kerningMode","letterSpacing","lineHeight","margin","marginBottom","marginLeft","marginRight","marginTop","orphans","paddingLeft","paddingRight","breakAfter","breakBefore","breakInside","tabInterval","tabStop","textAlign","textDecoration","textIndent","transform","verticalAlign","widows"]))}static setupStorage(t,e,s,i,n){const r=i.getValue(e,{value:null});switch(s.name){case"textarea":if(r.value!==null&&(t.textContent=r.value),n==="print")break;t.addEventListener("input",a=>{i.setValue(e,{value:a.target.value})});break;case"input":if(s.attributes.type==="radio"||s.attributes.type==="checkbox"){if(r.value===s.attributes.xfaOn?t.setAttribute("checked",!0):r.value===s.attributes.xfaOff&&t.removeAttribute("checked"),n==="print")break;t.addEventListener("change",a=>{i.setValue(e,{value:a.target.checked?a.target.getAttribute("xfaOn"):a.target.getAttribute("xfaOff")})})}else{if(r.value!==null&&t.setAttribute("value",r.value),n==="print")break;t.addEventListener("input",a=>{i.setValue(e,{value:a.target.value})})}break;case"select":if(r.value!==null){t.setAttribute("value",r.value);for(const a of s.children)a.attributes.value===r.value?a.attributes.selected=!0:Object.hasOwn(a.attributes,"selected")&&delete a.attributes.selected}t.addEventListener("input",a=>{const o=a.target.options,l=o.selectedIndex===-1?"":o[o.selectedIndex].value;i.setValue(e,{value:l})});break}}static setAttributes({html:t,element:e,storage:s=null,intent:i,linkService:n}){const{attributes:r}=e,a=t instanceof HTMLAnchorElement;r.type==="radio"&&(r.name=`${r.name}-${i}`);for(const[o,l]of Object.entries(r))if(l!=null&&!qn.test(o)&&!(i==="richText"&&!this._allowedRichTextAttributes.has(o)))switch(o){case"class":l.length&&t.setAttribute(o,l.join(" "));break;case"dataId":break;case"id":t.setAttribute("data-element-id",l);break;case"style":if(i==="richText"){const h=this._allowedRichTextStyles;for(const[c,u]of Object.entries(l))h.has(c)&&!Yn.test(u)&&(t.style[c]=u)}else Object.assign(t.style,l);break;case"textContent":t.textContent=l;break;default:(!a||o!=="href"&&o!=="newWindow")&&t.setAttribute(o,l)}a&&n?.addLinkAttributes(t,r.href,r.newWindow),s&&r.dataId&&this.setupStorage(t,r.dataId,e,s)}static#t(t,e,s){return s==="richText"?!e&&this._allowedRichTextElements.has(t)?document.createElement(t):null:e?e===ht&&this._allowedSvgElements.has(t)?document.createElementNS(ht,t):null:this._allowedHtmlElements.has(t)?document.createElement(t):null}static render(t){const e=t.annotationStorage,s=t.linkService,i=t.xfaHtml,n=t.intent||"display",r=this.#t(i.name,i.attributes?.xmlns,n)??document.createElement("div");i.attributes&&this.setAttributes({html:r,element:i,intent:n,linkService:s});const a=n!=="richText",o=t.div;if(o.append(r),t.viewport){const c=`matrix(${t.viewport.transform.join(",")})`;o.style.transform=c}a&&o.setAttribute("class","xfaLayer xfaFont");const l=[];if(i.children.length===0){if(i.value){const c=document.createTextNode(i.value);r.append(c),a&&xe.shouldBuildText(i.name)&&l.push(c)}return{textDivs:l}}const h=[[i,-1,r]];for(;h.length>0;){const[c,u,f]=h.at(-1);if(u+1===c.children.length){h.pop();continue}const p=c.children[++h.at(-1)[1]];if(p===null)continue;const{name:g}=p;if(g==="#text"){const b=document.createTextNode(p.value);l.push(b),f.append(b);continue}const m=this.#t(g,p.attributes?.xmlns,n);if(m){if(f.append(m),p.attributes&&this.setAttributes({html:m,element:p,storage:e,intent:n,linkService:s}),p.children?.length>0)h.push([p,-1,m]);else if(p.value){const b=document.createTextNode(p.value);a&&xe.shouldBuildText(g)&&l.push(b),m.append(b)}}}for(const c of o.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))c.setAttribute("readOnly",!0);return{textDivs:l}}static update(t){const e=`matrix(${t.viewport.transform.join(",")})`;t.div.style.transform=e,t.div.hidden=!1}static getPageViewport(t,{scale:e=1,rotation:s=0}){const{width:i,height:n}=t.attributes.style;return new Ie({viewBox:[0,0,parseInt(i,10),parseInt(n,10)],userUnit:1,scale:e,rotation:s})}}class pe{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF}async function js(d,t="text"){if(ve(d,document.baseURI)){const e=await fetch(d);if(!e.ok)throw new Error(e.statusText);switch(t){case"blob":return e.blob();case"bytes":return e.bytes();case"json":return e.json()}return e.text()}return new Promise((e,s)=>{const i=new XMLHttpRequest;i.open("GET",d,!0),i.responseType=t==="bytes"?"arraybuffer":t,i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(i.status===200||i.status===0){switch(t){case"bytes":e(new Uint8Array(i.response));return;case"blob":case"json":e(i.response);return}e(i.responseText);return}s(new Error(i.statusText))}},i.send(null)})}class Vs extends ee{constructor(t,e=0){super(t,"RenderingCancelledException"),this.extraDelay=e}}function ns(d){const t=d.length;let e=0;for(;e{try{return new URL(a)}catch{}try{return new URL(decodeURIComponent(a))}catch{}try{return new URL(a,"https://foo.bar")}catch{}try{return new URL(decodeURIComponent(a),"https://foo.bar")}catch{}return null})(d);if(!s)return t;const i=a=>{try{let o=decodeURIComponent(a);return o.includes("/")&&(o=Cs(o),o.length===4&&n.test(o))?a:o}catch{return a}},n=/\.pdf$/i,r=Cs(s.pathname);if(n.test(r))return i(r);if(s.searchParams.size>0){const a=l=>[...l].findLast(h=>n.test(h)),o=a(s.searchParams.values())??a(s.searchParams.keys());if(o)return i(o)}if(s.hash){const{hash:a}=s;let o=-1;for(const{index:l}of a.matchAll(/\.pdf\b/gi))o=l;if(o>0){let l=o;for(;l>0&&!"/?#=".includes(a[l-1]);)l--;if(le.name.length));return this.times.map(e=>`${e.name.padEnd(t)} ${e.end-e.start}ms +`).join("")}}function ve(d,t){const e=t?URL.parse(d,t):URL.parse(d);return/https?:/.test(e?.protocol??"")}function Ct(d){d.preventDefault()}function nt(d){d.preventDefault(),d.stopPropagation()}class Ms{static#t;static toDateObject(t){if(t instanceof Date)return t;if(!t||typeof t!="string")return null;this.#t||=new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+\\-])?(\\d{2})?'?(\\d{2})?'?");const e=this.#t.exec(t);if(!e)return null;const s=parseInt(e[1],10);let i=parseInt(e[2],10);i=i>=1&&i<=12?i-1:0;let n=parseInt(e[3],10);n=n>=1&&n<=31?n:1;let r=parseInt(e[4],10);r=r>=0&&r<=23?r:0;let a=parseInt(e[5],10);a=a>=0&&a<=59?a:0;let o=parseInt(e[6],10);o=o>=0&&o<=59?o:0;const l=e[7]||"Z";let h=parseInt(e[8],10);h=h>=0&&h<=23?h:0;let c=parseInt(e[9],10)||0;return c=c>=0&&c<=59?c:0,l==="-"?(r+=h,a+=c):l==="+"&&(r-=h,a-=c),new Date(Date.UTC(s,i,n,r,a,o))}}function De(d){if(d.startsWith("#")){const e=d.slice(1);return[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16),e.length>=8?parseInt(e.slice(6,8),16)/255:1]}if(d.startsWith("rgb(")){const[e,s,i]=d.slice(4,-1).split(",").map(n=>parseInt(n,10));return[e,s,i,1]}if(d.startsWith("rgba(")){const e=d.slice(5,-1).split(",");return[parseInt(e[0],10),parseInt(e[1],10),parseInt(e[2],10),parseFloat(e[3])]}const t=d.match(/^color\(srgb\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*([\d.]+|none))?\)$/);return t?[Math.round(parseFloat(t[1])*255),Math.round(parseFloat(t[2])*255),Math.round(parseFloat(t[3])*255),t[4]!==void 0&&t[4]!=="none"?parseFloat(t[4]):1]:null}function Oe(d){const t=De(d);return t?t.slice(0,3):(N(`Not a valid color format: "${d}"`),[0,0,0])}function Jn(d){const t=document.createElement("span");t.style.visibility="hidden",t.style.colorScheme="only light",document.body.append(t);for(const e of d.keys()){t.style.color=e;const s=window.getComputedStyle(t).color;d.set(e,Oe(s))}t.remove()}function V(d){const{a:t,b:e,c:s,d:i,e:n,f:r}=d.getTransform();return[t,e,s,i,n,r]}function Mt(d){const{a:t,b:e,c:s,d:i,e:n,f:r}=d.getTransform().invertSelf();return[t,e,s,i,n,r]}function Zt(d,t,e=!1,s=!0){if(t instanceof Ie){const{pageWidth:i,pageHeight:n}=t.rawDims,{style:r}=d,a=`round(down, var(--total-scale-factor) * ${i}px, var(--scale-round-x))`,o=`round(down, var(--total-scale-factor) * ${n}px, var(--scale-round-y))`;!e||t.rotation%180===0?(r.width=a,r.height=o):(r.width=o,r.height=a)}s&&d.setAttribute("data-main-rotation",t.rotation)}class Tt{constructor(){const{pixelRatio:t}=Tt;this.sx=t,this.sy=t}get scaled(){return this.sx!==1||this.sy!==1}get symmetric(){return this.sx===this.sy}limitCanvas(t,e,s,i,n=-1){let r=1/0,a=1/0,o=1/0;s=Tt.capPixels(s,n),s>0&&(r=Math.sqrt(s/(t*e))),i!==-1&&(a=i/t,o=i/e);const l=Math.min(r,a,o);return this.sx>l||this.sy>l?(this.sx=l,this.sy=l,!0):!1}static get pixelRatio(){return globalThis.devicePixelRatio||1}static capPixels(t,e){if(e>=0){const s=Math.ceil(window.screen.availWidth*window.screen.availHeight*this.pixelRatio**2*(1+e/100));return t>0?Math.min(t,s):s}return t}}const Is=["image/apng","image/avif","image/bmp","image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/x-icon"];class Zn{static get isDarkMode(){return D(this,"isDarkMode",!!window?.matchMedia?.("(prefers-color-scheme: dark)").matches)}}class tr{static get commentForegroundColor(){const t=document.createElement("span");t.classList.add("comment","sidebar");const{style:e}=t;e.width=e.height="0",e.display="none",e.color="var(--comment-fg-color)",document.body.append(t);const{color:s}=window.getComputedStyle(t);return t.remove(),D(this,"commentForegroundColor",Oe(s))}}function er(d,t){t=X(t??1,0,1);const e=255*(1-t);return d.map(s=>Math.round(s*t+e))}function mi(d,t){const e=d[0]/255,s=d[1]/255,i=d[2]/255,n=Math.max(e,s,i),r=Math.min(e,s,i),a=(n+r)/2;if(n===r)t[0]=t[1]=0;else{const o=n-r;switch(t[1]=a<.5?o/(n+r):o/(2-n-r),n){case e:t[0]=((s-i)/o+(si?(s+.05)/(i+.05):(i+.05)/(s+.05)}const yi=new Map;function sr(d,t){const e=d[0]+d[1]*256+d[2]*65536+t[0]*16777216+t[1]*4294967296+t[2]*1099511627776;let s=yi.get(e);if(s)return s;const i=new Float32Array(9),n=i.subarray(0,3),r=i.subarray(3,6);mi(d,r);const a=i.subarray(6,9);mi(t,a);const o=a[2]<.5,l=o?12:4.5;if(r[2]=o?Math.sqrt(r[2]):1-Math.sqrt(1-r[2]),bi(r,a,n)u;){const f=r[2]=(h+c)/2;o===bi(r,a,n){e.delete()},{signal:e._signal}),this.#i.append(s)}get#g(){const t=document.createElement("div");return t.className="divider",t}async addAltText(t){const e=await t.render();this.#f(e),this.#i.append(e,this.#g),this.#n=t}addComment(t,e=null){if(this.#a)return;const s=t.renderForToolbar();if(!s)return;this.#f(s);const i=this.#r=this.#g;e?(this.#i.insertBefore(s,e),this.#i.insertBefore(i,e)):this.#i.append(s,i),this.#a=t,t.toolbar=this}addColorPicker(t){if(this.#e)return;this.#e=t;const e=t.renderButton();this.#f(e),this.#i.append(e,this.#g)}async addEditSignatureButton(t){const e=this.#o=await t.renderEditButton(this.#s);this.#f(e),this.#i.append(e,this.#g)}removeButton(t){t==="comment"&&(this.#a?.removeToolbarCommentButton(),this.#a=null,this.#r?.remove(),this.#r=null)}async addButton(t,e){switch(t){case"colorPicker":e&&this.addColorPicker(e);break;case"altText":e&&await this.addAltText(e);break;case"editSignature":e&&await this.addEditSignatureButton(e);break;case"delete":this.addDeleteButton();break;case"comment":e&&this.addComment(e);break}}async addButtonBefore(t,e,s){if(!e&&t==="comment")return;const i=this.#i.querySelector(s);i&&t==="comment"&&this.addComment(e,i)}updateEditSignatureButton(t){this.#o&&(this.#o.title=t)}remove(){this.#t.remove(),this.#e?.destroy(),this.#e=null}}class ir{#t=null;#e=null;#s;constructor(t){this.#s=t}#i(){const t=this.#e=document.createElement("div");t.className="editToolbar",t.setAttribute("role","toolbar"),t.dir=this.#s.direction;const e=this.#s._signal;e instanceof AbortSignal&&!e.aborted&&t.addEventListener("contextmenu",Ct,{signal:e});const s=this.#t=document.createElement("div");return s.className="buttons",t.append(s),this.#s.hasCommentManager()&&this.#a("commentButton","pdfjs-comment-floating-button","pdfjs-comment-floating-button-label",()=>{this.#s.commentSelection("floating_button")}),this.#a("highlightButton","pdfjs-highlight-floating-button1","pdfjs-highlight-floating-button-label",()=>{this.#s.highlightSelection("floating_button")}),t}#n(t,e){let s=0,i=0;for(const n of t){const r=n.y+n.height;if(rs){i=a,s=r;continue}e?a>i&&(i=a):a=1}static clearPointerType(){z.#i=null}static clearPointerIds(){z.#t=NaN,z.#e=null}static clearTimeStamp(){z.#s=NaN}}class rr{#t=0;get id(){return`${fe}${this.#t++}`}}class Xs{#t=Ji();#e=0;#s=null;static get _isSVGFittingCanvas(){const t=`data:image/svg+xml;charset=UTF-8,`,s=new OffscreenCanvas(1,3).getContext("2d",{willReadFrequently:!0}),i=new Image;i.src=t;const n=i.decode().then(()=>(s.drawImage(i,0,0,1,1,0,0,1,3),new Uint32Array(s.getImageData(0,0,1,1).data.buffer)[0]===0));return D(this,"_isSVGFittingCanvas",n)}async#i(t,e){this.#s||=new Map;let s=this.#s.get(t);if(s===null)return null;if(s?.bitmap)return s.refCounter+=1,s;try{s||={bitmap:null,id:`image_${this.#t}_${this.#e++}`,refCounter:0,isSvg:!1};let i;if(typeof e=="string"?(s.url=e,i=await js(e,"blob")):e instanceof File?i=s.file=e:e instanceof Blob&&(i=e),i.type==="image/svg+xml"){const n=Xs._isSVGFittingCanvas,r=new FileReader,a=new Image,o=new Promise((l,h)=>{a.onload=()=>{s.bitmap=a,s.isSvg=!0,l()},r.onload=async()=>{const c=s.svgUrl=r.result;a.src=await n?`${c}#svgView(preserveAspectRatio(none))`:c},a.onerror=r.onerror=h});r.readAsDataURL(i),await o}else s.bitmap=await createImageBitmap(i);s.refCounter=1}catch(i){N(i),s=null}return this.#s.set(t,s),s&&this.#s.set(s.id,s),s}async getFromFile(t){const{lastModified:e,name:s,size:i,type:n}=t;return this.#i(`${e}_${s}_${i}_${n}`,t)}async getFromUrl(t){return this.#i(t,t)}async getFromBlob(t,e){const s=await e;return this.#i(t,s)}async getFromId(t){this.#s||=new Map;const e=this.#s.get(t);if(!e)return null;if(e.bitmap)return e.refCounter+=1,e;if(e.file)return this.getFromFile(e.file);if(e.blobPromise){const{blobPromise:s}=e;return delete e.blobPromise,this.getFromBlob(e.id,s)}return this.getFromUrl(e.url)}getFromCanvas(t,e){this.#s||=new Map;let s=this.#s.get(t);if(s?.bitmap)return s.refCounter+=1,s;const i=new OffscreenCanvas(e.width,e.height);return i.getContext("2d").drawImage(e,0,0),s={bitmap:i.transferToImageBitmap(),id:`image_${this.#t}_${this.#e++}`,refCounter:1,isSvg:!1},this.#s.set(t,s),this.#s.set(s.id,s),s}getSvgUrl(t){const e=this.#s.get(t);return e?.isSvg?e.svgUrl:null}deleteId(t){this.#s||=new Map;const e=this.#s.get(t);if(!e||(e.refCounter-=1,e.refCounter!==0))return;const{bitmap:s}=e;if(!e.url&&!e.file){const i=new OffscreenCanvas(s.width,s.height);i.getContext("bitmaprenderer").transferFromImageBitmap(s),e.blobPromise=i.convertToBlob()}s.close?.(),e.bitmap=null}isValidId(t){return t.startsWith(`image_${this.#t}_`)}}class ar{#t=[];#e=!1;#s;#i=-1;constructor(t=128){this.#s=t}add({cmd:t,undo:e,post:s,mustExec:i,type:n=NaN,overwriteIfSameType:r=!1,keepUndo:a=!1}){if(i&&t(),this.#e)return;const o={cmd:t,undo:e,post:s,type:n};if(this.#i===-1){this.#t.length>0&&(this.#t.length=0),this.#i=0,this.#t.push(o);return}if(r&&this.#t[this.#i].type===n){a&&(o.undo=this.#t[this.#i].undo),this.#t[this.#i]=o;return}const l=this.#i+1;l===this.#s?this.#t.splice(0,1):(this.#i=l,l=0;e--)if(this.#t[e].type!==t){this.#t.splice(e+1,this.#i-e),this.#i=e;return}this.#t.length=0,this.#i=-1}}destroy(){this.#t=null}}class bt{static ALT=1;static CTRL=2;static META=4;static SHIFT=8;constructor(t){this.callbacks=new Map;const{isMac:e}=j.platform;for(const[s,i,n={}]of t){const r=s.some(a=>a.startsWith("mac+"));for(const a of s){let o=a;if(r){const c=a.startsWith("mac+");if(e!==c)continue;c&&(o=a.slice(4))}const[l,h]=bt.#t(o);l!==null&&this.callbacks.getOrInsertComputed(l,ge).push({callback:i,options:n,modifiers:h})}}}static#t(t){let e=null,s=0;for(let i of t.split("+")){if(i=i.trim(),!i)continue;const n=i.toUpperCase(),r=bt[n];if(r){s|=r;continue}if(e!==null){N(`KeyboardManager: multiple keys in shortcut "${t}"`);break}e=n==="SPACE"?" ":i}return e===null&&N(`KeyboardManager: no key found in shortcut "${t}"`),[e,s]}static#e(t){const e=/^(?:Key([A-Z])|(?:Digit|Numpad)(\d))$/.exec(t);return e?e[1]?.toLowerCase()??e[2]:null}exec(t,e){let s=this.callbacks.get(e.key);if(!s){if(/^[a-z]$/i.test(e.key))return;const h=bt.#e(e.code);if(h===null||h===e.key||(s=this.callbacks.get(h),!s))return}const i=(e.altKey?bt.ALT:0)|(e.ctrlKey?bt.CTRL:0)|(e.metaKey?bt.META:0)|(e.shiftKey?bt.SHIFT:0),n=s.find(h=>h.modifiers===i);if(!n)return;const{callback:r,options:{bubbles:a=!1,args:o=[],checker:l=null}}=n;l&&!l(t,e)||(r.bind(t,...o,e)(),a||nt(e))}}class Ys{static _colorsMapping=new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]);get _colors(){const t=new Map([["CanvasText",null],["Canvas",null]]);return Jn(t),D(this,"_colors",t)}convert(t){const e=Oe(t);if(!window.matchMedia("(forced-colors: active)").matches)return e;for(const[s,i]of this._colors)if(i.every((n,r)=>n===e[r]))return Ys._colorsMapping.get(s);return e}getHexCode(t){const e=this._colors.get(t);return e?x.makeHexColor(...e):t}}class Gt{#t=new AbortController;#e=null;#s=null;#i=new Map;#n=new Map;#a=null;#r=null;#o=null;#l=null;#h=null;#u=new ar;#d=null;#f=null;#g=null;#m=0;#c=new Set;#p=null;#b=null;#y=new Set;_editorUndoBar=null;#A=!1;#w=!1;#_=!1;#S=null;#E=null;#x=null;#M=null;#k=!1;#T=null;#D=new rr;#I=!1;#O=!1;#H=!1;#F=null;#L=null;#j=null;#N=null;#$=null;#C=L.NONE;#v=new Set;#B=null;#G=null;#V=null;#K=null;#Y=null;#q={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1};#R=[0,0];#W=null;#X=null;#tt=null;#et=null;#U=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){const t=Gt.prototype,e=r=>r.#X.contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&r.hasSomethingToControl(),s=(r,{target:a})=>{if(a instanceof HTMLInputElement){const{type:o}=a;return o!=="text"&&o!=="number"}return!0},i=this.TRANSLATE_SMALL,n=this.TRANSLATE_BIG;return D(this,"_keyboardManager",new bt([[["ctrl+a","mac+meta+a"],t.selectAll,{checker:s}],[["ctrl+z","mac+meta+z"],t.undo,{checker:s}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],t.redo,{checker:s}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],t.delete,{checker:s}],[["Enter"],t.addNewEditorFromKeyboard,{checker:(r,{target:a})=>!(a instanceof HTMLButtonElement)&&r.#X.contains(a)&&!r.isEnterHandled}],[["Space"],t.addNewEditorFromKeyboard,{checker:(r,{target:a})=>!(a instanceof HTMLButtonElement)&&r.#X.contains(document.activeElement)}],[["Escape"],t.unselectAll],[["ArrowLeft"],t.translateSelectedEditors,{args:[-i,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t.translateSelectedEditors,{args:[-n,0],checker:e}],[["ArrowRight"],t.translateSelectedEditors,{args:[i,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t.translateSelectedEditors,{args:[n,0],checker:e}],[["ArrowUp"],t.translateSelectedEditors,{args:[0,-i],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t.translateSelectedEditors,{args:[0,-n],checker:e}],[["ArrowDown"],t.translateSelectedEditors,{args:[0,i],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t.translateSelectedEditors,{args:[0,n],checker:e}]]))}constructor(t,e,s,i,n,r,a,o,l,h,c,u,f,p,g,m){const b=this._signal=this.#t.signal;this.#X=t,this.#tt=e,this.#et=s,this.#o=i,this.#d=n,this.#G=r,this.#Y=o,this._eventBus=a;const y={signal:b,...ws};a.on("editingaction",this.onEditingAction.bind(this),y),a.on("pagechanging",this.onPageChanging.bind(this),y),a.on("scalechanging",this.onScaleChanging.bind(this),y),a.on("rotationchanging",this.onRotationChanging.bind(this),y),a.on("setpreference",this.onSetPreference.bind(this),y),a.on("switchannotationeditorparams",A=>this.updateParams(A.type,A.value),y),window.addEventListener("pointerdown",()=>{this.#O=!0},{capture:!0,signal:b}),window.addEventListener("pointerup",()=>{this.#O=!1},{capture:!0,signal:b}),window.addEventListener("beforeunload",this.endCurrentEditing.bind(this),{capture:!0,signal:b}),this.#lt(),this.#pt(),this.#it(),this.#l=o.annotationStorage,this.#S=o.filterFactory,this.#V=l,this.#M=h||null,this.#A=c,this.#w=u,this.#_=f,this.#$=p||null,this.viewParameters={realScale:pe.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=g||null,this._supportsPinchToZoom=m!==!1,n?.setSidebarUiManager(this)}destroy(){this.#U?.resolve(),this.#U=null,this.#t?.abort(),this.#t=null,this._signal=null;for(const t of this.#n.values())t.destroy();this.#n.clear(),this.#i.clear(),this.#y.clear(),this.#N?.clear(),this.#e=null,this.#v.clear(),this.#u.destroy(),this.#o?.destroy(),this.#d?.destroy(),this.#G?.destroy(),this.#T?.hide(),this.#T=null,this.#j?.destroy(),this.#j=null,this.#s=null,this.#E&&(clearTimeout(this.#E),this.#E=null),this.#W&&(clearTimeout(this.#W),this.#W=null),this._editorUndoBar?.destroy(),this.#Y=null}combinedSignal(t){return AbortSignal.any([this._signal,t.signal])}get mlManager(){return this.#$}get useNewAltTextFlow(){return this.#w}get useNewAltTextWhenAddingImage(){return this.#_}get hcmFilter(){return D(this,"hcmFilter",this.#V?this.#S.addHCMFilter(this.#V.foreground,this.#V.background):"none")}get direction(){return D(this,"direction",getComputedStyle(this.#X).direction)}get _highlightColors(){return D(this,"_highlightColors",this.#M?new Map(this.#M.split(",").map(t=>(t=t.split("=").map(e=>e.trim()),t[1]=t[1].toUpperCase(),t))):null)}get highlightColors(){const{_highlightColors:t}=this;if(!t)return D(this,"highlightColors",null);const e=new Map,s=!!this.#V;for(const[i,n]of t){const r=i.endsWith("_HCM");if(s&&r){e.set(i.replace("_HCM",""),n);continue}!s&&!r&&e.set(i,n)}return D(this,"highlightColors",e)}get highlightColorNames(){return D(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,t=>t.reverse())):null)}getNonHCMColor(t){if(!this._highlightColors)return t;const e=this.highlightColorNames.get(t);return this._highlightColors.get(e)||t}getNonHCMColorName(t){return this.highlightColorNames.get(t)||t}setCurrentDrawingSession(t){t?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),this.#g=t}setMainHighlightColorPicker(t){this.#j=t}editAltText(t,e=!1){this.#o?.editAltText(this,t,e)}hasCommentManager(){return!!this.#d}editComment(t,e,s,i){this.#d?.showDialog(this,t,e,s,i)}selectComment(t,e){this.#n.get(t)?.getEditorByUID(e)?.toggleComment(!0,!0)}updateComment(t){this.#d?.updateComment(t.getData())}updatePopupColor(t){this.#d?.updatePopupColor(t)}removeComment(t){this.#d?.removeComments([t.uid])}deleteComment(t,e){const s=()=>{t.comment=e},i=()=>{this._editorUndoBar?.show(s,"comment"),this.toggleComment(null),t.comment=null};this.addCommands({cmd:i,undo:s,mustExec:!0})}toggleComment(t,e,s=void 0){this.#d?.toggleCommentPopup(t,e,s)}makeCommentColor(t,e){return t&&this.#d?.makeCommentColor(t,e)||null}getCommentDialogElement(){return this.#d?.dialogElement||null}async waitForEditorsRendered(t){if(this.#n.has(t-1))return;const{resolve:e,promise:s}=Promise.withResolvers(),i=n=>{n.pageNumber===t&&(this._eventBus.off("editorsrendered",i),e())};this._eventBus.on("editorsrendered",i,ws),await s}getSignature(t){this.#G?.getSignature({uiManager:this,editor:t})}get signatureManager(){return this.#G}switchToMode(t,e){this._eventBus.on("annotationeditormodechanged",e,{once:!0,signal:this._signal,...ws}),this._eventBus.dispatch("showannotationeditorui",{source:this,mode:t})}setPreference(t,e){this._eventBus.dispatch("setpreference",{source:this,name:t,value:e})}onSetPreference({name:t,value:e}){t==="enableNewAltTextWhenAddingImage"&&(this.#_=e)}onPageChanging({pageNumber:t}){this.#m=t-1}deletePage(t){for(const e of this.getEditors(t))e.remove();this.#n.delete(t),this.#m===t&&(this.#m=0)}focusMainContainer(){this.#X.focus()}findParent(t,e){for(const s of this.#n.values()){const{x:i,y:n,width:r,height:a}=s.div.getBoundingClientRect();if(t>=i&&t<=i+r&&e>=n&&e<=n+a)return s}return null}disableUserSelect(t=!1){this.#tt.classList.toggle("noUserSelect",t)}addShouldRescale(t){this.#y.add(t)}removeShouldRescale(t){this.#y.delete(t)}onScaleChanging({scale:t}){this.commitOrRemove(),this.viewParameters.realScale=t*pe.PDF_TO_CSS_UNITS;for(const e of this.#y)e.onScaleChanging();this.#g?.onScaleChanging()}onRotationChanging({pagesRotation:t}){this.commitOrRemove(),this.viewParameters.rotation=t}#Z({anchorNode:t}){return t.nodeType===Node.TEXT_NODE?t.parentElement:t}#st(t){const{currentLayer:e}=this;if(e.hasTextLayer(t))return e;for(const s of this.#n.values())if(s.hasTextLayer(t))return s;return null}highlightSelection(t="",e=!1){const s=document.getSelection();if(!s||s.isCollapsed)return;const{anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:a}=s,o=s.toString(),h=this.#Z(s).closest(".textLayer"),c=this.getSelectionBoxes(h);if(!c)return;s.empty();const u=this.#st(h),f=this.#C===L.NONE,p=()=>{const g=u?.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:t,boxes:c,anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:a,text:o});f&&this.showAllEditors("highlight",!0,!0),e&&g?.editComment()};if(f){this.switchToMode(L.HIGHLIGHT,p);return}p()}commentSelection(t=""){this.highlightSelection(t,!0)}endCurrentEditing(){this.commitOrRemove(),this.currentLayer?.endDrawingSession(!1)}#at(){const t=document.getSelection();if(!t||t.isCollapsed)return;const s=this.#Z(t).closest(".textLayer"),i=this.getSelectionBoxes(s);i&&(this.#T||=new ir(this),this.#T.show(s,i,this.direction==="ltr"))}getAndRemoveDataFromAnnotationStorage(t){if(!this.#l)return null;const e=`${fe}${t}`,s=this.#l.getRawValue(e);return s&&this.#l.remove(e),s}addToAnnotationStorage(t){!t.isEmpty()&&this.#l&&!this.#l.has(t.id)&&this.#l.setValue(t.id,t)}a11yAlert(t,e=null){const s=this.#et;s&&(s.setAttribute("data-l10n-id",t),e?s.setAttribute("data-l10n-args",JSON.stringify(e)):s.removeAttribute("data-l10n-args"))}#ot(){const t=document.getSelection();if(!t||t.isCollapsed){this.#B&&(this.#T?.hide(),this.#B=null,this.#P({hasSelectedText:!1}));return}const{anchorNode:e}=t;if(e===this.#B)return;const i=this.#Z(t).closest(".textLayer");if(!i){this.#B&&(this.#T?.hide(),this.#B=null,this.#P({hasSelectedText:!1}));return}if(this.#T?.hide(),this.#B=e,this.#P({hasSelectedText:!0}),!(this.#C!==L.HIGHLIGHT&&this.#C!==L.NONE)&&(this.#C===L.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0),this.#k=this.isShiftKeyDown,!this.isShiftKeyDown)){const n=this.#C===L.HIGHLIGHT?this.#st(i):null;if(n?.toggleDrawing(),this.#O){const r=new AbortController,a=this.combinedSignal(r),o=l=>{l.type==="pointerup"&&l.button!==0||(r.abort(),n?.toggleDrawing(!0),l.type==="pointerup"&&this.#Q("main_toolbar"))};window.addEventListener("pointerup",o,{signal:a}),window.addEventListener("blur",o,{signal:a})}else n?.toggleDrawing(!0),this.#Q("main_toolbar")}}#Q(t=""){this.#C===L.HIGHLIGHT?this.highlightSelection(t):this.#A&&this.#at()}#lt(){document.addEventListener("selectionchange",this.#ot.bind(this),{signal:this._signal})}#ht(){if(this.#x)return;this.#x=new AbortController;const t=this.combinedSignal(this.#x);window.addEventListener("focus",this.focus.bind(this),{signal:t}),window.addEventListener("blur",this.blur.bind(this),{signal:t})}#ct(){this.#x?.abort(),this.#x=null}blur(){if(this.isShiftKeyDown=!1,this.#k&&(this.#k=!1,this.#Q("main_toolbar")),!this.hasSelection)return;const{activeElement:t}=document;for(const e of this.#v)if(e.div.contains(t)){this.#L=[e,t],e._focusEventsAllowed=!1;break}}focus(){if(!this.#L)return;const[t,e]=this.#L;this.#L=null,e.addEventListener("focusin",()=>{t._focusEventsAllowed=!0},{once:!0,signal:this._signal}),e.focus()}#it(){if(this.#F)return;this.#F=new AbortController;const t=this.combinedSignal(this.#F);window.addEventListener("keydown",this.keydown.bind(this),{signal:t}),window.addEventListener("keyup",this.keyup.bind(this),{signal:t})}#dt(){this.#F?.abort(),this.#F=null}#ut(){if(this.#f)return;this.#f=new AbortController;const t=this.combinedSignal(this.#f);document.addEventListener("copy",this.copy.bind(this),{signal:t}),document.addEventListener("cut",this.cut.bind(this),{signal:t}),document.addEventListener("paste",this.paste.bind(this),{signal:t})}#ft(){this.#f?.abort(),this.#f=null}#pt(){const t=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:t}),document.addEventListener("drop",this.drop.bind(this),{signal:t})}addEditListeners(){this.#it(),this.setEditingState(!0)}removeEditListeners(){this.#dt(),this.setEditingState(!1)}dragOver(t){for(const{type:e}of t.dataTransfer.items)for(const s of this.#b)if(s.isHandlingMimeForPasting(e)){t.dataTransfer.dropEffect="copy",t.preventDefault();return}}drop(t){for(const e of t.dataTransfer.items)for(const s of this.#b)if(s.isHandlingMimeForPasting(e.type)){s.paste(e,this.currentLayer),t.preventDefault();return}}copy(t){if(t.preventDefault(),this.#e?.commitOrRemove(),!this.hasSelection)return;const e=[];for(const s of this.#v){const i=s.serialize(!0);i&&e.push(i)}e.length!==0&&t.clipboardData.setData("application/pdfjs",JSON.stringify(e))}cut(t){this.copy(t),this.delete()}async paste(t){t.preventDefault();const{clipboardData:e}=t;for(const n of e.items)for(const r of this.#b)if(r.isHandlingMimeForPasting(n.type)){r.paste(n,this.currentLayer);return}let s=e.getData("application/pdfjs");if(!s)return;try{s=JSON.parse(s)}catch(n){N(`paste: "${n.message}".`);return}if(!Array.isArray(s))return;this.unselectAll();const i=this.currentLayer;try{const n=[];for(const o of s){const l=await i.deserialize(o);if(!l)return;n.push(l)}const r=()=>{for(const o of n)this.#nt(o);this.#rt(n)},a=()=>{for(const o of n)o.remove()};this.addCommands({cmd:r,undo:a,mustExec:!0})}catch(n){N(`paste: "${n.message}".`)}}keydown(t){!this.isShiftKeyDown&&t.key==="Shift"&&(this.isShiftKeyDown=!0),this.#C!==L.NONE&&!this.isEditorHandlingKeyboard&&Gt._keyboardManager.exec(this,t)}keyup(t){this.isShiftKeyDown&&t.key==="Shift"&&(this.isShiftKeyDown=!1,this.#k&&(this.#k=!1,this.#Q("main_toolbar")))}onEditingAction({name:t}){switch(t){case"undo":case"redo":case"delete":case"selectAll":this[t]();break;case"highlightSelection":this.highlightSelection("context_menu");break;case"commentSelection":this.commentSelection("context_menu");break}}updatePageIndex(t,e){for(const i of this.#r.get(t)||[])i.pageIndex=e;const s=this.#a.get(t);s&&(s.pageIndex=e,this.#n.set(e,s),this.#I?s.enable():s.disable())}startUpdatePages(){this.#a=new Map(this.#n),this.#n.clear();const t=this.#r=new Map,e=s=>{t.getOrInsertComputed(s.pageIndex,ge).push(s)};for(const s of this.#i.values())e(s);for(const[s,i]of this.#l)s.startsWith(fe)&&!this.#i.has(s)&&Number.isInteger(i?.pageIndex)&&e(i)}endUpdatePages(){this.#a=null,this.#r=null}clonePage(t,e){for(const s of this.getEditors(t)){const i=s.serialize(s.mode!==L.HIGHLIGHT);i&&(i.pageIndex=e,i.id=this.getId(),i.isClone=!0,delete i.popupRef,this.#l.setValue(i.id,i))}}findClonesForPage(t){const e=[],{pageIndex:s}=t;for(const[i,n]of this.#l)n.pageIndex===s&&n.isClone&&(this.#l.remove(i),e.push(t.deserialize(n).then(r=>{r&&(r.isClone=!0,t.addOrRebuild(r))})));return Promise.all(e)}#P(t){Object.entries(t).some(([s,i])=>this.#q[s]!==i)&&(this._eventBus.dispatch("editingstateschanged",{source:this,details:Object.assign(this.#q,t)}),this.#C===L.HIGHLIGHT&&t.hasSelectedEditor===!1&&this.#z([[$.HIGHLIGHT_FREE,!0]]))}#z(t){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:t})}setEditingState(t){t?(this.#ht(),this.#ut(),this.#P({isEditing:this.#C!==L.NONE,isEmpty:this.#J(),hasSomethingToUndo:this.#u.hasSomethingToUndo(),hasSomethingToRedo:this.#u.hasSomethingToRedo(),hasSelectedEditor:!1})):(this.#ct(),this.#ft(),this.#P({isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(t){if(!this.#b){this.#b=t;for(const e of this.#b)this.#z(e.defaultPropertiesToUpdate)}}getId(){return this.#D.id}get currentLayer(){return this.#n.get(this.#m)}getLayer(t){return this.#n.get(t)}get currentPageIndex(){return this.#m}addLayer(t){this.#n.set(t.pageIndex,t),this.#I?t.enable():t.disable()}removeLayer(t){this.#n.delete(t.pageIndex)}async updateMode(t,e=null,s=!1,i=!1,n=!1,r=!1){if(this.#C!==t&&!(this.#U&&(await this.#U.promise,!this.#U))){if(this.#U=Promise.withResolvers(),this.#g?.commitOrRemove(),this.#C===L.POPUP&&this.#d?.hideSidebar(),this.#d?.destroyPopup(),this.#C=t,t===L.NONE){this.setEditingState(!1),this.#mt();for(const a of this.#i.values())a.hideStandaloneCommentButton();this._editorUndoBar?.hide(),this.toggleComment(null),this.#U.resolve();return}for(const a of this.#i.values())a.addStandaloneCommentButton();t===L.SIGNATURE&&await this.#G?.loadSignatures(),s&&z.clearPointerType(),this.setEditingState(!0),await this.#gt(),this.unselectAll();for(const a of this.#n.values())a.updateMode(t);if(t===L.POPUP){this.#s||=await this.#Y.getAnnotationsByType(new Set(this.#b.map(l=>l._editorType)));const a=new Set,o=[];for(const l of this.#i.values()){const{annotationElementId:h,hasComment:c,deleted:u}=l;h&&a.add(h),c&&!u&&o.push(l.getData())}for(const l of this.#s){const{id:h,popupRef:c,contentsObj:u}=l;c&&u?.str&&!a.has(h)&&!this.#c.has(h)&&o.push(l)}this.#d?.showSidebar(o)}if(!e){i&&this.addNewEditorFromKeyboard(),this.#U.resolve();return}for(const a of this.#i.values())a.uid===e?(this.setSelected(a),r?a.editComment():n?a.enterInEditMode():a.focus()):a.unselect();this.#U.resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(t){t.mode!==this.#C&&this._eventBus.dispatch("switchannotationeditormode",{source:this,...t})}updateParams(t,e){if(this.#b){switch(t){case $.CREATE:this.currentLayer.addNewEditor(e);return;case $.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(this.#K||=new Map).set(t,e),this.showAllEditors("highlight",e);break}if(this.hasSelection)for(const s of this.#v)s.updateParams(t,e);else for(const s of this.#b)s.updateDefaultParams(t,e)}}showAllEditors(t,e,s=!1){for(const n of this.#i.values())n.editorType===t&&n.show(e);(this.#K?.get($.HIGHLIGHT_SHOW_ALL)??!0)!==e&&this.#z([[$.HIGHLIGHT_SHOW_ALL,e]])}enableWaiting(t=!1){if(this.#H!==t){this.#H=t;for(const e of this.#n.values())t?e.disableClick():e.enableClick(),e.div.classList.toggle("waiting",t)}}async#gt(){if(!this.#I){this.#I=!0;const t=[];for(const e of this.#n.values())t.push(e.enable());await Promise.all(t);for(const e of this.#i.values())e.enable()}}#mt(){if(this.unselectAll(),this.#I){this.#I=!1;for(const t of this.#n.values())t.disable();for(const t of this.#i.values())t.disable()}}*getEditors(t){for(const e of this.#i.values())e.pageIndex===t&&(yield e)}getEditor(t){return this.#i.get(t)}addEditor(t){this.#i.set(t.id,t)}removeEditor(t){t.div.contains(document.activeElement)&&(this.#E&&clearTimeout(this.#E),this.#E=setTimeout(()=>{this.focusMainContainer(),this.#E=null},0)),this.#i.delete(t.id),t.annotationElementId&&this.#N?.delete(t.annotationElementId),this.unselect(t),(!t.annotationElementId||!this.#c.has(t.annotationElementId))&&this.#l?.remove(t.id)}addDeletedAnnotationElement(t){this.#c.add(t.annotationElementId),this.addChangedExistingAnnotation(t),t.deleted=!0}isDeletedAnnotationElement(t){return this.#c.has(t)}removeDeletedAnnotationElement(t){this.#c.delete(t.annotationElementId),this.removeChangedExistingAnnotation(t),t.deleted=!1}#nt(t){const e=this.#n.get(t.pageIndex);e?e.addOrRebuild(t):(this.addEditor(t),this.addToAnnotationStorage(t))}setActiveEditor(t){this.#e!==t&&(this.#e=t,t&&this.#z(t.propertiesToUpdate))}get#bt(){let t=null;for(t of this.#v);return t}updateUI(t){this.#bt===t&&this.#z(t.propertiesToUpdate)}updateUIForDefaultProperties(t){this.#z(t.defaultPropertiesToUpdate)}toggleSelected(t){if(this.#v.has(t)){this.#v.delete(t),t.unselect(),this.#P({hasSelectedEditor:this.hasSelection});return}this.#v.add(t),t.select(),this.#z(t.propertiesToUpdate),this.#P({hasSelectedEditor:!0})}setSelected(t){this.updateToolbar({mode:t.mode,editId:t.uid}),this.#g?.commitOrRemove();for(const e of this.#v)e!==t&&e.unselect();this.#d?.destroyPopup(),this.#v.clear(),this.#v.add(t),t.select(),this.#z(t.propertiesToUpdate),this.#P({hasSelectedEditor:!0})}get firstSelectedEditor(){return this.#v.values().next().value}unselect(t){t.unselect(),this.#v.delete(t),this.#P({hasSelectedEditor:this.hasSelection})}get hasSelection(){return this.#v.size!==0}get isEnterHandled(){return this.#v.size===1&&this.firstSelectedEditor.isEnterHandled}undo(){this.#u.undo(),this.#P({hasSomethingToUndo:this.#u.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#J()}),this._editorUndoBar?.hide()}redo(){this.#u.redo(),this.#P({hasSomethingToUndo:!0,hasSomethingToRedo:this.#u.hasSomethingToRedo(),isEmpty:this.#J()})}addCommands(t){this.#u.add(t),this.#P({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#J()})}cleanUndoStack(t){this.#u.cleanType(t)}#J(){if(this.#i.size===0)return!0;if(this.#i.size===1)for(const t of this.#i.values())return t.isEmpty();return!1}delete(){this.commitOrRemove();const t=this.currentLayer?.endDrawingSession(!0);if(!this.hasSelection&&!t)return;const e=t?[t]:[...this.#v],s=()=>{this._editorUndoBar?.show(i,e.length===1?e[0].editorType:e.length);for(const n of e)n.remove()},i=()=>{for(const n of e)this.#nt(n)};this.addCommands({cmd:s,undo:i,mustExec:!0})}commitOrRemove(){this.#e?.commitOrRemove()}hasSomethingToControl(){return this.#e||this.hasSelection}#rt(t){for(const e of this.#v)e.unselect();this.#v.clear();for(const e of t)e.isEmpty()||(this.#v.add(e),e.select());this.#P({hasSelectedEditor:this.hasSelection})}selectAll(){for(const t of this.#v)t.commit();this.#rt(this.#i.values())}unselectAll(){if(!(this.#e&&(this.#e.commitOrRemove(),this.#C!==L.NONE))&&!this.#g?.commitOrRemove()&&(this.#d?.destroyPopup(),!!this.hasSelection)){for(const t of this.#v)t.unselect();this.#v.clear(),this.#P({hasSelectedEditor:!1})}}translateSelectedEditors(t,e,s=!1){if(s||this.commitOrRemove(),!this.hasSelection)return;this.#R[0]+=t,this.#R[1]+=e;const[i,n]=this.#R,r=[...this.#v],a=1e3;this.#W&&clearTimeout(this.#W),this.#W=setTimeout(()=>{this.#W=null,this.#R[0]=this.#R[1]=0,this.addCommands({cmd:()=>{for(const o of r)this.#i.has(o.id)&&(o.translateInPage(i,n),o.translationDone())},undo:()=>{for(const o of r)this.#i.has(o.id)&&(o.translateInPage(-i,-n),o.translationDone())},mustExec:!1})},a);for(const o of r)o.translateInPage(t,e),o.translationDone()}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),this.#p=new Map;for(const t of this.#v)this.#p.set(t,{savedX:t.x,savedY:t.y,savedPageIndex:t.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!this.#p)return!1;this.disableUserSelect(!1);const t=this.#p;this.#p=null;let e=!1;for(const[{x:i,y:n,pageIndex:r},a]of t)a.newX=i,a.newY=n,a.newPageIndex=r,e||=i!==a.savedX||n!==a.savedY||r!==a.savedPageIndex;if(!e)return!1;const s=(i,n,r,a)=>{if(this.#i.has(i.id)){const o=this.#n.get(a);o?i._setParentAndPosition(o,n,r):(i.pageIndex=a,i.x=n,i.y=r)}};return this.addCommands({cmd:()=>{for(const[i,{newX:n,newY:r,newPageIndex:a}]of t)s(i,n,r,a)},undo:()=>{for(const[i,{savedX:n,savedY:r,savedPageIndex:a}]of t)s(i,n,r,a)},mustExec:!0}),!0}dragSelectedEditors(t,e){if(this.#p)for(const s of this.#p.keys())s.drag(t,e)}rebuild(t){if(t.parent===null){const e=this.getLayer(t.pageIndex);e?(e.changeParent(t),e.addOrRebuild(t)):(this.addEditor(t),this.addToAnnotationStorage(t),t.rebuild())}else t.parent.addOrRebuild(t)}get isEditorHandlingKeyboard(){return this.getActive()?.shouldGetKeyboardEvents()||this.#v.size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(t){return this.#e===t}getActive(){return this.#e}getMode(){return this.#C}isEditingMode(){return this.#C!==L.NONE}get imageManager(){return D(this,"imageManager",new Xs)}getSelectionBoxes(t){if(!t)return null;const e=document.getSelection();for(let l=0,h=e.rangeCount;l({x:(h-i)/r,y:1-(l+c-s)/n,width:u/r,height:c/n});break;case"180":a=(l,h,c,u)=>({x:1-(l+c-s)/n,y:1-(h+u-i)/r,width:c/n,height:u/r});break;case"270":a=(l,h,c,u)=>({x:1-(h+u-i)/r,y:(l-s)/n,width:u/r,height:c/n});break;default:a=(l,h,c,u)=>({x:(l-s)/n,y:(h-i)/r,width:c/n,height:u/r});break}const o=[];for(let l=0,h=e.rangeCount;ln.stopPropagation(),{signal:s});const i=n=>{n.preventDefault(),this.#l._uiManager.editAltText(this.#l),this.#d&&this.#l._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:this.#g}})};return t.addEventListener("click",i,{capture:!0,signal:s}),t.addEventListener("keydown",n=>{n.target===t&&n.key==="Enter"&&(this.#r=!0,i(n))},{signal:s}),await this.#m(),t}get#g(){return this.#t&&"added"||this.#t===null&&this.guessedText&&"review"||"missing"}finish(){this.#s&&(this.#s.focus({focusVisible:this.#r}),this.#r=!1)}isEmpty(){return this.#d?this.#t===null:!this.#t&&!this.#e}hasData(){return this.#d?this.#t!==null||!!this.#h:this.isEmpty()}get guessedText(){return this.#h}async setGuessedText(t){this.#t===null&&(this.#h=t,this.#u=await Ft._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer",{generatedAltText:t}),this.#m())}toggleAltTextBadge(t=!1){if(!this.#d||this.#t){this.#o?.remove(),this.#o=null;return}if(!this.#o){const e=this.#o=document.createElement("div");e.className="noAltTextBadge",this.#l.div.append(e)}this.#o.classList.toggle("hidden",!t)}serialize(t){let e=this.#t;return!t&&this.#h===e&&(e=this.#u),{altText:e,decorative:this.#e,guessedText:this.#h,textWithDisclaimer:this.#u}}get data(){return{altText:this.#t,decorative:this.#e}}set data({altText:t,decorative:e,guessedText:s,textWithDisclaimer:i,cancel:n=!1}){s&&(this.#h=s,this.#u=i),!(this.#t===t&&this.#e===e)&&(n||(this.#t=t,this.#e=e),this.#m())}toggle(t=!1){this.#s&&(!t&&this.#a&&(clearTimeout(this.#a),this.#a=null),this.#s.disabled=!t)}shown(){this.#l._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:this.#g}})}destroy(){this.#s?.remove(),this.#s=null,this.#i=null,this.#n=null,this.#o?.remove(),this.#o=null}async#m(){const t=this.#s;if(!t)return;if(this.#d){if(t.classList.toggle("done",!!this.#t),t.setAttribute("data-l10n-id",Ft.#f[this.#g]),this.#i?.setAttribute("data-l10n-id",Ft.#f[`${this.#g}-label`]),!this.#t){this.#n?.remove();return}}else{if(!this.#t&&!this.#e){t.classList.remove("done"),this.#n?.remove();return}t.classList.add("done"),t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-edit-button")}let e=this.#n;if(!e){this.#n=e=document.createElement("span"),e.className="tooltip",e.setAttribute("role","tooltip"),e.id=`alt-text-tooltip-${this.#l.id}`;const i=100,n=this.#l._uiManager._signal;n.addEventListener("abort",()=>{clearTimeout(this.#a),this.#a=null},{once:!0}),t.addEventListener("mouseenter",()=>{this.#a=setTimeout(()=>{this.#a=null,this.#n.classList.add("show"),this.#l._reportTelemetry({action:"alt_text_tooltip"})},i)},{signal:n}),t.addEventListener("mouseleave",()=>{this.#a&&(clearTimeout(this.#a),this.#a=null),this.#n?.classList.remove("show")},{signal:n})}this.#e?e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-decorative-tooltip"):(e.removeAttribute("data-l10n-id"),e.textContent=this.#t),e.parentNode||t.append(e),this.#l.getElementForAltText()?.setAttribute("aria-describedby",e.id)}}class Re{#t=null;#e=null;#s=!1;#i=null;#n=null;#a=null;#r=null;#o=null;#l=!1;#h=null;constructor(t){this.#i=t}renderForToolbar(){const t=this.#e=document.createElement("button");return t.className="comment",this.#u(t,!1)}renderForStandalone(){const t=this.#t=document.createElement("button");t.className="annotationCommentButton";const e=this.#i.commentButtonPosition;if(e){const{style:s}=t;s.insetInlineEnd=`calc(${100*(this.#i._uiManager.direction==="ltr"?1-e[0]:e[0])}% - var(--comment-button-dim))`,s.top=`calc(${100*e[1]}% - var(--comment-button-dim))`;const i=this.#i.commentButtonColor;i&&(s.backgroundColor=i)}return this.#u(t,!0)}focusButton(){setTimeout(()=>{(this.#t??this.#e)?.focus()},0)}onUpdatedColor(){if(!this.#t)return;const t=this.#i.commentButtonColor;t&&(this.#t.style.backgroundColor=t),this.#i._uiManager.updatePopupColor(this.#i)}get commentButtonWidth(){return(this.#t?.getBoundingClientRect().width??0)/this.#i.parent.boundingClientRect.width}get commentPopupPositionInLayer(){if(this.#h)return this.#h;if(!this.#t)return null;const{x:t,y:e,height:s}=this.#t.getBoundingClientRect(),{x:i,y:n,width:r,height:a}=this.#i.parent.boundingClientRect;return[(t-i)/r,(e+s-n)/a]}set commentPopupPositionInLayer(t){this.#h=t}hasDefaultPopupPosition(){return this.#h===null}removeStandaloneCommentButton(){this.#t?.remove(),this.#t=null}removeToolbarCommentButton(){this.#e?.remove(),this.#e=null}setCommentButtonStates({selected:t,hasPopup:e}){this.#t&&(this.#t.classList.toggle("selected",t),this.#t.ariaExpanded=e)}#u(t,e){if(!this.#i._uiManager.hasCommentManager())return null;t.tabIndex="0",t.ariaHasPopup="dialog",e?(t.ariaControls="commentPopup",t.setAttribute("data-l10n-id","pdfjs-show-comment-button")):(t.ariaControlsElements=[this.#i._uiManager.getCommentDialogElement()],t.setAttribute("data-l10n-id","pdfjs-editor-add-comment-button"));const s=this.#i._uiManager._signal;if(!(s instanceof AbortSignal)||s.aborted)return t;t.addEventListener("contextmenu",Ct,{signal:s}),e&&(t.addEventListener("focusin",n=>{this.#i._focusEventsAllowed=!1,nt(n)},{capture:!0,signal:s}),t.addEventListener("focusout",n=>{this.#i._focusEventsAllowed=!0,nt(n)},{capture:!0,signal:s})),t.addEventListener("pointerdown",n=>n.stopPropagation(),{signal:s});const i=n=>{n.preventDefault(),t===this.#e?this.edit():this.#i.toggleComment(!0)};return t.addEventListener("click",i,{capture:!0,signal:s}),t.addEventListener("keydown",n=>{n.target===t&&n.key==="Enter"&&(this.#s=!0,i(n))},{signal:s}),t.addEventListener("pointerenter",()=>{this.#i.toggleComment(!1,!0)},{signal:s}),t.addEventListener("pointerleave",()=>{this.#i.toggleComment(!1,!1)},{signal:s}),t}edit(t){const e=this.commentPopupPositionInLayer;let s,i;if(e)[s,i]=e;else{[s,i]=this.#i.commentButtonPosition;const{width:h,height:c,x:u,y:f}=this.#i;s=u+s*h,i=f+i*c}const n=this.#i.parent.boundingClientRect,{x:r,y:a,width:o,height:l}=n;this.#i._uiManager.editComment(this.#i,r+s*o,a+i*l,{...t,parentDimensions:n})}finish(){this.#e&&(this.#e.focus({focusVisible:this.#s}),this.#s=!1)}isDeleted(){return this.#l||this.#r===""}isEmpty(){return this.#r===null}hasBeenEdited(){return this.isDeleted()||this.#r!==this.#n}serialize(){return this.data}get data(){return{text:this.#r,richText:this.#a,date:this.#o,deleted:this.isDeleted()}}set data(t){if(t!==this.#r&&(this.#a=null),t===null){this.#r="",this.#l=!0;return}this.#r=t,this.#o=new Date,this.#l=!1}restoreData({text:t,richText:e,date:s}){this.#r=t,this.#a=e,this.#o=s,this.#l=!1}setInitialText(t,e=null){this.#n=t,this.data=t,this.#o=null,this.#a=e}shown(){}destroy(){this.#e?.remove(),this.#e=null,this.#t?.remove(),this.#t=null,this.#r="",this.#a=null,this.#o=null,this.#i=null,this.#s=!1,this.#l=!1}}function Ai(d){d.preventDefault()}const wi=1e-4;function vs(d){return d.cancelable?(nt(d),!0):(d.stopPropagation(),!1)}class nn{#t;#e=!1;#s=null;#i;#n;#a;#r;#o;#l=!1;#h=null;#u;#d=new Set;#f=null;#g;#m=null;#c=0;constructor({container:t,isPinchingDisabled:e=null,isPinchingStopped:s=null,onPinchStart:i=null,onPinching:n=null,onPinchEnd:r=null,onPanning:a=null,signal:o}){this.#t=t,this.#s=s,this.#i=e,this.#n=i,this.#a=n,this.#r=r,this.#o=a,this.#g=new AbortController,this.#u=AbortSignal.any([o,this.#g.signal]),t.addEventListener("touchstart",this.#p.bind(this),{passive:!1,signal:this.#u})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return 35/Tt.pixelRatio}get MIN_TOUCH_DISTANCE_TO_SCALE(){return 4/Tt.pixelRatio}#p(t){if(this.#i?.())return;this.#y(t);const e=this.#d;for(const{identifier:s}of t.changedTouches)e.add(s);if(e.size===1){this.#b();return}if(!this.#m){this.#m=new AbortController;const s=AbortSignal.any([this.#u,this.#m.signal]),i=this.#t,n={signal:s,capture:!1,passive:!1};i.addEventListener("touchmove",this.#_.bind(this),n);const r=this.#S.bind(this);i.addEventListener("touchend",r,n),i.addEventListener("touchcancel",r,n),n.capture=!0,i.addEventListener("pointerdown",nt,n),i.addEventListener("pointermove",nt,n),i.addEventListener("pointercancel",Ai,n),i.addEventListener("pointerup",Ai,n),this.#n?.()}this.#l=vs(t),this.#w(t)}#b(){if(this.#h)return;const t=this.#h=new AbortController,e=AbortSignal.any([this.#u,t.signal]),s=this.#t,i={capture:!0,signal:e,passive:!1},n=r=>{r.pointerType==="touch"&&(this.#h?.abort(),this.#h=null)};s.addEventListener("pointerdown",r=>{r.pointerType==="touch"&&(nt(r),n(r))},i),s.addEventListener("pointerup",n,i),s.addEventListener("pointercancel",n,i)}#y(t){const e=this.#d;if(e.size===0)return;const s=this.#d=new Set;for(const{identifier:i}of t.touches)e.has(i)&&s.add(i)}#A(t){const e=this.#d,s=[];for(const i of t.touches)e.has(i.identifier)&&s.push(i);return s}#w(t){const e=this.#A(t);if(e.length!==2||this.#s?.()){this.#f=null;return}const[s,i]=e;this.#f={touch0X:s.screenX,touch0Y:s.screenY,touch1X:i.screenX,touch1Y:i.screenY,panX:(s.clientX+i.clientX)/2,panY:(s.clientY+i.clientY)/2,screenPanX:(s.screenX+i.screenX)/2,screenPanY:(s.screenY+i.screenY)/2}}#_(t){if(!this.#f)return;const e=this.#A(t);if(e.length!==2)return;const s=this.#l;if(this.#l=vs(t),!this.#l)return;if(!s){this.#w(t);return}const[i,n]=e,{screenX:r,screenY:a}=i,{screenX:o,screenY:l}=n,h=this.#f,{touch0X:c,touch0Y:u,touch1X:f,touch1Y:p,panX:g,panY:m}=h,b=f-c,y=p-u,A=o-r,v=l-a,w=(i.clientX+n.clientX)/2,S=(i.clientY+n.clientY)/2;h.panX=w,h.panY=S;const _=w-g,E=S-m,C=(r+o)/2,k=(a+l)/2,P=Math.hypot(C-h.screenPanX,k-h.screenPanY);h.screenPanX=C,h.screenPanY=k;const I=Math.hypot(A,v),B=Math.hypot(b,y),H=this.#e?this.MIN_TOUCH_DISTANCE_TO_SCALE:this.MIN_TOUCH_DISTANCE_TO_PINCH+2*P;if(I=2){this.#w(t);return}const e=!!this.#f;this.#E(),this.#d.size===1&&this.#b(),e&&vs(t)}#E(){this.#f=null,this.#e=!1,this.#c=0,this.#l=!1,this.#m&&(this.#m.abort(),this.#m=null,this.#r?.())}destroy(){this.#E(),this.#d.clear(),this.#g?.abort(),this.#g=null,this.#h?.abort(),this.#h=null}}class M{#t=null;#e=null;#s=null;#i=null;#n=null;#a=!1;#r=null;#o="";#l=null;#h=null;#u=null;#d=null;#f=null;#g="";#m=!1;#c=null;#p=!1;#b=!1;#y=!1;#A=null;#w=0;#_=0;#S=null;#E=null;isSelected=!1;_isCopy=!1;_editToolbar=null;_initialOptions=Object.create(null);_initialData=null;_isVisible=!0;_uiManager=null;_focusEventsAllowed=!0;static _l10n=null;static _l10nAlert=null;static _l10nResizer=null;#x=!1;#M=M._zIndex++;static _borderLineWidth=-1;static _colorManager=new Ys;static _zIndex=1;static _telemetryTimeout=1e3;static get _resizerKeyboardManager(){const t=M.prototype._resizeWithKeyboard,e=Gt.TRANSLATE_SMALL,s=Gt.TRANSLATE_BIG;return D(this,"_resizerKeyboardManager",new bt([[["ArrowLeft"],t,{args:[-e,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t,{args:[-s,0]}],[["ArrowRight"],t,{args:[e,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t,{args:[s,0]}],[["ArrowUp"],t,{args:[0,-e]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t,{args:[0,-s]}],[["ArrowDown"],t,{args:[0,e]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t,{args:[0,s]}],[["Escape"],M.prototype._stopResizingWithKeyboard]]))}constructor(t){this.parent=t.parent,this.id=t.id,this.width=this.height=null,this.pageIndex=t.parent.pageIndex,this.name=t.name,this.div=null,this._uiManager=t.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=t.isCentered,this._structTreeParentId=null,this.annotationElementId=t.annotationElementId||null,this.creationDate=t.creationDate||new Date,this.modificationDate=t.modificationDate||null,this.canAddComment=!0;const{rotation:e,rawDims:{pageWidth:s,pageHeight:i,pageX:n,pageY:r}}=this.parent.viewport;this.rotation=e,this.pageRotation=(360+e-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[s,i],this.pageTranslation=[n,r];const[a,o]=this.parentDimensions;this.x=t.x/a,this.y=t.y/o,this.isAttachedToDOM=!1,this.deleted=!1}updatePageIndex(t){this.pageIndex=t}get editorType(){return Object.getPrototypeOf(this).constructor._type}get mode(){return Object.getPrototypeOf(this).constructor._editorType}static get isDrawer(){return!1}static get _defaultLineColor(){return D(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(t){const e=new or({id:t._uiManager.getId(),parent:t.parent,uiManager:t._uiManager});e.annotationElementId=t.annotationElementId,e.deleted=!0,e._uiManager.addToAnnotationStorage(e)}static initialize(t,e){if(M._l10n??=t,M._l10nAlert??=Object.freeze({highlight:"pdfjs-editor-highlight-added-alert",freetext:"pdfjs-editor-freetext-added-alert",ink:"pdfjs-editor-ink-added-alert",stamp:"pdfjs-editor-stamp-added-alert",signature:"pdfjs-editor-signature-added-alert"}),M._l10nResizer??=Object.freeze({topLeft:"pdfjs-editor-resizer-top-left",topMiddle:"pdfjs-editor-resizer-top-middle",topRight:"pdfjs-editor-resizer-top-right",middleRight:"pdfjs-editor-resizer-middle-right",bottomRight:"pdfjs-editor-resizer-bottom-right",bottomMiddle:"pdfjs-editor-resizer-bottom-middle",bottomLeft:"pdfjs-editor-resizer-bottom-left",middleLeft:"pdfjs-editor-resizer-middle-left"}),M._borderLineWidth!==-1)return;const s=getComputedStyle(document.documentElement);M._borderLineWidth=parseFloat(s.getPropertyValue("--outline-width"))||0}static updateDefaultParams(t,e){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(t){return!1}static paste(t,e){G("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return this.#x}set _isDraggable(t){this.#x=t,this.div?.classList.toggle("draggable",t)}get uid(){return this.annotationElementId||this.id}get isEnterHandled(){return!0}center(){const[t,e]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*e/(t*2),this.y+=this.width*t/(e*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*e/(t*2),this.y-=this.width*t/(e*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(t){this._uiManager.addCommands(t)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=this.#M}setParent(t){t!==null?(this.pageIndex=t.pageIndex,this.pageDimensions=t.pageDimensions):(this.#R(),this.#d?.remove(),this.#d=null),this.parent=t}focusin(t){this._focusEventsAllowed&&(this.#m?this.#m=!1:this.parent.setSelected(this))}focusout(t){!this._focusEventsAllowed||!this.isAttachedToDOM||t.relatedTarget?.closest(`#${this.id}`)||(t.preventDefault(),this.parent?.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.isInEditMode()&&this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(t,e,s,i){const[n,r]=this.parentDimensions;[s,i]=this.screenToPageTranslation(s,i),this.x=(t+s)/n,this.y=(e+i)/r,this.fixAndSetPosition()}_moveAfterPaste(t,e){if(this.isClone){delete this.isClone;return}const[s,i]=this.parentDimensions;this.setAt(t*s,e*i,this.width*s,this.height*i),this._onTranslated()}#k([t,e],s,i){[s,i]=this.screenToPageTranslation(s,i),this.x+=s/t,this.y+=i/e,this._onTranslating(this.x,this.y),this.fixAndSetPosition()}translate(t,e){this.#k(this.parentDimensions,t,e)}translateInPage(t,e){this.#c||=[this.x,this.y,this.width,this.height],this.#k(this.pageDimensions,t,e),this.div.scrollIntoView({block:"nearest"})}translationDone(){this._onTranslated(this.x,this.y)}drag(t,e){this.#c||=[this.x,this.y,this.width,this.height];const{div:s,parentDimensions:[i,n]}=this;if(this.x+=t/i,this.y+=e/n,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:c,y:u}=this.div.getBoundingClientRect();this.parent.findNewParent(this,c,u)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:r,y:a}=this;const[o,l]=this.getBaseTranslation();r+=o,a+=l;const{style:h}=s;h.left=`${(100*r).toFixed(2)}%`,h.top=`${(100*a).toFixed(2)}%`,this._onTranslating(r,a)}_onTranslating(t,e){}_onTranslated(t,e){}get _hasBeenMoved(){return!!this.#c&&(this.#c[0]!==this.x||this.#c[1]!==this.y)}get _hasBeenResized(){return!!this.#c&&(this.#c[2]!==this.width||this.#c[3]!==this.height)}getBaseTranslation(){const[t,e]=this.parentDimensions,{_borderLineWidth:s}=M,i=s/t,n=s/e;switch(this.rotation){case 90:return[-i,n];case 180:return[i,n];case 270:return[i,-n];default:return[-i,-n]}}get _mustFixPosition(){return!0}fixAndSetPosition(t=this.rotation){const{div:{style:e},pageDimensions:[s,i]}=this;let{x:n,y:r,width:a,height:o}=this;if(a*=s,o*=i,n*=s,r*=i,this._mustFixPosition)switch(t){case 0:n=X(n,0,s-a),r=X(r,0,i-o);break;case 90:n=X(n,0,s-o),r=X(r,a,i);break;case 180:n=X(n,a,s),r=X(r,o,i);break;case 270:n=X(n,o,s),r=X(r,0,i-a);break}this.x=n/=s,this.y=r/=i;const[l,h]=this.getBaseTranslation();n+=l,r+=h,e.left=`${(100*n).toFixed(2)}%`,e.top=`${(100*r).toFixed(2)}%`,this.moveInDOM()}static#T(t,e,s){switch(s){case 90:return[e,-t];case 180:return[-t,-e];case 270:return[-e,t];default:return[t,e]}}screenToPageTranslation(t,e){return M.#T(t,e,this.parentRotation)}pageTranslationToScreen(t,e){return M.#T(t,e,360-this.parentRotation)}#D(t){switch(t){case 90:{const[e,s]=this.pageDimensions;return[0,-e/s,s/e,0]}case 180:return[-1,0,0,-1];case 270:{const[e,s]=this.pageDimensions;return[0,e/s,-s/e,0]}default:return[1,0,0,1]}}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:t,pageDimensions:[e,s]}=this;return[e*t,s*t]}setDims(){const{div:{style:t},width:e,height:s}=this;t.width=`${(100*e).toFixed(2)}%`,t.height=`${(100*s).toFixed(2)}%`}getInitialTranslation(){return[0,0]}#I(){if(this.#l)return;this.#l=document.createElement("div"),this.#l.classList.add("resizers");const t=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],e=this._uiManager._signal;for(const s of t){const i=document.createElement("div");this.#l.append(i),i.classList.add("resizer",s),i.setAttribute("data-resizer-name",s),i.addEventListener("pointerdown",this.#O.bind(this,s),{signal:e}),i.addEventListener("contextmenu",Ct,{signal:e}),i.tabIndex=-1}this.div.prepend(this.#l)}#O(t,e){e.preventDefault();const{isMac:s}=j.platform;if(e.button!==0||e.ctrlKey&&s)return;this.#s?.toggle(!1);const i=this._isDraggable;this._isDraggable=!1,this.#h=[e.screenX,e.screenY];const n=new AbortController,r=this._uiManager.combinedSignal(n);this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",this.#L.bind(this,t),{passive:!0,capture:!0,signal:r}),window.addEventListener("touchmove",nt,{passive:!1,signal:r}),window.addEventListener("contextmenu",Ct,{signal:r}),this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};const a=this.parent.div.style.cursor,o=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(e.target).cursor;const l=()=>{n.abort(),this.parent.togglePointerEvents(!0),this.#s?.toggle(!0),this._isDraggable=i,this.parent.div.style.cursor=a,this.div.style.cursor=o,this.#F()};window.addEventListener("pointerup",l,{signal:r}),window.addEventListener("blur",l,{signal:r})}#H(t,e,s,i){this.width=s,this.height=i,this.x=t,this.y=e,this.setDims(),this.fixAndSetPosition(),this._onResized()}_onResized(){}#F(){if(!this.#u)return;const{savedX:t,savedY:e,savedWidth:s,savedHeight:i}=this.#u;this.#u=null;const n=this.x,r=this.y,a=this.width,o=this.height;n===t&&r===e&&a===s&&o===i||this.addCommands({cmd:this.#H.bind(this,n,r,a,o),undo:this.#H.bind(this,t,e,s,i),mustExec:!0})}static _round(t){return Math.round(t*1e4)/1e4}#L(t,e){const[s,i]=this.parentDimensions,n=this.x,r=this.y,a=this.width,o=this.height,l=M.MIN_SIZE/s,h=M.MIN_SIZE/i,c=this.#D(this.rotation),u=(O,F)=>[c[0]*O+c[2]*F,c[1]*O+c[3]*F],f=this.#D(360-this.rotation),p=(O,F)=>[f[0]*O+f[2]*F,f[1]*O+f[3]*F];let g,m,b=!1,y=!1;switch(t){case"topLeft":b=!0,g=(O,F)=>[0,0],m=(O,F)=>[O,F];break;case"topMiddle":g=(O,F)=>[O/2,0],m=(O,F)=>[O/2,F];break;case"topRight":b=!0,g=(O,F)=>[O,0],m=(O,F)=>[0,F];break;case"middleRight":y=!0,g=(O,F)=>[O,F/2],m=(O,F)=>[0,F/2];break;case"bottomRight":b=!0,g=(O,F)=>[O,F],m=(O,F)=>[0,0];break;case"bottomMiddle":g=(O,F)=>[O/2,F],m=(O,F)=>[O/2,0];break;case"bottomLeft":b=!0,g=(O,F)=>[0,F],m=(O,F)=>[O,0];break;case"middleLeft":y=!0,g=(O,F)=>[0,F/2],m=(O,F)=>[O,F/2];break}const A=g(a,o),v=m(a,o);let w=u(...v);const S=M._round(n+w[0]),_=M._round(r+w[1]);let E=1,C=1,k,P;if(e.fromKeyboard)({deltaX:k,deltaY:P}=e);else{const{screenX:O,screenY:F}=e,[ot,lt]=this.#h;[k,P]=this.screenToPageTranslation(O-ot,F-lt),this.#h[0]=O,this.#h[1]=F}if([k,P]=p(k/s,P/i),b){const O=Math.hypot(a,o);E=C=Math.max(Math.min(Math.hypot(v[0]-A[0]-k,v[1]-A[1]-P)/O,1/a,1/o),l/a,h/o)}else y?E=X(Math.abs(v[0]-A[0]-k),l,1)/a:C=X(Math.abs(v[1]-A[1]-P),h,1)/o;const I=M._round(a*E),B=M._round(o*C);w=u(...m(I,B));const H=S-w[0],Y=_-w[1];this.#c||=[this.x,this.y,this.width,this.height],this.width=I,this.height=B,this.x=H,this.y=Y,this.setDims(),this.fixAndSetPosition(),this._onResizing()}_onResizing(){}altTextFinish(){this.#s?.finish()}get toolbarButtons(){return null}async addEditToolbar(){if(this._editToolbar||this.#b)return this._editToolbar;this._editToolbar=new Se(this),this.div.append(this._editToolbar.render());const{toolbarButtons:t}=this;if(t)for(const[e,s]of t)await this._editToolbar.addButton(e,s);return this.hasComment||this._editToolbar.addButton("comment",this.addCommentButton()),this._editToolbar.addButton("delete"),this._editToolbar}addCommentButtonInToolbar(){this._editToolbar?.addButtonBefore("comment",this.addCommentButton(),".deleteButton")}removeCommentButtonFromToolbar(){this._editToolbar?.removeButton("comment")}removeEditToolbar(){this._editToolbar?.remove(),this._editToolbar=null,this.#s?.destroy()}addContainer(t){const e=this._editToolbar?.div;e?e.before(t):this.div.append(t)}getClientDimensions(){return this.div.getBoundingClientRect()}createAltText(){return this.#s||(Ft.initialize(M._l10n),this.#s=new Ft(this),this.#t&&(this.#s.data=this.#t,this.#t=null)),this.#s}get altTextData(){return this.#s?.data}set altTextData(t){this.#s&&(this.#s.data=t)}get guessedAltText(){return this.#s?.guessedText}async setGuessedAltText(t){await this.#s?.setGuessedText(t)}serializeAltText(t){return this.#s?.serialize(t)}hasAltText(){return!!this.#s&&!this.#s.isEmpty()}hasAltTextData(){return this.#s?.hasData()??!1}focusCommentButton(){this.#i?.focusButton()}addCommentButton(){return this.canAddComment?this.#i||=new Re(this):null}addStandaloneCommentButton(){if(this._uiManager.hasCommentManager()){if(this.#n){this._uiManager.isEditingMode()&&this.#n.classList.remove("hidden");return}this.hasComment&&(this.#n=this.#i.renderForStandalone(),this.div.append(this.#n))}}removeStandaloneCommentButton(){this.#i.removeStandaloneCommentButton(),this.#n=null}hideStandaloneCommentButton(){this.#n?.classList.add("hidden")}get comment(){if(!this.#i)return null;const{data:{richText:t,text:e,date:s,deleted:i}}=this.#i;return{text:e,richText:t,date:s,deleted:i,color:this.getNonHCMColor(),opacity:this.opacity??1}}set comment(t){this.#i||=new Re(this),typeof t=="object"&&t!==null?this.#i.restoreData(t):this.#i.data=t,this.hasComment?(this.removeCommentButtonFromToolbar(),this.addStandaloneCommentButton(),this._uiManager.updateComment(this)):(this.addCommentButtonInToolbar(),this.removeStandaloneCommentButton(),this._uiManager.removeComment(this))}setCommentData({comment:t,popupRef:e,richText:s}){if(!e||(this.#i||=new Re(this),this.#i.setInitialText(t,s),!this.annotationElementId))return;const i=this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);i&&this.updateFromAnnotationLayer(i)}get hasEditedComment(){return this.#i?.hasBeenEdited()}get hasDeletedComment(){return this.#i?.isDeleted()}get hasComment(){return!!this.#i&&!this.#i.isEmpty()&&!this.#i.isDeleted()}async editComment(t){this.#i||=new Re(this),this.#i.edit(t)}toggleComment(t,e=void 0){this.hasComment&&this._uiManager.toggleComment(this,t,e)}setSelectedCommentButton(t){this.#i.setSelectedButton(t)}addComment(t){if(this.hasEditedComment){const[,,,i]=t.rect,[n]=this.pageDimensions,[r]=this.pageTranslation,a=r+n+1,o=i-100,l=a+180;t.popup={contents:this.comment.text,deleted:this.comment.deleted,rect:[a,o,l,i]}}}updateFromAnnotationLayer({popup:{contents:t,deleted:e}}){this.#i.data=e?null:t}get parentBoundingClientRect(){return this.parent.boundingClientRect}render(){const t=this.div=document.createElement("div");t.setAttribute("data-editor-rotation",(360-this.rotation)%360),t.className=this.name,t.setAttribute("id",this.id),t.tabIndex=this.#a?-1:0,t.setAttribute("role","application"),this.defaultL10nId&&t.setAttribute("data-l10n-id",this.defaultL10nId),this._isVisible||t.classList.add("hidden"),this.setInForeground(),this.#B();const[e,s]=this.parentDimensions;this.parentRotation%180!==0&&(t.style.maxWidth=`${(100*s/e).toFixed(2)}%`,t.style.maxHeight=`${(100*e/s).toFixed(2)}%`);const[i,n]=this.getInitialTranslation();return this.translate(i,n),sn(this,t,["keydown","pointerdown","dblclick"]),this.#G(),this.addStandaloneCommentButton(),this._uiManager._editorUndoBar?.hide(),t}#j(){this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height},this.#s?.toggle(!1),this.parent.togglePointerEvents(!1)}#N(t,e,s){let n=.7*(s/e)+1-.7;if(n===1)return;const r=this.#D(this.rotation),a=(S,_)=>[r[0]*S+r[2]*_,r[1]*S+r[3]*_],[o,l]=this.parentDimensions,h=this.x,c=this.y,u=this.width,f=this.height,p=M.MIN_SIZE/o,g=M.MIN_SIZE/l;n=Math.max(Math.min(n,1/u,1/f),p/u,g/f);const m=M._round(u*n),b=M._round(f*n);if(m===u&&b===f)return;this.#c||=[h,c,u,f];const y=a(u/2,f/2),A=M._round(h+y[0]),v=M._round(c+y[1]),w=a(m/2,b/2);this.x=A-w[0],this.y=v-w[1],this.width=m,this.height=b,this.setDims(),this.fixAndSetPosition(),this._onResizing()}#$(){this.#s?.toggle(!0),this.parent.togglePointerEvents(!0),this.#F()}pointerdown(t){const{isMac:e}=j.platform;if(t.button!==0||t.ctrlKey&&e){t.preventDefault();return}if(this.#m=!0,this._isDraggable){this.#v(t);return}this.#C(t)}#C(t){const{isMac:e}=j.platform;t.ctrlKey&&!e||t.shiftKey||t.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this)}#v(t){const{isSelected:e}=this;this._uiManager.setUpDragSession();let s=!1;const i=new AbortController,n=this._uiManager.combinedSignal(i),r={capture:!0,passive:!1,signal:n},a=l=>{i.abort(),this.#r=null,this.#m=!1,this._uiManager.endDragSession()||this.#C(l),s&&this._onStopDragging()};e&&(this.#w=t.clientX,this.#_=t.clientY,this.#r=t.pointerId,this.#o=t.pointerType,window.addEventListener("pointermove",l=>{s||(s=!0,this._uiManager.toggleComment(this,!0,!1),this._onStartDragging());const{clientX:h,clientY:c,pointerId:u}=l;if(u!==this.#r){nt(l);return}const[f,p]=this.screenToPageTranslation(h-this.#w,c-this.#_);this.#w=h,this.#_=c,this._uiManager.dragSelectedEditors(f,p),this.div.scrollIntoView({block:"nearest"})},r),window.addEventListener("touchmove",nt,r),window.addEventListener("pointerdown",l=>{l.pointerType===this.#o&&(this.#E||l.isPrimary)&&a(l),nt(l)},r));const o=l=>{if(!this.#r||this.#r===l.pointerId){a(l);return}nt(l)};window.addEventListener("pointerup",o,{signal:n}),window.addEventListener("blur",o,{signal:n})}_onStartDragging(){}_onStopDragging(){}moveInDOM(){this.#A&&clearTimeout(this.#A),this.#A=setTimeout(()=>{this.#A=null,this.parent?.moveEditorInDOM(this)},0)}_setParentAndPosition(t,e,s){t.changeParent(this),this.x=e,this.y=s,this.fixAndSetPosition(),this._onTranslated()}getRect(t,e,s=this.rotation){const i=this.parentScale,[n,r]=this.pageDimensions,[a,o]=this.pageTranslation,l=t/i,h=e/i,c=this.x*n,u=this.y*r,f=this.width*n,p=this.height*r;switch(s){case 0:return[c+l+a,r-u-h-p+o,c+l+f+a,r-u-h+o];case 90:return[c+h+a,r-u+l+o,c+h+p+a,r-u+l+f+o];case 180:return[c-l-f+a,r-u+h+o,c-l+a,r-u+h+p+o];case 270:return[c-h-p+a,r-u-l-f+o,c-h+a,r-u-l+o];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(t,e){const[s,i,n,r]=t,a=n-s,o=r-i;switch(this.rotation){case 0:return[s,e-r,a,o];case 90:return[s,e-i,o,a];case 180:return[n,e-i,a,o];case 270:return[n,e-r,o,a];default:throw new Error("Invalid rotation")}}getPDFRect(){return this.getRect(0,0)}getNonHCMColor(){return this.color&&M._colorManager.convert(this._uiManager.getNonHCMColor(this.color))}onUpdatedColor(){this.#i?.onUpdatedColor()}getData(){const{comment:{text:t,color:e,date:s,opacity:i,deleted:n,richText:r},uid:a,pageIndex:o,creationDate:l,modificationDate:h}=this;return{id:a,pageIndex:o,rect:this.getPDFRect(),richText:r,contentsObj:{str:t},creationDate:l,modificationDate:s||h,popupRef:!n,color:e,opacity:i}}onceAdded(t){}isEmpty(){return!1}enableEditMode(){return this.isInEditMode()?!1:(this.parent.setEditingState(!1),this.#b=!0,!0)}disableEditMode(){return this.isInEditMode()?(this.parent.setEditingState(!0),this.#b=!1,!0):!1}isInEditMode(){return this.#b}shouldGetKeyboardEvents(){return this.#y}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){const{top:t,left:e,bottom:s,right:i}=this.getClientDimensions(),{innerHeight:n,innerWidth:r}=window;return e0&&t0}#B(){if(this.#f||!this.div)return;this.#f=new AbortController;const t=this._uiManager.combinedSignal(this.#f);this.div.addEventListener("focusin",this.focusin.bind(this),{signal:t}),this.div.addEventListener("focusout",this.focusout.bind(this),{signal:t})}#G(){this.#E||!this.div||!this.isResizable||!this._uiManager._supportsPinchToZoom||(this.#E=new nn({container:this.div,isPinchingDisabled:()=>!this.isSelected,onPinchStart:this.#j.bind(this),onPinching:this.#N.bind(this),onPinchEnd:this.#$.bind(this),signal:this._uiManager._signal}))}rebuild(){this.#B(),this.#G()}rotate(t){}resize(){}serializeDeleted(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:this._initialData?.popupRef||""}}serialize(t=!1,e=null){return{annotationType:this.mode,pageIndex:this.pageIndex,rect:this.getPDFRect(),rotation:this.rotation,structTreeParentId:this._structTreeParentId,popupRef:this._initialData?.popupRef||""}}static async deserialize(t,e,s){const i=new this.prototype.constructor({parent:e,id:s.getId(),uiManager:s,annotationElementId:t.annotationElementId,creationDate:t.creationDate,modificationDate:t.modificationDate});i.rotation=t.rotation,i.#t=t.accessibilityData,i._isCopy=t.isCopy||!1;const[n,r]=i.pageDimensions,[a,o,l,h]=i.getRectInCurrentCoords(t.rect,r);return i.x=a/n,i.y=o/r,i.width=l/n,i.height=h/r,i}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){if(this.#f?.abort(),this.#f=null,this.isEmpty()||this.commit(),this.#E?.destroy(),this.#E=null,this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),this.hideCommentPopup(),this.#A&&(clearTimeout(this.#A),this.#A=null),this.#R(),this.removeEditToolbar(),this.#S){for(const t of this.#S.values())clearTimeout(t);this.#S=null}this.parent=null,this.#d?.remove(),this.#d=null}get isResizable(){return!1}makeResizable(){this.isResizable&&(this.#I(),this.#l.classList.remove("hidden"))}get toolbarPosition(){return null}get commentButtonPosition(){return this._uiManager.direction==="ltr"?[1,0]:[0,0]}get commentButtonPositionInPage(){const{commentButtonPosition:[t,e]}=this,[s,i,n,r]=this.getPDFRect();return[M._round(s+(n-s)*t),M._round(i+(r-i)*(1-e))]}get commentButtonColor(){return this._uiManager.makeCommentColor(this.getNonHCMColor(),this.opacity)}get commentPopupPosition(){return this.#i.commentPopupPositionInLayer}set commentPopupPosition(t){this.#i.commentPopupPositionInLayer=t}hasDefaultPopupPosition(){return this.#i.hasDefaultPopupPosition()}get commentButtonWidth(){return this.#i.commentButtonWidth}get elementBeforePopup(){return this.div}setCommentButtonStates(t){this.#i?.setCommentButtonStates(t)}keydown(t){if(!this.isResizable||t.target!==this.div||t.key!=="Enter")return;this._uiManager.setSelected(this),this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};const e=this.#l.children;if(!this.#e){this.#e=Array.from(e);const r=this.#V.bind(this),a=this.#K.bind(this),o=this._uiManager._signal;for(const l of this.#e){const h=l.getAttribute("data-resizer-name");l.setAttribute("role","spinbutton"),l.addEventListener("keydown",r,{signal:o}),l.addEventListener("blur",a,{signal:o}),l.addEventListener("focus",this.#Y.bind(this,h),{signal:o}),l.setAttribute("data-l10n-id",M._l10nResizer[h])}}const s=this.#e[0];let i=0;for(const r of e){if(r===s)break;i++}const n=(360-this.rotation+this.parentRotation)%360/90*(this.#e.length/4);if(n!==i){if(ni)for(let a=0;a{this.div?.classList.contains("selectedEditor")&&this._editToolbar?.show()});return}this._editToolbar?.show(),this.#s?.toggleAltTextBadge(!1)}focus(){this.div&&!this.div.contains(document.activeElement)&&setTimeout(()=>this.div?.focus({preventScroll:!0}),0)}unselect(){this.isSelected&&(this.isSelected=!1,this.#l?.classList.add("hidden"),this.div?.classList.remove("selectedEditor"),this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),this._editToolbar?.hide(),this.#s?.toggleAltTextBadge(!0),this.hideCommentPopup())}hideCommentPopup(){this.hasComment&&this._uiManager.toggleComment(null)}updateParams(t,e){}disableEditing(){}enableEditing(){}get canChangeContent(){return!1}enterInEditMode(){this.canChangeContent&&(this.enableEditMode(),this.div.focus())}dblclick(t){t.target.nodeName!=="BUTTON"&&(this.enterInEditMode(),this.parent.updateToolbar({mode:this.constructor._editorType,editId:this.uid}))}getElementForAltText(){return this.div}get contentDiv(){return this.div}get isEditing(){return this.#p}set isEditing(t){this.#p=t,this.parent&&(t?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(t,e=!1){if(e){this.#S||=new Map;const{action:s}=t;let i=this.#S.get(s);i&&clearTimeout(i),i=setTimeout(()=>{this._reportTelemetry(t),this.#S.delete(s),this.#S.size===0&&(this.#S=null)},M._telemetryTimeout),this.#S.set(s,i);return}t.type||=this.editorType,this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:t}})}show(t=this._isVisible){this.div.classList.toggle("hidden",!t),this._isVisible=t}enable(){this.div&&(this.div.tabIndex=0),this.#a=!1}disable(){this.div&&(this.div.tabIndex=-1),this.#a=!0}updateFakeAnnotationElement(t){if(!this.#d&&!this.deleted){this.#d=t.addFakeAnnotation(this);return}if(this.deleted){this.#d.remove(),this.#d=null;return}(this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized)&&this.#d.updateEdited({rect:this.getPDFRect(),popup:this.comment})}renderAnnotationElement(t){if(this.deleted)return t.hide(),null;let e=t.container.querySelector(".annotationContent");if(!e)e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),t.container.prepend(e);else if(e.nodeName==="CANVAS"){const s=e;e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),s.before(e)}return e}resetAnnotationElement(t){const{firstElementChild:e}=t.container;e?.nodeName==="DIV"&&e.classList.contains("annotationContent")&&e.remove()}}class or extends M{constructor(t){super(t),this.annotationElementId=t.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}}const vi=3285377520,At=4294901760,It=65535;class Fs{constructor(t){this.h1=t?t&4294967295:vi,this.h2=t?t&4294967295:vi}update(t){let e,s;if(typeof t=="string"){e=new Uint8Array(t.length*2),s=0;for(let g=0,m=t.length;g>>8,e[s++]=b&255)}}else if(ArrayBuffer.isView(t))e=t.slice(),s=e.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const i=s>>2,n=s-i*4,r=new Uint32Array(e.buffer,0,i);let a=0,o=0,l=this.h1,h=this.h2;const c=3432918353,u=461845907,f=c&It,p=u&It;for(let g=0;g>>17,a=a*u&At|a*p&It,l^=a,l=l<<13|l>>>19,l=l*5+3864292196):(o=r[g],o=o*c&At|o*f&It,o=o<<15|o>>>17,o=o*u&At|o*p&It,h^=o,h=h<<13|h>>>19,h=h*5+3864292196);switch(a=0,n){case 3:a^=e[i*4+2]<<16;case 2:a^=e[i*4+1]<<8;case 1:a^=e[i*4],a=a*c&At|a*f&It,a=a<<15|a>>>17,a=a*u&At|a*p&It,i&1?l^=a:h^=a}this.h1=l,this.h2=h}hexdigest(){let t=this.h1,e=this.h2;return t^=e>>>1,t=t*3981806797&At|t*36045&It,e=e*4283543511&At|((e<<16|t>>>16)*2950163797&At)>>>16,t^=e>>>1,t=t*444984403&At|t*60499&It,e=e*3301882366&At|((e<<16|t>>>16)*3120437893&At)>>>16,t^=e>>>1,(t>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}const Ce=Object.freeze({map:null,hash:"",transfer:void 0});class qs{#t=!1;#e=null;#s=null;#i=new Map;onSetModified=null;onResetModified=null;onAnnotationEditor=null;getValue(t,e){const s=this.#i.get(t);return s===void 0?e:Object.assign(e,s)}getRawValue(t){return this.#i.get(t)}remove(t){const e=this.#i.get(t);e!==void 0&&(e instanceof M&&this.#s.delete(e.annotationElementId),this.#i.delete(t),this.#i.size===0&&this.resetModified(),!this.#i.values().some(s=>s instanceof M)&&this.onAnnotationEditor?.(null))}setValue(t,e){const s=this.#i.get(t);let i=!1;if(s!==void 0)for(const[n,r]of Object.entries(e))s[n]!==r&&(i=!0,s[n]=r);else i=!0,this.#i.set(t,e);i&&this.#n(),e instanceof M&&((this.#s||=new Map).set(e.annotationElementId,e),this.onAnnotationEditor?.(e.constructor._type))}has(t){return this.#i.has(t)}get size(){return this.#i.size}#n(){this.#t||(this.#t=!0,this.onSetModified?.())}resetModified(){this.#t&&(this.#t=!1,this.onResetModified?.())}get print(){return new rn(this)}get serializable(){if(this.#i.size===0)return Ce;const t=new Map,e=new Fs,s=[],i=Object.create(null);let n=!1;for(const[r,a]of this.#i){const o=a instanceof M?a.serialize(!1,i):a;a.page&&(a.pageIndex=a.page._pageIndex,delete a.page),o&&(t.set(r,o),e.update(`${r}:${JSON.stringify(o)}`),n||=!!o.bitmap)}if(n)for(const r of t.values())r.bitmap&&s.push(r.bitmap);return t.size>0?{map:t,hash:e.hexdigest(),transfer:s}:Ce}get editorStats(){let t=null;const e=new Map;let s=0,i=0;for(const n of this.#i.values()){if(!(n instanceof M)){n.popup&&(n.popup.deleted?i+=1:s+=1);continue}n.isCommentDeleted?i+=1:n.hasEditedComment&&(s+=1);const r=n.telemetryFinalData;if(!r)continue;const{type:a}=r;e.getOrInsertComputed(a,()=>Object.getPrototypeOf(n).constructor),t||=Object.create(null);const o=t[a]||=new Map;for(const[l,h]of Object.entries(r)){if(l==="type")continue;const c=o.getOrInsertComputed(l,zs);c.set(h,(c.get(h)??0)+1)}}if((i>0||s>0)&&(t||=Object.create(null),t.comments={deleted:i,edited:s}),!t)return null;for(const[n,r]of e)t[n]=r.computeTelemetryFinalData(t[n]);return t}resetModifiedIds(){this.#e=null}updateEditor(t,e){const s=this.#s?.get(t);return s?(s.updateFromAnnotationLayer(e),!0):!1}getEditor(t){return this.#s?.get(t)||null}get modifiedIds(){if(this.#e)return this.#e;const t=[];if(this.#s)for(const s of this.#s.values())s.serialize()&&t.push(s.annotationElementId);let e="";if(t.length){const s=new Fs;s.update(t.join(",")),e=s.hexdigest()}return this.#e={ids:new Set(t),hash:e}}[Symbol.iterator](){return this.#i.entries()}}class rn extends qs{#t=Ce;constructor(t){super();const{serializable:e}=t;if(e===Ce)return;const{map:s,hash:i,transfer:n}=e,r=structuredClone(s,n?{transfer:n}:null);this.#t={map:r,hash:i,transfer:[]}}get print(){G("Should not call PrintAnnotationStorage.print")}get serializable(){return this.#t}get modifiedIds(){return D(this,"modifiedIds",{ids:new Set,hash:""})}}const re="__forcedDependency",{floor:Si,ceil:_i}=Math;function Ei(d,t,e,s,i,n){d[t*4+0]=Math.min(d[t*4+0],e),d[t*4+1]=Math.min(d[t*4+1],s),d[t*4+2]=Math.max(d[t*4+2],i),d[t*4+3]=Math.max(d[t*4+3],n)}function lr(d,t,e,s,i){let n;d?(d<0&&(n=i[0],i[0]=i[2],i[2]=n),i[0]*=d,i[2]*=d,t<0&&(n=i[1],i[1]=i[3],i[3]=n),i[1]*=t,i[3]*=t):i.fill(0),i[0]+=e,i[1]+=s,i[2]+=e,i[3]+=s}const Rs=new Uint32Array(new Uint8Array([255,255,0,0]).buffer)[0];class hr{#t;#e;constructor(t,e){this.#t=t,this.#e=e}get length(){return this.#t.length}isEmpty(t){return this.#t[t]===Rs}minX(t){return this.#e[t*4+0]/256}minY(t){return this.#e[t*4+1]/256}maxX(t){return(this.#e[t*4+2]+1)/256}maxY(t){return(this.#e[t*4+3]+1)/256}}const xi=(d,t)=>d?.getOrInsertComputed(t,()=>({dependencies:new Set,isRenderingOperation:!1}));class cr{#t=[[1,0,0,1,0,0]];#e=[-1/0,-1/0,1/0,1/0];#s=new Float64Array(Bt);_pendingBBoxIdx=-1;#i;#n;#a;#r;_savesStack=[];_markedContentStack=[];constructor(t,e){this.#i=t.width,this.#n=t.height,this.#o(e)}growOperationsCount(t){t>=this.#r.length&&this.#o(t,this.#r)}#o(t,e){const s=new ArrayBuffer(t*4);this.#a=new Uint8ClampedArray(s),this.#r=new Uint32Array(s),e&&e.length>0?(this.#r.set(e),this.#r.fill(Rs,e.length)):this.#r.fill(Rs)}get clipBox(){return this.#e}save(t){return this.#e={__proto__:this.#e},this._savesStack.push(t),this}restore(t,e){const s=Object.getPrototypeOf(this.#e);if(s===null)return this;this.#e=s;const i=this._savesStack.pop();return i!==void 0&&(e?.(i,t),this.#r[t]=this.#r[i]),this}recordOpenMarker(t){return this._savesStack.push(t),this}getOpenMarker(){return this._savesStack.length===0?null:this._savesStack.at(-1)}recordCloseMarker(t,e){const s=this._savesStack.pop();return s!==void 0&&(e?.(s,t),this.#r[t]=this.#r[s]),this}beginMarkedContent(t){return this._markedContentStack.push(t),this}endMarkedContent(t,e){const s=this._markedContentStack.pop();return s!==void 0&&(e?.(s,t),this.#r[t]=this.#r[s]),this}pushBaseTransform(t){return this.#t.push(x.multiplyByDOMMatrix(this.#t.at(-1),t.getTransform())),this}popBaseTransform(){return this.#t.length>1&&this.#t.pop(),this}resetBBox(t){return this._pendingBBoxIdx!==t&&(this._pendingBBoxIdx=t,this.#s.set(Bt,0)),this}recordClipBox(t,e,s,i,n,r){const a=x.multiplyByDOMMatrix(this.#t.at(-1),e.getTransform()),o=Bt.slice();x.axialAlignedBoundingBox([s,n,i,r],a,o);const l=x.intersect(this.#e,o);return l?(this.#e[0]=l[0],this.#e[1]=l[1],this.#e[2]=l[2],this.#e[3]=l[3]):(this.#e[0]=this.#e[1]=1/0,this.#e[2]=this.#e[3]=-1/0),this}recordBBox(t,e,s,i,n,r){const a=this.#e;if(a[0]===1/0)return this;const o=x.multiplyByDOMMatrix(this.#t.at(-1),e.getTransform());if(a[0]===-1/0)return x.axialAlignedBoundingBox([s,n,i,r],o,this.#s),this;const l=Bt.slice();return x.axialAlignedBoundingBox([s,n,i,r],o,l),this.#s[0]=X(l[0],a[0],this.#s[0]),this.#s[1]=X(l[1],a[1],this.#s[1]),this.#s[2]=X(l[2],this.#s[2],a[2]),this.#s[3]=X(l[3],this.#s[3],a[3]),this}recordFullPageBBox(t){return this.#s[0]=Math.max(0,this.#e[0]),this.#s[1]=Math.max(0,this.#e[1]),this.#s[2]=Math.min(this.#i,this.#e[2]),this.#s[3]=Math.min(this.#n,this.#e[3]),this}recordOperation(t,e=!1,s){if(this._pendingBBoxIdx!==t)return this;const i=Si(this.#s[0]*256/this.#i),n=Si(this.#s[1]*256/this.#n),r=_i(this.#s[2]*256/this.#i),a=_i(this.#s[3]*256/this.#n);if(Ei(this.#a,t,i,n,r,a),s)for(const o of s)for(const l of o)l!==t&&Ei(this.#a,l,i,n,r,a);return e||(this._pendingBBoxIdx=-1),this}bboxToClipBoxDropOperation(t){return this._pendingBBoxIdx===t&&(this._pendingBBoxIdx=-1,this.#e[0]=Math.max(this.#e[0],this.#s[0]),this.#e[1]=Math.max(this.#e[1],this.#s[1]),this.#e[2]=Math.min(this.#e[2],this.#s[2]),this.#e[3]=Math.min(this.#e[3],this.#s[3])),this}take(){return new hr(this.#r,this.#a)}takeDebugMetadata(){throw new Error("Unreachable")}recordSimpleData(t,e){return this}recordIncrementalData(t,e){return this}resetIncrementalData(t,e){return this}recordNamedData(t,e){return this}recordSimpleDataFromNamed(t,e,s){return this}recordFutureForcedDependency(t,e){return this}inheritSimpleDataAsFutureForcedDependencies(t){return this}inheritPendingDependenciesAsFutureForcedDependencies(){return this}recordCharacterBBox(t,e,s,i=1,n=0,r=0,a){return this}getSimpleIndex(t){}recordDependencies(t,e){return this}recordNamedDependency(t,e){return this}recordShowTextOperation(t,e=!1){return this}}class dr{#t={__proto__:null};#e={__proto__:null,transform:[],moveText:[],sameLineText:[],[re]:[]};#s=new Map;#i=new Set;#n=new Map;#a;#r;#o;constructor(t,e=!1){this.#o=t,e&&(this.#a=new Map,this.#r=(s,i)=>{xi(this.#a,i).dependencies.add(s)})}get clipBox(){return this.#o.clipBox}growOperationsCount(t){this.#o.growOperationsCount(t)}save(t){return this.#t={__proto__:this.#t},this.#e={__proto__:this.#e,transform:{__proto__:this.#e.transform},moveText:{__proto__:this.#e.moveText},sameLineText:{__proto__:this.#e.sameLineText},[re]:{__proto__:this.#e[re]}},this.#o.save(t),this}restore(t){this.#o.restore(t,this.#r);const e=Object.getPrototypeOf(this.#t);return e===null?this:(this.#t=e,this.#e=Object.getPrototypeOf(this.#e),this)}recordOpenMarker(t){return this.#o.recordOpenMarker(t,this.#r),this}getOpenMarker(){return this.#o.getOpenMarker()}recordCloseMarker(t){return this.#o.recordCloseMarker(t,this.#r),this}beginMarkedContent(t){return this.#o.beginMarkedContent(t),this}endMarkedContent(t){return this.#o.endMarkedContent(t,this.#r),this}pushBaseTransform(t){return this.#o.pushBaseTransform(t),this}popBaseTransform(){return this.#o.popBaseTransform(),this}recordSimpleData(t,e){return this.#t[t]=e,this}recordIncrementalData(t,e){return this.#e[t].push(e),this}resetIncrementalData(t,e){return this.#e[t].length=0,this}recordNamedData(t,e){return this.#s.set(t,e),this}recordSimpleDataFromNamed(t,e,s){this.#t[t]=this.#s.get(e)??s}recordFutureForcedDependency(t,e){return this.recordIncrementalData(re,e),this}inheritSimpleDataAsFutureForcedDependencies(t){for(const e of t)e in this.#t&&this.recordFutureForcedDependency(e,this.#t[e]);return this}inheritPendingDependenciesAsFutureForcedDependencies(){for(const t of this.#i)this.recordFutureForcedDependency(re,t);return this}resetBBox(t){return this.#o.resetBBox(t),this}recordClipBox(t,e,s,i,n,r){return this.#o.recordClipBox(t,e,s,i,n,r),this}recordBBox(t,e,s,i,n,r){return this.#o.recordBBox(t,e,s,i,n,r),this}recordCharacterBBox(t,e,s,i=1,n=0,r=0,a){const o=s.bbox;let l,h;if(o&&(l=o[2]!==o[0]&&o[3]!==o[1]&&this.#n.get(s),l!==!1&&(h=[0,0,0,0],x.axialAlignedBoundingBox(o,s.fontMatrix,h),(i!==1||n!==0||r!==0)&&lr(i,-i,n,r,h),l)))return this.recordBBox(t,e,h[0],h[2],h[1],h[3]);if(!a)return this.recordFullPageBBox(t);const c=a();return o&&h&&l===void 0&&(l=h[0]<=n-c.actualBoundingBoxLeft&&h[2]>=n+c.actualBoundingBoxRight&&h[1]<=r-c.actualBoundingBoxAscent&&h[3]>=r+c.actualBoundingBoxDescent,this.#n.set(s,l),l)?this.recordBBox(t,e,h[0],h[2],h[1],h[3]):this.recordBBox(t,e,n-c.actualBoundingBoxLeft,n+c.actualBoundingBoxRight,r-c.actualBoundingBoxAscent,r+c.actualBoundingBoxDescent)}recordFullPageBBox(t){return this.#o.recordFullPageBBox(t),this}getSimpleIndex(t){return this.#t[t]}recordDependencies(t,e){const s=this.#i,i=this.#t,n=this.#e;for(const r of e)r in this.#t?s.add(i[r]):r in n&&n[r].forEach(s.add,s);return this}recordNamedDependency(t,e){return this.#s.has(e)&&this.#i.add(this.#s.get(e)),this}recordOperation(t,e=!1){if(this.recordDependencies(t,[re]),this.#a){const i=xi(this.#a,t),{dependencies:n}=i;this.#i.forEach(n.add,n),this.#o._savesStack.forEach(n.add,n),this.#o._markedContentStack.forEach(n.add,n),n.delete(t),i.isRenderingOperation=!0}const s=!e&&t===this.#o._pendingBBoxIdx;return this.#o.recordOperation(t,e,[this.#i,this.#o._savesStack,this.#o._markedContentStack]),s&&this.#i.clear(),this}recordShowTextOperation(t,e=!1){const s=Array.from(this.#i);this.recordOperation(t,e),this.recordIncrementalData("sameLineText",t);for(const i of s)this.recordIncrementalData("sameLineText",i);return this}bboxToClipBoxDropOperation(t,e=!1){const s=!e&&t===this.#o._pendingBBoxIdx;return this.#o.bboxToClipBoxDropOperation(t),s&&this.#i.clear(),this}take(){return this.#n.clear(),this.#o.take()}takeDebugMetadata(){return this.#a}}class Te{#t;#e;#s;#i=0;#n=0;constructor(t,e,s){if(t instanceof Te&&t.#s===!!s)return t;this.#t=t,this.#e=e,this.#s=!!s}get clipBox(){return this.#t.clipBox}growOperationsCount(){throw new Error("Unreachable")}save(t){return this.#n++,this.#t.save(this.#e),this}restore(t){return this.#n>0&&(this.#t.restore(this.#e),this.#n--),this}recordOpenMarker(t){return this.#i++,this}getOpenMarker(){return this.#i>0?this.#e:this.#t.getOpenMarker()}recordCloseMarker(t){return this.#i--,this}beginMarkedContent(t){return this}endMarkedContent(t){return this}pushBaseTransform(t){return this.#t.pushBaseTransform(t),this}popBaseTransform(){return this.#t.popBaseTransform(),this}recordSimpleData(t,e){return this.#t.recordSimpleData(t,this.#e),this}recordIncrementalData(t,e){return this.#t.recordIncrementalData(t,this.#e),this}resetIncrementalData(t,e){return this.#t.resetIncrementalData(t,this.#e),this}recordNamedData(t,e){return this}recordSimpleDataFromNamed(t,e,s){return this.#t.recordSimpleDataFromNamed(t,e,this.#e),this}recordFutureForcedDependency(t,e){return this.#t.recordFutureForcedDependency(t,this.#e),this}inheritSimpleDataAsFutureForcedDependencies(t){return this.#t.inheritSimpleDataAsFutureForcedDependencies(t),this}inheritPendingDependenciesAsFutureForcedDependencies(){return this.#t.inheritPendingDependenciesAsFutureForcedDependencies(),this}resetBBox(t){return this.#s||this.#t.resetBBox(this.#e),this}recordClipBox(t,e,s,i,n,r){return this.#s||this.#t.recordClipBox(this.#e,e,s,i,n,r),this}recordBBox(t,e,s,i,n,r){return this.#s||this.#t.recordBBox(this.#e,e,s,i,n,r),this}recordCharacterBBox(t,e,s,i,n,r,a){return this.#s||this.#t.recordCharacterBBox(this.#e,e,s,i,n,r,a),this}recordFullPageBBox(t){return this.#s||this.#t.recordFullPageBBox(this.#e),this}getSimpleIndex(t){return this.#t.getSimpleIndex(t)}recordDependencies(t,e){return this.#t.recordDependencies(this.#e,e),this}recordNamedDependency(t,e){return this.#t.recordNamedDependency(this.#e,e),this}recordOperation(t){return this.#t.recordOperation(this.#e,!0),this}recordShowTextOperation(t){return this.#t.recordShowTextOperation(this.#e,!0),this}bboxToClipBoxDropOperation(t){return this.#s||this.#t.bboxToClipBoxDropOperation(this.#e,!0),this}take(){throw new Error("Unreachable")}takeDebugMetadata(){throw new Error("Unreachable")}}const wt={stroke:["path","transform","filter","strokeColor","strokeAlpha","lineWidth","lineCap","lineJoin","miterLimit","dash"],fill:["path","transform","filter","fillColor","fillAlpha","globalCompositeOperation","SMask"],imageXObject:["transform","SMask","filter","fillAlpha","strokeAlpha","globalCompositeOperation"],rawFillPath:["filter","fillColor","fillAlpha"],showText:["transform","leading","charSpacing","wordSpacing","hScale","textRise","moveText","textMatrix","font","fontObj","filter","fillColor","textRenderingMode","SMask","fillAlpha","strokeAlpha","globalCompositeOperation","sameLineText"],transform:["transform"],transformAndFill:["transform","fillColor"]};class Ke{#t;#e;#s=4;#i=0;#n=new Ke.#a(this.#s*6);static#a=j.isFloat16ArraySupported?Float16Array:Float32Array;constructor(t){this.#t=t.width,this.#e=t.height}record(t,e,s,i){if(this.#i===this.#s){this.#s*=2;const a=new Ke.#a(this.#s*6);a.set(this.#n),this.#n=a}const n=V(t);let r;if(i[0]!==1/0){const a=Bt.slice();x.axialAlignedBoundingBox([0,-s,e,0],n,a);const o=x.intersect(i,a);if(!o)return;const[l,h,c,u]=o;if(l!==a[0]||h!==a[1]||c!==a[2]||u!==a[3]){const f=Math.atan2(n[1],n[0]),p=Math.abs(Math.sin(f)),g=Math.abs(Math.cos(f));if(p<1e-6||g<1e-6||Math.abs(p-g)<1e-6)r=[l,h,l,u,c,h];else{const m=c-l,b=u-h,y=p*p,A=g*g,v=g*p,w=A-y,S=(b*A-m*v)/w,_=(b*v-m*y)/w;r=[l+_,h,l,h+S,c,u-S]}}}r||(r=[0,-s,0,0,e,-s],x.applyTransform(r,n,0),x.applyTransform(r,n,2),x.applyTransform(r,n,4)),r[0]/=this.#t,r[1]/=this.#e,r[2]/=this.#t,r[3]/=this.#e,r[4]/=this.#t,r[5]/=this.#e,this.#n.set(r,this.#i*6),this.#i++}take(){return this.#n.subarray(0,this.#i*6)}}const Ci=new RegExp("\\p{Cc}","u");function ur(d){const t=d[0];if(d.length<2||t!=='"'&&t!=="'"||d.at(-1)!==t)return!1;const e=d.length-1;for(let s=1;s=e||Ci.test(d[s])))return!1}return!0}function Ti(d){return ur(d)?d:`"${d.replaceAll(/["\\\p{Cc}]/gu,e=>e==='"'||e==="\\"?`\\${e}`:`\\${e.codePointAt(0).toString(16)} `)}"`}class fr{#t=new Set;#e=null;constructor({ownerDocument:t=globalThis.document,styleElement:e=null}){this._document=t,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(t){this.nativeFontFaces.add(t),this._document.fonts.add(t)}removeNativeFontFace(t){this.nativeFontFaces.delete(t),this._document.fonts.delete(t)}insertRule(t){const e=this.#s();e.insertRule(t,e.cssRules.length)}#s(){if(this.#e)return this.#e;const t=this._document.defaultView?.CSSStyleSheet||globalThis.CSSStyleSheet;if(!this.styleElement&&t){const{adoptedStyleSheets:e}=this._document;if(e){const s=new t;return e.push(s),this.#e=s}}return this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement)),this.#e=this.styleElement.sheet}clear(){for(const t of this.nativeFontFaces)this._document.fonts.delete(t);if(this.nativeFontFaces.clear(),this.#t.clear(),this.#e){const{adoptedStyleSheets:t}=this._document;t?.includes(this.#e)&&(this._document.adoptedStyleSheets=t.filter(e=>e!==this.#e)),this.#e=null}this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont({systemFontInfo:t,disableFontFace:e,_inspectFont:s}){if(!(!t||this.#t.has(t.loadedName))){if(Z(!e,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:i,src:n,style:r}=t,a=new FontFace(i,n,r);this.addNativeFontFace(a);try{await a.load(),this.#t.add(i),s?.(t)}catch{N(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(a)}return}G("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(t){if(t.attached||t.missingFile&&!t.systemFontInfo)return;if(t.attached=!0,t.systemFontInfo){await this.loadSystemFont(t);return}if(this.isFontLoadingAPISupported){const s=t.createNativeFontFace();if(s){this.addNativeFontFace(s);try{await s.loaded}catch(i){throw N(`Failed to load font '${s.family}': '${i}'.`),t.disableFontFace=!0,i}}return}const e=t.createFontFaceRule();if(e){if(this.insertRule(e),this.isSyncFontLoadingSupported)return;await new Promise(s=>{const i=this._queueLoadingCallback(s);this._prepareFontLoadEvent(t,i)})}}get isFontLoadingAPISupported(){const t=!!this._document?.fonts;return D(this,"isFontLoadingAPISupported",t)}get isSyncFontLoadingSupported(){return D(this,"isSyncFontLoadingSupported",mt||j.platform.isFirefox)}_queueLoadingCallback(t){function e(){for(Z(!i.done,"completeRequest() cannot be called twice."),i.done=!0;s.length>0&&s[0].done;){const n=s.shift();setTimeout(n.callback,0)}}const{loadingRequests:s}=this,i={done:!1,complete:e,callback:t};return s.push(i),i}get _loadTestFont(){const t=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return D(this,"_loadTestFont",t)}_prepareFontLoadEvent(t,e){function s(w,S){return w.charCodeAt(S)<<24|w.charCodeAt(S+1)<<16|w.charCodeAt(S+2)<<8|w.charCodeAt(S+3)&255}function i(w){return String.fromCharCode(w>>24&255,w>>16&255,w>>8&255,w&255)}function n(w,S,_,E){const C=w.substring(0,S),k=w.substring(S+_);return C+E+k}let r,a;const o=this._document.createElement("canvas");o.width=1,o.height=1;const l=o.getContext("2d");let h=0;function c(w,S){if(++h>30){N("Load test font never loaded."),S();return}if(l.font="30px "+w,l.fillText(".",0,20),l.getImageData(0,0,1,1).data[3]>0){S();return}setTimeout(c.bind(null,w,S))}const u=`lt${Date.now()}${this.loadTestFontId++}`;let f=this._loadTestFont;f=n(f,976,u.length,u);const g=16,m=1482184792;let b=s(f,g);for(r=0,a=u.length-3;r{v.remove(),e.complete()})}}class pr{compiledGlyphs=Object.create(null);#t;constructor(t,e=null,s,i){this.#t=t,this._inspectFont=e,s&&(this.charProcOperatorList=s),i&&Object.assign(this,i)}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let t;if(!this.cssFontInfo)t=new FontFace(this.loadedName,this.data,{});else{const e={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(e.style=`oblique ${this.cssFontInfo.italicAngle}deg`),t=new FontFace(Ti(this.cssFontInfo.fontFamily),this.data,e)}return this._inspectFont?.(this),t}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;const t=`url(data:${this.mimetype};base64,${this.data.toBase64()});`;let e;if(!this.cssFontInfo)e=`@font-face {font-family:"${this.loadedName}";src:${t}}`;else{let s=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(s+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),e=`@font-face {font-family:${Ti(this.cssFontInfo.fontFamily)};${s}src:${t}}`}return this._inspectFont?.(this,t),e}getPathGenerator(t,e){if(this.compiledGlyphs[e]!==void 0)return this.compiledGlyphs[e];const s=this.loadedName+"_path_"+e;let i;try{i=t.get(s)}catch(r){N(`getPathGenerator - ignoring character: "${r}".`)}const n=en(i?.path);return this.fontExtraProperties||t.delete(s),this.compiledGlyphs[e]=n}get black(){return this.#t.black}get bold(){return this.#t.bold}get disableFontFace(){return this.#t.disableFontFace}set disableFontFace(t){D(this,"disableFontFace",!!t)}get fontExtraProperties(){return this.#t.fontExtraProperties}get isInvalidPDFjsFont(){return this.#t.isInvalidPDFjsFont}get isType3Font(){return this.#t.isType3Font}get italic(){return this.#t.italic}get missingFile(){return this.#t.missingFile}get remeasure(){return this.#t.remeasure}get vertical(){return this.#t.vertical}get ascent(){return this.#t.ascent}get defaultWidth(){return this.#t.defaultWidth}get descent(){return this.#t.descent}get bbox(){return this.#t.bbox}get fontMatrix(){return this.#t.fontMatrix}get fallbackName(){return this.#t.fallbackName}get loadedName(){return this.#t.loadedName}get mimetype(){return this.#t.mimetype}get name(){return this.#t.name}get data(){return this.#t.data}clearData(){this.#t.clearData()}get cssFontInfo(){return this.#t.cssFontInfo}get systemFontInfo(){return this.#t.systemFontInfo}get defaultVMetrics(){return this.#t.defaultVMetrics}}class gr{static strings=["fontFamily","fontWeight","italicAngle"]}class mr{static strings=["css","loadedName","baseFontName","src"]}class _t{static bools=["black","bold","disableFontFace","fontExtraProperties","isInvalidPDFjsFont","isType3Font","italic","missingFile","remeasure","vertical"];static numbers=["ascent","defaultWidth","descent"];static strings=["fallbackName","loadedName","mimetype","name"];static OFFSET_NUMBERS=Math.ceil(this.bools.length*2/8);static OFFSET_BBOX=this.OFFSET_NUMBERS+this.numbers.length*8;static OFFSET_FONT_MATRIX=this.OFFSET_BBOX+1+8;static OFFSET_DEFAULT_VMETRICS=this.OFFSET_FONT_MATRIX+1+48;static OFFSET_STRINGS=this.OFFSET_DEFAULT_VMETRICS+1+6}class jt{static KIND=0;static HAS_BBOX=1;static HAS_BACKGROUND=2;static SHADING_TYPE=3;static N_COORD=4;static N_COLOR=8;static N_STOP=12;static N_FIGURES=16}class Qe{static get decoder(){return D(this,"decoder",new TextDecoder)}static get encoder(){return D(this,"encoder",new TextEncoder)}}class br{#t;#e;constructor(t){this.#t=t,this.#e=new DataView(t)}#s(t){Z(t>s&3;return i===0?void 0:i===2}get black(){return this.#s(0)}get bold(){return this.#s(1)}get disableFontFace(){return this.#s(2)}get fontExtraProperties(){return this.#s(3)}get isInvalidPDFjsFont(){return this.#s(4)}get isType3Font(){return this.#s(5)}get italic(){return this.#s(6)}get missingFile(){return this.#s(7)}get remeasure(){return this.#s(8)}get vertical(){return this.#s(9)}#i(t){return Z(t<_t.numbers.length,"Invalid number index"),this.#e.getFloat64(_t.OFFSET_NUMBERS+t*8)}get ascent(){return this.#i(0)}get defaultWidth(){return this.#i(1)}get descent(){return this.#i(2)}#n(t,e,s,i){const n=this.#e.getUint8(t);if(n===0)return;Z(n===e,"Invalid array length."),t+=1;const r=new Array(n);for(let a=0;a0){g=Bt.slice();for(let m=0,b=l.length;mtypeof d=="object"&&Number.isInteger(d?.num)&&d.num>=0&&Number.isInteger(d?.gen)&&d.gen>=0,Er=d=>typeof d=="object"&&typeof d?.name=="string",xr=Wn.bind(null,Ls,Er);class Cr{#t=new Map;#e=Promise.resolve();postMessage(t,e){const s={data:structuredClone(t,e?{transfer:e}:null)};this.#e.then(()=>{for(const[i]of this.#t)i.call(this,s)})}addEventListener(t,e,s=null){let i=null;if(s?.signal instanceof AbortSignal){const{signal:n}=s;if(n.aborted){N("LoopbackPort - cannot use an `aborted` signal.");return}const r=()=>this.removeEventListener(t,e);i=()=>n.removeEventListener("abort",r),n.addEventListener("abort",r)}this.#t.set(e,i)}removeEventListener(t,e){this.#t.get(e)?.(),this.#t.delete(e)}terminate(){for(const[,t]of this.#t)t?.();this.#t.clear()}}const Ne={DATA:1,ERROR:2},et={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function ki(){}function ut(d){if(d instanceof $t||d instanceof ks||d instanceof Ts||d instanceof qe||d instanceof ys)return d;switch(d instanceof Error||typeof d=="object"&&d!==null||G('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),d.name){case"AbortException":return new $t(d.message);case"InvalidPDFException":return new ks(d.message);case"PasswordException":return new Ts(d.message,d.code);case"ResponseException":return new qe(d.message,d.status,d.missing);case"UnknownErrorException":return new ys(d.message,d.details)}return new ys(d.message,d.toString())}class Ae{#t=new AbortController;constructor(t,e,s){this.sourceName=t,this.targetName=e,this.comObj=s,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),s.addEventListener("message",this.#e.bind(this),{signal:this.#t.signal})}#e({data:t}){if(t.targetName!==this.sourceName)return;if(t.stream){this.#i(t);return}if(t.callback){const s=t.callbackId,i=this.callbackCapabilities[s];if(!i)throw new Error(`Cannot resolve callback ${s}`);if(delete this.callbackCapabilities[s],t.callback===Ne.DATA)i.resolve(t.data);else if(t.callback===Ne.ERROR)i.reject(ut(t.reason));else throw new Error("Unexpected callback case");return}const e=this.actionHandler[t.action];if(!e)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const s=this.sourceName,i=t.sourceName,n=this.comObj;Promise.try(e,t.data).then(function(r){n.postMessage({sourceName:s,targetName:i,callback:Ne.DATA,callbackId:t.callbackId,data:r})},function(r){n.postMessage({sourceName:s,targetName:i,callback:Ne.ERROR,callbackId:t.callbackId,reason:ut(r)})});return}if(t.streamId){this.#s(t);return}e(t.data)}on(t,e){const s=this.actionHandler;if(s[t])throw new Error(`There is already an actionName called "${t}"`);s[t]=e}send(t,e,s){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,data:e},s)}sendWithPromise(t,e,s){const i=this.callbackId++,n=Promise.withResolvers();this.callbackCapabilities[i]=n;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,callbackId:i,data:e},s)}catch(r){n.reject(r)}return n.promise}sendWithStream(t,e,s,i){const n=this.streamId++,r=this.sourceName,a=this.targetName,o=this.comObj;return new ReadableStream({start:l=>{const h=Promise.withResolvers();return this.streamControllers[n]={controller:l,startCall:h,pullCall:null,cancelCall:null,isClosed:!1},o.postMessage({sourceName:r,targetName:a,action:t,streamId:n,data:e,desiredSize:l.desiredSize},i),h.promise},pull:l=>{const h=Promise.withResolvers();return this.streamControllers[n].pullCall=h,o.postMessage({sourceName:r,targetName:a,stream:et.PULL,streamId:n,desiredSize:l.desiredSize}),h.promise},cancel:l=>{Z(l instanceof Error,"cancel must have a valid reason");const h=Promise.withResolvers();return this.streamControllers[n].cancelCall=h,this.streamControllers[n].isClosed=!0,o.postMessage({sourceName:r,targetName:a,stream:et.CANCEL,streamId:n,reason:ut(l)}),h.promise}},s)}#s(t){const e=t.streamId,s=this.sourceName,i=t.sourceName,n=this.comObj,r=this,a=this.actionHandler[t.action],o={enqueue(l,h=1,c){if(this.isCancelled)return;const u=this.desiredSize;this.desiredSize-=h,u>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),n.postMessage({sourceName:s,targetName:i,stream:et.ENQUEUE,streamId:e,chunk:l},c)},close(){this.isCancelled||(this.isCancelled=!0,n.postMessage({sourceName:s,targetName:i,stream:et.CLOSE,streamId:e}),delete r.streamSinks[e])},error(l){Z(l instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,n.postMessage({sourceName:s,targetName:i,stream:et.ERROR,streamId:e,reason:ut(l)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:t.desiredSize,ready:null};o.sinkCapability.resolve(),o.ready=o.sinkCapability.promise,this.streamSinks[e]=o,Promise.try(a,t.data,o).then(function(){n.postMessage({sourceName:s,targetName:i,stream:et.START_COMPLETE,streamId:e,success:!0})},function(l){n.postMessage({sourceName:s,targetName:i,stream:et.START_COMPLETE,streamId:e,reason:ut(l)})})}#i(t){const e=t.streamId,s=this.sourceName,i=t.sourceName,n=this.comObj,r=this.streamControllers[e],a=this.streamSinks[e];switch(t.stream){case et.START_COMPLETE:t.success?r.startCall.resolve():r.startCall.reject(ut(t.reason));break;case et.PULL_COMPLETE:t.success?r.pullCall.resolve():r.pullCall.reject(ut(t.reason));break;case et.PULL:if(!a){n.postMessage({sourceName:s,targetName:i,stream:et.PULL_COMPLETE,streamId:e,success:!0});break}a.desiredSize<=0&&t.desiredSize>0&&a.sinkCapability.resolve(),a.desiredSize=t.desiredSize,Promise.try(a.onPull||ki).then(function(){n.postMessage({sourceName:s,targetName:i,stream:et.PULL_COMPLETE,streamId:e,success:!0})},function(l){n.postMessage({sourceName:s,targetName:i,stream:et.PULL_COMPLETE,streamId:e,reason:ut(l)})});break;case et.ENQUEUE:if(Z(r,"enqueue should have stream controller"),r.isClosed)break;r.controller.enqueue(t.chunk);break;case et.CLOSE:if(Z(r,"close should have stream controller"),r.isClosed)break;r.isClosed=!0,r.controller.close(),this.#n(r,e);break;case et.ERROR:Z(r,"error should have stream controller"),r.controller.error(ut(t.reason)),this.#n(r,e);break;case et.CANCEL_COMPLETE:t.success?r.cancelCall.resolve():r.cancelCall.reject(ut(t.reason)),this.#n(r,e);break;case et.CANCEL:if(!a)break;const o=ut(t.reason);Promise.try(a.onCancel||ki,o).then(function(){n.postMessage({sourceName:s,targetName:i,stream:et.CANCEL_COMPLETE,streamId:e,success:!0})},function(l){n.postMessage({sourceName:s,targetName:i,stream:et.CANCEL_COMPLETE,streamId:e,reason:ut(l)})}),a.sinkCapability.reject(o),a.isCancelled=!0,delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}}async#n(t,e){await Promise.allSettled([t.startCall?.promise,t.pullCall?.promise,t.cancelCall?.promise]),delete this.streamControllers[e]}destroy(){this.#t?.abort(),this.#t=null}}class an{#t=Object.freeze({cMapUrl:"CMap",standardFontDataUrl:"font",wasmUrl:"wasm"});constructor({cMapUrl:t=null,standardFontDataUrl:e=null,wasmUrl:s=null}){this.cMapUrl=t,this.standardFontDataUrl=e,this.wasmUrl=s}async fetch({kind:t,filename:e}){switch(t){case"cMapUrl":case"standardFontDataUrl":case"wasmUrl":break;default:G(`Not implemented: ${t}`)}const s=this[t];if(!s)throw new Error(`Ensure that the \`${t}\` API parameter is provided.`);const i=`${s}${e}`;return this._fetch(i,t).catch(n=>{throw new Error(`Unable to load ${this.#t[t]} data at: ${i}`)})}async _fetch(t,e){G("Abstract method `_fetch` called.")}}class Pi extends an{async _fetch(t,e){const s=e==="cMapUrl"&&!t.endsWith(".bcmap")?"text":"bytes",i=await js(t,s);return i instanceof Uint8Array?i:is(i)}}class on{#t=!1;constructor({enableHWA:t=!1}){this.#t=t}create(t,e){if(t<=0||e<=0)throw new Error("Invalid canvas size");const s=this._createCanvas(t,e);return{canvas:s,context:s.getContext("2d",{willReadFrequently:!this.#t})}}reset({canvas:t},e,s){if(!t)throw new Error("Canvas is not specified");if(e<=0||s<=0)throw new Error("Invalid canvas size");t.width=e,t.height=s}destroy(t){const{canvas:e}=t;if(!e)throw new Error("Canvas is not specified");e.width=e.height=0,t.canvas=null,t.context=null}_createCanvas(t,e){G("Abstract method `_createCanvas` called.")}}class Tr extends on{constructor({ownerDocument:t=globalThis.document,enableHWA:e=!1}){super({enableHWA:e}),this._document=t}_createCanvas(t,e){const s=this._document.createElement("canvas");return s.width=t,s.height=e,s}}class ln{addFilter(t){return"none"}addHCMFilter(t,e){return"none"}addAlphaFilter(t){return"none"}addLuminosityFilter(t){return"none"}addKnockoutFilter(t=0){return"none"}addHighlightHCMFilter(t,e,s,i,n){return"none"}addSelectionHCMFilter(t,e){return"none"}addSelectionFilter(){return"none"}createSelectionStyle(t=null){return null}destroy(t=!1){}}class kr extends ln{#t;#e;#s;#i;#n;#a;#r=0;constructor({docId:t,ownerDocument:e=globalThis.document}){super(),this.#i=t,this.#n=e}get#o(){return this.#e||=new Map}get#l(){return this.#a||=new Map}get#h(){if(!this.#s){const t=this.#n.createElement("div"),{style:e}=t;e.colorScheme="only light",e.visibility="hidden",e.contain="strict",e.width=e.height=0,e.position="absolute",e.top=e.left=0,e.zIndex=-1;const s=this.#n.createElementNS(ht,"svg");s.setAttribute("width",0),s.setAttribute("height",0),this.#s=this.#n.createElementNS(ht,"defs"),t.append(s),s.append(this.#s),this.#n.body.append(t)}return this.#s}#u(t){if(t.length===1){const o=t[0],l=new Array(256);for(let c=0;c<256;c++)l[c]=o[c]/255;const h=l.join(",");return[h,h,h]}const[e,s,i]=t,n=new Array(256),r=new Array(256),a=new Array(256);for(let o=0;o<256;o++)n[o]=e[o]/255,r[o]=s[o]/255,a[o]=i[o]/255;return[n.join(","),r.join(","),a.join(",")]}#d(t){if(this.#t===void 0){this.#t="";const e=this.#n.URL;e!==this.#n.baseURI&&(ns(e)?N('#createUrl: ignore "data:"-URL for performance reasons.'):this.#t=Qi(e,""))}return`url(${this.#t}#${t})`}addFilter(t){if(!t)return"none";let e=this.#o.get(t);if(e)return e;const[s,i,n]=this.#u(t),r=t.length===1?s:`${s}${i}${n}`;if(e=this.#o.get(r),e)return this.#o.set(t,e),e;const a=`g_${this.#i}_transfer_map_${this.#r++}`,o=this.#d(a);this.#o.set(t,o),this.#o.set(r,o);const l=this.#m(a);return this.#p(s,i,n,l),o}addHCMFilter(t,e){const s=`${t}-${e}`,i="base";let n=this.#l.get(i);if(n?.key===s||(n?(n.filter?.remove(),n.key=s,n.url="none",n.filter=null):(n={key:s,url:"none",filter:null},this.#l.set(i,n)),!t||!e))return n.url;const r=this.#y(t);t=x.makeHexColor(...r);const a=this.#y(e);if(e=x.makeHexColor(...a),this.#w(),t==="#000000"&&e==="#ffffff"||t===e)return n.url;const l=Array.from({length:256},(f,p)=>Os(p/255)).join(","),h=`g_${this.#i}_hcm_filter`,c=n.filter=this.#m(h);this.#p(l,l,l,c),this.#g(c);const u=(f,p)=>{const g=r[f]/255,m=a[f]/255,b=new Array(p+1);for(let y=0;y<=p;y++)b[y]=g+y/p*(m-g);return b.join(",")};return this.#p(u(0,5),u(1,5),u(2,5),c),n.url=this.#d(h),n.url}addSelectionHCMFilter(t,e){return this.addHighlightHCMFilter("selection",t,e,"HighlightText","Highlight")}addSelectionFilter(){return this.addHighlightHCMFilter("selection_default","black","white","HighlightText","Highlight")}createSelectionStyle(t=null){const e=t?this.addSelectionHCMFilter(t.foreground,t.background):this.addSelectionFilter();return e==="none"||!j.platform.isFirefox?null:{"backdrop-filter":e,"background-color":"transparent"}}addAlphaFilter(t){let e=this.#o.get(t);if(e)return e;const[s]=this.#u([t]),i=`alpha_${s}`;if(e=this.#o.get(i),e)return this.#o.set(t,e),e;const n=`g_${this.#i}_alpha_map_${this.#r++}`,r=this.#d(n);this.#o.set(t,r),this.#o.set(i,r);const a=this.#m(n);return this.#b(s,a),r}addLuminosityFilter(t){let e=this.#o.get(t||"luminosity");if(e)return e;let s,i;if(t?([s]=this.#u([t]),i=`luminosity_${s}`):i="luminosity",e=this.#o.get(i),e)return this.#o.set(t,e),e;const n=`g_${this.#i}_luminosity_map_${this.#r++}`,r=this.#d(n);this.#o.set(t,r),this.#o.set(i,r);const a=this.#m(n);return this.#f(a),t&&this.#b(s,a),r}addKnockoutFilter(t=0){const e=t>0?Math.min(1/t,1e6):1e6,s=`knockout_${e}`,i=this.#o.get(s);if(i)return i;const n=`g_${this.#i}_knockout_filter_${this.#r++}`,r=this.#d(n);this.#o.set(s,r);const a=this.#m(n),o=this.#n.createElementNS(ht,"feComponentTransfer");a.append(o);const l=this.#n.createElementNS(ht,"feFuncA");return l.setAttribute("type","linear"),l.setAttribute("slope",`${e}`),l.setAttribute("intercept","0"),o.append(l),r}addHighlightHCMFilter(t,e,s,i,n){const r=`${e}-${s}-${i}-${n}`;let a=this.#l.get(t);if(a?.key===r||(a?(a.filter?.remove(),a.key=r,a.url="none",a.filter=null):(a={key:r,url:"none",filter:null},this.#l.set(t,a)),!e||!s))return a.url;const[o,l]=[e,s].map(this.#y.bind(this));let h=Math.round(.2126*o[0]+.7152*o[1]+.0722*o[2]),c=Math.round(.2126*l[0]+.7152*l[1]+.0722*l[2]),[u,f]=[i,n].map(this.#_.bind(this));c{const v=new Array(256),w=(c-h)/A,S=b/255,_=(y-b)/(255*A);let E=0;for(let C=0;C<=A;C++){const k=Math.round(h+C*w),P=S+C*_;for(let I=E;I<=k;I++)v[I]=P;E=k+1}for(let C=E;C<256;C++)v[C]=v[E-1];return v.join(",")},g=`g_${this.#i}_hcm_${t}_filter`,m=a.filter=this.#m(g);return this.#g(m),this.#p(p(u[0],f[0],5),p(u[1],f[1],5),p(u[2],f[2],5),m),a.url=this.#d(g),a.url}destroy(t=!1){t&&this.#a?.size||(this.#s?.parentNode.parentNode.remove(),this.#s=null,this.#e?.clear(),this.#e=null,this.#a?.clear(),this.#a=null,this.#r=0)}#f(t){const e=this.#n.createElementNS(ht,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),t.append(e)}#g(t){const e=this.#n.createElementNS(ht,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),t.append(e)}#m(t){const e=this.#n.createElementNS(ht,"filter");return e.setAttribute("color-interpolation-filters","sRGB"),e.setAttribute("id",t),this.#h.append(e),e}#c(t,e,s){const i=this.#n.createElementNS(ht,e);i.setAttribute("type","discrete"),i.setAttribute("tableValues",s),t.append(i)}#p(t,e,s,i){const n=this.#n.createElementNS(ht,"feComponentTransfer");i.append(n),this.#c(n,"feFuncR",t),this.#c(n,"feFuncG",e),this.#c(n,"feFuncB",s)}#b(t,e){const s=this.#n.createElementNS(ht,"feComponentTransfer");e.append(s),this.#c(s,"feFuncA",t)}#y(t){return this.#h.style.color="CanvasText",this.#h.style.backgroundColor=t,Oe(getComputedStyle(this.#h).getPropertyValue("background-color"))}#A(t){return this.#h.style.color="CanvasText",this.#h.style.backgroundColor=t,De(getComputedStyle(this.#h).getPropertyValue("background-color"))}#w(){this.#h.style.color="",this.#h.style.backgroundColor=""}#_(t){const[e,s,i,n]=this.#A(t);if(n===1)return[e,s,i];const[r,a,o]=this.#y("Canvas");return[Ss(e,r,n),Ss(s,a,n),Ss(i,o,n)]}}function Ss(d,t,e){return Math.round(e*d+(1-e)*t)}mt&&N("Please use the `legacy` build in Node.js environments.");async function Pr(d){const e=await process.getBuiltinModule("fs/promises").readFile(d);return new Uint8Array(e)}class Mr extends ln{}class Ir extends on{_createCanvas(t,e){return process.getBuiltinModule("module").createRequire(import.meta.url)("@napi-rs/canvas").createCanvas(t,e)}}class Dr extends an{async _fetch(t,e){return Pr(t)}}function hn({src:d,srcPos:t=0,dest:e,width:s,height:i,nonBlackColor:n=4294967295,inverseDecode:r=!1}){const a=j.isLittleEndian?4278190080:255,[o,l]=r?[n,a]:[a,n],h=s>>3,c=s&7,u=o^l,f=d.length;e=new Uint32Array(e.buffer);let p=0;for(let g=0;g>7&1)&u,e[p+1]=o^-(y>>6&1)&u,e[p+2]=o^-(y>>5&1)&u,e[p+3]=o^-(y>>4&1)&u,e[p+4]=o^-(y>>3&1)&u,e[p+5]=o^-(y>>2&1)&u,e[p+6]=o^-(y>>1&1)&u,e[p+7]=o^-(y&1)&u}if(c===0)continue;const m=t>7-b&1)&u}return{srcPos:t,destPos:p}}function Or({src:d,srcPos:t=0,dest:e,destPos:s=0,width:i,height:n}){let r=0;const a=i*n*3,o=a>>2,l=new Uint32Array(d.buffer,t,o),h=j.isLittleEndian?4278190080:255;if(j.isLittleEndian){for(;r>>24|u<<8|h,e[s+2]=u>>>16|f<<16|h,e[s+3]=f>>>8|h}for(let c=r*4,u=t+a;c>>8|h,e[s+2]=u<<16|f>>>16|h,e[s+3]=f<<8|h}for(let c=r*4,u=t+a;c u : Uniforms; + +struct VertexInput { + @location(0) position : vec2, + @location(1) color : vec4, +}; + +struct VertexOutput { + @builtin(position) position : vec4, + @location(0) color : vec3, +}; + +@vertex +fn vs_main(in : VertexInput) -> VertexOutput { + var out : VertexOutput; + let cx = (in.position.x + u.offsetX) * u.scaleX; + let cy = (in.position.y + u.offsetY) * u.scaleY; + out.position = vec4( + ((cx + u.borderSize) / u.paddedWidth) * 2.0 - 1.0, + 1.0 - ((cy + u.borderSize) / u.paddedHeight) * 2.0, + 0.0, + 1.0 + ); + out.color = in.color.rgb; + return out; +} + +@fragment +fn fs_main(in : VertexOutput) -> @location(0) vec4 { + return vec4(in.color, 1.0); +} +`;class Rr{#t=null;#e=null;#s=null;#i=null;async#n(){if(!globalThis.navigator?.gpu)return!1;try{const t=await navigator.gpu.requestAdapter();return t?(this.#i=navigator.gpu.getPreferredCanvasFormat(),this.#e=await t.requestDevice(),!0):!1}catch{return!1}}init(){return this.#t||=this.#n()}get isReady(){return this.#e!==null}loadMeshShader(){if(!this.#e||this.#s)return;const t=this.#e.createShaderModule({code:Fr});this.#s=this.#e.createRenderPipeline({layout:"auto",vertex:{module:t,entryPoint:"vs_main",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]},{arrayStride:4,attributes:[{shaderLocation:1,offset:0,format:"unorm8x4"}]}]},fragment:{module:t,entryPoint:"fs_main",targets:[{format:this.#i}]},primitive:{topology:"triangle-list"}})}draw(t,e,s,i,n,r,a,o){this.loadMeshShader();const l=this.#e,{offsetX:h,offsetY:c,scaleX:u,scaleY:f}=i,p=l.createBuffer({size:Math.max(t.byteLength,4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});t.byteLength>0&&l.queue.writeBuffer(p,0,t);const g=l.createBuffer({size:Math.max(e.byteLength,4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.byteLength>0&&l.queue.writeBuffer(g,0,e);const m=l.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});l.queue.writeBuffer(m,0,new Float32Array([h,c,u,f,r,a,o,0]));const b=l.createBindGroup({layout:this.#s.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:m}}]}),y=new OffscreenCanvas(r,a),A=y.getContext("webgpu");A.configure({device:l,format:this.#i,alphaMode:n?"opaque":"premultiplied"});const v=n?{r:n[0]/255,g:n[1]/255,b:n[2]/255,a:1}:{r:0,g:0,b:0,a:0},w=l.createCommandEncoder(),S=w.beginRenderPass({colorAttachments:[{view:A.getCurrentTexture().createView(),clearValue:v,loadOp:"clear",storeOp:"store"}]});return s>0&&(S.setPipeline(this.#s),S.setBindGroup(0,b),S.setVertexBuffer(0,p),S.setVertexBuffer(1,g),S.draw(s)),S.end(),l.queue.submit([w.finish()]),p.destroy(),g.destroy(),m.destroy(),y.transferToImageBitmap()}}const rs=new Rr;function Lr(){return rs.init()}function Nr(){return rs.isReady}function Br(){rs.loadMeshShader()}function Ur(d,t,e,s,i,n,r,a){return rs.draw(d,t,e,s,i,n,r,a)}const at={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function We(d,t){if(!t)return;const e=t[2]-t[0],s=t[3]-t[1],i=new Path2D;i.rect(t[0],t[1],e,s),d.clip(i)}class Ks{matrix=null;isModifyingCurrentTransform(){return!1}getPattern(){G("Abstract method `getPattern` called.")}}class Hr extends Ks{constructor(t){super(),this._type=t[1],this._bbox=t[2],this._colorStops=t[3],this._p0=t[4],this._p1=t[5],this._r0=t[6],this._r1=t[7]}isOriginBased(){return this._p0[0]===0&&this._p0[1]===0&&(!this.isRadial()||this._p1[0]===0&&this._p1[1]===0)}isRadial(){return this._type==="radial"}areConic(){if(!this.isRadial())return!1;const t=Math.hypot(this._p0[0]-this._p1[0],this._p0[1]-this._p1[1]);return t+this._r1>this._r0&&t+this._r0>this._r1}_createGradient(t,e=null){let s,i=this._p0,n=this._p1;if(e&&(i=i.slice(),n=n.slice(),x.applyTransform(i,e),x.applyTransform(n,e)),this._type==="axial")s=t.createLinearGradient(i[0],i[1],n[0],n[1]);else if(this._type==="radial"){let r=this._r0,a=this._r1;if(e){const o=new Float32Array(2);x.singularValueDecompose2dScale(e,o),r*=o[0],a*=o[0]}s=t.createRadialGradient(i[0],i[1],r,n[0],n[1],a)}for(const r of this._colorStops)s.addColorStop(r[0],r[1]);return s}_createReversedGradient(t,e=null){let s=this._p1,i=this._p0;e&&(s=s.slice(),i=i.slice(),x.applyTransform(s,e),x.applyTransform(i,e));let n=this._r1,r=this._r0;if(e){const l=new Float32Array(2);x.singularValueDecompose2dScale(e,l),n*=l[0],r*=l[0]}const a=t.createRadialGradient(s[0],s[1],n,i[0],i[1],r),o=this._colorStops.map(([l,h])=>[1-l,h]).reverse();for(const[l,h]of o)a.addColorStop(l,h);return a}getPattern(t,e,s,i){let n;if(i===at.STROKE||i===at.FILL){if(this.isOriginBased()){let u=x.transform(s,e.baseTransform);this.matrix&&(u=x.transform(u,this.matrix));const f=.001,p=Math.hypot(u[0],u[1]),g=Math.hypot(u[2],u[3]),m=(u[0]*u[2]+u[1]*u[3])/(p*g);if(Math.abs(m)o[s*2+1]&&(u=e,e=s,s=u,u=n,n=r,r=u),o[s*2+1]>o[i*2+1]&&(u=s,s=i,i=u,u=r,r=a,a=u),o[e*2+1]>o[s*2+1]&&(u=e,e=s,s=u,u=n,n=r,r=u);const f=(o[e*2]+t.offsetX)*t.scaleX,p=(o[e*2+1]+t.offsetY)*t.scaleY,g=(o[s*2]+t.offsetX)*t.scaleX,m=(o[s*2+1]+t.offsetY)*t.scaleY,b=(o[i*2]+t.offsetX)*t.scaleX,y=(o[i*2+1]+t.offsetY)*t.scaleY;if(p>=y)return;const A=l[n*4],v=l[n*4+1],w=l[n*4+2],S=l[r*4],_=l[r*4+1],E=l[r*4+2],C=l[a*4],k=l[a*4+1],P=l[a*4+2],I=Math.round(p),B=Math.round(y);let H,Y,O,F,ot,lt,Rt,ie;for(let W=I;W<=B;W++){if(Wy?st=1:m===y?st=0:st=(m-W)/(m-y),H=g-(g-b)*st,Y=S-(S-C)*st,O=_-(_-k)*st,F=E-(E-P)*st}let q;Wy?q=1:q=(p-W)/(p-y),ot=f-(f-b)*q,lt=A-(A-C)*q,Rt=v-(v-k)*q,ie=w-(w-P)*q;const zt=Math.round(Math.min(H,ot)),ps=Math.round(Math.max(H,ot));let ne=c*W+zt*4;for(let st=zt;st<=ps;st++)q=(H-st)/(H-ot),q<0?q=0:q>1&&(q=1),h[ne++]=Y-(Y-lt)*q|0,h[ne++]=O-(O-Rt)*q|0,h[ne++]=F-(F-ie)*q|0,h[ne++]=255}}class Gr extends Ks{constructor(t){super(),this._posData=t[2],this._colData=t[3],this._vertexCount=t[4],this._bounds=t[5],this._bbox=t[6],this._background=t[7],Br()}_createMeshCanvas(t,e,s){const a=Math.floor(this._bounds[0]),o=Math.floor(this._bounds[1]),l=Math.ceil(this._bounds[2])-a,h=Math.ceil(this._bounds[3])-o,c=Math.min(Math.ceil(Math.abs(l*t[0]*1.1)),3e3)||1,u=Math.min(Math.ceil(Math.abs(h*t[1]*1.1)),3e3)||1,f=l?l/c:1,p=h?h/u:1,g={coords:this._posData,colors:this._colData,offsetX:-a,offsetY:-o,scaleX:1/f,scaleY:1/p},m=c+4,b=u+4,y=s.create(m,b);if(Nr()&&this._vertexCount>48)y.context.drawImage(Ur(this._posData,this._colData,this._vertexCount,g,e,m,b,2),0,0);else{const A=y.context.createImageData(c,u);if(e){const v=A.data;for(let w=0,S=v.length;wl+1e-6||e>h+1e-6)return null;const c=Math.floor((s-a)/l)+1,u=Math.ceil((s+t-n)/l)-1,f=Math.floor((i-o)/h)+1,p=Math.ceil((i+e-r)/h)-1;return u<=c&&p<=f?[c,f]:null}updatePatternDims(t,e){const s=x.inverseTransform(this.patternBaseMatrix),i=[t[0],t[1]],n=[t[2],t[3]];x.applyTransform(i,s),x.applyTransform(n,s),e[0]=Math.abs(n[0]-i[0]),e[1]=Math.abs(n[1]-i[1]),e[2]=Math.min(i[0],n[0]),e[3]=Math.min(i[1],n[1])}_renderTileCanvas(t,e,s,i){const[n,r,a,o]=this.bbox,l=t.canvasFactory.create(s.size,i.size),h=l.context,c=this.canvasGraphicsFactory.createCanvasGraphics(h,e);return c.groupLevel=t.groupLevel,this.setFillAndStrokeStyleToContext(c,this.paintType,this.color),h.translate(-s.scale*n,-i.scale*r),c.transform(0,s.scale,0,0,i.scale,0,0),h.save(),c.dependencyTracker?.save(),this.clipBbox(c,n,r,a,o),c.baseTransform=V(c.ctx),c.executeOperatorList(this.operatorList),c.endDrawing(),c.dependencyTracker?.restore(),h.restore(),l}_getCombinedScales(){const t=new Float32Array(2);x.singularValueDecompose2dScale(this.matrix,t);const[e,s]=t;return x.singularValueDecompose2dScale(this.baseTransform,t),[e*t[0],s*t[1]]}drawPattern(t,e,s=!1,[i,n],r){const[a,o,l,h]=this.bbox,c=t.dependencyTracker;if(c&&(t.dependencyTracker=new Te(c,r)),t.save(),s?t.ctx.clip(e,"evenodd"):t.ctx.clip(e),t.ctx.setTransform(...this.patternBaseMatrix),t.ctx.translate(i*this.xstep,n*this.ystep),this.needsIsolation||t.ctx.globalAlpha!==1||t.ctx.globalCompositeOperation!=="source-over"||t.inSMaskMode){const u=l-a,f=h-o,[p,g]=this._getCombinedScales(),m=this.getSizeAndScale(u,this.ctx.canvas.width,p),b=this.getSizeAndScale(f,this.ctx.canvas.height,g),y=this._renderTileCanvas(t,r,m,b);t.ctx.drawImage(y.canvas,a,o,u,f),t.canvasFactory.destroy(y)}else this.setFillAndStrokeStyleToContext(t,this.paintType,this.color),this.clipBbox(t,a,o,l,h),t.baseTransformStack.push(t.baseTransform),t.baseTransform=V(t.ctx),t.executeOperatorList(this.operatorList),t.baseTransform=t.baseTransformStack.pop();t.restore(),c&&(t.dependencyTracker=c)}createPatternCanvas(t,e){const[s,i,n,r]=this.bbox,a=n-s,o=r-i;let{xstep:l,ystep:h}=this;l=Math.abs(l),h=Math.abs(h),ss("TilingType: "+this.tilingType);const[c,u]=this._getCombinedScales();let f=a,p=o,g=!1,m=!1;Math.ceil(l*c)>=Math.ceil(a*c)?f=l:g=!0,Math.ceil(h*u)>=Math.ceil(o*u)?p=h:m=!0;const b=this.getSizeAndScale(f,this.ctx.canvas.width,c),y=this.getSizeAndScale(p,this.ctx.canvas.height,u),A=this._renderTileCanvas(t,e,b,y);if(g||m){const v=A.canvas;g&&(f=l),m&&(p=h);const w=this.getSizeAndScale(f,this.ctx.canvas.width,c),S=this.getSizeAndScale(p,this.ctx.canvas.height,u),_=w.size,E=S.size,C=t.canvasFactory.create(_,E),k=C.context,P=g?Math.floor(a/l):0,I=m?Math.floor(o/h):0;for(let B=0;B<=P;B++)for(let H=0;H<=I;H++)k.drawImage(v,_*B,E*H,_,E,0,0,_,E);return t.canvasFactory.destroy(A),{canvas:C.canvas,canvasEntry:C,scaleX:w.scale,scaleY:S.scale,offsetX:s,offsetY:i}}return{canvas:A.canvas,canvasEntry:A,scaleX:b.scale,scaleY:y.scale,offsetX:s,offsetY:i}}getSizeAndScale(t,e,s){const i=Math.max(_e.MAX_PATTERN_SIZE,e);let n=Math.ceil(t*s);return n>=i?n=i:s=n/t,{scale:s,size:n}}clipBbox(t,e,s,i,n){const r=i-e,a=n-s,o=new Path2D;o.rect(e,s,r,a),x.axialAlignedBoundingBox([e,s,i,n],V(t.ctx),t.current.minMax),t.ctx.clip(o),t.current.updateClipFromPath()}setFillAndStrokeStyleToContext(t,e,s){const i=t.ctx,n=t.current;switch(n.patternFill=n.patternStroke=!1,e){case Mi.COLORED:const{fillStyle:r,strokeStyle:a}=this.ctx;i.fillStyle=n.fillColor=r,i.strokeStyle=n.strokeColor=a;break;case Mi.UNCOLORED:i.fillStyle=i.strokeStyle=s,n.fillColor=n.strokeColor=s;break;default:throw new Gn(`Unsupported paint type: ${e}`)}}isModifyingCurrentTransform(){return!1}getPattern(t,e,s,i,n){const r=i!==at.SHADING?x.transform(s,this.patternBaseMatrix):s,a=this.createPatternCanvas(e,n);let o=new DOMMatrix(r);o=o.translate(a.offsetX,a.offsetY),o=o.scale(1/a.scaleX,1/a.scaleY);const l=t.createPattern(a.canvas,"repeat");return e.canvasFactory.destroy(a.canvasEntry),l.setTransform(o),l}}const Vr=16,Wr=100,Xr=15,Ii=10,ft=16,yt=new Float32Array(2);function Di(d,t){if(d._removeMirroring)throw new Error("Context is already forwarding operations.");const e=new Map;for(const s of["save","restore","rotate","scale","translate","transform","setTransform","resetTransform","clip","moveTo","lineTo","bezierCurveTo","quadraticCurveTo","arc","arcTo","ellipse","rect","roundRect","closePath","beginPath"]){const i=d[s];typeof i!="function"||typeof t[s]!="function"||(e.set(s,i),d[s]=function(...n){return t[s](...n),i.apply(this,n)})}d._removeMirroring=()=>{for(const[s,i]of e)d[s]=i;delete d._removeMirroring}}function Be(d,t,e,s,i,n,r,a,o,l){const[h,c,u,f,p,g]=V(d);if(c===0&&u===0){const y=r*h+p,A=Math.round(y),v=a*f+g,w=Math.round(v),S=(r+o)*h+p,_=Math.abs(Math.round(S)-A)||1,E=(a+l)*f+g,C=Math.abs(Math.round(E)-w)||1;return d.setTransform(Math.sign(h),0,0,Math.sign(f),A,w),d.drawImage(t,e,s,i,n,0,0,_,C),d.setTransform(h,c,u,f,p,g),[_,C]}if(h===0&&f===0){const y=a*u+p,A=Math.round(y),v=r*c+g,w=Math.round(v),S=(a+l)*u+p,_=Math.abs(Math.round(S)-A)||1,E=(r+o)*c+g,C=Math.abs(Math.round(E)-w)||1;return d.setTransform(0,Math.sign(c),Math.sign(u),0,A,w),d.drawImage(t,e,s,i,n,0,0,C,_),d.setTransform(h,c,u,f,p,g),[C,_]}d.drawImage(t,e,s,i,n,r,a,o,l);const m=Math.hypot(h,c),b=Math.hypot(u,f);return[m*o,b*l]}class Oi{alphaIsShape=!1;fontSize=0;fontSizeScale=1;textMatrix=null;textMatrixScale=1;fontMatrix=xs;leading=0;x=0;y=0;lineX=0;lineY=0;charSpacing=0;wordSpacing=0;textHScale=1;textRenderingMode=it.FILL;textRise=0;fillColor="#000000";strokeColor="#000000";tilingPatternDims=null;patternFill=!1;patternStroke=!1;fillAlpha=1;strokeAlpha=1;lineWidth=1;activeSMask=null;transferMaps="none";minMax=Xt.slice();constructor(t,e){this.clipBox=new Float32Array([0,0,t,e])}clone(){const t=Object.create(this);return t.clipBox=this.clipBox.slice(),t.minMax=this.minMax.slice(),t.tilingPatternDims=this.tilingPatternDims?.slice(),t}getPathBoundingBox(t=at.FILL,e=null){const s=this.minMax.slice();if(t===at.STROKE){e||G("Stroke bounding box must include transform."),x.singularValueDecompose2dScale(e,yt);const i=yt[0]*this.lineWidth/2,n=yt[1]*this.lineWidth/2;s[0]-=i,s[1]-=n,s[2]+=i,s[3]+=n}return s}updateClipFromPath(){const t=x.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(t||[0,0,0,0])}isEmptyClip(){return this.minMax[0]===1/0}startNewPathAndClipBox(t){this.clipBox.set(t,0),this.minMax.set(Xt,0)}getClippedPathBoundingBox(t=at.FILL,e=null){return x.intersect(this.clipBox,this.getPathBoundingBox(t,e))}}function Fi(d,t){const{width:e,height:s,kind:i}=t,n=s%ft,r=(s-n)/ft,a=n===0?r:r+1,o=d.createImageData(e,ft);let l=0;const h=t.data,c=o.data;let u;if(i===Ve.GRAYSCALE_1BPP)for(u=0;uIi&&typeof s=="function",c=h?Date.now()+Xr:0;let u=0;const f=this.commonObjs,p=this.objs;let g,m;for(;;){if(i!==void 0){if(o===i.nextBreakPoint)return i.breakIt(o,s),o;if(i.shouldSkip(o)){if(++o===l)return o;continue}}if(!n||n(o))if(g=a[o],m=r[o]??null,g!==Ot.dependency)m===null?this[g](o):this[g](o,...m);else for(const b of m){this.dependencyTracker?.recordNamedData(b,o);const y=b.startsWith("g_")?f:p;if(!y.has(b))return y.get(b,s),o}if(o++,o===l)return o;if(h&&++u>Ii){if(Date.now()>c)return s(),o;u=0}}}#d(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.canvasFactory.destroy(this.transparentCanvasEntry),this.transparentCanvas=null,this.transparentCanvasEntry=null)}endDrawing(){this.#d();for(const t of this.smaskGroupCanvases)this.canvasFactory.destroy(t);this.smaskGroupCanvases.length=0,this._clearPreparedSMask(),this.tempSMask=null,this.smaskStack.length=0;for(const t of this.#u)this.#w(t);this.#u.length=0,this.#i=null,this.#n=null,this.#a=null,this.#r=null,this.#o=1,this.#h=null,this.#s=0,this.#e=0,this.cachedPatterns.clear();for(const t of this._cachedBitmapsMap.values()){for(const e of t.values())typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement&&(e.width=e.height=0);t.clear()}this._cachedBitmapsMap.clear(),this.#f()}#f(){if(this.pageColors){const t=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(t!=="none"){const e=this.ctx.filter;this.ctx.filter=t,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=e}}}_scaleImage(t,e){const s=t.width??t.displayWidth,i=t.height??t.displayHeight,n=Math.max(Math.hypot(e[0],e[1]),1),r=Math.max(Math.hypot(e[2],e[3]),1),a=[];let o=n,l=r,h=s,c=i;for(;o>2&&h>1||l>2&&c>1;){let b=h,y=c;o>2&&h>1&&(b=Math.ceil(h/2),o/=h/b),l>2&&c>1&&(y=Math.ceil(c/2),l/=c/y),a.push({newWidth:b,newHeight:y}),h=b,c=y}if(a.length===0)return{img:t,paintWidth:s,paintHeight:i,tmpCanvas:null};if(a.length===1){const{newWidth:b,newHeight:y}=a[0],A=this.canvasFactory.create(b,y);return A.context.drawImage(t,0,0,s,i,0,0,b,y),{img:A.canvas,paintWidth:b,paintHeight:y,tmpCanvas:A}}let u=this.canvasFactory.create(1,1),f=this.canvasFactory.create(1,1),p=s,g=i,m=t;for(const{newWidth:b,newHeight:y}of a)this.canvasFactory.reset(f,b,y),f.context.drawImage(m,0,0,p,g,0,0,b,y),[u,f]=[f,u],m=u.canvas,p=b,g=y;return this.canvasFactory.destroy(f),{img:u.canvas,paintWidth:p,paintHeight:g,tmpCanvas:u}}_createMaskCanvas(t,e){const s=this.ctx,{width:i,height:n}=e,r=this.current.fillColor,a=this.current.patternFill,o=V(s);let l,h,c,u;if((e.bitmap||e.data)&&e.count>1){const P=e.bitmap||e.data.buffer;h=JSON.stringify(a?o:[o.slice(0,4),r]),l=this._cachedBitmapsMap.getOrInsertComputed(P,zs);const I=l.get(h);if(I&&!a){const B=Math.round(Math.min(o[0],o[2])+o[4]),H=Math.round(Math.min(o[1],o[3])+o[5]);return this.dependencyTracker?.recordDependencies(t,wt.transformAndFill),{canvas:I,offsetX:B,offsetY:H}}c=I}c||(u=this.canvasFactory.create(i,n),Ri(u.context,e));let f=x.transform(o,[1/i,0,0,-1/n,0,0]);f=x.transform(f,[1,0,0,1,0,-n]);const p=Xt.slice();x.axialAlignedBoundingBox([0,0,i,n],f,p);const[g,m,b,y]=p,A=Math.round(b-g)||1,v=Math.round(y-m)||1,w=this.canvasFactory.create(A,v),S=w.context,_=g,E=m;S.translate(-_,-E),S.transform(...f);let C=null;if(!c){const P=this._scaleImage(u.canvas,Mt(S));c=P.img,C=P.tmpCanvas,c!==u.canvas&&(this.canvasFactory.destroy(u),u=null),l&&a&&(l.set(h,c),C=null,u=null)}S.imageSmoothingEnabled=Li(V(S),e.interpolate),Be(S,c,0,0,c.width,c.height,0,0,i,n),C&&this.canvasFactory.destroy(C),u&&this.canvasFactory.destroy(u),S.globalCompositeOperation="source-in";const k=x.transform(Mt(S),[1,0,0,1,-_,-E]);return S.fillStyle=a?r.getPattern(s,this,k,at.FILL,t):r,S.fillRect(0,0,i,n),l&&!a&&l.set(h,w.canvas),this.dependencyTracker?.recordDependencies(t,wt.transformAndFill),{canvas:w.canvas,canvasEntry:l&&!a?null:w,offsetX:Math.round(_),offsetY:Math.round(E)}}setLineWidth(t,e){this.dependencyTracker?.recordSimpleData("lineWidth",t),e!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=e,this.ctx.lineWidth=e}setLineCap(t,e){this.dependencyTracker?.recordSimpleData("lineCap",t),this.ctx.lineCap=Yr[e]}setLineJoin(t,e){this.dependencyTracker?.recordSimpleData("lineJoin",t),this.ctx.lineJoin=qr[e]}setMiterLimit(t,e){this.dependencyTracker?.recordSimpleData("miterLimit",t),this.ctx.miterLimit=e}setDash(t,e,s){this.dependencyTracker?.recordSimpleData("dash",t);const i=this.ctx;i.setLineDash!==void 0&&(i.setLineDash(e),i.lineDashOffset=s)}setRenderingIntent(t,e){}setFlatness(t,e){}setGState(t,e){for(const[s,i]of e)switch(s){case"LW":this.setLineWidth(t,i);break;case"LC":this.setLineCap(t,i);break;case"LJ":this.setLineJoin(t,i);break;case"ML":this.setMiterLimit(t,i);break;case"D":this.setDash(t,i[0],i[1]);break;case"RI":this.setRenderingIntent(t,i);break;case"FL":this.setFlatness(t,i);break;case"Font":this.setFont(t,i[0],i[1]);break;case"CA":this.dependencyTracker?.recordSimpleData("strokeAlpha",t),this.current.strokeAlpha=i;break;case"ca":this.dependencyTracker?.recordSimpleData("fillAlpha",t),this.ctx.globalAlpha=this.current.fillAlpha=i;break;case"BM":this.dependencyTracker?.recordSimpleData("globalCompositeOperation",t),this.ctx.globalCompositeOperation=i;break;case"SMask":this.dependencyTracker?.recordSimpleData("SMask",t),this.current.activeSMask=i?this.tempSMask:null,this.current.activeSMask&&(this.current.activeSMask.blendMode=this.ctx.globalCompositeOperation),this.tempSMask=null,this.checkSMaskState(t);break;case"TR":this.dependencyTracker?.recordSimpleData("filter",t),this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(i);break}}get inSMaskMode(){return!!this.suspendedCtx}_clearPreparedSMask(){this.smaskPreparedEntry&&(this.canvasFactory.destroy(this.smaskPreparedEntry),this.smaskPreparedEntry=null),this.smaskPreparedFor=null,this.smaskPreparedOffsetX=0,this.smaskPreparedOffsetY=0,this.smaskPreparedOOBAlpha=null}_ensurePreparedSMask(t){t!==this.smaskPreparedFor&&(this._clearPreparedSMask(),this._prepareSMaskCanvas(t))}checkSMaskState(t){const e=this.inSMaskMode;this.current.activeSMask&&!e?this.beginSMaskMode(t):!this.current.activeSMask&&e?this.endSMaskMode():this.current.activeSMask&&e&&this._ensurePreparedSMask(this.current.activeSMask)}_prepareSMaskCanvas(t){const{canvas:e,subtype:s,backdrop:i,transferMap:n}=t,r=s==="Luminosity"||s==="Alpha"&&n;if(!r&&!(s==="Luminosity"&&i)){this.smaskPreparedFor=t;return}let a;if(s==="Luminosity"&&i){const[y,A,v]=De(i),w=Math.round(.3*y+.59*A+.11*v);a=n?.[w]??w}else a=n?.[0]??0;const o=4,{width:l,height:h}=this.ctx.canvas,c=e.width*e.height,u=l*hthis.filterFactory.addKnockoutFilter(s))),!o||l!=="none")return e&&(a.save(),a.setTransform(1,0,0,1,0,0),a.clearRect(0,0,i,n),a.restore()),a.filter=l,a.drawImage(t,0,0),a.filter="none",r;const h=t.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,i,n),c=a.createImageData(i,n),u=h.data,f=c.data,p=s>0?1/s:1e6;for(let g=3,m=u.length;g0||!this.contentVisible)return!1;this.#s++,this.#o=t;const e=this.#u.at(-1),{canvas:s}=this.ctx,i=this.#m(e,"knockoutTempEntry",s.width,s.height);this.#i=i;const n=i.context;return n.save(),n.setTransform(this.ctx.getTransform()),Vt(this.ctx,n),this.#r=n.globalCompositeOperation,n.globalCompositeOperation="source-over",Di(n,this.ctx),this.#h=e,this.#n=this.ctx,this.#a=this.suspendedCtx,this.ctx=n,this.inSMaskMode&&(this.suspendedCtx=n),!0}#b(t){if(!t)return;const e=this.#i,s=this.#n,i=this.#a,n=e.context;this.#i=null,this.#n=null,this.#a=null,this.inSMaskMode&&this.suspendedCtx===n&&this.ctx!==n&&this.endSMaskMode(),this.inSMaskMode&&(this.suspendedCtx=i),this.ctx._removeMirroring(),this.ctx.globalCompositeOperation=this.#r,this.#r=null,Vt(this.ctx,s),this.ctx=s;const r=this.#h;this.#h=null;const a=this.#o;this.#o=1;try{this.#c(i??s,e.canvas,{backdropCanvas:r?.backdropCtx?.canvas??null,backdropOffset:r?.backdropCtx?[r.offsetX,r.offsetY]:[0,0],reuseMaskEntry:r?.knockoutMaskEntry??null,poolMeta:r,knockoutAlpha:a})}finally{n.restore(),this.#s--,r||this.canvasFactory.destroy(e)}}compose(t){if(!this.current.activeSMask)return;t=t?[Math.floor(t[0]),Math.floor(t[1]),Math.ceil(t[2]),Math.ceil(t[3])]:[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const e=this.current.activeSMask,s=this.suspendedCtx,i=this.#s>0&&s===this.ctx;this.composeSMask(i?null:s,e,this.ctx,t),!i&&(this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore())}composeSMask(t,e,s,i){const n=i[0],r=i[1],a=i[2]-n,o=i[3]-r;if(a===0||o===0)return;const l=this.smaskPreparedEntry;if(l){let h=n,c=r,u=a,f=o;const p=this.smaskPreparedOOBAlpha,g=p!==null;if(g){h=Math.max(n,e.offsetX),c=Math.max(r,e.offsetY);const m=Math.min(n+a,e.offsetX+e.canvas.width),b=Math.min(r+o,e.offsetY+e.canvas.height);u=m-h,f=b-c}if(u>0&&f>0){const m=h-this.smaskPreparedOffsetX,b=c-this.smaskPreparedOffsetY;s.save(),s.globalAlpha=1,s.setTransform(1,0,0,1,0,0);const y=new Path2D;y.rect(h,c,u,f),s.clip(y),s.globalCompositeOperation="destination-in",s.drawImage(l.canvas,m,b,u,f,h,c,u,f),s.restore()}g&&p<255&&this._applySMaskOOBAlpha(s,n,r,a,o,h,c,h+u,c+f,p)}else this.genericComposeSMask(e,s,a,o,n,r);t&&(t.save(),t.globalAlpha=1,t.globalCompositeOperation=e.blendMode||"source-over",t.setTransform(1,0,0,1,0,0),t.drawImage(s.canvas,n,r,a,o,n,r,a,o),t.restore())}_applySMaskOOBAlpha(t,e,s,i,n,r,a,o,l,h){const c=ra.measureText(e))),(u===it.STROKE||u===it.FILL_STROKE)&&(this.dependencyTracker&&this.dependencyTracker?.recordCharacterBBox(t,a,l,c,s,i,()=>a.measureText(e)).recordDependencies(t,wt.stroke),a.strokeText(e,s,i));f&&((this.pendingTextPaths||=[]).push({transform:V(a),x:s,y:i,fontSize:c,path:m}),this.dependencyTracker?.recordCharacterBBox(t,a,l,c,s,i))}get isFontSubpixelAAEnabled(){const t=this.canvasFactory.create(10,10),e=t.context;e.scale(1.5,1),e.fillText("I",0,10);const s=e.getImageData(0,0,10,10).data;this.canvasFactory.destroy(t);let i=!1;for(let n=3;n0&&s[n]<255){i=!0;break}return D(this,"isFontSubpixelAAEnabled",i)}showText(t,e){this.dependencyTracker&&(this.dependencyTracker.recordDependencies(t,wt.showText).resetBBox(t),this.current.textRenderingMode&it.ADD_TO_PATH_FLAG&&this.dependencyTracker.recordFutureForcedDependency("textClip",t).inheritPendingDependenciesAsFutureForcedDependencies());const s=this.current,i=s.font;if(i.isType3Font){const I=this.#p(s.fillAlpha);this.showType3Text(t,e),this.dependencyTracker?.recordShowTextOperation(t),this.#b(I);return}const n=s.fontSize;if(n===0){this.dependencyTracker?.recordOperation(t);return}const r=this.#p(s.fillAlpha),a=this.ctx,o=s.fontSizeScale,l=s.charSpacing,h=s.wordSpacing,c=s.fontDirection,u=s.textHScale*c,f=e.length,p=i.vertical,g=p?1:-1,m=i.defaultVMetrics,b=n*s.fontMatrix[0],y=s.textRenderingMode===it.FILL&&!i.disableFontFace&&!s.patternFill;a.save(),s.textMatrix&&a.transform(...s.textMatrix),a.translate(s.x,s.y+s.textRise),c>0?a.scale(u,-1):a.scale(u,1);let A,v;const w=s.textRenderingMode&it.FILL_STROKE_MASK,S=w===it.FILL||w===it.FILL_STROKE,_=w===it.STROKE||w===it.FILL_STROKE;let E=s.lineWidth;const C=s.textMatrixScale;if(C===0||E===0?_&&(E=this.getSinglePixelWidth()):E/=C,o!==1&&(a.scale(o,o),E/=o),a.lineWidth=E,S&&s.patternFill){a.save();const I=s.fillColor.getPattern(a,this,Mt(a),at.FILL,t);A=V(a),a.restore(),a.fillStyle=I}if(_&&s.patternStroke){a.save();const I=s.strokeColor.getPattern(a,this,Mt(a),at.STROKE,t);v=V(a),a.restore(),a.strokeStyle=I}if(i.isInvalidPDFjsFont){const I=[];let B=0;for(const Y of e)I.push(Y.unicode),B+=Y.width;const H=I.join("");if(a.fillText(H,0,0),this.dependencyTracker!==null){const Y=a.measureText(H);this.dependencyTracker.recordBBox(t,this.ctx,-Y.actualBoundingBoxLeft,Y.actualBoundingBoxRight,-Y.actualBoundingBoxAscent,Y.actualBoundingBoxDescent).recordShowTextOperation(t)}s.x+=B*b*u,a.restore(),this.compose(),this.#b(r);return}let k=0,P;for(P=0;P0){Rt=a.measureText(Y);const W=Rt.width*1e3/n*o;if(ltRt??a.measureText(Y));else if(this.paintChar(t,Y,F,ot,A,v),O){const W=F+n*O.offset.x/o,q=ot-n*O.offset.y/o;this.paintChar(t,O.fontChar,W,q,A,v)}}const ie=p?lt*b-H*c:lt*b+H*c;k+=ie,B&&a.restore()}p?s.y-=k:s.x+=k*u,a.restore(),this.compose(),this.dependencyTracker?.recordShowTextOperation(t),this.#b(r)}showType3Text(t,e){const s=this.ctx,i=this.current,n=i.font,r=i.fontSize,a=i.fontDirection,o=n.vertical?1:-1,l=i.charSpacing,h=i.wordSpacing,c=i.textHScale*a,u=i.fontMatrix||xs,f=e.length,p=i.textRenderingMode===it.INVISIBLE;let g,m,b,y;if(p||r===0)return;this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,s.save(),i.textMatrix&&s.transform(...i.textMatrix),s.translate(i.x,i.y+i.textRise),s.scale(c,a);const A=this.dependencyTracker;for(this.dependencyTracker=A?new Te(A,t):null,g=0;gnew Jt(r,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack},void 0,void 0,this.dependencyTracker?new Te(this.dependencyTracker,a,!0):null)};s=new _e(e,this.ctx,n,i)}else s=this._getPattern(t,e[1],e[2]);return s}setStrokeColorN(t,...e){this.dependencyTracker?.recordSimpleData("strokeColor",t),this.current.strokeColor=this.getColorN_Pattern(t,e),this.current.patternStroke=!0}setFillColorN(t,...e){this.dependencyTracker?.recordSimpleData("fillColor",t);const s=this.current.fillColor=this.getColorN_Pattern(t,e);this.current.patternFill=!0,this.current.tilingPatternDims=s instanceof _e?[0,0,0,0]:null}setStrokeRGBColor(t,e){this.dependencyTracker?.recordSimpleData("strokeColor",t),this.ctx.strokeStyle=this.current.strokeColor=e,this.current.patternStroke=!1}setStrokeTransparent(t){this.dependencyTracker?.recordSimpleData("strokeColor",t),this.ctx.strokeStyle=this.current.strokeColor="transparent",this.current.patternStroke=!1}setFillRGBColor(t,e){this.dependencyTracker?.recordSimpleData("fillColor",t),this.ctx.fillStyle=this.current.fillColor=e,this.current.patternFill=!1,this.current.tilingPatternDims=null}setFillTransparent(t){this.dependencyTracker?.recordSimpleData("fillColor",t),this.ctx.fillStyle=this.current.fillColor="transparent",this.current.patternFill=!1,this.current.tilingPatternDims=null}_getPattern(t,e,s=null){const i=this.cachedPatterns.getOrInsertComputed(e,()=>jr(this.getObject(t,e)));return s&&(i.matrix=s),i}shadingFill(t,e){if(!this.contentVisible)return;const s=this.#p(this.current.fillAlpha),i=this.ctx;this.save(t);const n=this._getPattern(t,e);i.fillStyle=n.getPattern(i,this,Mt(i),at.SHADING,t);const r=Mt(i);if(r){const{width:a,height:o}=i.canvas,l=Xt.slice();x.axialAlignedBoundingBox([0,0,a,o],r,l);const[h,c,u,f]=l;this.ctx.fillRect(h,c,u-h,f-c)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.dependencyTracker?.resetBBox(t).recordFullPageBBox(t).recordDependencies(t,wt.transform).recordDependencies(t,wt.fill).recordOperation(t),this.compose(this.current.getClippedPathBoundingBox()),this.restore(t),this.#b(s)}beginInlineImage(){G("Should not call beginInlineImage")}beginImageData(){G("Should not call beginImageData")}paintFormXObjectBegin(t,e,s){if(this.contentVisible&&(this.save(t),this.baseTransformStack.push(this.baseTransform),e&&this.transform(t,...e),this.baseTransform=V(this.ctx),s)){x.axialAlignedBoundingBox(s,this.baseTransform,this.current.minMax);const[i,n,r,a]=s,o=new Path2D;o.rect(i,n,r-i,a-n),this.ctx.clip(o),this.dependencyTracker?.recordClipBox(t,this.ctx,i,r,n,a),this.endPath(t)}}paintFormXObjectEnd(t){this.contentVisible&&(this.restore(t),this.baseTransform=this.baseTransformStack.pop())}beginGroup(t,e){if(!this.contentVisible)return;this.save(t);const{inSMaskMode:s}=this;s&&(this.endSMaskMode(),this.current.activeSMask=null);const i=this.ctx;if((!e.needsIsolation||!e.isolated&&!e.hasSoftMask)&&!e.knockout&&!e.isGray&&this.#e===0&&i.globalAlpha===1&&i.globalCompositeOperation==="source-over"&&!s){if(e.bbox){let v=new Path2D;const[w,S,_,E]=e.bbox;if(v.rect(w,S,_-w,E-S),e.matrix){const C=new Path2D;C.addPath(v,new DOMMatrix(e.matrix)),v=C}i.clip(v)}this.groupStack.push(null),this.#u.push(null),this.groupLevel++;return}!e.isolated&&!e.knockout&&this.#e===0&&ss("TODO: Fully support non-isolated non-knockout groups.");const n=V(i);e.matrix&&i.transform(...e.matrix);const r=[0,0,i.canvas.width,i.canvas.height];let a;e.bbox?(a=Xt.slice(),x.axialAlignedBoundingBox(e.bbox,V(i),a),a=x.intersect(a,r)||[0,0,0,0]):a=r;const o=Math.floor(a[0]),l=Math.floor(a[1]),h=Math.max(Math.ceil(a[2])-o,1),c=Math.max(Math.ceil(a[3])-l,1);this.current.startNewPathAndClipBox([0,0,h,c]);const u=this.canvasFactory.create(h,c);e.smask&&this.smaskGroupCanvases.push(u);const f=u.context,p=e.knockout&&!e.isolated?i:null,g=!e.isolated&&!e.knockout&&!e.smask&&e.needsIsolation&&this.#e>0,m=e.knockout?this.canvasFactory.create(h,c):null,b=this.#e;e.knockout?this.#e++:this.#e=0,f.translate(-o,-l),f.transform(...n);const y=!e.isolated&&!e.smask&&e.needsIsolation,A=y&&!s&&b===0&&!e.knockout&&!e.isGray&&e.hasSoftMask&&i.globalAlpha===1&&i.globalCompositeOperation==="source-over"&&this.current.transferMaps==="none";if(y&&(s||A)&&(f.save(),f.setTransform(1,0,0,1,0,0),f.drawImage(i.canvas,-o,-l),f.restore()),e.bbox){let v=new Path2D;const[w,S,_,E]=e.bbox;if(v.rect(w,S,_-w,E-S),e.matrix){const C=new Path2D;C.addPath(v,new DOMMatrix(e.matrix)),v=C}f.clip(v)}e.smask&&this.smaskStack.push({canvas:u.canvas,context:f,offsetX:o,offsetY:l,subtype:e.smask.subtype,backdrop:e.smask.backdrop,transferMap:e.smask.transferMap||null}),(!e.smask||this.dependencyTracker)&&(i.setTransform(1,0,0,1,0,0),i.translate(o,l),i.save()),Vt(i,f),this.ctx=f,this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies(["fillAlpha","strokeAlpha","globalCompositeOperation"]).pushBaseTransform(i),this.setGState(t,[["BM","source-over"],["ca",1],["CA",1],["TR",null]]),this.groupStack.push(i),this.#u.push({backdropCtx:p,savedKnockoutLevel:b,offsetX:o,offsetY:l,hasInnerBackdrop:g,replaceBackdrop:A,knockoutMaskEntry:m,knockoutTempEntry:null,knockoutBackdropEntry:null}),this.groupLevel++}endGroup(t,e){if(!this.contentVisible)return;this.groupLevel--;const s=this.ctx,i=this.groupStack.pop(),n=this.#u.pop();if(n&&(this.#e=n.savedKnockoutLevel),i===null){this.restore(t);return}if(e.isGray&&this.#A(s),this.ctx=i,this.ctx.imageSmoothingEnabled=!1,this.dependencyTracker?.popBaseTransform(),e.smask)this.tempSMask=this.smaskStack.pop(),this.restore(t),this.dependencyTracker&&(this.ctx.restore(),this.inSMaskMode&&this.ctx.setTransform(this.suspendedCtx.getTransform())),this.#w(n);else{this.ctx.restore();const r=V(this.ctx);this.restore(t),this.ctx.save(),this.ctx.setTransform(...r);const a=Xt.slice();x.axialAlignedBoundingBox([0,0,s.canvas.width,s.canvas.height],r,a);const o=this.#u.at(-1);if(this.#e>0)if(n.hasInnerBackdrop){const{width:l,height:h}=s.canvas,c=this.canvasFactory.create(l,h),u=c.context;u.drawImage(i.canvas,n.offsetX,n.offsetY,l,h,0,0,l,h),u.globalCompositeOperation="source-over",u.drawImage(s.canvas,0,0);const f=this.#g(s.canvas);u.globalCompositeOperation="destination-in",u.drawImage(f.canvas,0,0);const p=this.ctx.globalCompositeOperation,g=this.ctx.globalAlpha,m=this.ctx.filter;this.ctx.save(),this.ctx.setTransform(...r),this.ctx.globalAlpha=1,j.isCanvasFilterSupported&&(this.ctx.filter="none"),this.ctx.globalCompositeOperation="destination-out",this.ctx.drawImage(f.canvas,0,0),this.ctx.globalCompositeOperation=p,this.ctx.globalAlpha=g,j.isCanvasFilterSupported&&(this.ctx.filter=m??"none"),this.ctx.drawImage(c.canvas,0,0),this.ctx.restore(),this.canvasFactory.destroy(f),this.canvasFactory.destroy(c)}else{const l=o?.backdropCtx??null;this.#c(this.ctx,s.canvas,{backdropCanvas:l?.canvas??null,destTransform:r,backdropOffset:l?[o.offsetX+n.offsetX,o.offsetY+n.offsetY]:[0,0],sourceAlpha:this.ctx.globalAlpha,sourceFilter:this.ctx.filter})}else{if(n.replaceBackdrop){const l=new Path2D;l.rect(0,0,s.canvas.width,s.canvas.height),this.ctx.clip(l),this.ctx.globalCompositeOperation="copy"}this.ctx.drawImage(s.canvas,0,0)}this.ctx.restore(),this.canvasFactory.destroy({canvas:s.canvas,context:s}),this.#w(n),this.compose(a)}}#A(t){const{canvas:e}=t,{width:s,height:i}=e;if(j.isCanvasFilterSupported){t.save(),t.setTransform(1,0,0,1,0,0),t.filter="grayscale(1)",t.globalAlpha=1,t.globalCompositeOperation="copy",t.drawImage(e,0,0),t.restore();return}const n=t.getImageData(0,0,s,i),{data:r}=n;for(let a=0,o=r.length;ab.getAttribute("data-canvas-name")===a);m===-1?g.push(f):g[m]=f}else this.annotationCanvasMap.set(e,f);this.annotationCanvas.savedCtx=this.ctx,this.ctx=p,this.ctx.save(),this.ctx.setTransform(yt[0],0,0,-yt[1],0,l*yt[1]),Ue(this.ctx)}else{Ue(this.ctx),this.endPath(t);const h=new Path2D;h.rect(s[0],s[1],o,l),this.ctx.clip(h)}}this.current=new Oi(this.ctx.canvas.width,this.ctx.canvas.height),this.baseTransformStack.push(this.baseTransform),this.transform(t,...i),this.transform(t,...n),this.baseTransform=V(this.ctx)}endAnnotation(t){this.annotationCanvas&&(this.ctx.restore(),this.#f(),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas),this.baseTransform=this.baseTransformStack.pop()}paintImageMaskXObject(t,e){if(!this.contentVisible)return;const s=e.count;e=this.getObject(t,e.data,e),e.count=s;const i=this.#p(this.current.fillAlpha),n=this.ctx,r=this._createMaskCanvas(t,e),a=r.canvas;n.save(),n.setTransform(1,0,0,1,0,0),n.drawImage(a,r.offsetX,r.offsetY),this.dependencyTracker?.resetBBox(t).recordBBox(t,this.ctx,r.offsetX,r.offsetX+a.width,r.offsetY,r.offsetY+a.height).recordOperation(t),n.restore(),r.canvasEntry&&this.canvasFactory.destroy(r.canvasEntry),this.compose(),this.#b(i)}paintImageMaskXObjectRepeat(t,e,s,i=0,n=0,r,a){if(!this.contentVisible)return;e=this.getObject(t,e.data,e);const o=this.#p(this.current.fillAlpha),l=this.ctx;l.save();const h=V(l);l.transform(s,i,n,r,0,0);const c=this._createMaskCanvas(t,e);l.setTransform(1,0,0,1,c.offsetX-h[4],c.offsetY-h[5]),this.dependencyTracker?.resetBBox(t);for(let u=0,f=a.length;uc?h/c:1,a=l>c?l/c:1}}this._cachedScaleForStroking[0]=r,this._cachedScaleForStroking[1]=a}return this._cachedScaleForStroking}rescaleAndStroke(t,e){const{ctx:s,current:{lineWidth:i}}=this,[n,r]=this.getScaleForStroking();if(n===r){s.lineWidth=(i||1)*n,s.stroke(t);return}const a=Jt.#t??=new DOMMatrix,o=s.getLineDash();e&&s.save(),s.scale(n,r),a.a=1/n,a.d=1/r;const l=new Path2D;if(l.addPath(t,a),o.length>0){const h=Math.max(n,r);s.setLineDash(o.map(c=>c/h)),s.lineDashOffset/=h}s.lineWidth=i||1,s.stroke(l),e&&s.restore()}isContentVisible(){for(let t=this.markedContentStack.length-1;t>=0;t--)if(!this.markedContentStack[t].visible)return!1;return!0}}for(const d in Ot)Jt.prototype[d]!==void 0&&(Jt.prototype[Ot[d]]=Jt.prototype[d]);class as{#t=null;#e=null;_fullReader=null;_rangeReaders=new Set;_source=null;constructor(t,e,s){this._source=t,this.#t=e,this.#e=s}get _progressiveDataLength(){return this._fullReader?._loaded??0}getFullReader(){return Z(!this._fullReader,"BasePDFStream.getFullReader can only be called once."),this._fullReader=new this.#t(this)}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const s=new this.#e(this,t,e);return this._rangeReaders.add(s),s}cancelAllRequests(t){this._fullReader?.cancel(t);for(const e of new Set(this._rangeReaders))e.cancel(t)}}class os{onProgress=null;_contentLength=0;_filename=null;_headersCapability=Promise.withResolvers();_isRangeSupported=!1;_isStreamingSupported=!1;_loaded=0;_stream=null;constructor(t){this._stream=t}_callOnProgress(){this.onProgress?.({loaded:this._loaded,total:this._contentLength})}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){G("Abstract method `read` called")}cancel(t){G("Abstract method `cancel` called")}}class ls{_stream=null;constructor(t,e,s){this._stream=t}async read(){G("Abstract method `read` called")}cancel(t){G("Abstract method `cancel` called")}}function Qr(d){let t=!0,e=s("filename\\*","i").exec(d);if(e){e=e[1];let h=a(e);return h=unescape(h),h=o(h),h=l(h),n(h)}if(e=r(d),e){const h=l(e);return n(h)}if(e=s("filename","i").exec(d),e){e=e[1];let h=a(e);return h=l(h),n(h)}function s(h,c){return new RegExp("(?:^|;)\\s*"+h+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',c)}function i(h,c){if(h){if(!/^[\x00-\xFF]+$/.test(c))return c;try{const u=new TextDecoder(h,{fatal:!0}),f=is(c);c=u.decode(f),t=!1}catch{}}return c}function n(h){return t&&/[\x80-\xff]/.test(h)&&(h=i("utf-8",h),t&&(h=i("iso-8859-1",h))),h}function r(h){const c=[];let u;const f=s("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;(u=f.exec(h))!==null;){let[,g,m,b]=u;if(g=parseInt(g,10),g in c){if(g===0)break;continue}c[g]=[m,b]}const p=[];for(let g=0;g0&&d[t-1]!==" "&&/\s/.test(d[t-1]);)t--;return d.slice(0,t)}function hs(d){return URL.parse(d)?.origin??null}function dn({responseHeaders:d,isHttp:t,rangeChunkSize:e,disableRange:s}){const i={contentLength:0,isRangeSupported:!1},n=parseInt(d.get("Content-Length"),10);return!Number.isInteger(n)||(i.contentLength=n,n<=2*e)||s||!t||d.get("Accept-Ranges")!=="bytes"||(d.get("Content-Encoding")||"identity")==="identity"&&(i.isRangeSupported=!0),i}function un(d){const t=d.get("Content-Disposition");if(t){let e=Qr(t);if(e.includes("%"))try{e=decodeURIComponent(e)}catch{}if(Ws(e))return e}return null}function cs(d,t){return new qe(`Unexpected server response (${d}) while retrieving PDF "${t.href}".`,d,d===404||d===0&&t.protocol==="file:")}function fn(d,t){if(d!==t)throw new Error(`Expected range response-origin "${d}" to match "${t}".`)}function pn(d,t,e,s){return fetch(d,{method:"GET",headers:t,signal:s.signal,mode:"cors",credentials:e?"include":"same-origin",redirect:"follow"})}function gn(d,t){if(d!==200&&d!==206)throw cs(d,t)}function ds(d){if(d instanceof Uint8Array)return d.buffer;if(d instanceof ArrayBuffer)return d;throw new Error(`getArrayBuffer - unexpected data: ${d}`)}class Zr extends as{_responseOrigin=null;constructor(t){super(t,ta,ea);const{httpHeaders:e,url:s}=t;Z(/https?:/.test(s.protocol),"PDFFetchStream only supports http(s):// URLs."),this.headers=cn(!0,e)}}class ta extends os{_abortController=new AbortController;_reader=null;constructor(t){super(t);const{disableRange:e,disableStream:s,rangeChunkSize:i,url:n,withCredentials:r}=t._source;this._isStreamingSupported=!s;const a=new Headers(t.headers);pn(n,a,r,this._abortController).then(o=>{t._responseOrigin=hs(o.url),gn(o.status,n),this._reader=o.body.getReader();const l=o.headers,{contentLength:h,isRangeSupported:c}=dn({responseHeaders:l,isHttp:!0,rangeChunkSize:i,disableRange:e});this._contentLength=h,this._isRangeSupported=c,this._filename=un(l),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new $t("Streaming is disabled.")),this._headersCapability.resolve()}).catch(this._headersCapability.reject)}async read(){await this._headersCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:(this._loaded+=t.byteLength,this._callOnProgress(),{value:ds(t),done:!1})}cancel(t){this._reader?.cancel(t),this._abortController.abort()}}class ea extends ls{_abortController=new AbortController;_readCapability=Promise.withResolvers();_reader=null;constructor(t,e,s){super(t,e,s);const{url:i,withCredentials:n}=t._source,r=new Headers(t.headers);r.append("Range",`bytes=${e}-${s-1}`),pn(i,r,n,this._abortController).then(a=>{const o=hs(a.url);fn(o,t._responseOrigin),gn(a.status,i),this._reader=a.body.getReader(),this._readCapability.resolve()}).catch(this._readCapability.reject)}async read(){await this._readCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:{value:ds(t),done:!1}}cancel(t){this._reader?.cancel(t),this._abortController.abort()}}function Bi(d){return d instanceof Uint8Array&&d.byteLength===d.buffer.byteLength?d.buffer:new Uint8Array(d).buffer}function us(){for(const d of this._requests)d.resolve({value:void 0,done:!0});this._requests.length=0}class sa extends as{_progressiveDone=!1;_queuedChunks=[];constructor(t){super(t,ia,na);const{pdfDataRangeTransport:e}=t,{initialData:s,progressiveDone:i}=e;if(s?.length>0){const r=Bi(s);this._queuedChunks.push(r)}this._progressiveDone=i;const n=r=>{switch(r.type){case"range":case"progressiveRead":this.#t(r.begin,r.chunk);break;case"progressiveDone":this._fullReader?.progressiveDone(),this._progressiveDone=!0;break}};e.transportReady(n)}#t(t,e){const s=Bi(e);if(t===void 0)this._fullReader?this._fullReader._enqueue(s):this._queuedChunks.push(s);else{const i=this._rangeReaders.keys().find(n=>n._begin===t);Z(i,"#onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."),i._enqueue(s)}}getFullReader(){const t=super.getFullReader();return this._queuedChunks=null,t}getRangeReader(t,e){const s=super.getRangeReader(t,e);return s&&(s.onDone=()=>this._rangeReaders.delete(s),this._source.pdfDataRangeTransport.requestDataRange(t,e)),s}cancelAllRequests(t){super.cancelAllRequests(t),this._source.pdfDataRangeTransport.abort()}}class ia extends os{#t=us.bind(this);_done=!1;_queuedChunks=null;_requests=[];constructor(t){super(t);const{pdfDataRangeTransport:e,disableRange:s,disableStream:i}=t._source,{length:n,contentDispositionFilename:r}=e;this._queuedChunks=t._queuedChunks||[];for(const o of this._queuedChunks)this._loaded+=o.byteLength;this._done=t._progressiveDone,this._contentLength=n,this._isStreamingSupported=!i,this._isRangeSupported=!s,Ws(r)&&(this._filename=r),this._headersCapability.resolve();const a=this._loaded;Promise.resolve().then(()=>{a>0&&this._loaded===a&&this._callOnProgress()})}_enqueue(t){this._done||(this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunks.push(t),this._loaded+=t.byteLength,this._callOnProgress())}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this.#t()}progressiveDone(){this._done||=!0,this._queuedChunks.length===0&&this.#t()}}class na extends ls{#t=us.bind(this);onDone=null;_begin=-1;_done=!1;_queuedChunk=null;_requests=[];constructor(t,e,s){super(t,e,s),this._begin=e}_enqueue(t){this._done||(this._requests.length===0?this._queuedChunk=t:(this._requests.shift().resolve({value:t,done:!1}),this.#t()),this._done=!0,this.onDone?.())}async read(){if(this._queuedChunk){const e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this.#t(),this.onDone?.()}}const _s=200,Ui=206;function ra(d){return typeof d!="string"?d:is(d).buffer}class aa extends as{#t=new WeakMap;_responseOrigin=null;constructor(t){super(t,oa,la);const{httpHeaders:e,url:s}=t;this.url=s,this.isHttp=/https?:/.test(s.protocol),this.headers=cn(this.isHttp,e)}_request(t){const e=new XMLHttpRequest,s={validateStatus:null,onHeadersReceived:t.onHeadersReceived,onDone:t.onDone,onError:t.onError,onProgress:t.onProgress};this.#t.set(e,s),e.open("GET",this.url),e.withCredentials=this._source.withCredentials;for(const[i,n]of this.headers)e.setRequestHeader(i,n);return this.isHttp&&"begin"in t&&"end"in t?(e.setRequestHeader("Range",`bytes=${t.begin}-${t.end-1}`),s.validateStatus=i=>i===Ui||i===_s):s.validateStatus=i=>i===_s,e.responseType="arraybuffer",Z(t.onError,"Expected `onError` callback to be provided."),e.onerror=()=>t.onError(e.status),e.onreadystatechange=this.#s.bind(this,e),e.onprogress=this.#e.bind(this,e),e.send(null),e}#e(t,e){this.#t.get(t)?.onProgress?.(e)}#s(t,e){const s=this.#t.get(t);if(!s||(t.readyState>=2&&s.onHeadersReceived&&(s.onHeadersReceived(),delete s.onHeadersReceived),t.readyState!==4)||!this.#t.has(t))return;if(this.#t.delete(t),t.status===0&&this.isHttp){s.onError(t.status);return}const i=t.status||_s;if(!s.validateStatus(i)){s.onError(t.status);return}const n=ra(t.response);if(i===Ui){const r=t.getResponseHeader("Content-Range");/bytes \d+-\d+\/\d+/.test(r)?s.onDone(n):(N('Missing or invalid "Content-Range" header.'),s.onError(0))}else n?s.onDone(n):s.onError(t.status)}_abortRequest(t){this.#t.has(t)&&(this.#t.delete(t),t.abort())}getRangeReader(t,e){const s=super.getRangeReader(t,e);return s&&(s.onClosed=()=>this._rangeReaders.delete(s)),s}}class oa extends os{#t=us.bind(this);_cachedChunks=[];_done=!1;_requests=[];_storedError=null;constructor(t){super(t),this._fullRequestXhr=t._request({onHeadersReceived:this.#e.bind(this),onDone:this.#s.bind(this),onError:this.#i.bind(this),onProgress:this.#n.bind(this)})}#e(){const t=this._stream,{disableRange:e,rangeChunkSize:s}=t._source,i=this._fullRequestXhr;t._responseOrigin=hs(i.responseURL);const n=i.getAllResponseHeaders(),r=new Headers(n?Jr(n.trimStart()).split(/[\r\n]+/).map(l=>{const[h,...c]=l.split(": ");return[h,c.join(": ")]}):[]),{contentLength:a,isRangeSupported:o}=dn({responseHeaders:r,isHttp:t.isHttp,rangeChunkSize:s,disableRange:e});this._contentLength=a,this._isRangeSupported=o,this._filename=un(r),this._isRangeSupported&&t._abortRequest(i),this._headersCapability.resolve()}#s(t){this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._cachedChunks.push(t),this._done=!0,this._cachedChunks.length===0&&this.#t()}#i(t){this._storedError=cs(t,this._stream.url),this._headersCapability.reject(this._storedError);for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}#n(t){this.onProgress?.({loaded:t.loaded,total:t.lengthComputable?t.total:this._contentLength})}async read(){if(await this._headersCapability.promise,this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this._headersCapability.reject(t),this.#t(),this._stream._abortRequest(this._fullRequestXhr),this._fullRequestXhr=null}}class la extends ls{#t=us.bind(this);onClosed=null;_done=!1;_queuedChunk=null;_requests=[];_storedError=null;constructor(t,e,s){super(t,e,s),this._requestXhr=t._request({begin:e,end:s,onHeadersReceived:this.#e.bind(this),onDone:this.#s.bind(this),onError:this.#i.bind(this),onProgress:null})}#e(){const t=hs(this._requestXhr?.responseURL);try{fn(t,this._stream._responseOrigin)}catch(e){this._storedError=e,this.#i(0)}}#s(t){this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunk=t,this._done=!0,this.#t(),this.onClosed?.()}#i(t){this._storedError??=cs(t,this._stream.url);for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}async read(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){const e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this.#t(),this._stream._abortRequest(this._requestXhr),this.onClosed?.()}}function mn(d,t=null){const e=process.getBuiltinModule("fs"),{Readable:s}=process.getBuiltinModule("stream"),i=e.createReadStream(d,t);return s.toWeb(i)}class ha extends as{constructor(t){super(t,ca,da);const{url:e}=t;Z(e.protocol==="file:","PDFNodeStream only supports file:// URLs.")}}class ca extends os{_reader=null;constructor(t){super(t);const{disableRange:e,disableStream:s,rangeChunkSize:i,url:n}=t._source;this._isStreamingSupported=!s,process.getBuiltinModule("fs/promises").lstat(n).then(a=>{const o=mn(n);this._reader=o.getReader();const{size:l}=a;this._contentLength=l,this._isRangeSupported=!e&&l>2*i,!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new $t("Streaming is disabled.")),this._headersCapability.resolve()}).catch(a=>{a.code==="ENOENT"&&(a=cs(0,n)),this._headersCapability.reject(a)})}async read(){await this._headersCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:(this._loaded+=t.byteLength,this._callOnProgress(),{value:ds(t),done:!1})}cancel(t){this._reader?.cancel(t)}}class da extends ls{_readCapability=Promise.withResolvers();_reader=null;constructor(t,e,s){super(t,e,s);const{url:i}=t._source;try{const n=mn(i,{start:e,end:s-1});this._reader=n.getReader(),this._readCapability.resolve()}catch(n){this._readCapability.reject(n)}}async read(){await this._readCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:{value:ds(t),done:!1}}cancel(t){this._reader?.cancel(t)}}function ua(d){return ve(d)?Zr:mt?ha:aa}class de{static#t=null;static#e="";static get workerPort(){return this.#t}static set workerPort(t){if(!(typeof Worker<"u"&&t instanceof Worker)&&t!==null)throw new Error("Invalid `workerPort` type.");this.#t=t}static get workerSrc(){return this.#e}static set workerSrc(t){if(typeof t!="string")throw new Error("Invalid `workerSrc` type.");this.#e=t}}class fa{#t;#e;constructor({parsedData:t,rawData:e}){this.#t=t,this.#e=e}getRaw(){return this.#e}get(t){return this.#t.get(t)??null}[Symbol.iterator](){return this.#t.entries()}}const Wt=Symbol("INTERNAL");class pa{#t=!1;#e=!1;#s=!1;#i=!0;constructor(t,{name:e,intent:s,usage:i,rbGroups:n}){this.#t=!!(t&pt.DISPLAY),this.#e=!!(t&pt.PRINT),this.name=e,this.intent=s,this.usage=i,this.rbGroups=n}get visible(){if(this.#s)return this.#i;if(!this.#i)return!1;const{print:t,view:e}=this.usage;return this.#t?e?.viewState!=="OFF":this.#e?t?.printState!=="OFF":!0}_setVisible(t,e,s=!1){t!==Wt&&G("Internal method `_setVisible` called."),this.#s=s,this.#i=e}get serializable(){return{userSet:this.#s,visible:this.#i}}}class Qs{#t=null;#e=new Map;#s=null;#i=null;#n;creator=null;name=null;constructor(t,e=pt.DISPLAY,s=null){if(this.#n=t,this.renderingIntent=e,t!==null){this.name=t.name,this.creator=t.creator,this.#i=t.order;for(const i of t.groups)this.#e.set(i.id,new pa(e,i));if(s){s.size!==this.#e.size&&G("Incorrect serialized groupState.");for(const[i,n]of s)this.#e.get(i)._setVisible(Wt,n.visible,n.userSet)}else{if(t.baseState==="OFF")for(const i of this.#e.values())i._setVisible(Wt,!1);for(const i of t.on)this.#e.get(i)._setVisible(Wt,!0);for(const i of t.off)this.#e.get(i)._setVisible(Wt,!1)}this.#s=this.getHash()}}#a(t){const e=t.length;if(e<2)return!0;const s=t[0];for(let i=1;iu===f+1)&&(this.#t=null)}deletePages(t){this.#a();const e=this.#t,s=this.#r();this.#n={pageNumberToId:e.slice(),pagesNumber:this.#s,prevPageNumbers:this.#e.slice()};const i=this.#s-t.length;this.#s=i;const n=this.#t=new Uint32Array(i);this.#e=new Int32Array(i);let r=0,a=0;for(const o of t){const l=o-1;l!==r&&(n.set(e.subarray(r,l),a),a+=l-r),r=l+1}rthis.#t[e-1])}}cancelCopy(){this.#i=null}pastePages(t){this.#a();const e=this.#t,s=this.#r(),{pageNumbers:i,pageIds:n}=this.#i,r=this.#s+i.length;this.#s=r;const a=this.#t=new Uint32Array(r);this.#e=new Int32Array(r),a.set(e.subarray(0,t),0),a.set(n,t),a.set(e.subarray(t),t+i.length),this.#o(s,null,t,i),this.#i=null}#o(t,e=null,s=-1,i=null){const n=this.#e,r=this.#t,a=s+(i?.length??0),o=new Map;for(let l=0,h=this.#s;l=s&&la[0]-o[0]);for(let a=0,o=n.length;as-i);const e=new Map;for(let s=0,i=t.length;s({...Promise.withResolvers(),data:oe});class bn{#t=new Map;get(t,e=null){if(e){const i=this.#t.getOrInsertComputed(t,Hi);return i.promise.then(()=>e(i.data)),null}const s=this.#t.get(t);if(!s||s.data===oe)throw new Error(`Requesting object that isn't resolved yet ${t}.`);return s.data}has(t){const e=this.#t.get(t);return!!e&&e.data!==oe}delete(t){const e=this.#t.get(t);return!e||e.data===oe?!1:(this.#t.delete(t),!0)}resolve(t,e=null){const s=this.#t.getOrInsertComputed(t,Hi);if(s.data!==oe)throw new Error(`Object already resolved ${t}.`);s.data=e,s.resolve()}clear(){for(const{data:t}of this.#t.values())t?.bitmap?.close();this.#t.clear()}*[Symbol.iterator](){for(const[t,{data:e}]of this.#t)e!==oe&&(yield[t,e])}}const ma=1e5,$i=30;class gt{#t=Promise.withResolvers();#e=null;#s=!1;#i=!!globalThis.FontInspector?.enabled;#n=null;#a=null;#r=null;#o=0;#l=0;#h=null;#u=null;#d=0;#f=0;#g=Object.create(null);#m=[];#c=null;#p=[];#b=new WeakMap;#y=null;static#A=new Map;static#w=new Map;static#_=new WeakMap;static#S=null;static#E=new Set;constructor({textContentSource:t,images:e,container:s,viewport:i}){if(t instanceof ReadableStream)this.#c=t;else if(typeof t=="object")this.#c=new ReadableStream({start(l){l.enqueue(t),l.close()}});else throw new Error('No "textContentSource" parameter specified.');this.#e=this.#u=s,this.#n=e,this.#f=i.scale*Tt.pixelRatio,this.#d=i.rotation,this.#r={div:null,properties:null,ctx:null};const{pageWidth:n,pageHeight:r,pageX:a,pageY:o}=i.rawDims;this.#y=[1,0,0,-1,-a,o+r],this.#l=n,this.#o=r,gt.#I(),s.style.setProperty("--min-font-size",gt.#S),Zt(s,i),this.#t.promise.finally(()=>{gt.#E.delete(this),this.#r=null,this.#g=null}).catch(()=>{})}static get fontFamilyMap(){const{isWindows:t,isFirefox:e}=j.platform;return D(this,"fontFamilyMap",new Map([["sans-serif",`${t&&e?"Calibri, ":""}sans-serif`],["monospace",`${t&&e?"Lucida Console, ":""}monospace`]]))}render(){this.#n&&this.#e.append(this.#n.render());const t=()=>{this.#h.read().then(({value:e,done:s})=>{if(s){this.#t.resolve();return}this.#a??=e.lang,Object.assign(this.#g,e.styles),this.#x(e.items),t()},this.#t.reject)};return this.#h=this.#c.getReader(),gt.#E.add(this),t(),this.#t.promise}update({viewport:t,onBefore:e=null}){const s=t.scale*Tt.pixelRatio,i=t.rotation;if(i!==this.#d&&(e?.(),this.#d=i,Zt(this.#u,{rotation:i})),s!==this.#f){e?.(),this.#f=s;const n={div:null,properties:null,ctx:gt.#T(this.#a)};for(const r of this.#p)n.properties=this.#b.get(r),n.div=r,this.#k(n)}}cancel(){const t=new $t("TextLayer task cancelled.");this.#h?.cancel(t).catch(()=>{}),this.#h=null,this.#t.reject(t)}get textDivs(){return this.#p}get textContentItemsStr(){return this.#m}#x(t){if(this.#s)return;this.#r.ctx??=gt.#T(this.#a);const e=this.#p,s=this.#m;for(const i of t){if(e.length>ma){N("Ignoring additional textDivs for performance reasons."),this.#s=!0;return}if(i.str===void 0){if(i.type==="beginMarkedContentProps"||i.type==="beginMarkedContent"){const n=this.#e;this.#e=document.createElement("span"),this.#e.classList.add("markedContent"),i.id&&this.#e.setAttribute("id",i.id),i.tag==="Artifact"&&(this.#e.ariaHidden=!0),n.append(this.#e)}else i.type==="endMarkedContent"&&(this.#e=this.#e.parentNode);continue}s.push(i.str),this.#M(i)}}#M(t){const e=document.createElement("span"),s={angle:0,canvasWidth:0,hasText:t.str!=="",hasEOL:t.hasEOL,fontSize:0};this.#p.push(e);const i=x.transform(this.#y,t.transform);let n=Math.atan2(i[1],i[0]);const r=this.#g[t.fontName];r.vertical&&(n+=Math.PI/2);let a=this.#i&&r.fontSubstitution||r.fontFamily;a=gt.fontFamilyMap.get(a)||a;const o=Math.hypot(i[2],i[3]),l=o*gt.#O(a,r,this.#a);let h,c;n===0?(h=i[4],c=i[5]-l):(h=i[4]+l*Math.sin(n),c=i[5]-l*Math.cos(n));const u=e.style;u.left=`${(100*h/this.#l).toFixed(2)}%`,u.top=`${(100*c/this.#o).toFixed(2)}%`,u.setProperty("--font-height",`${o.toFixed(2)}px`),u.fontFamily=a,s.fontSize=o,e.setAttribute("role","presentation"),e.textContent=t.str,e.dir=t.dir,this.#i&&(e.dataset.fontName=r.fontSubstitutionLoadedName||t.fontName),n!==0&&(s.angle=n*(180/Math.PI));let f=!1;if(t.str.length>1)f=!0;else if(t.str!==" "&&t.transform[0]!==t.transform[3]){const p=Math.abs(t.transform[0]),g=Math.abs(t.transform[3]);p!==g&&Math.max(p,g)/Math.min(p,g)>1.5&&(f=!0)}if(f&&(s.canvasWidth=r.vertical?t.height:t.width),this.#b.set(e,s),this.#r.div=e,this.#r.properties=s,this.#k(this.#r),s.hasText&&this.#e.append(e),s.hasEOL){const p=document.createElement("br");p.setAttribute("role","presentation"),this.#e.append(p)}}#k(t){const{div:e,properties:s,ctx:i}=t,{style:n}=e;if(s.canvasWidth!==0&&s.hasText){const{fontFamily:r}=n,{canvasWidth:a,fontSize:o}=s;gt.#D(i,o*this.#f,r);const{width:l}=i.measureText(e.textContent);l>0&&n.setProperty("--scale-x",a*this.#f/l)}s.angle!==0&&n.setProperty("--rotate",`${s.angle}deg`)}static cleanup(){if(!(this.#E.size>0)){this.#A.clear();for(const{canvas:t}of this.#w.values())t.remove();this.#w.clear()}}static#T(t=null){let e=this.#w.get(t||="");if(!e){const s=document.createElement("canvas");s.style.cssText="position:absolute;top:0;left:0;width:0;height:0;display:none;letter-spacing:normal;word-spacing:normal",s.lang=t,document.body.append(s),e=s.getContext("2d",{alpha:!1,willReadFrequently:!0}),this.#w.set(t,e),this.#_.set(e,{size:0,family:""})}return e}static#D(t,e,s){const i=this.#_.get(t);e===i.size&&s===i.family||(t.font=`${e}px ${s}`,i.size=e,i.family=s)}static#I(){if(this.#S!==null)return;const t=document.createElement("div");t.style.opacity=0,t.style.lineHeight=1,t.style.fontSize="1px",t.style.position="absolute",t.textContent="X",document.body.append(t),this.#S=t.getBoundingClientRect().height,t.remove()}static#O(t,e,s){const i=this.#A.get(t);if(i)return i;const n=this.#T(s);n.canvas.width=n.canvas.height=$i,this.#D(n,$i,t);const r=n.measureText(""),a=r.fontBoundingBoxAscent,o=Math.abs(r.fontBoundingBoxDescent);n.canvas.width=n.canvas.height=0;let l=.8;return a?l=a/(a+o):(j.platform.isFirefox&&N("Enable the `dom.textMetrics.fontBoundingBox.enabled` preference in `about:config` to improve TextLayer rendering."),e.ascent?l=e.ascent:e.descent&&(l=1+e.descent)),this.#A.set(t,l),l}}const ba=100;function yn(d={}){const t=new Js,{docId:e}=t,s=d.url?Sr(d.url):null,i=d.data?_r(d.data):null,n=d.httpHeaders||null,r=d.withCredentials===!0,a=d.password??null,o=d.range instanceof An?d.range:null,l=Number.isInteger(d.rangeChunkSize)&&d.rangeChunkSize>0?d.rangeChunkSize:2**16;let h=d.worker instanceof ke?d.worker:null;const c=d.verbosity,u=typeof d.docBaseUrl=="string"&&!ns(d.docBaseUrl)?d.docBaseUrl:null,f=Le(d.cMapUrl),p=d.cMapPacked!==!1,g=Le(d.iccUrl),m=Le(d.standardFontDataUrl),b=Le(d.wasmUrl),y=d.stopAtErrors!==!0,A=Number.isInteger(d.maxImageSize)&&d.maxImageSize>-1?d.maxImageSize:-1,v=typeof d.isOffscreenCanvasSupported=="boolean"?d.isOffscreenCanvasSupported:!mt,w=typeof d.isImageDecoderSupported=="boolean"?d.isImageDecoderSupported:!mt,S=Number.isInteger(d.canvasMaxAreaInBytes)?d.canvasMaxAreaInBytes:-1,_=typeof d.disableFontFace=="boolean"?d.disableFontFace:mt,E=d.fontExtraProperties===!0,C=d.enableXfa===!0,k=d.ownerDocument||globalThis.document,P=d.disableRange===!0,I=d.disableStream===!0,B=d.disableAutoFetch===!0,H=d.pdfBug===!0,Y=d.CanvasFactory||(mt?Ir:Tr),O=d.FilterFactory||(mt?Mr:kr),F=d.BinaryDataFactory||(mt?Dr:Pi),ot=d.enableHWA===!0,Rt=d.enableWebGPU===!0?Lr():Promise.resolve(!1),ie=d.useWasm!==!1,W=d.pagesMapper||new ga,q=typeof d.useSystemFonts=="boolean"?d.useSystemFonts:!mt&&!_,zt=typeof d.useWorkerFetch=="boolean"?d.useWorkerFetch:!!(F===Pi&&f&&p&&m&&b&&ve(f,document.baseURI)&&ve(m,document.baseURI)&&ve(b,document.baseURI)),ps=null;Un(c);const ne={canvasFactory:new Y({ownerDocument:k,enableHWA:ot}),filterFactory:new O({docId:e,ownerDocument:k}),binaryDataFactory:zt?null:new F({cMapUrl:f,standardFontDataUrl:m,wasmUrl:b})};h||(h=ke.create({verbosity:c,port:de.workerPort}),t._worker=h);const st={docId:e,apiVersion:"6.3.289",data:i,password:a,disableAutoFetch:B,rangeChunkSize:l,docBaseUrl:u,enableXfa:C,evaluatorOptions:{maxImageSize:A,disableFontFace:_,ignoreErrors:y,isOffscreenCanvasSupported:v,isImageDecoderSupported:w,canvasMaxAreaInBytes:S,fontExtraProperties:E,useSystemFonts:q,useWasm:ie,useWorkerFetch:zt,cMapUrl:f,cMapPacked:p,iccUrl:g,standardFontDataUrl:m,wasmUrl:b,hasGPU:!1}},On={ownerDocument:k,pdfBug:H,styleElement:ps,enableHWA:ot,loadingParams:{disableAutoFetch:B,enableXfa:C}};return Promise.all([h.promise,Rt]).then(function([,Fn]){if(h.destroyed)throw new Error("Worker was destroyed");st.evaluatorOptions.hasGPU=Fn;const Rn=h.messageHandler.sendWithPromise("GetDocRequest",st,i?[i.buffer]:null);let gs;if(!i)if(o)gs=new sa({pdfDataRangeTransport:o,disableRange:P,disableStream:I});else if(s){const ms=ua(s);gs=new ms({url:s,httpHeaders:n,withCredentials:r,rangeChunkSize:l,disableRange:P,disableStream:I})}else throw new Error("getDocument - expected either `data`, `range`, or `url` parameter.");return Rn.then(ms=>{if(h.destroyed)throw new Error("Worker was destroyed");const di=new Ae(e,ms,h.port),Ln=new Aa(di,t,gs,On,ne,W);if(t._transport=Ln,t.destroyed)throw new Error("Loading aborted");di.send("Ready",null)})}).catch(t._capability.reject).finally(t._setupCapability.resolve),t}class Js{static#t=0;_capability=Promise.withResolvers();_setupCapability=Promise.withResolvers();_transport=null;_worker=null;docId=`d${Js.#t++}`;destroyed=!1;onPassword=null;onProgress=null;get promise(){return this._capability.promise}async destroy(){this.destroyed=!0,this._capability.promise.catch(()=>{});try{this._worker?.port&&(this._worker._pendingDestroy=!0),await this._setupCapability.promise,await this._transport?.destroy()}catch(t){throw this._worker?.port&&delete this._worker._pendingDestroy,t}this._transport=null,this._worker?.destroy(),this._worker=null}async getData(){return this._transport.getData()}}class An{#t=Promise.withResolvers();#e=null;constructor(t,e,s=!1,i=null){this.length=t,this.initialData=e,this.progressiveDone=s,this.contentDispositionFilename=i}onDataRange(t,e){this.#e({type:"range",begin:t,chunk:e})}onDataProgressiveRead(t){this.#t.promise.then(()=>{this.#e({type:"progressiveRead",chunk:t})})}onDataProgressiveDone(){this.#t.promise.then(()=>{this.#e({type:"progressiveDone"})})}transportReady(t){this.#e=t,this.#t.resolve()}requestDataRange(t,e){G("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}class ya{constructor(t,e){this._pdfInfo=t,this._transport=e}get pagesMapper(){return this._transport.pagesMapper}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return D(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(t){return this._transport.getPage(t)}getPageIndex(t){return this._transport.getPageIndex(t)}getDestinations(){return this._transport.getDestinations()}getDestination(t){return this._transport.getDestination(t)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getAttachmentContent(t){return this._transport.getAttachmentContent(t)}getAnnotationsByType(t,e){return this._transport.getAnnotationsByType(t,e)}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:t="display"}={}){const{renderingIntent:e}=this._transport.getRenderingIntent(t);return this._transport.getOptionalContentConfig(e)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}extractPages(t,e=null){return this._transport.extractPages(t,e)}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(t=!1){return this._transport.startCleanup(t||this.isPureXfa)}cachedPageNumber(t){return this._transport.cachedPageNumber(t)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}getSignatures(){return this._transport.getSignatures()}getSignatureData(t){return this._transport.getSignatureData(t)}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}class Zs{#t=!1;#e=null;constructor(t,e,s,i,n=!1){this._pageIndex=t,this._pageInfo=e,this._transport=s,this._stats=n?new gi:null,this._pdfBug=n,this.commonObjs=s.commonObjs,this.objs=new bn,this._intentStates=new Map,this.destroyed=!1,this.recordedBBoxes=null,this.#e=i,this.imageCoordinates=null}clone(t){const e=new Zs(t,this._pageInfo,this._transport,this.#e,this._pdfBug);return e.clonedFromIndex=this.clonedFromIndex??this._pageIndex,this._transport.updatePage(e),e}get pageNumber(){return this._pageIndex+1}set pageNumber(t){this._pageIndex=t-1,this._transport.updatePage(this)}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:t,rotation:e=this.rotate,offsetX:s=0,offsetY:i=0,dontFlip:n=!1}={}){return new Ie({viewBox:this.view,userUnit:this.userUnit,scale:t,rotation:e,offsetX:s,offsetY:i,dontFlip:n})}getAnnotations({intent:t="display"}={}){const{renderingIntent:e}=this._transport.getRenderingIntent(t);return this._transport.getAnnotations(this._pageIndex,e)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return D(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render({canvasContext:t,canvas:e=t.canvas,viewport:s,intent:i="display",annotationMode:n=Ut.ENABLE,transform:r=null,background:a=null,optionalContentConfigPromise:o=null,annotationCanvasMap:l=null,pageColors:h=null,printAnnotationStorage:c=null,isEditing:u=!1,recordImages:f=!1,recordOperations:p=!1,operationsFilter:g=null}){this._stats?.time("Overall");const m=this._transport.getRenderingIntent(i,n,c,u),{renderingIntent:b,cacheKey:y}=m;this.#t=!1,o||=this._transport.getOptionalContentConfig(b);const A=this._intentStates.getOrInsertComputed(y,Ps);A.streamReaderCancelTimeout&&(clearTimeout(A.streamReaderCancelTimeout),A.streamReaderCancelTimeout=null);const v=!!(b&pt.PRINT);A.displayReadyCapability||(A.displayReadyCapability=Promise.withResolvers(),A.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time("Page Request"),this._pumpOperatorList(m));const w=!!(this._pdfBug&&globalThis.StepperManager?.enabled),S=!!e&&!this.recordedBBoxes&&(p||w),_=!!e&&!this.imageCoordinates&&f,E=B=>{if(A.renderTasks.delete(P),S){const H=P.gfx?.dependencyTracker.take();H&&(P.stepper?.setOperatorBBoxes(H,P.gfx.dependencyTracker.takeDebugMetadata()),p&&(this.recordedBBoxes=H))}_&&!B&&(this.imageCoordinates=P.gfx?.imagesTracker.take()),v&&(this.#t=!0),this.#s(),B?(P.capability.reject(B),this._abortOperatorList({intentState:A,reason:B instanceof Error?B:new Error(B)})):P.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),globalThis.Stats?.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))};let C=null,k=null;(S||_)&&(k=new cr(e,A.operatorList.length)),S&&(C=new dr(k,w));const P=new ce({callback:E,params:{canvas:e,canvasContext:t,dependencyTracker:C??k,imagesTracker:_?new Ke(e):null,viewport:s,transform:r,background:a},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:l,operatorList:A.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!v,pdfBug:this._pdfBug,pageColors:h,enableHWA:this._transport.enableHWA,operationsFilter:g});(A.renderTasks||=new Set).add(P);const I=P.task;return Promise.all([A.displayReadyCapability.promise,o]).then(([B,H])=>{if(this.destroyed){E();return}if(this._stats?.time("Rendering"),!(H.renderingIntent&b))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");P.initializeGraphics({transparency:B,optionalContentConfig:H}),P.operatorListChanged()}).catch(E),I}getOperatorList({intent:t="display",annotationMode:e=Ut.ENABLE,printAnnotationStorage:s=null,isEditing:i=!1}={}){function n(){a.operatorList.lastChunk&&(a.opListReadCapability.resolve(a.operatorList),a.renderTasks.delete(o))}const r=this._transport.getRenderingIntent(t,e,s,i,!0),a=this._intentStates.getOrInsertComputed(r.cacheKey,Ps);let o;return a.opListReadCapability||(o=Object.create(null),o.operatorListChanged=n,a.opListReadCapability=Promise.withResolvers(),(a.renderTasks||=new Set).add(o),a.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time("Page Request"),this._pumpOperatorList(r)),a.opListReadCapability.promise}streamTextContent({includeMarkedContent:t=!1,disableNormalization:e=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageId:this.#e.getPageId(this._pageIndex+1)-1,pageIndex:this._pageIndex,includeMarkedContent:t===!0,disableNormalization:e===!0},{highWaterMark:100,size(i){return i.items.length}})}async getTextContent(t={}){if(this._transport._htmlForXfa)return this.getXfa().then(i=>xe.textContent(i));const e=this.streamTextContent(t),s={items:[],styles:Object.create(null),lang:null};for await(const i of e)s.lang??=i.lang,Object.assign(s.styles,i.styles),s.items.push(...i.items);return s}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const t=[];for(const e of this._intentStates.values())if(this._abortOperatorList({intentState:e,reason:new Error("Page was destroyed."),force:!0}),!e.opListReadCapability)for(const s of e.renderTasks)t.push(s.completed),s.cancel();return this.objs.clear(),this.#t=!1,Promise.all(t)}cleanup(t=!1){this.#t=!0;const e=this.#s();return t&&e&&(this._stats&&=new gi),e}#s(){if(!this.#t||this.destroyed)return!1;for(const{renderTasks:t,operatorList:e}of this._intentStates.values())if(t.size>0||!e.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),this.#t=!1,!0}_startRenderPage(t,e){const s=this._intentStates.get(e);s&&(this._stats?.timeEnd("Page Request"),s.displayReadyCapability?.resolve(t))}_renderPageChunk(t,e){for(let s=0,i=t.length;s{o.read().then(({value:c,done:u})=>{if(u){l.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(c,l),h())},c=>{if(l.streamReader=null,!this._transport.destroyed){if(l.operatorList){l.operatorList.lastChunk=!0;for(const u of l.renderTasks)u.operatorListChanged();this.#s()}if(l.displayReadyCapability)l.displayReadyCapability.reject(c);else if(l.opListReadCapability)l.opListReadCapability.reject(c);else throw c}})};h()}_abortOperatorList({intentState:t,reason:e,force:s=!1}){if(t.streamReader){if(t.streamReaderCancelTimeout&&(clearTimeout(t.streamReaderCancelTimeout),t.streamReaderCancelTimeout=null),!s){if(t.renderTasks.size>0)return;if(e instanceof Vs){let i=ba;e.extraDelay>0&&e.extraDelay<1e3&&(i+=e.extraDelay),t.streamReaderCancelTimeout=setTimeout(()=>{t.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:t,reason:e,force:!0})},i);return}}if(t.streamReader.cancel(new $t(e.message)).catch(()=>{}),t.streamReader=null,!this._transport.destroyed){for(const[i,n]of this._intentStates)if(n===t){this._intentStates.delete(i);break}this.cleanup()}}}get stats(){return this._stats}}var Ht,xt,Nt,qt,ts,Kt,Qt,ct,Xe,wn,vn,we,ue,Ye;const tt=class tt{constructor({name:t=null,port:e=null,verbosity:s=Hn()}={}){kt(this,ct);kt(this,Ht,Promise.withResolvers());kt(this,xt,null);kt(this,Nt,null);kt(this,qt,null);if(this.name=t,this.destroyed=!1,this.verbosity=s,e){if(K(tt,Qt).has(e))throw new Error("Cannot use more than one PDFWorker per port.");K(tt,Qt).set(e,this),Pt(this,ct,wn).call(this,e)}else Pt(this,ct,vn).call(this)}get promise(){return K(this,Ht).promise}get port(){return K(this,Nt)}get messageHandler(){return K(this,xt)}destroy(){this.destroyed=!0,K(this,qt)?.terminate(),dt(this,qt,null),K(tt,Qt).delete(K(this,Nt)),dt(this,Nt,null),K(this,xt)?.destroy(),dt(this,xt,null)}static create(t){const e=K(this,Qt).get(t?.port);if(e){if(e._pendingDestroy)throw new Error("PDFWorker.create - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return e}return new tt(t)}static get workerSrc(){if(de.workerSrc)return de.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return D(this,"_setupFakeWorkerGlobal",(async()=>K(this,ue,Ye)?K(this,ue,Ye):(await import(this.workerSrc)).WorkerMessageHandler)())}};Ht=new WeakMap,xt=new WeakMap,Nt=new WeakMap,qt=new WeakMap,ts=new WeakMap,Kt=new WeakMap,Qt=new WeakMap,ct=new WeakSet,Xe=function(){K(this,Ht).resolve(),K(this,xt).send("configure",{verbosity:this.verbosity})},wn=function(t){dt(this,Nt,t),dt(this,xt,new Ae("main","worker",t)),K(this,xt).on("ready",()=>{}),Pt(this,ct,Xe).call(this)},vn=function(){if(K(tt,Kt)||K(tt,ue,Ye)){Pt(this,ct,we).call(this);return}let{workerSrc:t}=tt;try{tt._isSameOrigin(window.location,t)||(t=tt._createCDNWrapper(new URL(t,window.location).href));const e=new Worker(t,{type:"module"}),s=new Ae("main","worker",e),i=()=>{n.abort(),s.destroy(),e.terminate(),this.destroyed?K(this,Ht).reject(new Error("Worker was destroyed")):Pt(this,ct,we).call(this)},n=new AbortController;e.addEventListener("error",()=>{K(this,qt)||i()},{signal:n.signal}),s.on("test",a=>{if(n.abort(),this.destroyed||!a){i();return}dt(this,xt,s),dt(this,Nt,e),dt(this,qt,e),Pt(this,ct,Xe).call(this)}),s.on("ready",a=>{if(n.abort(),this.destroyed){i();return}try{r()}catch{Pt(this,ct,we).call(this)}});const r=()=>{const a=new Uint8Array;s.send("test",a,[a.buffer])};r();return}catch{ss("The worker has been disabled.")}Pt(this,ct,we).call(this)},we=function(){K(tt,Kt)||(N("Setting up fake worker."),dt(tt,Kt,!0)),tt._setupFakeWorkerGlobal.then(t=>{if(this.destroyed){K(this,Ht).reject(new Error("Worker was destroyed"));return}const e=new Cr;dt(this,Nt,e);const s=`fake${fi(tt,ts)._++}`,i=new Ae(s+"_worker",s,e);t.setup(i,e),dt(this,xt,new Ae(s,s+"_worker",e)),Pt(this,ct,Xe).call(this)}).catch(t=>{K(this,Ht).reject(new Error(`Setting up fake worker failed: "${t.message}".`))})},ue=new WeakSet,Ye=function(){try{return globalThis.pdfjsWorker?.WorkerMessageHandler||null}catch{return null}},kt(tt,ue),kt(tt,ts,0),kt(tt,Kt,!1),kt(tt,Qt,new WeakMap),mt&&(dt(tt,Kt,!0),de.workerSrc||="./pdf.worker.mjs"),tt._isSameOrigin=(t,e)=>{const s=URL.parse(t);if(!s?.origin||s.origin==="null")return!1;const i=new URL(e,s);return s.origin===i.origin},tt._createCDNWrapper=t=>{const e=`await import("${t}");`;return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))};let ke=tt;class Aa{downloadInfoCapability=Promise.withResolvers();#t=null;#e=new Map;#s=null;#i=new Map;#n=new Map;#a=new Map;#r=null;constructor(t,e,s,i,n,r){this.messageHandler=t,this.loadingTask=e,this.#s=s,this.commonObjs=new bn,this.fontLoader=new fr({ownerDocument:i.ownerDocument,styleElement:i.styleElement}),this.enableHWA=i.enableHWA,this.loadingParams=i.loadingParams,this._params=i,this.canvasFactory=n.canvasFactory,this.filterFactory=n.filterFactory,this.binaryDataFactory=n.binaryDataFactory,this.pagesMapper=r,this.destroyed=!1,this.destroyCapability=null,this.setupMessageHandler()}updatePage(t){const{_pageIndex:e}=t;this.#i.set(e,t),this.#n.set(e,Promise.resolve(t))}#o(t,e=null){return this.#e.getOrInsertComputed(t,()=>this.messageHandler.sendWithPromise(t,e))}#l({loaded:t,total:e}){this.loadingTask.onProgress?.({loaded:t,total:e,percent:e?X(Math.round(t/e*100),0,100):NaN})}get annotationStorage(){return D(this,"annotationStorage",new qs)}getRenderingIntent(t,e=Ut.ENABLE,s=null,i=!1,n=!1){let r=pt.DISPLAY,a=Ce;switch(t){case"any":r=pt.ANY;break;case"display":break;case"print":r=pt.PRINT;break;default:N(`getRenderingIntent - invalid intent: ${t}`)}const o=r&pt.PRINT&&s instanceof rn?s:this.annotationStorage;switch(e){case Ut.DISABLE:r+=pt.ANNOTATIONS_DISABLE;break;case Ut.ENABLE:break;case Ut.ENABLE_FORMS:r+=pt.ANNOTATIONS_FORMS;break;case Ut.ENABLE_STORAGE:r+=pt.ANNOTATIONS_STORAGE,a=o.serializable;break;default:N(`getRenderingIntent - invalid annotationMode: ${e}`)}i&&(r+=pt.IS_EDITING),n&&(r+=pt.OPLIST);const{ids:l,hash:h}=o.modifiedIds,c=[r,a.hash,h];return{renderingIntent:r,cacheKey:c.join("_"),annotationStorageSerializable:a,modifiedIds:l}}destroy(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),this.#r?.reject(new Error("Worker was destroyed during onPassword callback"));const t=[];for(const s of this.#i.values())t.push(s._destroy());this.#i.clear(),this.#n.clear(),this.#a.clear(),Object.hasOwn(this,"annotationStorage")&&this.annotationStorage.resetModified();const e=this.messageHandler.sendWithPromise("Terminate",null);return t.push(e),Promise.all(t).then(()=>{this.commonObjs.clear(),this.fontLoader.clear(),this.#e.clear(),this.filterFactory.destroy(),gt.cleanup(),this.#s?.cancelAllRequests(new $t("Worker was terminated.")),this.messageHandler?.destroy(),this.messageHandler=null,this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:t,loadingTask:e}=this;t.on("GetReader",(s,i)=>{Z(this.#s,"GetReader - no `BasePDFStream` instance available."),this.#t=this.#s.getFullReader(),this.#t.onProgress=n=>this.#l(n),i.onPull=()=>{this.#t.read().then(function({value:n,done:r}){if(r){i.close();return}Z(n instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),i.enqueue(new Uint8Array(n),1,[n])}).catch(n=>{i.error(n)})},i.onCancel=n=>{this.#t.cancel(n),i.ready.catch(r=>{if(!this.destroyed)throw r})}}),t.on("ReaderHeadersReady",async s=>{await this.#t.headersReady;const{isStreamingSupported:i,isRangeSupported:n,contentLength:r}=this.#t;return i&&n&&(this.#t.onProgress=null),{isStreamingSupported:i,isRangeSupported:n,contentLength:r}}),t.on("GetRangeReader",(s,i)=>{Z(this.#s,"GetRangeReader - no `BasePDFStream` instance available.");const n=this.#s.getRangeReader(s.begin,s.end);if(!n){i.close();return}i.onPull=()=>{n.read().then(function({value:r,done:a}){if(a){i.close();return}Z(r instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),i.enqueue(new Uint8Array(r),1,[r])}).catch(r=>{i.error(r)})},i.onCancel=r=>{n.cancel(r),i.ready.catch(a=>{if(!this.destroyed)throw a})}}),t.on("GetDoc",({pdfInfo:s})=>{this.pagesMapper.pagesNumber=s.numPages,this._numPages=s.numPages,this._htmlForXfa=s.htmlForXfa,delete s.htmlForXfa,e._capability.resolve(new ya(s,this))}),t.on("DocException",s=>{e._capability.reject(ut(s))}),t.on("PasswordRequest",s=>{this.#r=Promise.withResolvers();try{if(!e.onPassword)throw ut(s);const i=n=>{n instanceof Error?this.#r.reject(n):this.#r.resolve({password:n})};e.onPassword(i,s.code)}catch(i){this.#r.reject(i)}return this.#r.promise}),t.on("DataLoaded",s=>{this.#l({loaded:s.length,total:s.length}),this.downloadInfoCapability.resolve(s)}),t.on("StartRenderPage",s=>{if(this.destroyed)return;this.#i.get(s.pageIndex)._startRenderPage(s.transparency,s.cacheKey)}),t.on("commonobj",([s,i,n])=>{if(this.destroyed||this.commonObjs.has(s))return null;switch(i){case"Font":if("error"in n){const c=n.error;N(`Error during font loading: ${c}`),this.commonObjs.resolve(s,c);break}const r=new Ar(n),a=this._params.pdfBug&&globalThis.FontInspector?.enabled?(c,u)=>globalThis.FontInspector.fontAdded(c,u):null,o=new pr(r,a,n.charProcOperatorList,n.extra);this.fontLoader.bind(o).catch(()=>t.sendWithPromise("FontFallback",{id:s})).finally(()=>{o.fontExtraProperties||o.clearData(),this.commonObjs.resolve(s,o)});break;case"CopyLocalImage":const{imageRef:l}=n;Z(l,"The imageRef must be defined.");for(const c of this.#i.values())for(const[,u]of c.objs){if(u?.ref!==l)continue;if(!u.dataLen)return null;const f=structuredClone(u);return this.commonObjs.resolve(s,f),u.dataLen}break;case"FontPath":this.commonObjs.resolve(s,new vr(n));break;case"Image":this.commonObjs.resolve(s,n);break;case"Pattern":const h=new wr(n);this.commonObjs.resolve(s,h.getIR());break;default:throw new Error(`Got unknown common object type ${i}`)}return null}),t.on("obj",([s,i,n,r])=>{if(this.destroyed)return;const a=this.#i.get(i);if(!a.objs.has(s)){if(a._intentStates.size===0){r?.bitmap?.close();return}switch(n){case"Image":case"Pattern":a.objs.resolve(s,r);break;default:throw new Error(`Got unknown object type ${n}`)}}}),t.on("DocProgress",s=>{this.destroyed||this.#l(s)}),t.on("FetchBinaryData",async s=>{if(this.destroyed)throw new Error("Worker was destroyed.");if(!this.binaryDataFactory)throw new Error("`BinaryDataFactory` not initialized, see the `useWorkerFetch` parameter.");return this.binaryDataFactory.fetch(s)})}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){this.annotationStorage.size<=0&&N("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:t,transfer:e}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:t,filename:this.#t?.filename??null},e).finally(()=>{this.annotationStorage.resetModified()})}extractPages(t,e=null){const s={pageInfos:t};let i;const n=globalThis.ImageBitmap;if(typeof n=="function"){const r=Array.isArray(t)?t:[t];for(const a of r)a?.image instanceof n&&(i||=[]).push(a.image)}if(this.annotationStorage.size>0){const r=this.annotationStorage.serializable;let{map:a}=r;r.transfer?.length&&(i?i.push(...r.transfer):i=r.transfer);const o=this.pagesMapper.getMapping();if(o){const l=new Map;for(const[h,c]of a){if(c?.pageIndex!==void 0&&c.pageIndex>=0&&c.pageIndex{this.annotationStorage.resetModified()})}getPage(t){if(!Number.isInteger(t)||t<=0||t>this.pagesMapper.pagesNumber)return Promise.reject(new Error("Invalid page request."));const e=t-1,s=this.pagesMapper.getPageId(t)-1,i=this.#n.get(e);if(i)return i;const n=this.messageHandler.sendWithPromise("GetPage",{pageIndex:s}).then(r=>{if(this.destroyed)throw new Error("Transport destroyed");r.refStr&&this.#a.set(r.refStr,s);const a=new Zs(e,r,this,this.pagesMapper,this._params.pdfBug);return this.#i.set(e,a),a});return this.#n.set(e,n),n}async getPageIndex(t){if(!Ls(t))throw new Error("Invalid pageIndex request.");const e=await this.messageHandler.sendWithPromise("GetPageIndex",{num:t.num,gen:t.gen}),s=this.pagesMapper.getPageNumber(e+1);if(s===0)throw new Error("GetPageIndex: page has been removed.");return s-1}getAnnotations(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:this.pagesMapper.getPageId(t+1)-1,intent:e})}getFieldObjects(){return this.#o("GetFieldObjects")}getSignatures(){return this.#o("GetSignatures")}getSignatureData(t){return this.messageHandler.sendWithPromise("GetSignatureData",t)}hasJSActions(){return this.#o("HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(t){return typeof t!="string"?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:t})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getAttachmentContent(t){return this.messageHandler.sendWithPromise("GetAttachmentContent",t)}getAnnotationsByType(t,e){return this.messageHandler.sendWithPromise("GetAnnotationsByType",{types:t,pageIndexesToSkip:e})}getDocJSActions(){return this.#o("GetDocJSActions")}getPageJSActions(t){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:this.pagesMapper.getPageId(t+1)-1})}getStructTree(t){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:this.pagesMapper.getPageId(t+1)-1})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(t){return this.#o("GetOptionalContentConfig").then(e=>new Qs(e,t))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const t="GetMetadata";return this.#e.getOrInsertComputed(t,()=>this.messageHandler.sendWithPromise(t,null).then(e=>({info:e[0],metadata:e[1]?new fa(e[1]):null,contentDispositionFilename:this.#t?.filename??null,contentLength:this.#t?.contentLength??null,hasStructTree:e[2]})))}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(t=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const e of this.#i.values())if(!e.cleanup())throw new Error(`startCleanup: Page ${e.pageNumber} is currently rendering.`);this.commonObjs.clear(),t||this.fontLoader.clear(),this.#e.clear(),this.filterFactory.destroy(!0),gt.cleanup()}}cachedPageNumber(t){if(!Ls(t))return null;const e=t.gen===0?`${t.num}R`:`${t.num}R${t.gen}`,s=this.#a.get(e);if(s>=0){const i=this.pagesMapper.getPageNumber(s+1);if(i!==0)return i}return null}}class wa{_internalRenderTask=null;onContinue=null;onError=null;constructor(t){this._internalRenderTask=t}get promise(){return this._internalRenderTask.capability.promise}cancel(t=0){this._internalRenderTask.cancel(null,t)}get separateAnnots(){const{separateAnnots:t}=this._internalRenderTask.operatorList;if(!t)return!1;const{annotationCanvasMap:e}=this._internalRenderTask;return t.form||t.canvas&&e?.size>0}get imageCoordinates(){return this._internalRenderTask.imageCoordinates||null}}class ce{#t=null;static#e=new WeakSet;constructor({callback:t,params:e,objs:s,commonObjs:i,annotationCanvasMap:n,operatorList:r,pageIndex:a,canvasFactory:o,filterFactory:l,useRequestAnimationFrame:h=!1,pdfBug:c=!1,pageColors:u=null,enableHWA:f=!1,operationsFilter:p=null}){this.callback=t,this.params=e,this.objs=s,this.commonObjs=i,this.annotationCanvasMap=n,this.operatorListIdx=null,this.operatorList=r,this._pageIndex=a,this.canvasFactory=o,this.filterFactory=l,this._pdfBug=c,this.pageColors=u,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=h===!0&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new wa(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=e.canvas,this._canvasContext=e.canvas?null:e.canvasContext,this._enableHWA=f,this._dependencyTracker=e.dependencyTracker,this._imagesTracker=e.imagesTracker,this._operationsFilter=p}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:t=!1,optionalContentConfig:e}){if(this.cancelled)return;if(this._canvas){if(ce.#e.has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");ce.#e.add(this._canvas)}this._pdfBug&&globalThis.StepperManager?.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{viewport:s,transform:i,background:n,dependencyTracker:r,imagesTracker:a}=this.params,o=this._canvasContext||this._canvas.getContext("2d",{alpha:!1,willReadFrequently:!this._enableHWA});this.gfx=new Jt(o,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:e},this.annotationCanvasMap,this.pageColors,r,a),this.gfx.beginDrawing({transform:i,viewport:s,transparency:t,background:n}),this.operatorListIdx=0,this.graphicsReady=!0,this.graphicsReadyCallback?.()}cancel(t=null,e=0){this.running=!1,this.cancelled=!0,this.gfx?.endDrawing(),this.#t&&(window.cancelAnimationFrame(this.#t),this.#t=null),ce.#e.delete(this._canvas),t||=new Vs(`Rendering cancelled, page ${this._pageIndex+1}`,e),this.callback(t),this.task.onError?.(t)}operatorListChanged(){if(!this.graphicsReady){this.graphicsReadyCallback||=this._continueBound;return}this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length),this.stepper?.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?this.#t=window.requestAnimationFrame(()=>{this.#t=null,this._nextBound().catch(this._cancelBound)}):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper,this._operationsFilter),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),ce.#e.delete(this._canvas),this.callback())))}}const va="6.3.289",Sa="1c8020a7d";class St{#t=null;#e=null;#s;#i=null;#n=!1;#a=!1;#r=null;#o;#l=null;#h=null;static#u=null;static get _keyboardManager(){return D(this,"_keyboardManager",new bt([[["Escape"],St.prototype._hideDropdownFromKeyboard],[["Space"],St.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight"],St.prototype._moveToNext],[["ArrowUp","ArrowLeft"],St.prototype._moveToPrevious],[["Home"],St.prototype._moveToBeginning],[["End"],St.prototype._moveToEnd]]))}constructor({editor:t=null,uiManager:e=null}){t?(this.#a=!1,this.#r=t):this.#a=!0,this.#h=t?._uiManager||e,this.#o=this.#h._eventBus,this.#s=t?.color?.toUpperCase()||this.#h?.highlightColors.values().next().value||"#FFFF98",St.#u||=Object.freeze({blue:"pdfjs-editor-colorpicker-blue",green:"pdfjs-editor-colorpicker-green",pink:"pdfjs-editor-colorpicker-pink",red:"pdfjs-editor-colorpicker-red",yellow:"pdfjs-editor-colorpicker-yellow"})}renderButton(){const t=this.#t=document.createElement("button");t.className="colorPicker",t.tabIndex="0",t.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button"),t.ariaHasPopup="true",this.#r&&(t.ariaControls=`${this.#r.id}_colorpicker_dropdown`);const e=this.#h._signal;t.addEventListener("click",this.#m.bind(this),{signal:e}),t.addEventListener("keydown",this.#g.bind(this),{signal:e});const s=this.#e=document.createElement("span");return s.className="swatch",s.ariaHidden="true",s.style.backgroundColor=this.#s,t.append(s),t}renderMainDropdown(){const t=this.#i=this.#d();return t.ariaOrientation="horizontal",t.ariaLabelledBy="highlightColorPickerLabel",t}#d(){const t=document.createElement("div"),e=this.#h._signal;t.addEventListener("contextmenu",Ct,{signal:e}),t.className="dropdown",t.role="listbox",t.ariaMultiSelectable="false",t.ariaOrientation="vertical",t.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown"),this.#r&&(t.id=`${this.#r.id}_colorpicker_dropdown`);for(const[s,i]of this.#h.highlightColors){const n=document.createElement("button");n.tabIndex="0",n.role="option",n.setAttribute("data-color",i),n.title=s,n.setAttribute("data-l10n-id",St.#u[s]);const r=document.createElement("span");n.append(r),r.className="swatch",r.style.backgroundColor=i,n.ariaSelected=i===this.#s,n.addEventListener("click",this.#f.bind(this,i),{signal:e}),t.append(n)}return t.addEventListener("keydown",this.#g.bind(this),{signal:e}),t}#f(t,e){e.stopPropagation(),this.#o.dispatch("switchannotationeditorparams",{source:this,type:$.HIGHLIGHT_COLOR,value:t}),this.update(t)}_colorSelectFromKeyboard(t){if(t.target===this.#t){this.#m(t);return}const e=t.target.getAttribute("data-color");e&&this.#f(e,t)}_moveToNext(t){if(!this.#p){this.#m(t);return}if(t.target===this.#t){this.#i.firstElementChild?.focus();return}t.target.nextSibling?.focus()}_moveToPrevious(t){if(t.target===this.#i?.firstElementChild||t.target===this.#t){this.#p&&this._hideDropdownFromKeyboard();return}this.#p||this.#m(t),t.target.previousSibling?.focus()}_moveToBeginning(t){if(!this.#p){this.#m(t);return}this.#i.firstElementChild?.focus()}_moveToEnd(t){if(!this.#p){this.#m(t);return}this.#i.lastElementChild?.focus()}#g(t){St._keyboardManager.exec(this,t)}#m(t){if(this.#p){this.hideDropdown();return}if(this.#n=t.detail===0,this.#l||(this.#l=new AbortController,window.addEventListener("pointerdown",this.#c.bind(this),{signal:this.#h.combinedSignal(this.#l)})),this.#t.ariaExpanded="true",this.#i){this.#i.classList.remove("hidden");return}const e=this.#i=this.#d();this.#t.append(e)}#c(t){this.#i?.contains(t.target)||this.hideDropdown()}hideDropdown(){this.#i?.classList.add("hidden"),this.#t.ariaExpanded="false",this.#l?.abort(),this.#l=null}get#p(){return this.#i&&!this.#i.classList.contains("hidden")}_hideDropdownFromKeyboard(){if(!this.#a){if(!this.#p){this.#r?.unselect();return}this.hideDropdown(),this.#t.focus({preventScroll:!0,focusVisible:this.#n})}}update(t){if(this.#e&&(this.#e.style.backgroundColor=t),!this.#i)return;const e=this.#h.highlightColors.values();for(const s of this.#i.children)s.ariaSelected=e.next().value===t.toUpperCase()}destroy(){this.#t?.remove(),this.#t=null,this.#e=null,this.#i?.remove(),this.#i=null}}class Pe{#t=null;#e=!1;#s=null;#i=null;static#n=null;constructor(t){this.#s=t,this.#i=t._uiManager,Pe.#n||=Object.freeze({freetext:"pdfjs-editor-color-picker-free-text-input",ink:"pdfjs-editor-color-picker-ink-input"})}renderButton(){if(this.#t)return this.#t;const{editorType:t,colorType:e,colorAndOpacityType:s,opacityType:i,color:n,opacity:r}=this.#s,a=this.#e=j.isAlphaColorInputSupported&&i!==void 0,o=this.#t=document.createElement("input");if(o.type="color",a){o.setAttribute("alpha","");const l=x.hexNums[Math.round((r??1)*255)];o.value=(n||"#000000")+l}else o.value=n||"#000000";return o.className="basicColorPicker",o.tabIndex=0,o.setAttribute("data-l10n-id",Pe.#n[t]),o.addEventListener("input",()=>{if(a){const l=De(o.value);if(!l)return;const[h,c,u,f]=l,p=x.makeHexColor(h,c,u);s!==void 0?this.#i.updateParams(s,{color:p,opacity:f}):(this.#i.updateParams(e,p),this.#i.updateParams(i,f))}else this.#i.updateParams(e,o.value)},{signal:this.#i._signal}),o}update(t){if(this.#t)if(this.#e){const e=x.hexNums[Math.round(this.#s.opacity*255)];this.#t.value=t+e}else this.#t.value=t}updateOpacity(t){if(!this.#t||!this.#e)return;const e=x.hexNums[Math.round(t*255)];this.#t.value=this.#s.color+e}destroy(){this.#t?.remove(),this.#t=null}hideDropdown(){}}function Gi(d){return Math.floor(X(d,0,1)*255).toString(16).padStart(2,"0")}function be(d){return X(d,0,1)*255}class zi{static CMYK_G([t,e,s,i]){return["G",1-Math.min(1,.3*t+.59*s+.11*e+i)]}static G_CMYK([t]){return["CMYK",0,0,0,1-t]}static G_RGB([t]){return["RGB",t,t,t]}static G_rgb([t]){return t=be(t),[t,t,t]}static G_HTML([t]){const e=Gi(t);return`#${e}${e}${e}`}static RGB_G([t,e,s]){return["G",.3*t+.59*e+.11*s]}static RGB_rgb(t){return t.map(be)}static RGB_HTML(t){return`#${t.map(Gi).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([t,e,s,i]){return["RGB",1-Math.min(1,t+i),1-Math.min(1,s+i),1-Math.min(1,e+i)]}static CMYK_rgb([t,e,s,i]){return[be(1-Math.min(1,t+i)),be(1-Math.min(1,s+i)),be(1-Math.min(1,e+i))]}static CMYK_HTML(t){const e=this.CMYK_RGB(t).slice(1);return this.RGB_HTML(e)}static RGB_CMYK([t,e,s]){const i=1-t,n=1-e,r=1-s,a=Math.min(i,n,r);return["CMYK",i,n,r,a]}}class _a{create(t,e,s=!1){if(t<=0||e<=0)throw new Error("Invalid SVG dimensions");const i=this._createSVG("svg:svg");return i.setAttribute("version","1.1"),s||(i.setAttribute("width",`${t}px`),i.setAttribute("height",`${e}px`)),i.setAttribute("preserveAspectRatio","none"),i.setAttribute("viewBox",`0 0 ${t} ${e}`),i}createElement(t){if(typeof t!="string")throw new Error("Invalid SVG element type");return this._createSVG(t)}_createSVG(t){G("Abstract method `_createSVG` called.")}}class Je extends _a{_createSVG(t){return document.createElementNS(ht,t)}}const Ea=9,te=new WeakSet,xa=new Date().getTimezoneOffset()*60*1e3;class Es{static create(t){switch(t.data.annotationType){case J.LINK:return new ti(t);case J.TEXT:return new Ta(t);case J.WIDGET:switch(t.data.fieldType){case"Tx":return new ka(t);case"Btn":return t.data.radioButton?new Ia(t):t.data.checkBox?new Ma(t):new Da(t);case"Ch":return new Oa(t);case"Sig":return new Pa(t)}return new se(t);case J.POPUP:return new Ns(t);case J.FREETEXT:return new Sn(t);case J.LINE:return new Ra(t);case J.SQUARE:return new La(t);case J.CIRCLE:return new Na(t);case J.POLYLINE:return new _n(t);case J.CARET:return new Ua(t);case J.INK:return new ei(t);case J.POLYGON:return new Ba(t);case J.HIGHLIGHT:return new En(t);case J.UNDERLINE:return new Ha(t);case J.SQUIGGLY:return new $a(t);case J.STRIKEOUT:return new Ga(t);case J.STAMP:return new xn(t);case J.FILEATTACHMENT:return new za(t);case J.RICHMEDIA:case J.SCREEN:case J.SOUND:return new Cn(t);default:return new Q(t)}}}class Q{#t=null;#e=!1;#s=null;constructor(t,{isRenderable:e=!1,ignoreBorder:s=!1,createQuadrilaterals:i=!1}={}){this.isRenderable=e,this.data=t.data,this.layer=t.layer,this.linkService=t.linkService,this.downloadManager=t.downloadManager,this.imageResourcesPath=t.imageResourcesPath,this.renderForms=t.renderForms,this.svgFactory=t.svgFactory,this.annotationStorage=t.annotationStorage,this.enableComment=t.enableComment,this.enableScripting=t.enableScripting,this.hasJSActions=t.hasJSActions,this._fieldObjects=t.fieldObjects,this.parent=t.parent,this.hasOwnCommentButton=!1,e&&(this.contentElement=this.container=this._createContainer(s)),i&&this._createQuadrilaterals()}static _hasPopupData({contentsObj:t,richText:e}){return!!(t?.str||e?.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return Q._hasPopupData(this.data)||this.enableComment&&!!this.commentText}get commentData(){const{data:t}=this,e=this.annotationStorage?.getEditor(t.id);return e?e.getData():t}get hasCommentButton(){return this.enableComment&&this.hasPopupElement}get commentButtonPosition(){const t=this.annotationStorage?.getEditor(this.data.id);if(t)return t.commentButtonPositionInPage;const{quadPoints:e,inkLists:s,rect:i}=this.data;let n=-1/0,r=-1/0;if(e?.length>=8){for(let a=0;ar?(r=e[a+1],n=e[a+2]):e[a+1]===r&&(n=Math.max(n,e[a+2]));return[n,r]}if(s?.length>=1){for(const a of s)for(let o=0,l=a.length;or?(r=a[o+1],n=a[o]):a[o+1]===r&&(n=Math.max(n,a[o]));if(n!==1/0)return[n,r]}return i?[i[2],i[3]]:null}_normalizePoint(t){const{page:{view:e},viewport:{rawDims:{pageWidth:s,pageHeight:i,pageX:n,pageY:r}}}=this.parent;return t[1]=e[3]-t[1]+e[1],t[0]=100*(t[0]-n)/s,t[1]=100*(t[1]-r)/i,t}get commentText(){const{data:t}=this;return this.annotationStorage.getRawValue(`${fe}${t.id}`)?.popup?.contents||t.contentsObj?.str||""}set commentText(t){const{data:e}=this,s={deleted:!t,contents:t||""};this.annotationStorage.updateEditor(e.id,{popup:s})||this.annotationStorage.setValue(`${fe}${e.id}`,{id:e.id,annotationType:e.annotationType,page:this.parent.page,popup:s,popupRef:e.popupRef,modificationDate:new Date}),t||this.removePopup()}removePopup(){(this.#s?.popup||this.popup)?.remove(),this.#s=this.popup=null}updateEdited(t){if(!this.container)return;t.rect&&(this.#t||={rect:this.data.rect.slice(0)});const{rect:e,popup:s}=t;e&&this.#i(e);let i=this.#s?.popup||this.popup;!i&&s?.text&&(this._createPopup(s),i=this.#s.popup),i&&(i.updateEdited(t),s?.deleted&&(i.remove(),this.#s=null,this.popup=null))}resetEdited(){this.#t&&(this.#i(this.#t.rect),this.#s?.popup.resetEdited(),this.#t=null)}#i(t){const{container:{style:e},data:{rect:s,rotation:i},parent:{viewport:{rawDims:{pageWidth:n,pageHeight:r,pageX:a,pageY:o}}}}=this;s?.splice(0,4,...t),e.left=`${100*(t[0]-a)/n}%`,e.top=`${100*(r-t[3]+o)/r}%`,i===0?(e.width=`${100*(t[2]-t[0])/n}%`,e.height=`${100*(t[3]-t[1])/r}%`):this.setRotation(i)}_createContainer(t){const{data:e,parent:{page:s,viewport:i}}=this,n=document.createElement("section");n.setAttribute("data-annotation-id",e.id),!(this instanceof se)&&!(this instanceof ti)&&!(this instanceof Cn)&&(n.tabIndex=0);const{style:r}=n;if(r.zIndex=this.parent.zIndex,this.parent.zIndex+=2,e.alternativeText&&(n.title=e.alternativeText),e.noRotate&&n.classList.add("norotate"),!e.rect||this instanceof Ns){const{rotation:g}=e;return!e.hasOwnCanvas&&g!==0&&this.setRotation(g,n),n}const{width:a,height:o}=this;if(!t&&e.borderStyle.width>0){r.borderWidth=`${e.borderStyle.width}px`;const g=e.borderStyle.horizontalCornerRadius,m=e.borderStyle.verticalCornerRadius;if(g>0||m>0){const y=`calc(${g}px * var(--total-scale-factor)) / calc(${m}px * var(--total-scale-factor))`;r.borderRadius=y}switch(e.borderStyle.style){case ae.SOLID:r.borderStyle="solid";break;case ae.DASHED:r.borderStyle="dashed";break;case ae.BEVELED:N("Unimplemented border style: beveled");break;case ae.INSET:N("Unimplemented border style: inset");break;case ae.UNDERLINE:r.borderBottomStyle="solid";break}const b=e.borderColor||null;b?(this.#e=!0,r.borderColor=x.makeHexColor(...b)):r.borderWidth=0}const l=x.normalizeRect([e.rect[0],s.view[3]-e.rect[1]+s.view[1],e.rect[2],s.view[3]-e.rect[3]+s.view[1]]),{pageWidth:h,pageHeight:c,pageX:u,pageY:f}=i.rawDims;r.left=`${100*(l[0]-u)/h}%`,r.top=`${100*(l[1]-f)/c}%`;const{rotation:p}=e;return e.hasOwnCanvas||p===0?(r.width=`${100*a/h}%`,r.height=`${100*o/c}%`):this.setRotation(p,n),n}setRotation(t,e=this.container){if(!this.data.rect)return;const{pageWidth:s,pageHeight:i}=this.parent.viewport.rawDims;let{width:n,height:r}=this;t%180!==0&&([n,r]=[r,n]),e.style.width=`${100*n/s}%`,e.style.height=`${100*r/i}%`,e.setAttribute("data-main-rotation",(360-t)%360)}get _commonActions(){const t=(e,s,i)=>{const n=i.detail[e],r=n[0],a=n.slice(1);i.target.style[s]=zi[`${r}_HTML`](a),this.annotationStorage.setValue(this.data.id,{[s]:zi[`${r}_rgb`](a)})};return D(this,"_commonActions",{display:e=>{const{display:s}=e.detail,i=s%2===1;this.container.style.visibility=i?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:i,noPrint:s===1||s===2})},print:e=>{this.annotationStorage.setValue(this.data.id,{noPrint:!e.detail.print})},hidden:e=>{const{hidden:s}=e.detail;this.container.style.visibility=s?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:s,noView:s})},focus:e=>{setTimeout(()=>e.target.focus({preventScroll:!1}),0)},userName:e=>{e.target.title=e.detail.userName},readonly:e=>{e.target.disabled=e.detail.readonly},required:e=>{this._setRequired(e.target,e.detail.required)},bgColor:e=>{t("bgColor","backgroundColor",e)},fillColor:e=>{t("fillColor","backgroundColor",e)},fgColor:e=>{t("fgColor","color",e)},textColor:e=>{t("textColor","color",e)},borderColor:e=>{t("borderColor","borderColor",e)},strokeColor:e=>{t("strokeColor","borderColor",e)},rotation:e=>{const s=e.detail.rotation;this.setRotation(s),this.annotationStorage.setValue(this.data.id,{rotation:s})}})}_dispatchEventFromSandbox(t,e){const s=this._commonActions;for(const i of Object.keys(e.detail))(t[i]||s[i])?.(e)}_setDefaultPropertiesFromJS(t){if(!this.enableScripting)return;const e=this.annotationStorage.getRawValue(this.data.id);if(!e)return;const s=this._commonActions;for(const[i,n]of Object.entries(e)){const r=s[i];if(r){const a={detail:{[i]:n},target:t};r(a),delete e[i]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:t}=this.data;if(!t)return;const[e,s,i,n]=this.data.rect.map(Math.fround);if(t.length===8){const[g,m,b,y]=t.subarray(2,6);if(i===g&&n===m&&e===b&&s===y)return}const{style:r}=this.container;let a;if(this.#e){const{borderColor:g,borderWidth:m}=r;r.borderWidth=0,a=["url('data:image/svg+xml;utf8,",``,``],this.container.classList.add("hasBorder")}const o=i-e,l=n-s,{svgFactory:h}=this,c=h.createElement("svg");c.classList.add("quadrilateralsContainer"),c.setAttribute("width",0),c.setAttribute("height",0),c.role="none";const u=h.createElement("defs");c.append(u);const f=h.createElement("clipPath"),p=`clippath_${this.data.id}`;f.setAttribute("id",p),f.setAttribute("clipPathUnits","objectBoundingBox"),u.append(f);for(let g=2,m=t.length;g`)}this.#e&&(a.push("')"),r.backgroundImage=a.join("")),this.container.append(c),this.container.style.clipPath=`url(#${p})`}_createPopup(t=null){const{data:e}=this;let s,i;t?(s={str:t.text},i=t.date):(s=e.contentsObj,i=e.modificationDate),this.#s=new Ns({data:{color:e.color,titleObj:e.titleObj,modificationDate:i,contentsObj:s,richText:e.richText,parentRect:e.rect,borderStyle:0,id:`popup_${e.id}`,rotation:e.rotation,noRotate:!0},linkService:this.linkService,parent:this.parent,elements:[this]})}get hasPopupElement(){return!!(this.#s||this.popup||this.data.popupRef)}get extraPopupElement(){return this.#s}render(){G("Abstract method `AnnotationElement.render` called")}_getElementsByName(t,e=null){const s=[];if(this._fieldObjects){const i=this._fieldObjects.get(t)||[];for(const{page:n,id:r,exportValues:a}of i){if(n===-1||r===e)continue;const o=typeof a=="string"?a:null,l=document.querySelector(`[data-element-id="${r}"]`);if(l&&!te.has(l)){N(`_getElementsByName - element not allowed: ${r}`);continue}s.push({id:r,exportValue:o,domElement:l})}return s}for(const i of document.getElementsByName(t)){const{exportValue:n}=i,r=i.getAttribute("data-element-id");r!==e&&te.has(i)&&s.push({id:r,exportValue:n,domElement:i})}return s}show(){this.container&&(this.container.hidden=!1),this.popup?.maybeShow()}hide(){this.container&&(this.container.hidden=!0),this.popup?.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const t=this.getElementsToTriggerPopup();if(Array.isArray(t))for(const e of t)e.classList.add("highlightArea");else t.classList.add("highlightArea")}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:t,data:{id:e}}=this;this.container.addEventListener("dblclick",()=>{this.linkService.eventBus?.dispatch("switchannotationeditormode",{source:this,mode:t,editId:e,mustEnterInEditMode:!0})})}updateOC(t){if(!this.data.oc||!t)return;t.isVisible(this.data.oc)?this.show():this.hide()}get width(){return this.data.rect[2]-this.data.rect[0]}get height(){return this.data.rect[3]-this.data.rect[1]}_setBackgroundColor(t){const e=this.data.backgroundColor||null;t.style.backgroundColor=e===null?"transparent":x.makeHexColor(...e)}}class Ca extends Q{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0}),this.editor=t.editor}render(){return this.container.className="editorAnnotation",this.container}createOrUpdatePopup(){const{editor:t}=this;t.hasComment&&this._createPopup(t.comment)}get hasCommentButton(){return this.enableComment&&this.editor.hasComment}get commentButtonPosition(){return this.editor.commentButtonPositionInPage}get commentText(){return this.editor.comment.text}set commentText(t){this.editor.comment=t,t||this.removePopup()}get commentData(){return this.editor.getData()}remove(){this.parent.removeAnnotation(this.data.id),this.container.remove(),this.container=null,this.removePopup()}}class ti extends Q{constructor(t,e=null){super(t,{isRenderable:!0,ignoreBorder:!!e?.ignoreBorder,createQuadrilaterals:!0}),this.isTooltipOnly=t.data.isTooltipOnly}render(){const{data:t,linkService:e}=this,s=document.createElement("a");s.setAttribute("data-element-id",t.id);let i=!1;return t.url?(e.addLinkAttributes(s,t.url,t.newWindow),i=!0):t.action?(this._bindNamedAction(s,t.action,t.overlaidText),i=!0):t.attachment?(this.#e(s,t.attachmentId,t.attachment,t.overlaidText,t.attachmentDest),i=!0):t.setOCGState?(this.#s(s,t.setOCGState,t.overlaidText),i=!0):t.dest?(this._bindLink(s,t.dest,t.overlaidText),i=!0):(t.actions&&(t.actions.has("Action")||t.actions.has("Mouse Up")||t.actions.has("Mouse Down"))&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(s,t),i=!0),t.resetForm?(this._bindResetFormAction(s,t.resetForm),i=!0):this.isTooltipOnly&&!i&&(this._bindLink(s,""),i=!0)),this.container.classList.add("linkAnnotation"),i&&(this.contentElement=s,this.container.append(s)),this.container}#t(){this.container.setAttribute("data-internal-link","")}_bindLink(t,e,s=""){t.href=this.linkService.getDestinationHash(e),t.onclick=()=>(e&&this.linkService.goToDestination(e),!1),(e||e==="")&&this.#t(),s&&(t.title=s)}_bindNamedAction(t,e,s=""){t.href=this.linkService.getAnchorUrl(""),t.onclick=()=>(this.linkService.executeNamedAction(e),!1),s&&(t.title=s),this.#t()}#e(t,e,s,i="",n=null){t.href=this.linkService.getAnchorUrl(""),s.description?t.title=s.description:i&&(t.title=i);const r=async()=>{const a=await this.linkService.getAttachmentContent(e);a&&this.downloadManager?.openOrDownloadData(a,s.filename,n)};t.onclick=()=>(r(),!1),this.#t()}#s(t,e,s=""){t.href=this.linkService.getAnchorUrl(""),t.onclick=()=>(this.linkService.executeSetOCGState(e),!1),s&&(t.title=s),this.#t()}_bindJSAction(t,{actions:e,id:s,overlaidText:i}){t.href=this.linkService.getAnchorUrl("");const n=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const r of e.keys()){const a=n.get(r);a&&(t[a]=()=>(this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:s,name:r}}),!1))}i&&(t.title=i),t.onclick||=()=>!1,this.#t()}_bindResetFormAction(t,e){const s=t.onclick;if(s||(t.href=this.linkService.getAnchorUrl("")),this.#t(),!this._fieldObjects){N('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),s||(t.onclick=()=>!1);return}t.onclick=()=>{s?.();const{fields:i,refs:n,include:r}=e,a=[];if(i.length!==0||n.length!==0){const h=new Set(n);for(const c of i){const u=this._fieldObjects.get(c)||[];for(const{id:f}of u)h.add(f)}for(const c of this._fieldObjects.values())for(const u of c)h.has(u.id)===r&&a.push(u)}else for(const h of this._fieldObjects.values())a.push(...h);const o=this.annotationStorage,l=[];for(const h of a){const{id:c}=h;switch(l.push(c),h.type){case"text":{const f=h.defaultValue||"";o.setValue(c,{value:f});break}case"checkbox":case"radiobutton":{const f=h.defaultValue===h.exportValues;o.setValue(c,{value:f});break}case"combobox":case"listbox":{const f=h.defaultValue||"";o.setValue(c,{value:f});break}default:continue}const u=document.querySelector(`[data-element-id="${c}"]`);if(u){if(!te.has(u)){N(`_bindResetFormAction - element not allowed: ${c}`);continue}}else continue;u.dispatchEvent(new Event("resetform"))}return this.enableScripting&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:l,name:"ResetForm"}}),!1}}}class Ta extends Q{constructor(t){super(t,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const t=document.createElement("img");return t.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",t.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),t.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container.append(t),this.container}}class se extends Q{render(){return this.container}_getKeyModifier(t){return j.platform.isMac?t.metaKey:t.ctrlKey}_setEventListener(t,e,s,i,n){s.includes("mouse")?t.addEventListener(s,r=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:i,value:n(r),shift:r.shiftKey,modifier:this._getKeyModifier(r)}})}):t.addEventListener(s,r=>{if(s==="blur"){if(!e.focused||!r.relatedTarget)return;e.focused=!1}else if(s==="focus"){if(e.focused)return;e.focused=!0}n&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:i,value:n(r)}})})}_setEventListeners(t,e,s,i){const{actions:n}=this.data;for(const[r,a]of s)(a==="Action"||n?.has(a))&&((a==="Focus"||a==="Blur")&&(e||={focused:!1}),this._setEventListener(t,e,r,a,i),a==="Focus"&&!n?.has("Blur")?this._setEventListener(t,e,"blur","Blur",null):a==="Blur"&&!n?.has("Focus")&&this._setEventListener(t,e,"focus","Focus",null))}_setTextStyle(t){const e=["left","center","right"],{fontColor:s}=this.data.defaultAppearanceData,i=this.data.defaultAppearanceData.fontSize||Ea,n=t.style;let r;const a=2,o=l=>Math.round(10*l)/10;if(this.data.multiLine){const l=Math.abs(this.data.rect[3]-this.data.rect[1]-a),h=Math.round(l/(1.35*i))||1,c=l/h;r=Math.min(i,o(c/1.35))}else{const l=Math.abs(this.data.rect[3]-this.data.rect[1]-a);r=Math.min(i,o(l/1.35))}n.fontSize=`calc(${r}px * var(--total-scale-factor))`,n.color=x.makeHexColor(...s),this.data.textAlignment!==null&&!this.data.comb&&(n.textAlign=e[this.data.textAlignment])}_setRequired(t,e){e?t.setAttribute("required",!0):t.removeAttribute("required"),t.setAttribute("aria-required",e)}}class ka extends se{constructor(t){const e=t.renderForms||t.data.hasOwnCanvas||!t.data.hasAppearance&&!!t.data.fieldValue;super(t,{isRenderable:e})}setPropertyOnSiblings(t,e,s,i){const n=this.annotationStorage;for(const r of this._getElementsByName(t.name,t.id))r.domElement&&(r.domElement[e]=s),n.setValue(r.id,{[i]:s})}render(){const t=this.annotationStorage,e=this.data.id;this.container.classList.add("textWidgetAnnotation");let s=null;if(this.renderForms){const i=t.getValue(e,{value:this.data.fieldValue});let n=i.value||"";const r=t.getValue(e,{charLimit:this.data.maxLen}).charLimit;r&&n.length>r&&(n=n.slice(0,r));let a=i.formattedValue||this.data.textContent?.join(` +`)||null;a&&this.data.comb&&(a=a.replaceAll(/\s+/g,""));const o={userValue:n,formattedValue:a,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(s=document.createElement("textarea"),s.textContent=a??n,this.data.doNotScroll&&(s.style.overflowY="hidden")):(s=document.createElement("input"),s.type=this.data.password?"password":"text",s.setAttribute("value",a??n),this.data.doNotScroll&&(s.style.overflowX="hidden")),this.data.hasOwnCanvas&&(this.container.classList.add("hasOwnCanvas"),t.has(e)&&this.container.classList.add("sandboxModified")),te.add(s),this.contentElement=s,s.setAttribute("data-element-id",e),s.disabled=this.data.readOnly,s.name=this.data.fieldName,s.tabIndex=0;const{datetimeFormat:l,datetimeType:h,timeStep:c}=this.data,u=!!h&&this.enableScripting;l&&(s.title=l),this._setRequired(s,this.data.required),r&&(s.maxLength=r),s.addEventListener("input",p=>{t.setValue(e,{value:p.target.value}),this.setPropertyOnSiblings(s,"value",p.target.value,"value"),o.formattedValue=null}),s.addEventListener("resetform",p=>{const g=this.data.defaultFieldValue??"";s.value=o.userValue=g,o.formattedValue=null});let f=p=>{const{formattedValue:g}=o;g!=null&&(p.target.value=g),p.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){s.addEventListener("focus",g=>{if(o.focused)return;const{target:m}=g;if(u&&(m.type=h,c&&(m.step=c)),o.userValue){const b=o.userValue;if(u)if(h==="time"){const y=new Date(b),A=[y.getHours(),y.getMinutes(),y.getSeconds()];m.value=A.map(v=>v.toString().padStart(2,"0")).join(":")}else m.value=new Date(b-xa).toISOString().split(h==="date"?"T":".",1)[0];else m.value=b}o.lastCommittedValue=m.value,o.commitKey=1,this.data.actions?.has("Focus")||(o.focused=!0)}),s.addEventListener("updatefromsandbox",g=>{this.container.classList.add("sandboxModified");const m={value(b){o.userValue=b.detail.value??"",u||t.setValue(e,{value:o.userValue.toString()}),b.target.value=o.userValue},formattedValue(b){const{formattedValue:y}=b.detail;o.formattedValue=y,y!=null&&b.target!==document.activeElement&&(b.target.value=y);const A={formattedValue:y};u&&(A.value=y),t.setValue(e,A)},selRange(b){b.target.setSelectionRange(...b.detail.selRange)},charLimit:b=>{const{charLimit:y}=b.detail,{target:A}=b;if(y===0){A.removeAttribute("maxLength");return}A.setAttribute("maxLength",y);let v=o.userValue;!v||v.length<=y||(v=v.slice(0,y),A.value=o.userValue=v,t.setValue(e,{value:v}),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:v,willCommit:!0,commitKey:1,selStart:A.selectionStart,selEnd:A.selectionEnd}}))}};this._dispatchEventFromSandbox(m,g)}),s.addEventListener("keydown",g=>{o.commitKey=1;let m=-1;if(g.key==="Escape"?m=0:g.key==="Enter"&&!this.data.multiLine?m=2:g.key==="Tab"&&(o.commitKey=3),m===-1)return;const{value:b}=g.target;o.lastCommittedValue!==b&&(o.lastCommittedValue=b,o.userValue=b,this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:b,willCommit:!0,commitKey:m,selStart:g.target.selectionStart,selEnd:g.target.selectionEnd}}))});const p=f;f=null,s.addEventListener("blur",g=>{if(!o.focused||!g.relatedTarget)return;this.data.actions?.has("Blur")||(o.focused=!1);const{target:m}=g;let{value:b}=m;if(u){if(b&&h==="time"){const y=b.split(":").map(A=>parseInt(A,10));b=new Date(2e3,0,1,y[0],y[1],y[2]||0).valueOf(),m.step=""}else b.includes("T")||(b=`${b}T00:00`),b=new Date(b).valueOf();m.type="text"}o.userValue=b,o.lastCommittedValue!==b&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:b,willCommit:!0,commitKey:o.commitKey,selStart:g.target.selectionStart,selEnd:g.target.selectionEnd}}),p(g)}),this.data.actions?.has("Keystroke")&&s.addEventListener("beforeinput",g=>{o.lastCommittedValue=null;const{data:m,target:b}=g,{value:y,selectionStart:A,selectionEnd:v}=b;let w=A,S=v;switch(g.inputType){case"deleteWordBackward":{const _=/\w/;for(;w>0&&!_.test(y[w-1]);)w--;for(;w>0&&_.test(y[w-1]);)w--;break}case"deleteWordForward":{const _=y.substring(A).match(/^\W*\w*/);_&&(S+=_[0].length);break}case"deleteContentBackward":A===v&&(w-=1);break;case"deleteContentForward":A===v&&(S+=1);break}g.preventDefault(),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:y,change:m||"",willCommit:!1,selStart:w,selEnd:S}})}),this._setEventListeners(s,o,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],g=>g.target.value)}if(f&&s.addEventListener("blur",f),this.data.comb){const g=(this.data.rect[2]-this.data.rect[0])/r;s.classList.add("comb"),s.style.setProperty("--comb-width",`calc(${g}px * var(--total-scale-factor))`);const m=this.data.textAlignment;if(m===1||m===2){const b=()=>{const y=r-s.value.length;s.style.setProperty("--comb-offset",`${m===1?y>>1:y}`)};b();for(const y of["input","blur","resetform","updatefromsandbox"])s.addEventListener(y,b)}}}else s=document.createElement("div"),s.textContent=this.data.fieldValue,s.style.verticalAlign="middle",s.style.display="table-cell",this.data.hasOwnCanvas&&(s.hidden=!0);return this._setTextStyle(s),this._setBackgroundColor(s),this._setDefaultPropertiesFromJS(s),this.container.append(s),this.container}}class Pa extends se{constructor(t){super(t,{isRenderable:!!t.data.hasOwnCanvas})}}class Ma extends se{constructor(t){super(t,{isRenderable:t.renderForms})}render(){const t=this.annotationStorage,e=this.data,s=e.id;let i=t.getValue(s,{value:e.exportValue===e.fieldValue}).value;typeof i=="string"&&(i=i!=="Off",t.setValue(s,{value:i})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const n=document.createElement("input");return te.add(n),n.setAttribute("data-element-id",s),n.disabled=e.readOnly,this._setRequired(n,this.data.required),n.type="checkbox",n.name=e.fieldName,i&&n.setAttribute("checked",!0),n.setAttribute("exportValue",e.exportValue),n.tabIndex=0,n.addEventListener("change",r=>{const{name:a,checked:o}=r.target;for(const l of this._getElementsByName(a,s)){const h=o&&l.exportValue===e.exportValue;l.domElement&&(l.domElement.checked=h),t.setValue(l.id,{value:h})}t.setValue(s,{value:o})}),n.addEventListener("resetform",r=>{const a=e.defaultFieldValue||"Off";r.target.checked=a===e.exportValue}),this.enableScripting&&this.hasJSActions&&(n.addEventListener("updatefromsandbox",r=>{const a={value(o){o.target.checked=o.detail.value!=="Off",t.setValue(s,{value:o.target.checked})}};this._dispatchEventFromSandbox(a,r)}),this._setEventListeners(n,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],r=>r.target.checked)),this._setDefaultPropertiesFromJS(n),this.container.append(n),this.container}}class Ia extends se{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const t=this.annotationStorage,e=this.data,s=e.id;let i=t.getValue(s,{value:e.buttonValue!==null&&e.fieldValue===e.buttonValue}).value;if(typeof i=="string"&&(i=i!==e.buttonValue,t.setValue(s,{value:i})),i)for(const r of this._getElementsByName(e.fieldName,s))t.setValue(r.id,{value:!1});const n=document.createElement("input");if(te.add(n),n.setAttribute("data-element-id",s),n.disabled=e.readOnly,this._setRequired(n,this.data.required),n.type="radio",n.name=e.fieldName,i&&n.setAttribute("checked",!0),n.tabIndex=0,n.addEventListener("change",r=>{const{name:a,checked:o}=r.target;for(const l of this._getElementsByName(a,s))t.setValue(l.id,{value:!1});t.setValue(s,{value:o})}),n.addEventListener("resetform",r=>{const a=e.defaultFieldValue;r.target.checked=a!=null&&a===e.buttonValue}),this.enableScripting&&this.hasJSActions){const r=e.buttonValue;n.addEventListener("updatefromsandbox",a=>{const o={value:l=>{const h=r===l.detail.value;for(const c of this._getElementsByName(l.target.name)){const u=h&&c.id===s;c.domElement&&(c.domElement.checked=u),t.setValue(c.id,{value:u})}}};this._dispatchEventFromSandbox(o,a)}),this._setEventListeners(n,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],a=>a.target.checked)}return this._setDefaultPropertiesFromJS(n),this.container.append(n),this.container}}class Da extends ti{constructor(t){super(t,{ignoreBorder:t.data.hasAppearance})}render(){const t=super.render();t.classList.add("buttonWidgetAnnotation","pushButton");const e=t.lastChild;return this.enableScripting&&this.hasJSActions&&e&&(this._setDefaultPropertiesFromJS(e),e.addEventListener("updatefromsandbox",s=>{this._dispatchEventFromSandbox({},s)})),t}}class Oa extends se{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const t=this.annotationStorage,e=this.data.id,s=t.getValue(e,{value:this.data.fieldValue}),i=document.createElement("select");te.add(i),i.setAttribute("data-element-id",e),i.disabled=this.data.readOnly,this._setRequired(i,this.data.required),i.name=this.data.fieldName,i.tabIndex=0;let n=this.data.combo&&this.data.options.length>0;this.data.combo||(i.size=this.data.options.length,this.data.multiSelect&&(i.multiple=!0)),i.addEventListener("resetform",c=>{const u=this.data.defaultFieldValue;for(const f of i.options)f.selected=f.value===u});const r=(c,u)=>{const f=u.replaceAll(" "," ");c.textContent=f,f!==u&&c.setAttribute("display-value",u)};for(const c of this.data.options){const u=document.createElement("option");r(u,c.displayValue),u.value=c.exportValue,s.value.includes(c.exportValue)&&(u.setAttribute("selected",!0),n=!1),i.append(u)}let a=null;if(n){const c=document.createElement("option");c.value=" ",c.setAttribute("hidden",!0),c.setAttribute("selected",!0),i.prepend(c),a=()=>{c.remove(),i.removeEventListener("input",a),a=null},i.addEventListener("input",a)}const o=c=>{const u=c?"value":"textContent",{options:f,multiple:p}=i;return p?Array.prototype.filter.call(f,g=>g.selected).map(g=>g[u]):f.selectedIndex===-1?null:f[f.selectedIndex][u]};let l=o(!1);const h=c=>{const u=c.target.options;return Array.prototype.map.call(u,f=>({displayValue:f.getAttribute("display-value")||f.textContent,exportValue:f.value}))};return this.enableScripting&&this.hasJSActions?(i.addEventListener("updatefromsandbox",c=>{const u={value(f){a?.();const p=f.detail.value,g=new Set(Array.isArray(p)?p:[p]);for(const m of i.options)m.selected=g.has(m.value);t.setValue(e,{value:o(!0)}),l=o(!1)},multipleSelection(f){i.multiple=!0},remove(f){const p=i.options,g=f.detail.remove;p[g].selected=!1,i.remove(g),p.length>0&&Array.prototype.findIndex.call(p,b=>b.selected)===-1&&(p[0].selected=!0),t.setValue(e,{value:o(!0),items:h(f)}),l=o(!1)},clear(f){for(;i.length!==0;)i.remove(0);t.setValue(e,{value:null,items:[]}),l=o(!1)},insert(f){const{index:p,displayValue:g,exportValue:m}=f.detail.insert,b=i.children[p],y=document.createElement("option");r(y,g),y.value=m,b?b.before(y):i.append(y),t.setValue(e,{value:o(!0),items:h(f)}),l=o(!1)},items(f){const{items:p}=f.detail;for(;i.length!==0;)i.remove(0);for(const g of p){const{displayValue:m,exportValue:b}=g,y=document.createElement("option");r(y,m),y.value=b,i.append(y)}i.options.length>0&&(i.options[0].selected=!0),t.setValue(e,{value:o(!0),items:h(f)}),l=o(!1)},indices(f){const p=new Set(f.detail.indices);for(const g of f.target.options)g.selected=p.has(g.index);t.setValue(e,{value:o(!0)}),l=o(!1)},editable(f){f.target.disabled=!f.detail.editable}};this._dispatchEventFromSandbox(u,c)}),i.addEventListener("input",c=>{const u=o(!0),f=o(!1);t.setValue(e,{value:u}),c.preventDefault(),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:l,change:f,changeEx:u,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(i,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],c=>c.target.value)):i.addEventListener("input",function(c){t.setValue(e,{value:o(!0)})}),this.data.combo&&this._setTextStyle(i),this._setBackgroundColor(i),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}}class Ns extends Q{constructor(t){const{data:e,elements:s,parent:i}=t,n=!!i._commentManager;if(super(t,{isRenderable:!n&&Q._hasPopupData(e)}),this.elements=s,n&&Q._hasPopupData(e)){const r=this.popup=this.#t();for(const a of s)a.popup=r}else this.popup=null}#t(){return new Fa({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate||this.data.creationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open,commentManager:this.parent._commentManager})}render(){const{container:t}=this;t.classList.add("popupAnnotation"),t.role="comment";const e=this.popup=this.#t(),s=[];for(const i of this.elements)i.popup=e,i.container.ariaHasPopup="dialog",s.push(i.data.id),i.addHighlightArea();return this.container.setAttribute("aria-controls",s.map(i=>`${he}${i}`).join(",")),this.container}}class Fa{#t=null;#e=this.#j.bind(this);#s=this.#v.bind(this);#i=this.#C.bind(this);#n=this.#$.bind(this);#a=null;#r=null;#o=null;#l=null;#h=null;#u=null;#d=null;#f=!1;#g=null;#m=null;#c=null;#p=null;#b=null;#y=null;#A=null;#w=null;#_=null;#S=null;#E=!1;#x=null;#M=null;constructor({container:t,color:e,elements:s,titleObj:i,modificationDate:n,contentsObj:r,richText:a,parent:o,rect:l,parentRect:h,open:c,commentManager:u=null}){this.#r=t,this.#_=i,this.#o=r,this.#w=a,this.#u=o,this.#a=e,this.#A=l,this.#d=h,this.#h=s,this.#t=u,this.#x=s[0],this.#l=Ms.toDateObject(n),this.trigger=s.flatMap(f=>f.getElementsToTriggerPopup()),u||(this.#k(),this.#r.hidden=!0,c&&this.#$())}#k(){if(this.#m)return;this.#m=new AbortController;const{signal:t}=this.#m;for(const e of this.trigger)e.addEventListener("click",this.#n,{signal:t}),e.addEventListener("pointerenter",this.#i,{signal:t}),e.addEventListener("pointerleave",this.#s,{signal:t}),e.classList.add("popupTriggerArea");for(const e of this.#h)e.container?.addEventListener("keydown",this.#e,{signal:t})}#T(){const t=this.#h.find(e=>e.hasCommentButton);t&&(this.#b=t._normalizePoint(t.commentButtonPosition))}renderCommentButton(){if(this.#p){this.#p.parentNode||this.#x.container.after(this.#p);return}if(this.#b||this.#T(),!this.#b)return;const{signal:t}=this.#m=new AbortController,e=this.#x.hasOwnCommentButton,s=()=>{this.#t.toggleCommentPopup(this,!0,void 0,!e)},i=()=>{this.#t.toggleCommentPopup(this,!1,!0,!e)},n=()=>{this.#t.toggleCommentPopup(this,!1,!1)};if(e){this.#p=this.#x.container;for(const r of this.trigger)r.ariaHasPopup="dialog",r.ariaControls="commentPopup",r.addEventListener("keydown",this.#e,{signal:t}),r.addEventListener("click",s,{signal:t}),r.addEventListener("pointerenter",i,{signal:t}),r.addEventListener("pointerleave",n,{signal:t}),r.classList.add("popupTriggerArea")}else{const r=this.#p=document.createElement("button");r.className="annotationCommentButton";const a=this.#x.container;r.style.zIndex=parseInt(a.style.zIndex,10)+1,r.tabIndex=0,r.ariaHasPopup="dialog",r.ariaControls="commentPopup",r.setAttribute("data-l10n-id","pdfjs-show-comment-button"),this.#I(),this.#D(),r.addEventListener("keydown",this.#e,{signal:t}),r.addEventListener("click",s,{signal:t}),r.addEventListener("pointerenter",i,{signal:t}),r.addEventListener("pointerleave",n,{signal:t}),a.after(r)}}#D(){if(this.#x.extraPopupElement&&!this.#x.editor)return;this.#p||this.renderCommentButton();const[t,e]=this.#b,{style:s}=this.#p;s.left=`calc(${t}%)`,s.top=`calc(${e}% - var(--comment-button-dim))`}#I(){this.#x.extraPopupElement||(this.#p||this.renderCommentButton(),this.#p.style.backgroundColor=this.commentButtonColor||"")}get commentButtonColor(){const{color:t,opacity:e}=this.#x.commentData;return t?this.#u._commentManager.makeCommentColor(t,e):null}focusCommentButton(){setTimeout(()=>{this.#p?.focus()},0)}getData(){const{richText:t,color:e,opacity:s,creationDate:i,modificationDate:n}=this.#x.commentData;return{contentsObj:{str:this.comment},richText:t,color:e,opacity:s,creationDate:i,modificationDate:n}}get elementBeforePopup(){return this.#p}get comment(){return this.#M||=this.#x.commentText,this.#M}set comment(t){t!==this.comment&&(this.#x.commentText=this.#M=t)}focus(){this.#x.container?.focus()}get parentBoundingClientRect(){return this.#x.layer.getBoundingClientRect()}setCommentButtonStates({selected:t,hasPopup:e}){this.#p&&(this.#p.classList.toggle("selected",t),this.#p.ariaExpanded=e)}setSelectedCommentButton(t){this.#p.classList.toggle("selected",t)}get commentPopupPosition(){if(this.#y)return this.#y;const{x:t,y:e,height:s}=this.#p.getBoundingClientRect(),{x:i,y:n,width:r,height:a}=this.#x.layer.getBoundingClientRect();return[(t-i)/r,(e+s-n)/a]}set commentPopupPosition(t){this.#y=t}hasDefaultPopupPosition(){return this.#y===null}get commentButtonPosition(){return this.#b}get commentButtonWidth(){return this.#p.getBoundingClientRect().width/this.parentBoundingClientRect.width}editComment(t){const[e,s]=this.#y||this.commentButtonPosition.map(l=>l/100),i=this.parentBoundingClientRect,{x:n,y:r,width:a,height:o}=i;this.#t.showDialog(null,this,n+e*a,r+s*o,{...t,parentDimensions:i})}render(){if(this.#g)return;const t=this.#g=document.createElement("div");if(t.className="popup",this.#a){const s=t.style.outlineColor=x.makeHexColor(...this.#a);t.style.backgroundColor=`color-mix(in srgb, ${s} 30%, white)`}const e=document.createElement("span");if(e.className="header",this.#_?.str){const s=document.createElement("span");s.className="title",e.append(s),{dir:s.dir,str:s.textContent}=this.#_}if(t.append(e),this.#l){const s=document.createElement("time");s.className="popupDate",s.setAttribute("data-l10n-id","pdfjs-annotation-date-time-string"),s.setAttribute("data-l10n-args",JSON.stringify({dateObj:this.#l.valueOf()})),s.dateTime=this.#l.toISOString(),e.append(s)}tn({html:this.#O||this.#o.str,dir:this.#o?.dir,className:"popupContent"},t),this.#r.append(t)}get#O(){const t=this.#w,e=this.#o;return t?.str&&(!e?.str||e.str===t.str)&&this.#w.html||null}get#H(){return this.#O?.attributes?.style?.fontSize||0}get#F(){return this.#O?.attributes?.style?.color||null}#L(t){const e=[],s={str:t,html:{name:"div",attributes:{dir:"auto"},children:[{name:"p",children:e}]}},i={style:{color:this.#F,fontSize:this.#H?`calc(${this.#H}px * var(--total-scale-factor))`:""}};for(const n of t.split(` +`))e.push({name:"span",value:n,attributes:i});return s}#j(t){t.altKey||t.shiftKey||t.ctrlKey||t.metaKey||(t.key==="Enter"||t.key==="Escape"&&this.#f)&&this.#$()}updateEdited({rect:t,popup:e,deleted:s}){if(this.#t){s?(this.remove(),this.#M=null):e&&(e.deleted?this.remove():(this.#I(),this.#M=e.text)),t&&(this.#b=null,this.#T(),this.#D());return}if(s||e?.deleted){this.remove();return}this.#k(),this.#S||={contentsObj:this.#o,richText:this.#w},t&&(this.#c=null),e&&e.text&&(this.#w=this.#L(e.text),this.#l=Ms.toDateObject(e.date),this.#o=null),this.#g?.remove(),this.#g=null}resetEdited(){this.#S&&({contentsObj:this.#o,richText:this.#w}=this.#S,this.#S=null,this.#g?.remove(),this.#g=null,this.#c=null)}remove(){if(this.#m?.abort(),this.#m=null,this.#g?.remove(),this.#g=null,this.#E=!1,this.#f=!1,this.#p?.remove(),this.#p=null,this.trigger)for(const t of this.trigger)t.classList.remove("popupTriggerArea")}#N(){if(this.#c!==null)return;const{page:{view:t},viewport:{rawDims:{pageWidth:e,pageHeight:s,pageX:i,pageY:n}}}=this.#u;let r=!!this.#d,a=r?this.#d:this.#A;for(const p of this.#h)if(!a||x.intersect(p.data.rect,a)!==null){a=p.data.rect,r=!0;break}const o=x.normalizeRect([a[0],t[3]-a[1]+t[1],a[2],t[3]-a[3]+t[1]]),h=r?a[2]-a[0]+5:0,c=o[0]+h,u=o[1];this.#c=[100*(c-i)/e,100*(u-n)/s];const{style:f}=this.#r;f.left=`${this.#c[0]}%`,f.top=`${this.#c[1]}%`}#$(){if(this.#t){this.#t.toggleCommentPopup(this,!1);return}this.#f=!this.#f,this.#f?(this.#C(),this.#r.addEventListener("click",this.#n),this.#r.addEventListener("keydown",this.#e)):(this.#v(),this.#r.removeEventListener("click",this.#n),this.#r.removeEventListener("keydown",this.#e))}#C(){this.#g||this.render(),this.isVisible?this.#f&&this.#r.classList.add("focused"):(this.#N(),this.#r.hidden=!1,this.#r.style.zIndex=parseInt(this.#r.style.zIndex,10)+1e3)}#v(){this.#r.classList.remove("focused"),!(this.#f||!this.isVisible)&&(this.#r.hidden=!0,this.#r.style.zIndex=parseInt(this.#r.style.zIndex,10)-1e3)}forceHide(){this.#E=this.isVisible,this.#E&&(this.#r.hidden=!0)}maybeShow(){this.#t||(this.#k(),this.#E&&(this.#g||this.#C(),this.#E=!1,this.#r.hidden=!1))}get isVisible(){return!this.#t&&this.#r.hidden===!1}}class Sn extends Q{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0}),this.textContent=t.data.textContent,this.textPosition=t.data.textPosition,this.annotationEditorType=L.FREETEXT}render(){if(this.container.classList.add("freeTextAnnotation"),this.textContent){const t=this.contentElement=document.createElement("div");t.classList.add("annotationTextContent"),t.setAttribute("role","comment");for(const e of this.textContent){const s=document.createElement("span");s.textContent=e,t.append(s)}this.container.append(t)}return!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this._editOnDoubleClick(),this.container}}class Ra extends Q{#t=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("lineAnnotation");const{data:t,width:e,height:s}=this,i=this.svgFactory.create(e,s,!0),n=this.#t=this.svgFactory.createElement("svg:line");return n.setAttribute("x1",t.rect[2]-t.lineCoordinates[0]),n.setAttribute("y1",t.rect[3]-t.lineCoordinates[1]),n.setAttribute("x2",t.rect[2]-t.lineCoordinates[2]),n.setAttribute("y2",t.rect[3]-t.lineCoordinates[3]),n.setAttribute("stroke-width",t.borderStyle.width||1),n.setAttribute("stroke","transparent"),n.setAttribute("fill","transparent"),i.append(n),this.container.append(i),!t.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#t}addHighlightArea(){this.container.classList.add("highlightArea")}}class La extends Q{#t=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("squareAnnotation");const{data:t,width:e,height:s}=this,i=this.svgFactory.create(e,s,!0),n=t.borderStyle.width,r=this.#t=this.svgFactory.createElement("svg:rect");return r.setAttribute("x",n/2),r.setAttribute("y",n/2),r.setAttribute("width",e-n),r.setAttribute("height",s-n),r.setAttribute("stroke-width",n||1),r.setAttribute("stroke","transparent"),r.setAttribute("fill","transparent"),i.append(r),this.container.append(i),!t.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#t}addHighlightArea(){this.container.classList.add("highlightArea")}}class Na extends Q{#t=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("circleAnnotation");const{data:t,width:e,height:s}=this,i=this.svgFactory.create(e,s,!0),n=t.borderStyle.width,r=this.#t=this.svgFactory.createElement("svg:ellipse");return r.setAttribute("cx",e/2),r.setAttribute("cy",s/2),r.setAttribute("rx",e/2-n/2),r.setAttribute("ry",s/2-n/2),r.setAttribute("stroke-width",n||1),r.setAttribute("stroke","transparent"),r.setAttribute("fill","transparent"),i.append(r),this.container.append(i),!t.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#t}addHighlightArea(){this.container.classList.add("highlightArea")}}class _n extends Q{#t=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0}),this.containerClassName="polylineAnnotation",this.svgElementName="svg:polyline"}render(){this.container.classList.add(this.containerClassName);const{data:{rect:t,vertices:e,borderStyle:s,popupRef:i},width:n,height:r}=this;if(!e)return this.container;const a=this.svgFactory.create(n,r,!0);let o=[];for(let h=0,c=e.length;h=0&&n.setAttribute("stroke-width",e||1),s)for(let r=0,a=this.#e.length;r{n.key==="Enter"&&(i?n.metaKey:n.ctrlKey)&&this.#e()}),!e.popupRef&&this.hasPopupData?(this.hasOwnCommentButton=!0,this._createPopup()):s.classList.add("popupTriggerArea"),t.append(s),t}getElementsToTriggerPopup(){return this.#t}addHighlightArea(){this.container.classList.add("highlightArea")}async#e(){const{fileId:t,filename:e,content:s}=this,i=await this.linkService.getAttachmentContent(t)||s;i&&this.downloadManager?.openOrDownloadData(i,e)}}class Cn extends Q{#t=new AbortController;#e=null;#s=null;constructor(t){super(t,{isRenderable:!!t.data.richMedia})}render(){this.container.classList.add("mediaAnnotation");const{filename:t}=this.data.richMedia,e=document.createElement("button");return e.className="mediaPlayButton",e.type="button",e.title=e.ariaLabel=t,e.addEventListener("click",()=>this.#i(e),{signal:this.#t.signal}),this.container.append(e),this.container}async#i(t){const{fileId:e,filename:s,contentType:i}=this.data.richMedia;t.disabled=!0;let n;try{n=await this.linkService.getAttachmentContent(e)}catch{return}finally{t.disabled=!1}if(!n||!t.isConnected)return;const{signal:r}=this.#t,a=URL.createObjectURL(new Blob([n],{type:i}));this.#e=a;const o=i.startsWith("audio/"),l=document.createElement(o?"audio":"video");if(this.#s=l,l.className="mediaContent",this._setBackgroundColor(l),l.src=a,l.title=s,l.controls=!0,l.autoplay=!0,l.tabIndex=0,o){let h=!1,c=!1;const u=()=>{l.controls=h||c};this.container.addEventListener("pointerenter",()=>{h=!0,u()},{signal:r}),this.container.addEventListener("pointerleave",()=>{h=!1,u()},{signal:r}),this.container.addEventListener("focusin",()=>{c=!0,u()},{signal:r}),this.container.addEventListener("focusout",()=>{c=!1,u()},{signal:r})}l.addEventListener("emptied",()=>this.#n(a),{once:!0,signal:r}),t.replaceWith(l),l.play().catch(()=>{})}#n(t=this.#e){t&&t===this.#e&&(URL.revokeObjectURL(t),this.#e=null)}destroy(){this.#t.abort(),this.#s&&(this.#s.pause(),this.#s.removeAttribute("src"),this.#s.load(),this.#s=null),this.#n()}}class si{#t=null;#e=null;#s=null;#i=new Map;#n=null;#a=null;#r=[];#o=!1;zIndex=0;constructor({div:t,accessibilityManager:e,annotationCanvasMap:s,annotationEditorUIManager:i,page:n,viewport:r,structTreeLayer:a,commentManager:o,linkService:l,annotationStorage:h}){this.div=t,this.#t=e,this.#e=s,this.#n=a||null,this.#a=l||null,this.#s=h||new qs,this.page=n,this.viewport=r,this._annotationEditorUIManager=i,this._commentManager=o||null}hasEditableAnnotations(){return this.#i.size>0}async render(t){const{annotations:e,optionalContentConfig:s}=t,i=this.div;Zt(i,this.viewport);const n=new Map,r=[],a={data:null,layer:i,linkService:this.#a,downloadManager:t.downloadManager,imageResourcesPath:t.imageResourcesPath||"",renderForms:t.renderForms!==!1,svgFactory:new Je,annotationStorage:this.#s,enableComment:t.enableComment===!0,enableScripting:t.enableScripting===!0,hasJSActions:t.hasJSActions,fieldObjects:t.fieldObjects,parent:this,elements:null};for(const o of e){if(o.noHTML)continue;const l=o.annotationType===J.POPUP;if(l){const u=n.get(o.id);if(!u)continue;if(!this._commentManager){r.push(o);continue}a.elements=u}else if(o.rect[2]===o.rect[0]||o.rect[3]===o.rect[1])continue;a.data=o;const h=Es.create(a);if(!h.isRenderable)continue;l||(this.#r.push(h),o.popupRef&&n.getOrInsertComputed(o.popupRef,ge).push(h));const c=h.render();o.hidden&&(c.style.visibility="hidden"),h.updateOC(s),h._isEditable&&(this.#i.set(h.data.id,h),this._annotationEditorUIManager?.renderAnnotationElement(h))}await this.#l();for(const o of r){const l=a.elements=n.get(o.id);a.data=o;const h=Es.create(a);if(!h.isRenderable)continue;const c=h.render();h.contentElement.id=`${he}${o.id}`,o.hidden&&(c.style.visibility="hidden"),l.at(-1).container.after(c)}this.#h()}async#l(){if(this.#r.length===0)return;this.div.replaceChildren();const t=[];if(!this.#o){this.#o=!0;for(const{contentElement:s,data:{hidden:i,id:n,oc:r}}of this.#r){const a=s.id=`${he}${n}`,o=s.localName==="a"&&!i&&!r;t.push(this.#n?.getAriaAttributes(a,{enableLinkOwnership:o}).then(l=>{if(l)for(const[h,c]of l)s.setAttribute(h,c)}))}}this.#r.sort(({data:{rect:[s,i,n,r]}},{data:{rect:[a,o,l,h]}})=>{if(s===n&&i===r)return 1;if(a===l&&o===h)return-1;const c=r,u=i,f=(i+r)/2,p=h,g=o,m=(o+h)/2;if(f>=p&&m<=u)return-1;if(m>=c&&f<=g)return 1;const b=(s+n)/2,y=(a+l)/2;return b-y});const e=document.createDocumentFragment();for(const s of this.#r)e.append(s.container),this._commentManager?(s.extraPopupElement?.popup||s.popup)?.renderCommentButton():s.extraPopupElement&&e.append(s.extraPopupElement.render());if(this.div.append(e),await Promise.all(t),this.#t){const s=await this.#n?.getAnnotationIds();for(const{contentElement:i}of this.#r)s?.has(i.id)||this.#t.addPointerInTextLayer(i,!1)}}async addLinkAnnotations(t){const e={data:null,layer:this.div,linkService:this.#a,svgFactory:new Je,parent:this};for(const s of t){s.borderStyle||=si._defaultBorderStyle,e.data=s;const i=Es.create(e);i.isRenderable&&(i.render(),i.contentElement.id=`${he}${s.id}`,this.#r.push(i))}await this.#l()}update({viewport:t,optionalContentConfig:e}){const s=this.div;this.viewport=t,Zt(s,{rotation:t.rotation});for(const i of this.#r)i.updateOC(e);this.#h(),s.hidden=!1}destroy(){for(const t of this.#r)t.destroy?.(),this.#t?.removePointerInTextLayer(t.contentElement);this.#r.length=0,this.#i.clear(),this.div.replaceChildren()}#h(){if(!this.#e)return;const t=this.div;for(const[e,s]of this.#e){const i=t.querySelector(`[data-annotation-id="${e}"]`);if(!i)continue;if(Array.isArray(s))for(const l of s)l.className="annotationContent",l.ariaHidden=!0;else s.className="annotationContent",s.ariaHidden=!0;const n=[];for(const l of i.children)l.nodeName==="CANVAS"&&n.push(l);for(const l of n)l.remove();const r=Array.isArray(s)?s[0]:s,{firstChild:a}=i;if(a?a.classList.contains("annotationContent")?a.after(r):a.before(r):i.append(r),Array.isArray(s)){let l=r;for(let h=1,c=s.length;hi.data.id===t);if(e<0)return;const[s]=this.#r.splice(e,1);this.#t?.removePointerInTextLayer(s.contentElement)}updateFakeAnnotations(t){if(t.length!==0){for(const e of t)e.updateFakeAnnotationElement(this);this.#l()}}togglePointerEvents(t=!1){this.div.classList.toggle("disabled",!t)}static get _defaultBorderStyle(){return D(this,"_defaultBorderStyle",Object.freeze({width:1,rawWidth:1,style:ae.SOLID,dashArray:[3],horizontalCornerRadius:0,verticalCornerRadius:0}))}}const He=/\r\n?|\n/g;class rt extends M{#t="";#e=`${this.id}-editor`;#s=null;#i;_colorPicker=null;static _freeTextDefaultContent="";static _internalPadding=0;static _defaultColor=null;static _defaultFontSize=10;static get _keyboardManager(){const t=rt.prototype,e=n=>n.isEmpty(),s=Gt.TRANSLATE_SMALL,i=Gt.TRANSLATE_BIG;return D(this,"_keyboardManager",new bt([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],t.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter"],t.commitOrRemove],[["Escape"],t.commitOrRemove],[["ArrowLeft"],t._translateEmpty,{args:[-s,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t._translateEmpty,{args:[-i,0],checker:e}],[["ArrowRight"],t._translateEmpty,{args:[s,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t._translateEmpty,{args:[i,0],checker:e}],[["ArrowUp"],t._translateEmpty,{args:[0,-s],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t._translateEmpty,{args:[0,-i],checker:e}],[["ArrowDown"],t._translateEmpty,{args:[0,s],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t._translateEmpty,{args:[0,i],checker:e}]]))}static _type="freetext";static _editorType=L.FREETEXT;constructor(t){super({...t,name:"freeTextEditor"}),this.color=t.color||rt._defaultColor||M._defaultLineColor,this.#i=t.fontSize||rt._defaultFontSize,this.annotationElementId||this._uiManager.a11yAlert(M._l10nAlert.freetext),this.canAddComment=!1}static initialize(t,e){M.initialize(t,e);const s=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(s.getPropertyValue("--freetext-padding"))}static updateDefaultParams(t,e){switch(t){case $.FREETEXT_SIZE:rt._defaultFontSize=e;break;case $.FREETEXT_COLOR:rt._defaultColor=e;break}}updateParams(t,e){switch(t){case $.FREETEXT_SIZE:this.#n(e);break;case $.FREETEXT_COLOR:this.#a(e);break}}static get defaultPropertiesToUpdate(){return[[$.FREETEXT_SIZE,rt._defaultFontSize],[$.FREETEXT_COLOR,rt._defaultColor||M._defaultLineColor]]}get propertiesToUpdate(){return[[$.FREETEXT_SIZE,this.#i],[$.FREETEXT_COLOR,this.color]]}get toolbarButtons(){return this._colorPicker||=new Pe(this),[["colorPicker",this._colorPicker]]}get colorType(){return $.FREETEXT_COLOR}#n(t){const e=i=>{this.editorDiv.style.fontSize=`calc(${i}px * var(--total-scale-factor))`,this.translate(0,-(i-this.#i)*this.parentScale),this.#i=i,this.#o()},s=this.#i;this.addCommands({cmd:e.bind(this,t),undo:e.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:$.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})}onUpdatedColor(){this.editorDiv.style.color=this.color,this._colorPicker?.update(this.color),super.onUpdatedColor()}#a(t){const e=i=>{this.color=i,this.onUpdatedColor()},s=this.color;this.addCommands({cmd:e.bind(this,t),undo:e.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:$.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}_translateEmpty(t,e){this._uiManager.translateSelectedEditors(t,e,!0)}getInitialTranslation(){const t=this.parentScale;return[-rt._internalPadding*t,-(rt._internalPadding+this.#i)*t]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(!super.enableEditMode())return!1;this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),this.#s=new AbortController;const t=this._uiManager.combinedSignal(this.#s);return this.editorDiv.addEventListener("keydown",this.editorDivKeydown.bind(this),{signal:t}),this.editorDiv.addEventListener("focus",this.editorDivFocus.bind(this),{signal:t}),this.editorDiv.addEventListener("blur",this.editorDivBlur.bind(this),{signal:t}),this.editorDiv.addEventListener("input",this.editorDivInput.bind(this),{signal:t}),this.editorDiv.addEventListener("paste",this.editorDivPaste.bind(this),{signal:t}),!0}disableEditMode(){return super.disableEditMode()?(this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",this.#e),this._isDraggable=!0,this.#s?.abort(),this.#s=null,this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"),!0):!1}focusin(t){this._focusEventsAllowed&&(super.focusin(t),t.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(t){this.width||(this.enableEditMode(),t&&this.editorDiv.focus(),this._initialOptions?.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===""}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}#r(){const t=[];this.editorDiv.normalize();let e=null;for(const s of this.editorDiv.childNodes)e?.nodeType===Node.TEXT_NODE&&s.nodeName==="BR"||(t.push(rt.#l(s)),e=s);return t.join(` +`)}#o(){const[t,e]=this.parentDimensions;let s;if(this.isAttachedToDOM)s=this.div.getBoundingClientRect();else{const{currentLayer:i,div:n}=this,r=n.style.display,a=n.classList.contains("hidden");n.classList.remove("hidden"),n.style.display="hidden",i.div.append(this.div),s=n.getBoundingClientRect(),n.remove(),n.style.display=r,n.classList.toggle("hidden",a)}this.rotation%180===this.parentRotation%180?(this.width=s.width/t,this.height=s.height/e):(this.width=s.height/t,this.height=s.width/e),this.fixAndSetPosition()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const t=this.#t,e=this.#t=this.#r().trimEnd();if(t===e)return;const s=i=>{if(this.#t=i,!i){this.remove();return}this.#h(),this._uiManager.rebuild(this),this.#o()};this.addCommands({cmd:()=>{s(e)},undo:()=>{s(t)},mustExec:!1}),this.#o()}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}keydown(t){t.target===this.div&&t.key==="Enter"&&(this.enterInEditMode(),t.preventDefault())}editorDivKeydown(t){rt._keyboardManager.exec(this,t)}editorDivFocus(t){this.isEditing=!0}editorDivBlur(t){this.isEditing=!1}editorDivInput(t){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}get canChangeContent(){return!0}render(){if(this.div)return this.div;let t,e;(this._isCopy||this.annotationElementId)&&(t=this.x,e=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",this.#e),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text2"),this.editorDiv.setAttribute("data-l10n-attrs","default-content"),this.enableEditing(),this.editorDiv.contentEditable=!0;const{style:s}=this.editorDiv;if(s.fontSize=`calc(${this.#i}px * var(--total-scale-factor))`,s.color=this.color,this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),this._isCopy||this.annotationElementId){const[i,n]=this.parentDimensions;if(this.annotationElementId){const{position:r}=this._initialData;let[a,o]=this.getInitialTranslation();[a,o]=this.pageTranslationToScreen(a,o);const[l,h]=this.pageDimensions,[c,u]=this.pageTranslation;let f,p;switch(this.rotation){case 0:f=t+(r[0]-c)/l,p=e+this.height-(r[1]-u)/h;break;case 90:f=t+(r[0]-c)/l,p=e-(r[1]-u)/h,[a,o]=[o,-a];break;case 180:f=t-this.width+(r[0]-c)/l,p=e-(r[1]-u)/h,[a,o]=[-a,-o];break;case 270:f=t+(r[0]-c-this.height*h)/l,p=e+(r[1]-u-this.width*l)/h,[a,o]=[-o,a];break}this.setAt(f*i,p*n,a,o)}else this._moveAfterPaste(t,e);this.#h(),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}static#l(t){return(t.nodeType===Node.TEXT_NODE?t.nodeValue:t.innerText).replaceAll(He,"")}editorDivPaste(t){const e=t.clipboardData||window.clipboardData,{types:s}=e;if(s.length===1&&s[0]==="text/plain")return;t.preventDefault();const i=rt.#d(e.getData("text")||"").replaceAll(He,` +`);if(!i)return;const n=window.getSelection();if(!n.rangeCount)return;this.editorDiv.normalize(),n.deleteFromDocument();const r=n.getRangeAt(0);if(!i.includes(` +`)){r.insertNode(document.createTextNode(i)),this.editorDiv.normalize(),n.collapseToStart();return}const{startContainer:a,startOffset:o}=r,l=[],h=[];if(a.nodeType===Node.TEXT_NODE){const f=a.parentElement;if(h.push(a.nodeValue.slice(o).replaceAll(He,"")),f!==this.editorDiv){let p=l;for(const g of this.editorDiv.childNodes){if(g===f){p=h;continue}p.push(rt.#l(g))}}l.push(a.nodeValue.slice(0,o).replaceAll(He,""))}else if(a===this.editorDiv){let f=l,p=0;for(const g of this.editorDiv.childNodes)p++===o&&(f=h),f.push(rt.#l(g))}this.#t=`${l.join(` +`)}${i}${h.join(` +`)}`,this.#h();const c=new Range;let u=Math.sumPrecise(l.map(f=>f.length));for(const{firstChild:f}of this.editorDiv.childNodes)if(f.nodeType===Node.TEXT_NODE){const p=f.nodeValue.length;if(u<=p){c.setStart(f,u),c.setEnd(f,u);break}u-=p}n.removeAllRanges(),n.addRange(c)}#h(){if(this.editorDiv.replaceChildren(),!!this.#t)for(const t of this.#t.split(` +`)){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br")),this.editorDiv.append(e)}}#u(){return this.#t.replaceAll(" "," ")}static#d(t){return t.replaceAll(" "," ")}get contentDiv(){return this.editorDiv}getPDFRect(){const t=rt._internalPadding*this.parentScale;return this.getRect(t,t)}static async deserialize(t,e,s){let i=null;if(t instanceof Sn){const{data:{defaultAppearanceData:{fontSize:r,fontColor:a},rect:o,rotation:l,id:h,popupRef:c,richText:u,contentsObj:f,creationDate:p,modificationDate:g},textContent:m,textPosition:b,parent:{page:{pageNumber:y}}}=t;if(!m?.length)return null;i=t={annotationType:L.FREETEXT,color:Array.from(a),fontSize:r,value:m.join(` +`),position:b,pageIndex:y-1,rect:o.slice(0),rotation:l,annotationElementId:h,id:h,deleted:!1,popupRef:c,comment:f?.str||null,richText:u,creationDate:p,modificationDate:g}}const n=await super.deserialize(t,e,s);return n.#i=t.fontSize,n.color=x.makeHexColor(...t.color),n.#t=rt.#d(t.value),n._initialData=i,t.comment&&n.setCommentData(t),n}serialize(t=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const e=M._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.color),s=Object.assign(super.serialize(t),{color:e,fontSize:this.#i,value:this.#u()});return this.addComment(s),t?(s.isCopy=!0,s):this.annotationElementId&&!this.#f(s)?null:(s.id=this.annotationElementId,s)}#f(t){const{value:e,fontSize:s,color:i,pageIndex:n}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||t.value!==e||t.fontSize!==s||t.color.some((r,a)=>r!==i[a])||t.pageIndex!==n}renderAnnotationElement(t){const e=super.renderAnnotationElement(t);if(!e)return null;const{style:s}=e;s.fontSize=`calc(${this.#i}px * var(--total-scale-factor))`,s.color=this.color,e.replaceChildren();for(const i of this.#t.split(` +`)){const n=document.createElement("div");n.append(i?document.createTextNode(i):document.createElement("br")),e.append(n)}return t.updateEdited({rect:this.getPDFRect(),popup:this._uiManager.hasCommentManager()||this.hasEditedComment?this.comment:{text:this.#t}}),e}resetAnnotationElement(t){super.resetAnnotationElement(t),t.resetEdited()}}class ii{#t=Object.create(null);updateProperty(t,e){this[t]=e,this.updateSVGProperty(t,e)}updateProperties(t){if(t)for(const[e,s]of Object.entries(t))e.startsWith("_")||this.updateProperty(e,s)}updateSVGProperty(t,e){this.#t[t]=e}toSVGProperties(){const t=this.#t;return this.#t=Object.create(null),{root:t}}reset(){this.#t=Object.create(null)}updateAll(t=this){this.updateProperties(t)}clone(){G("Not implemented")}}class U extends M{#t=null;#e;_clipPathId=null;_colorPicker=null;_drawId=null;_drawOutlines=null;_focusDrawId=null;static _currentDrawId=-1;static _currentParent=null;static#s=null;static#i=null;static#n=null;static#a=null;static _INNER_MARGIN=3;constructor(t){super(t),this.#e=t.mustBeCommitted||!1,this._addOutlines(t)}onUpdatedColor(){this._colorPicker?.update(this.color),super.onUpdatedColor()}onUpdatedOpacity(){this._colorPicker?.updateOpacity?.(this.opacity)}_addOutlines(t){t.drawOutlines&&(this.#r(t),this.#m())}#r({drawOutlines:t,drawId:e,drawingOptions:s,clipPathId:i}){this._drawOutlines=t,this._drawingOptions||=s,this.annotationElementId||this._uiManager.a11yAlert(M._l10nAlert[this.editorType]),e>=0?(this._drawId=e,this._clipPathId=i??null,this.parent.drawLayer.finalizeDraw(e,t.defaultProperties),this.#l(this.parent)):this._drawId=this.#o(t,this.parent),this.#b(t.box)}#o(t,e){const{id:s,clipPathId:i}=e.drawLayer.draw(U._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,this.constructor._hasClipPath);return this.constructor._hasClipPath&&(this._clipPathId=i),this.#l(e),s}#l(t){const e=this._drawOutlines.getFocusSVGProperties(this.#f);e&&(this._focusDrawId=t.drawLayer.drawOutline(e,this._drawOutlines.focusMustRemoveSelfIntersections))}#h(t=this.#f){this._focusDrawId!==null&&this.parent?.drawLayer.updateProperties(this._focusDrawId,this._drawOutlines.getFocusSVGProperties(t))}#u(t){this._focusDrawId!==null&&this.parent?.drawLayer.updateProperties(this._focusDrawId,{rootClass:t})}#d(){const{parent:t,_drawId:e,_focusDrawId:s,_isVisible:i}=this;if(!t||e===null)return;const n={hidden:!i};t.drawLayer.updateProperties(e,{rootClass:n}),s!==null&&t.drawLayer.updateProperties(s,{rootClass:n})}static _mergeSVGProperties(t,e){const s=new Set(Object.keys(t));for(const[i,n]of Object.entries(e))s.has(i)?Object.assign(t[i],n):t[i]=n;return t}static getDefaultDrawingOptions(t){G("Not implemented")}static get typesMap(){G("Not implemented")}static get isDrawer(){return!0}static get _hasClipPath(){return!1}static get _hasDrawClass(){return!0}static get supportMultipleDrawings(){return!1}get _drawRotation(){return this.rotation}get _opacityName(){return this.constructor.typesMap.get(this.opacityType)}get#f(){return(this.parentRotation-this._drawRotation+360)%360}static updateDefaultParams(t,e){const s=this.typesMap.get(t);s&&this._defaultDrawingOptions.updateProperty(s,e),this._currentParent&&(U.#s.updateProperty(s,e),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(t,e){const s=this.constructor.typesMap.get(t);s&&this._updateProperty(t,s,e)}static get defaultPropertiesToUpdate(){const t=[],e=this._defaultDrawingOptions;for(const[s,i]of this.typesMap)t.push([s,e[i]]);return t}get propertiesToUpdate(){const t=[],{_drawingOptions:e}=this;for(const[s,i]of this.constructor.typesMap)t.push([s,e[i]]);return t}_updateProperty(t,e,s){const i=this._drawingOptions,n=i[e],r=a=>{i.updateProperty(e,a);const o=this._drawOutlines.updateProperty(e,a);o&&this.#b(o),this.parent?.drawLayer.updateProperties(this._drawId,i.toSVGProperties()),t===this.colorType?this.onUpdatedColor():t===this.opacityType&&this.onUpdatedOpacity()};this.addCommands({cmd:r.bind(this,s),undo:r.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:t,overwriteIfSameType:!0,keepUndo:!0})}_updateColorAndOpacity(t,e,s=this.colorAndOpacityType){const i=this.constructor.typesMap.get(this.colorType),n=this._opacityName,r=this._drawingOptions,a=r[i],o=r[n],l=(h,c)=>{r.updateProperty(i,h),r.updateProperty(n,c),this._drawOutlines.updateProperty(i,h),this._drawOutlines.updateProperty(n,c),this.parent?.drawLayer.updateProperties(this._drawId,r.toSVGProperties()),this.onUpdatedColor(),this.onUpdatedOpacity()};this.addCommands({cmd:l.bind(this,t,e),undo:l.bind(this,a,o),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:s,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){this.parent?.drawLayer.updateProperties(this._drawId,U._mergeSVGProperties(this._drawOutlines.getPathResizingSVGProperties(this.#p()),{bbox:this.#y()}))}_onResized(){this.parent?.drawLayer.updateProperties(this._drawId,U._mergeSVGProperties(this._drawOutlines.getPathResizedSVGProperties(this.#p()),{bbox:this.#y()})),this.#h()}_onTranslating(t,e){this.parent?.drawLayer.updateProperties(this._drawId,{bbox:this.#y()})}_onTranslated(){this.parent?.drawLayer.updateProperties(this._drawId,U._mergeSVGProperties(this._drawOutlines.getPathTranslatedSVGProperties(this.#p(),this.parentDimensions),{bbox:this.#y()}))}_onStartDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}get _mustBeDisabledOnCommit(){return!0}commit(){super.commit(),this._mustBeDisabledOnCommit&&(this.disableEditMode(),this.disableEditing())}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(t){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,this.#e&&(this.#e=!1,this.commit(),this.parent.setSelected(this),t&&this.isOnScreen&&this.div.focus())}remove(){this._uiManager.removeShouldRescale(this),this.#g(),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#m(),this.#b(this._drawOutlines.box),this.isAttachedToDOM||this.parent.add(this)))}setParent(t){let e=!1;this.parent&&!t?(this._uiManager.removeShouldRescale(this),this.#g()):t&&(this._uiManager.addShouldRescale(this),this.#m(t),e=!this.parent&&this.div?.classList.contains("selectedEditor")),super.setParent(t),this.#d(),e&&this.select()}#g(){if(this._drawId===null||!this.parent)return;const{drawLayer:t}=this.parent;t.remove(this._drawId),this._drawId=null,this._focusDrawId!==null&&(t.remove(this._focusDrawId),this._focusDrawId=null),this._drawingOptions.reset()}#m(t=this.parent){if(!(this._drawId!==null&&this.parent===t)){if(this._drawId!==null){const{drawLayer:e}=this.parent;e.updateParent(this._drawId,t.drawLayer),this._focusDrawId!==null&&e.updateParent(this._focusDrawId,t.drawLayer);return}this._drawingOptions.updateAll(),this._drawId=this.#o(this._drawOutlines,t),this._clipPathId&&this.#t&&(this.#t.style.clipPath=this._clipPathId)}}#c([t,e,s,i]){const{parentDimensions:[n,r],_drawRotation:a}=this;switch(a){case 90:return[e,1-t,s*(r/n),i*(n/r)];case 180:return[1-t,1-e,s,i];case 270:return[1-e,t,s*(r/n),i*(n/r)];default:return[t,e,s,i]}}#p(){const{x:t,y:e,width:s,height:i,parentDimensions:[n,r],_drawRotation:a}=this;switch(a){case 90:return[1-e,t,s*(n/r),i*(r/n)];case 180:return[1-t,1-e,s,i];case 270:return[e,1-t,s*(n/r),i*(r/n)];default:return[t,e,s,i]}}#b(t){[this.x,this.y,this.width,this.height]=this.#c(t),this.div&&(this.fixAndSetPosition(),this.setDims()),this._onResized()}#y(t=this.parentRotation){const{x:e,y:s,width:i,height:n,_drawRotation:r,parentDimensions:[a,o]}=this;switch((r*4+t)/90){case 1:return[1-s-n,e,n,i];case 2:return[1-e-i,1-s-n,i,n];case 3:return[s,1-e-i,n,i];case 4:return[e,s-i*(a/o),n*(o/a),i*(a/o)];case 5:return[1-s,e,i*(a/o),n*(o/a)];case 6:return[1-e-n*(o/a),1-s,n*(o/a),i*(a/o)];case 7:return[s-i*(a/o),1-e-n*(o/a),i*(a/o),n*(o/a)];case 8:return[e-i,s-n,i,n];case 9:return[1-s,e-i,n,i];case 10:return[1-e,1-s,i,n];case 11:return[s-n,1-e,n,i];case 12:return[e-n*(o/a),s,n*(o/a),i*(a/o)];case 13:return[1-s-i*(a/o),e-n*(o/a),i*(a/o),n*(o/a)];case 14:return[1-e,1-s-i*(a/o),n*(o/a),i*(a/o)];case 15:return[s,1-e,i*(a/o),n*(o/a)];default:return[e,s,i,n]}}rotate(t=this.parentRotation){if(!this.parent||this._drawId===null)return;const e=(t-this._drawRotation+360)%360;this.parent.drawLayer.updateProperties(this._drawId,U._mergeSVGProperties({bbox:this.#y(t)},this._drawOutlines.updateRotation(e))),this.#h(e)}show(t=this._isVisible){super.show(t),this.#d()}select(){super.select(),this.#u({hovered:!1,selected:!0})}unselect(){super.unselect(),this.#u({selected:!1})}pointerover(){this.isSelected||this.#u({hovered:!0})}pointerleave(){this.isSelected||this.#u({hovered:!1})}onScaleChanging(){if(!this.parent)return;const t=this._drawOutlines.updateParentDimensions(this.parentDimensions,this.parent.scale);t&&this.#b(t)}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;let t,e;this._isCopy&&(t=this.x,e=this.y);const s=super.render();this.constructor._hasDrawClass&&s.classList.add("draw");const i=this.#t=document.createElement("div");return s.append(i),i.setAttribute("aria-hidden","true"),i.className="internal",this._clipPathId&&(i.style.clipPath=this._clipPathId),sn(this,i,["pointerover","pointerleave"]),this.setDims(),this._uiManager.addShouldRescale(this),this.disableEditing(),this._isCopy&&this._moveAfterPaste(t,e),s}static createDrawerInstance(t){G("Not implemented")}static _getDrawingTarget(t,{target:e}){return e}static _getPointerCoords({offsetX:t,offsetY:e,clientX:s,clientY:i},n=null){if(!n)return[t,e];let r=s-n.clientX,a=i-n.clientY;switch(this._currentParent.viewport.rotation){case 90:[r,a]=[a,-r];break;case 180:[r,a]=[-r,-a];break;case 270:[r,a]=[-a,r];break}return[n.offsetX+r,n.offsetY+a]}static _addDrawingListeners(t,e){}static _endDrawingSession(t=!1){return this._currentParent.endDrawingSession(t)}static startDrawing(t,e,s,i){const{pointerId:n,pointerType:r}=i;if(z.isInitializedAndDifferentPointerType(r))return;const a=this._getDrawingTarget(t,i),[o,l]=this._getPointerCoords(i),{viewport:{rotation:h}}=t,{x:c,y:u,width:f,height:p}=a.getBoundingClientRect(),g=U.#i=new AbortController,m=t.combinedSignal(g);if(z.setPointer(r,n),window.addEventListener("pointerup",A=>{z.isSamePointerIdOrRemove(A.pointerId)&&this._endDraw(A)},{signal:m}),window.addEventListener("pointercancel",A=>{z.isSamePointerIdOrRemove(A.pointerId)&&this._endDrawingSession()},{signal:m}),window.addEventListener("pointerdown",A=>{z.isSamePointerType(A.pointerType)&&(z.initializeAndAddPointerId(A.pointerId),U.#s.isCancellable()&&(U.#s.removeLastElement(),U.#s.isEmpty()?this._endDrawingSession(!0):this._endDraw(null)))},{capture:!0,passive:!1,signal:m}),window.addEventListener("contextmenu",Ct,{signal:m}),a.addEventListener("pointermove",this._drawMove.bind(this),{signal:m}),a.addEventListener("touchmove",A=>{z.isSameTimeStamp(A.timeStamp)&&nt(A)},{signal:m}),this._addDrawingListeners(a,m),t.toggleDrawing(),e._editorUndoBar?.hide(),U.#s){t.drawLayer.updateProperties(this._currentDrawId,U.#s.startNew(o,l,f,p,h));return}e.updateUIForDefaultProperties(this),U.#s=this.createDrawerInstance({x:o,y:l,box:[c,u,f,p],rotation:h,parent:t,isLTR:s}),U.#n=this.getDefaultDrawingOptions(),this._currentParent=t;const{id:b,clipPathId:y}=t.drawLayer.draw(this._mergeSVGProperties(U.#n.toSVGProperties(),U.#s.defaultSVGProperties),!0,this._hasClipPath);this._currentDrawId=b,U.#a=this._hasClipPath?y:null}static _drawMove(t){if(z.isSameTimeStamp(t.timeStamp),!U.#s||!z.isSamePointerId(t.pointerId))return;if(z.isUsingMultiplePointers()){this._endDraw(t);return}let e;const s=t.getCoalescedEvents?.();if(s?.length){const i=[];for(const n of s)i.push(...this._getPointerCoords(n,t));e=U.#s.addPoints(i)}else e=U.#s.add(...this._getPointerCoords(t));this._currentParent.drawLayer.updateProperties(this._currentDrawId,e),z.setTimeStamp(t.timeStamp),nt(t)}static _cleanup(t){t&&(this._currentDrawId=-1,this._currentParent=null,U.#s=null,U.#n=null,U.#a=null,z.clearTimeStamp()),U.#i&&(U.#i.abort(),U.#i=null,z.clearPointerIds())}static _endDraw(t){const e=this._currentParent;if(e){if(e.toggleDrawing(!0),this._cleanup(!1),e.drawLayer.updateProperties(this._currentDrawId,t?.target===e.div?U.#s.end(...this._getPointerCoords(t)):U.#s.end()),this.supportMultipleDrawings){const s=U.#s,i=this._currentDrawId,n=s.getLastElement();e.addCommands({cmd:()=>{e.drawLayer.updateProperties(i,s.setLastElement(n))},undo:()=>{e.drawLayer.updateProperties(i,s.removeLastElement())},mustExec:!1,type:$.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(t){const e=this._currentParent;if(!e)return null;if(e.toggleDrawing(!0),e.cleanUndoStack($.DRAW_STEP),!U.#s.isEmpty()){const{pageDimensions:[s,i],scale:n}=e,r=e.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,clipPathId:U.#a,drawOutlines:U.#s.getOutlines(s*n,i*n,n,this._INNER_MARGIN),drawingOptions:U.#n,mustBeCommitted:!t});return this._cleanup(!0),r}return e.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(t){}static deserializeDraw(t,e,s,i,n,r,a){G("Not implemented")}static async deserialize(t,e,s){const{rawDims:{pageWidth:i,pageHeight:n,pageX:r,pageY:a}}=e.viewport,o=this.deserializeDraw(r,a,i,n,this._INNER_MARGIN,t,s),l=await super.deserialize(t,e,s);return l.createDrawingOptions(t),l.#r({drawOutlines:o}),l.#m(),l.onScaleChanging(),l.rotate(),l}serializeDraw(t){const[e,s]=this.pageTranslation,[i,n]=this.pageDimensions;return this._drawOutlines.serialize([e,s,i,n],t)}renderAnnotationElement(t){return t.updateEdited({rect:this.getPDFRect()}),null}static canCreateNewEmptyEditor(){return!1}}class T{static PRECISION=1e-4;focusOutline=null;toSVGPath(){G("Abstract method `toSVGPath` must be implemented.")}get box(){G("Abstract getter `box` must be implemented.")}serialize(t,e){G("Abstract method `serialize` must be implemented.")}get defaultSVGProperties(){G("Abstract getter `defaultSVGProperties` must be implemented.")}get defaultProperties(){return this.defaultSVGProperties}getFocusSVGProperties(t){return null}get focusMustRemoveSelfIntersections(){return!1}updateProperty(t,e){return null}updateParentDimensions(t,e){return null}serializeQuadPoints(t,e){return null}updateRotation(t){return{}}getPathResizingSVGProperties(t){return{}}getPathResizedSVGProperties(t){return{}}getPathTranslatedSVGProperties(t,e){return{}}static _rotateBox([t,e,s,i],n){switch(n){case 90:return[1-e-i,t,i,s];case 180:return[1-t-s,1-e-i,s,i];case 270:return[e,1-t-s,i,s]}return[t,e,s,i]}static _rescale(t,e,s,i,n,r){r||=new Float32Array(t.length);for(let a=0,o=t.length;a=6;i-=6)isNaN(e[i])?s.push(`L${e[i+4]} ${e[i+5]}`):s.push(`C${e[i]} ${e[i+1]} ${e[i+2]} ${e[i+3]} ${e[i+4]} ${e[i+5]}`);return this.#y(s),s.join(" ")}#b(){const[t,e,s,i]=this.#t,[n,r,a,o]=this.#p();return`M${(this.#a[2]-t)/s} ${(this.#a[3]-e)/i} L${(this.#a[4]-t)/s} ${(this.#a[5]-e)/i} L${n} ${r} L${a} ${o} L${(this.#a[16]-t)/s} ${(this.#a[17]-e)/i} L${(this.#a[14]-t)/s} ${(this.#a[15]-e)/i} Z`}#y(t){const e=this.#e;t.push(`L${e[4]} ${e[5]} Z`)}#A(t){const[e,s,i,n]=this.#t,r=this.#a.subarray(4,6),a=this.#a.subarray(16,18),[o,l,h,c]=this.#p();t.push(`L${(r[0]-e)/i} ${(r[1]-s)/n} L${o} ${l} L${h} ${c} L${(a[0]-e)/i} ${(a[1]-s)/n}`)}newFreeDrawOutline(t,e,s,i,n,r){return new Tn(t,e,s,i,n,r)}getOutlines(){const t=this.#n,e=this.#e,s=this.#a,[i,n,r,a]=this.#t,o=new Float32Array((this.#f?.length??0)+2);for(let c=0,u=o.length-2;c=6;c-=6)for(let u=0;u<6;u+=2){if(isNaN(e[c+u])){l[h]=l[h+1]=NaN,h+=2;continue}l[h]=e[c+u],l[h+1]=e[c+u+1],h+=2}return this.#_(l,h),this.newFreeDrawOutline(l,o,this.#t,this.#u,this.#s,this.#i)}#w(t){const e=this.#a,[s,i,n,r]=this.#t,[a,o,l,h]=this.#p(),c=new Float32Array(36);return c.set([NaN,NaN,NaN,NaN,(e[2]-s)/n,(e[3]-i)/r,NaN,NaN,NaN,NaN,(e[4]-s)/n,(e[5]-i)/r,NaN,NaN,NaN,NaN,a,o,NaN,NaN,NaN,NaN,l,h,NaN,NaN,NaN,NaN,(e[16]-s)/n,(e[17]-i)/r,NaN,NaN,NaN,NaN,(e[14]-s)/n,(e[15]-i)/r],0),this.newFreeDrawOutline(c,t,this.#t,this.#u,this.#s,this.#i)}#_(t,e){const s=this.#e;return t.set([NaN,NaN,NaN,NaN,s[4],s[5]],e),e+=6}#S(t,e){const s=this.#a.subarray(4,6),i=this.#a.subarray(16,18),[n,r,a,o]=this.#t,[l,h,c,u]=this.#p();return t.set([NaN,NaN,NaN,NaN,(s[0]-n)/a,(s[1]-r)/o,NaN,NaN,NaN,NaN,l,h,NaN,NaN,NaN,NaN,c,u,NaN,NaN,NaN,NaN,(i[0]-n)/a,(i[1]-r)/o],e),e+=24}}class Tn extends T{#t;#e=new Float32Array(4);#s;#i;#n;#a;#r;constructor(t,e,s,i,n,r){super(),this.#r=t,this.#n=e,this.#t=s,this.#a=i,this.#s=n,this.#i=r,this.firstPoint=[NaN,NaN],this.lastPoint=[NaN,NaN],this.#o(r);const[a,o,l,h]=this.#e;for(let c=0,u=t.length;cm?(r=g,a=m):a===m&&(r=h(r,g)),lc[1]?(r=c[0],a=c[1]):a===c[1]&&(r=h(r,c[0])),le[0]-s[0]||e[1]-s[1]||e[2]-s[2]);const t=[];for(const e of this.#i)e[3]?(t.push(...this.#h(e)),this.#o(e)):(this.#l(e),t.push(...this.#h(e)));return this.#a(t)}#a(t){const e=[],s=new Set;for(const r of t){const[a,o,l]=r;e.push([a,o,r],[a,l,r])}e.sort((r,a)=>r[1]-a[1]||r[0]-a[0]);for(let r=0,a=e.length;r0;){const r=s.values().next().value;let[a,o,l,h,c]=r;s.delete(r);let u=a,f=o;for(n=[a,l],i.push(n);;){let p;if(s.has(h))p=h;else if(s.has(c))p=c;else break;s.delete(p),[a,o,l,h,c]=p,u!==a&&(n.push(u,f,a,f===o?o:l),u=a),f=f===o?l:o}n.push(u,f)}return new Us(i,this.#t,this.#e,this.#s)}#r(t){const e=this.#n;let s=0,i=e.length-1;for(;s<=i;){const n=s+i>>1,r=e[n][0];if(r===t)return n;r=0;i--){const[n,r]=this.#n[i];if(n!==t)break;if(n===t&&r===e){this.#n.splice(i,1);return}}}#h(t){const[e,s,i]=t,n=[[e,s,i]],r=this.#r(i);for(let a=0;a=o){if(f>l)n[h][1]=l;else{if(c===1)return[];n.splice(h,1),h--,c--}continue}n[h][2]=o,f>l&&n.push([e,l,f])}}}return n}}class Us extends T{#t;#e=null;#s;constructor(t,e,s,i){super(),this.#s=t,this.#t=e,this.firstPoint=s,this.lastPoint=i}static build(t,e){const s=new Bs(t,.001).getOutlines();return s.#e=t,s.focusOutline=new Bs(t,.0025,.001,e).getOutlines(),s}get isFree(){return!1}get defaultSVGProperties(){return kn(this)}getFocusSVGProperties(t){return Pn(this,t)}updateRotation(t){return{root:{"data-main-rotation":t}}}serializeQuadPoints([t,e],[s,i]){const n=this.#e,r=new Float32Array(n.length*8);let a=0;for(const{x:o,y:l,width:h,height:c}of n){const u=o*s+t,f=(1-l)*i+e;r[a]=r[a+4]=u,r[a+1]=r[a+3]=f,r[a+2]=r[a+6]=u+h*s,r[a+5]=r[a+7]=f-c*i,a+=8}return r}toSVGPath(){const t=[];for(const e of this.#s){let[s,i]=e;t.push(`M${s} ${i}`);for(let n=2;nt.classList.remove("free"),{once:!0}),window.addEventListener("blur",()=>this._endDraw(null),{signal:e}),window.addEventListener("pointerdown",nt,{capture:!0,passive:!1,signal:e})}static _endDrawingSession(t=!1){return this.endDrawing(t)}createDrawingOptions({color:t,opacity:e,thickness:s}){const{_defaultDrawingOptions:i,_DEFAULT_OPACITY:n}=Et;this._drawingOptions=Et.getDefaultDrawingOptions({fill:x.makeHexColor(...t),"fill-opacity":e||n,thickness:s||i.thickness})}static deserializeDraw(t,e,s,i,n,r,a){const{quadPoints:o}=r;if(o){const f=[];for(let p=0,g=o.length;ps!==e[i])}renderAnnotationElement(t){return this.deleted?(t.hide(),null):(t.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}}class Va{#t=new Float64Array(6);#e=new Float64Array(2);#s;#i;#n;#a;#r;#o="";#l=0;#h=new Fe;#u;#d;constructor(t,e,s,i,n,r){this.#u=s,this.#d=i,this.#n=n,this.#a=r,[t,e]=this.#f(t,e);const a=this.#s=[NaN,NaN,NaN,NaN,t,e];this.#r=[t,e],this.#i=[{line:a,points:this.#r}],this.#t.set(a,0),this.#e.set([t,e],0)}updateProperty(t,e){t==="stroke-width"&&(this.#a=e)}#f(t,e){return T._normalizePoint(t,e,this.#u,this.#d,this.#n)}isEmpty(){return!this.#i?.length}isCancellable(){return this.#r.length<=10}add(t,e){return this.#g(t,e)&&this.toSVGPath(),{path:{d:this.#m()}}}addPoints(t){let e=!1;for(let s=0,i=t.length;sA??NaN),c,u,f,p),points:g(a[b].map(A=>A??NaN),c,u,f,p)});const m=new this.prototype.constructor;return m.build(h,s,i,1,o,l,n),m}#h(t=this.#l){const e=this.#s+t/2*this.#r;return this.#o%180===0?[e/this.#n,e/this.#a]:[e/this.#a,e/this.#n]}#u(){const[t,e,s,i]=this.#t,[n,r]=this.#h(0);return[t+n,e+r,s-2*n,i-2*r]}#d(){const t=this.#t=Xt.slice();for(const{line:i}of this.#i){if(i.length<=12){for(let a=4,o=i.length;ar!==e[a])||t.thickness!==s||t.opacity!==i||t.pageIndex!==n}renderAnnotationElement(t){if(this.deleted)return t.hide(),null;const{points:e,rect:s}=this.serializeDraw(!1);return t.updateEdited({rect:s,thickness:this._drawingOptions["stroke-width"],points:e,popup:this.comment}),null}}class Hs extends Fe{toSVGPath(){let t=super.toSVGPath();return t.endsWith("Z")||(t+="Z"),t}}const $e=8,ye=3;class le{static#t={maxDim:512,sigmaSFactor:.02,sigmaR:25,kernelSize:16};static#e(t,e,s,i){return s-=t,i-=e,s===0?i>0?0:4:s===1?i+6:2-i}static#s=new Int32Array([0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1]);static#i(t,e,s,i,n,r,a){const o=this.#e(s,i,n,r);for(let l=0;l<8;l++){const h=(-l+o-a+16)%8,c=this.#s[2*h],u=this.#s[2*h+1];if(t[(s+c)*e+(i+u)]!==0)return h}return-1}static#n(t,e,s,i,n,r,a){const o=this.#e(s,i,n,r);for(let l=0;l<8;l++){const h=(l+o+a+16)%8,c=this.#s[2*h],u=this.#s[2*h+1];if(t[(s+c)*e+(i+u)]!==0)return h}return-1}static#a(t,e,s,i){const n=t.length,r=new Int32Array(n);for(let h=0;h=1&&r[u+1]===0)a+=1,g+=1,f>1&&(o=f);else{f!==1&&(o=Math.abs(f));continue}const m=[c,h],b=g===c+1,y={isHole:b,points:m,id:a,parent:0};l.push(y);let A;for(const P of l)if(P.id===o){A=P;break}A?A.isHole?y.parent=b?A.parent:o:y.parent=b?o:A.parent:y.parent=b?o:0;const v=this.#i(r,e,h,c,p,g,0);if(v===-1){r[u]=-a,r[u]!==1&&(o=Math.abs(r[u]));continue}let w=this.#s[2*v],S=this.#s[2*v+1];const _=h+w,E=c+S;p=_,g=E;let C=h,k=c;for(;;){const P=this.#n(r,e,C,k,p,g,1);w=this.#s[2*P],S=this.#s[2*P+1];const I=C+w,B=k+S;m.push(B,I);const H=C*e+k;if(r[H+1]===0?r[H]=-a:r[H]===1&&(r[H]=a),I===h&&B===c&&C===_&&k===E){r[u]!==1&&(o=Math.abs(r[u]));break}else p=C,g=k,C=I,k=B}}}return l}static#r(t,e,s,i){if(s-e<=4){for(let _=e;_w&&(S=_,w=E)}w>(l*v)**2?(this.#r(t,e,S+2,i),this.#r(t,S,s,i)):i.push(n,r)}static#o(t){const e=[],s=t.length;return this.#r(t,0,s,e),e.push(t[s-2],t[s-1]),e.length<=4?null:e}static#l(t,e,s,i,n,r){const a=new Float32Array(r**2),o=-2*i**2,l=r>>1;for(let g=0;g=s))for(let E=0;E=e)continue;const k=t[_*e+C],P=a[S*r+E]*h[Math.abs(k-y)];A+=k*P,v+=P}}const w=f[b]=Math.round(A/v);p[w]++}return[f,p]}static#h(t){const e=new Uint32Array(256);for(const s of t)e[s]++;return e}static#u(t){const e=t.length,s=new Uint8ClampedArray(e>>2);let i=-1/0,n=1/0;for(let a=0,o=s.length;ao!==0);let r=n,a=n;for(e=n;e<256;e++){const o=t[e];o>s&&(e-r>i&&(i=e-r,a=e-1),s=o,r=e)}for(e=a-1;e>=0&&!(t[e]>t[e+1]);e--);return e}static#f(t){const e=t,{width:s,height:i}=t,{maxDim:n}=this.#t;let r=s,a=i;if(s>n||i>n){let u=s,f=i,p=Math.log2(Math.max(s,i)/n);const g=Math.floor(p);p=p===g?g-1:g;for(let b=0;b=-128&&a<=127?l=Int8Array:r>=-32768&&a<=32767?l=Int16Array:l=Int32Array;const h=t.length,c=$e+ye*h,u=new Uint32Array(c);let f=0;u[f++]=c*Uint32Array.BYTES_PER_ELEMENT+(o-2*h)*l.BYTES_PER_ELEMENT,u[f++]=0,u[f++]=i,u[f++]=n,u[f++]=e?0:1,u[f++]=Math.max(0,Math.floor(s??0)),u[f++]=h,u[f++]=l.BYTES_PER_ELEMENT;for(const y of t)u[f++]=y.length-2,u[f++]=y[0],u[f++]=y[1];const p=new CompressionStream("deflate-raw"),g=p.writable.getWriter();await g.ready,g.write(u);const m=l.prototype.constructor;for(const y of t){const A=new m(y.length-2);for(let v=2,w=y.length;v{await n.ready,await n.close()}).catch(()=>{});let r=null,a=0;for await(const A of s)r||=new Uint8Array(new Uint32Array(A.buffer,0,4)[0]),r.set(A,a),a+=A.length;const o=new Uint32Array(r.buffer,0,r.length>>2),l=o[1];if(l!==0)throw new Error(`Invalid version: ${l}`);const h=o[2],c=o[3],u=o[4]===0,f=o[5],p=o[6],g=o[7],m=[],b=($e+ye*p)*Uint32Array.BYTES_PER_ELEMENT;let y;switch(g){case Int8Array.BYTES_PER_ELEMENT:y=new Int8Array(r.buffer,b);break;case Int16Array.BYTES_PER_ELEMENT:y=new Int16Array(r.buffer,b);break;case Int32Array.BYTES_PER_ELEMENT:y=new Int32Array(r.buffer,b);break}a=0;for(let A=0;A{e?.updateEditSignatureButton(t)}))}getSignaturePreview(){const{newCurves:t,areContours:e,thickness:s,width:i,height:n}=this.#s,r=Math.max(i,n),a=le.processDrawnLines({lines:{curves:t.map(o=>({points:o})),thickness:s,width:i,height:n},pageWidth:r,pageHeight:r,rotation:0,innerMargin:0,mustSmooth:!1,areContours:e});return{areContours:e,outline:a.outline}}get toolbarButtons(){return this._uiManager.signatureManager?[["editSignature",this._uiManager.signatureManager]]:super.toolbarButtons}addSignature(t,e,s,i){const{x:n,y:r}=this,{outline:a}=this.#s=t;this.#t=a instanceof Hs,this.description=s;let o;this.#t?o=Dt.getDefaultDrawingOptions():(o=Dt._defaultDrawnSignatureOptions.clone(),o.updateProperties({"stroke-width":a.thickness})),this._addOutlines({drawOutlines:a,drawingOptions:o});const[,l]=this.pageDimensions;let h=e/l;h=h>=1?.5:h,this.width*=h/this.height,this.width>=1&&(h*=.9/this.width,this.width=.9),this.height=h,this.setDims(),this.x=n,this.y=r,this.center(),this._onResized(),this.onScaleChanging(),this.rotate(),this._uiManager.addToAnnotationStorage(this),this.setUuid(i),this._reportTelemetry({action:"pdfjs.signature.inserted",data:{hasBeenSaved:!!i,hasDescription:!!s}}),this.div.hidden=!1}getFromImage(t){const{rawDims:{pageWidth:e,pageHeight:s},rotation:i}=this.parent.viewport;return le.process(t,e,s,i,Dt._INNER_MARGIN)}getFromText(t,e){const{rawDims:{pageWidth:s,pageHeight:i},rotation:n}=this.parent.viewport;return le.extractContoursFromText(t,e,s,i,n,Dt._INNER_MARGIN)}getDrawnSignature(t){const{rawDims:{pageWidth:e,pageHeight:s},rotation:i}=this.parent.viewport;return le.processDrawnLines({lines:t,pageWidth:e,pageHeight:s,rotation:i,innerMargin:Dt._INNER_MARGIN,mustSmooth:!1,areContours:!1})}createDrawingOptions({areContours:t,thickness:e}){t?this._drawingOptions=Dt.getDefaultDrawingOptions():(this._drawingOptions=Dt._defaultDrawnSignatureOptions.clone(),this._drawingOptions.updateProperties({"stroke-width":e}))}serialize(t=!1){if(this.isEmpty())return null;const{lines:e,points:s}=this.serializeDraw(t),{_drawingOptions:{"stroke-width":i}}=this,n=Object.assign(super.serialize(t),{isSignature:!0,areContours:this.#t,color:[0,0,0],thickness:this.#t?0:i});return this.addComment(n),t?(n.paths={lines:e,points:s},n.uuid=this.#i,n.isCopy=!0):n.lines=e,this.#e&&(n.accessibilityData={type:"Figure",alt:this.#e}),n}static deserializeDraw(t,e,s,i,n,r){return r.areContours?Hs.deserialize(t,e,s,i,n,r):Fe.deserialize(t,e,s,i,n,r)}static async deserialize(t,e,s){const i=await super.deserialize(t,e,s);return i.#t=t.areContours,i.description=t.accessibilityData?.alt||"",i.#i=t.uuid,i}}class Wa extends M{#t=null;#e=null;#s=null;#i=null;#n=null;#a="";#r=null;#o=!1;#l=null;#h=!1;#u=!1;static _type="stamp";static _editorType=L.STAMP;constructor(t){super({...t,name:"stampEditor"}),this.#i=t.bitmapUrl,this.#n=t.bitmapFile,this.defaultL10nId="pdfjs-editor-stamp-editor"}static initialize(t,e){M.initialize(t,e)}static isHandlingMimeForPasting(t){return Is.includes(t)}static paste(t,e){e.pasteEditor({mode:L.STAMP},{bitmapFile:t.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){return{type:"stamp",hasAltText:!!this.altTextData?.altText}}static computeTelemetryFinalData(t){const e=t.get("hasAltText");return{hasAltText:e.get(!0)??0,hasNoAltText:e.get(!1)??0}}#d(t,e=!1){if(!t){this.remove();return}this.#t=t.bitmap,e||(this.#e=t.id,this.#h=t.isSvg),t.file&&(this.#a=t.file.name),this.#m()}#f(){if(this.#s=null,this._uiManager.enableWaiting(!1),!!this.#r){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#t){this.addEditToolbar().then(()=>{this._editToolbar.hide(),this._uiManager.editAltText(this,!0)});return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#t){this._reportTelemetry({action:"pdfjs.image.image_added",data:{alt_text_modal:!1,alt_text_type:"empty"}});try{this.mlGuessAltText()}catch{}}this.div.focus()}}async mlGuessAltText(t=null,e=!0){if(this.hasAltTextData())return null;const{mlManager:s}=this._uiManager;if(!s)throw new Error("No ML.");if(!await s.isEnabledFor("altText"))throw new Error("ML isn't enabled for alt text.");const{data:i,width:n,height:r}=t||this.copyCanvas(null,null,!0).imageData,a=await s.guess({name:"altText",request:{data:i,width:n,height:r,channels:i.length/(n*r)}});if(!a)throw new Error("No response from the AI service.");if(a.error)throw new Error("Error from the AI service.");if(a.cancel)return null;if(!a.output)throw new Error("No valid response from the AI service.");const o=a.output;return await this.setGuessedAltText(o),e&&!this.hasAltTextData()&&(this.altTextData={alt:o,decorative:!1}),o}#g(){if(this.#e){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(this.#e).then(s=>this.#d(s,!0)).finally(()=>this.#f());return}if(this.#i){const s=this.#i;this.#i=null,this._uiManager.enableWaiting(!0),this.#s=this._uiManager.imageManager.getFromUrl(s).then(i=>this.#d(i)).finally(()=>this.#f());return}if(this.#n){const s=this.#n;this.#n=null,this._uiManager.enableWaiting(!0),this.#s=this._uiManager.imageManager.getFromFile(s).then(i=>this.#d(i)).finally(()=>this.#f());return}const t=document.createElement("input");t.type="file",t.accept=Is.join(",");const e=this._uiManager._signal;this.#s=new Promise(s=>{t.addEventListener("change",async()=>{if(!t.files||t.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);const i=await this._uiManager.imageManager.getFromFile(t.files[0]);this._reportTelemetry({action:"pdfjs.image.image_selected",data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),this.#d(i)}s()},{signal:e}),t.addEventListener("cancel",()=>{this.remove(),s()},{signal:e})}).finally(()=>this.#f()),t.click()}remove(){this.#e&&(this.#t=null,this._uiManager.imageManager.deleteId(this.#e),this.#r?.remove(),this.#r=null,this.#l&&(clearTimeout(this.#l),this.#l=null)),super.remove()}rebuild(){if(!this.parent){this.#e&&this.#g();return}super.rebuild(),this.div!==null&&(this.#e&&this.#r===null&&this.#g(),this.isAttachedToDOM||this.parent.add(this))}onceAdded(t){this._isDraggable=!0,t&&this.div.focus()}isEmpty(){return!(this.#s||this.#t||this.#i||this.#n||this.#e||this.#o)}get toolbarButtons(){return[["altText",this.createAltText()]]}get isResizable(){return!0}render(){if(this.div)return this.div;let t,e;return this._isCopy&&(t=this.x,e=this.y),super.render(),this.div.hidden=!0,this.createAltText(),this.#o||(this.#t?this.#m():this.#g()),this._isCopy&&this._moveAfterPaste(t,e),this._uiManager.addShouldRescale(this),this.div}setCanvas(t,e){const{id:s,bitmap:i}=this._uiManager.imageManager.getFromCanvas(t,e);e.remove(),s&&this._uiManager.imageManager.isValidId(s)&&(this.#e=s,i&&(this.#t=i),this.#o=!1,this.#m())}_onResized(){this.onScaleChanging()}onScaleChanging(){if(!this.parent)return;this.#l!==null&&clearTimeout(this.#l);const t=200;this.#l=setTimeout(()=>{this.#l=null,this.#p()},t)}#m(){const{div:t}=this;let{width:e,height:s}=this.#t;const[i,n]=this.pageDimensions,r=.75;if(this.width)e=this.width*i,s=this.height*n;else if(e>r*i||s>r*n){const o=Math.min(r*i/e,r*n/s);e*=o,s*=o}this._uiManager.enableWaiting(!1);const a=this.#r=document.createElement("canvas");a.setAttribute("role","img"),this.addContainer(a),this.width=e/i,this.height=s/n,this.setDims(),this._initialOptions?.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(t.hidden=!1),this.#p(),this.#u||(this.parent.addUndoableEditor(this),this.#u=!0),this._reportTelemetry({action:"inserted_image"}),this.#a&&this.div.setAttribute("aria-description",this.#a),this.annotationElementId||this._uiManager.a11yAlert(M._l10nAlert.stamp)}copyCanvas(t,e,s=!1){t||=224;const{width:i,height:n}=this.#t,r=new Tt;let a=this.#t,o=i,l=n,h=null;if(e){if(i>e||n>e){const S=Math.min(e/i,e/n);o=Math.floor(i*S),l=Math.floor(n*S)}h=document.createElement("canvas");const u=h.width=Math.ceil(o*r.sx),f=h.height=Math.ceil(l*r.sy);this.#h||(a=this.#c(u,f));const p=h.getContext("2d");p.filter=this._uiManager.hcmFilter;let g="white",m="#cfcfd8";this._uiManager.hcmFilter!=="none"?m="black":Zn.isDarkMode&&(g="#8f8f9d",m="#42414d");const b=15,y=b*r.sx,A=b*r.sy,v=new OffscreenCanvas(y*2,A*2),w=v.getContext("2d");w.fillStyle=g,w.fillRect(0,0,y*2,A*2),w.fillStyle=m,w.fillRect(0,0,y,A),w.fillRect(y,A,y,A),p.fillStyle=p.createPattern(v,"repeat"),p.fillRect(0,0,u,f),p.drawImage(a,0,0,a.width,a.height,0,0,u,f)}let c=null;if(s){let u,f;if(r.symmetric&&a.widtht||n>t){const m=Math.min(t/i,t/n);u=Math.floor(i*m),f=Math.floor(n*m),this.#h||(a=this.#c(u,f))}const g=new OffscreenCanvas(u,f).getContext("2d",{willReadFrequently:!0});g.drawImage(a,0,0,a.width,a.height,0,0,u,f),c={width:u,height:f,data:g.getImageData(0,0,u,f).data}}return{canvas:h,width:o,height:l,imageData:c}}#c(t,e){const{width:s,height:i}=this.#t;let n=s,r=i,a=this.#t;for(;n>2*t||r>2*e;){const o=n,l=r;n>2*t&&(n=Math.ceil(n/2)),r>2*e&&(r=Math.ceil(r/2));const h=new OffscreenCanvas(n,r);h.getContext("2d").drawImage(a,0,0,o,l,0,0,n,r),a=h.transferToImageBitmap()}return a}#p(){const[t,e]=this.parentDimensions,{width:s,height:i}=this,n=new Tt,r=Math.ceil(s*t*n.sx),a=Math.ceil(i*e*n.sy),o=this.#r;if(!o||o.width===r&&o.height===a)return;o.width=r,o.height=a;const l=this.#h?this.#t:this.#c(r,a),h=o.getContext("2d");h.filter=this._uiManager.hcmFilter,h.drawImage(l,0,0,l.width,l.height,0,0,r,a)}#b(t){if(t){if(this.#h){const i=this._uiManager.imageManager.getSvgUrl(this.#e);if(i)return i}const e=document.createElement("canvas");return{width:e.width,height:e.height}=this.#t,e.getContext("2d").drawImage(this.#t,0,0),e.toDataURL()}if(this.#h){const[e,s]=this.pageDimensions,i=Math.round(this.width*e*pe.PDF_TO_CSS_UNITS),n=Math.round(this.height*s*pe.PDF_TO_CSS_UNITS),r=new OffscreenCanvas(i,n);return r.getContext("2d").drawImage(this.#t,0,0,this.#t.width,this.#t.height,0,0,i,n),r.transferToImageBitmap()}return structuredClone(this.#t)}static async deserialize(t,e,s){let i=null,n=!1;if(t instanceof xn){const{data:{rect:g,rotation:m,id:b,structParent:y,popupRef:A,richText:v,contentsObj:w,creationDate:S,modificationDate:_},container:E,parent:{page:{pageNumber:C}},canvas:k}=t;let P,I;k?(delete t.canvas,{id:P,bitmap:I}=s.imageManager.getFromCanvas(E.id,k),k.remove()):(n=!0,t._hasNoCanvas=!0);const B=(await e._structTree.getAriaAttributes(`${he}${b}`))?.get("aria-label")||"";i=t={annotationType:L.STAMP,bitmapId:P,bitmap:I,pageIndex:C-1,rect:g.slice(0),rotation:m,annotationElementId:b,id:b,deleted:!1,accessibilityData:{decorative:!1,altText:B},isSvg:!1,structParent:y,popupRef:A,richText:v,comment:w?.str||null,creationDate:S,modificationDate:_}}const r=await super.deserialize(t,e,s),{rect:a,bitmap:o,bitmapUrl:l,bitmapId:h,isSvg:c,accessibilityData:u}=t;n?(s.addMissingCanvas(t.id,r),r.#o=!0):h&&s.imageManager.isValidId(h)?(r.#e=h,o&&(r.#t=o)):r.#i=l,r.#h=c;const[f,p]=r.pageDimensions;return r.width=(a[2]-a[0])/f,r.height=(a[3]-a[1])/p,u&&(r.altTextData=u),r._initialData=i,t.comment&&r.setCommentData(t),r.#u=!!i,r}serialize(t=!1,e=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const s=Object.assign(super.serialize(t),{bitmapId:this.#e,isSvg:this.#h});if(this.addComment(s),t)return s.bitmapUrl=this.#b(!0),s.accessibilityData=this.serializeAltText(!0),s.isCopy=!0,s;const{decorative:i,altText:n}=this.serializeAltText(!1);if(!i&&n&&(s.accessibilityData={type:"Figure",alt:n}),this.annotationElementId){const a=this.#y(s);return a.isSame?null:(a.isSameAltText?delete s.accessibilityData:s.accessibilityData.structParent=this._initialData.structParent??-1,s.id=this.annotationElementId,delete s.bitmapId,s)}if(e===null)return s;e.stamps||=new Map;const r=this.#h?(s.rect[2]-s.rect[0])*(s.rect[3]-s.rect[1]):null;if(!e.stamps.has(this.#e))e.stamps.set(this.#e,{area:r,serialized:s}),s.bitmap=this.#b(!1);else if(this.#h){const a=e.stamps.get(this.#e);r>a.area&&(a.area=r,a.serialized.bitmap.close(),a.serialized.bitmap=this.#b(!1))}return s}#y(t){const{pageIndex:e,accessibilityData:{altText:s}}=this._initialData,i=t.pageIndex===e,n=(t.accessibilityData?.alt||"")===s;return{isSame:!this.hasEditedComment&&!this._hasBeenMoved&&!this._hasBeenResized&&i&&n,isSameAltText:n}}renderAnnotationElement(t){return this.deleted?(t.hide(),null):(t.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}}class Lt{#t;#e=!1;#s=null;#i=null;#n=null;#a=new Map;#r=!1;#o=!1;#l=!1;#h=null;#u=null;#d=null;#f=null;#g=null;#m=-1;#c;static _initialized=!1;static#p=new Map([rt,oi,Wa,Et,Dt].map(t=>[t._editorType,t]));constructor({uiManager:t,pageIndex:e,div:s,structTreeLayer:i,accessibilityManager:n,annotationLayer:r,drawLayer:a,textLayer:o,viewport:l,l10n:h}){const c=[...Lt.#p.values()];if(!Lt._initialized){Lt._initialized=!0;for(const u of c)u.initialize(h,t)}t.registerEditorTypes(c),this.#c=t,this.pageIndex=e,this.div=s,this.#t=n,this.#s=r,this.viewport=l,this.#d=o,this.drawLayer=a,this._structTree=i,this.#c.addLayer(this)}get isEmpty(){return this.#a.size===0}get isInvisible(){return this.isEmpty&&this.#c.getMode()===L.NONE}updateToolbar(t){this.#c.updateToolbar(t)}updateMode(t=this.#c.getMode()){switch(this.#S(),t){case L.NONE:this.div.classList.toggle("nonEditing",!0),this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case L.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case L.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:e}=this.div;if(e.toggle("nonEditing",!1),t===L.POPUP)e.toggle("commentEditing",!0);else{e.toggle("commentEditing",!1);for(const s of Lt.#p.values())e.toggle(`${s._type}Editing`,t===s._editorType)}this.div.hidden=!1}hasTextLayer(t){return t===this.#d?.div}setEditingState(t){this.#c.setEditingState(t)}addCommands(t){this.#c.addCommands(t)}cleanUndoStack(t){this.#c.cleanUndoStack(t)}toggleDrawing(t=!1){this.div.classList.toggle("drawing",!t)}togglePointerEvents(t=!1){this.div.classList.toggle("disabled",!t)}toggleAnnotationLayerPointerEvents(t=!1){this.#s?.togglePointerEvents(t)}get#b(){return this.#a.size!==0?this.#a.values():this.#c.getEditors(this.pageIndex)}async enable(){this.#l=!0,this.div.tabIndex=0,this.togglePointerEvents(!0),this.div.classList.toggle("nonEditing",!1),this.#g?.abort(),this.#g=null;const t=new Set;for(const s of this.#b)s.enableEditing(),s.show(!0),s.annotationElementId&&(this.#c.removeChangedExistingAnnotation(s),t.add(s.annotationElementId));const e=this.#s;if(e)for(const s of e.getEditableAnnotations()){if(s.hide(),this.#c.isDeletedAnnotationElement(s.data.id)||t.has(s.data.id))continue;const i=await this.deserialize(s);i&&(this.addOrRebuild(i),i.enableEditing())}this.#l=!1,this.#c._eventBus.dispatch("editorsrendered",{source:this,pageNumber:this.pageIndex+1})}disable(){if(this.#o=!0,this.div.tabIndex=-1,this.togglePointerEvents(!1),this.div.classList.toggle("nonEditing",!0),this.#d&&!this.#g){this.#g=new AbortController;const i=this.#c.combinedSignal(this.#g);this.#d.div.addEventListener("pointerdown",n=>{const{clientX:a,clientY:o,timeStamp:l}=n,h=this.#m;if(l-h>500){this.#m=l;return}this.#m=-1;const{classList:c}=this.div;c.toggle("getElements",!0);const u=document.elementsFromPoint(a,o);if(c.toggle("getElements",!1),!this.div.contains(u[0]))return;let f;const p=new RegExp(`^${fe}[0-9]+$`);for(const m of u)if(p.test(m.id)){f=m.id;break}if(!f)return;const g=this.#a.get(f);g?.annotationElementId===null&&(nt(n),g.dblclick(n))},{signal:i,capture:!0})}const t=this.#s,e=[];if(t){const i=new Map,n=new Map;for(const r of this.#b){if(r.disableEditing(),!r.annotationElementId){e.push(r);continue}if(r.serialize()!==null){i.set(r.annotationElementId,r);continue}else n.set(r.annotationElementId,r);this.getEditableAnnotation(r.annotationElementId)?.show(),r.remove()}for(const r of t.getEditableAnnotations()){const{id:a}=r.data;if(this.#c.isDeletedAnnotationElement(a)){r.updateEdited({deleted:!0});continue}let o=n.get(a);if(o){o.resetAnnotationElement(r),o.show(!1),r.show();continue}o=i.get(a),o&&(this.#c.addChangedExistingAnnotation(o),o.renderAnnotationElement(r)&&o.show(!1)),r.show()}}this.#S(),this.isEmpty&&(this.div.hidden=!0);const{classList:s}=this.div;for(const i of Lt.#p.values())s.remove(`${i._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),t?.updateFakeAnnotations(e),this.#o=!1}getEditableAnnotation(t){return this.#s?.getEditableAnnotation(t)||null}setActiveEditor(t){this.#c.getActive()!==t&&this.#c.setActiveEditor(t)}enableTextSelection(){if(this.div.tabIndex=-1,this.#d?.div&&!this.#f){this.#f=new AbortController;const t=this.#c.combinedSignal(this.#f);this.#d.div.addEventListener("pointerdown",this.#y.bind(this),{signal:t}),this.#d.div.classList.add("highlighting")}}disableTextSelection(){this.div.tabIndex=0,this.#d?.div&&this.#f&&(this.#f.abort(),this.#f=null,this.#d.div.classList.remove("highlighting"))}#y(t){this.#c.unselectAll();const{target:e}=t;if(e===this.#d.div||(e.getAttribute("role")==="img"||e.classList.contains("endOfContent")||e.classList.contains("textLayerImages")||e.classList.contains("textLayerImagePlaceholder"))&&this.#d.div.contains(e)){const{isMac:s}=j.platform;if(t.button!==0||t.ctrlKey&&s)return;this.#c.showAllEditors("highlight",!0,!0),Et.startDrawing(this,this.#c,this.#c.direction==="ltr",t),t.preventDefault()}}enableClick(){if(this.#i)return;this.#i=new AbortController;const t=this.#c.combinedSignal(this.#i);this.div.addEventListener("pointerdown",this.pointerdown.bind(this),{signal:t});const e=this.pointerup.bind(this);this.div.addEventListener("pointerup",e,{signal:t}),this.div.addEventListener("pointercancel",e,{signal:t})}disableClick(){this.#i?.abort(),this.#i=null}attach(t){this.#a.set(t.id,t);const{annotationElementId:e}=t;e&&this.#c.isDeletedAnnotationElement(e)&&this.#c.removeDeletedAnnotationElement(t)}detach(t){this.#a.delete(t.id),this.#t?.removePointerInTextLayer(t.contentDiv),!this.#o&&t.annotationElementId&&this.#c.addDeletedAnnotationElement(t)}remove(t){this.detach(t),this.#c.removeEditor(t),t.div.remove(),t.isAttachedToDOM=!1}changeParent(t){t.parent!==this&&(t.parent&&t.annotationElementId&&(this.#c.addDeletedAnnotationElement(t),M.deleteAnnotationElement(t),t.annotationElementId=null),this.attach(t),t.parent?.detach(t),t.setParent(this),t.div&&t.isAttachedToDOM&&(t.div.remove(),this.div.append(t.div)))}add(t){if(!(t.parent===this&&t.isAttachedToDOM)){if(this.changeParent(t),this.#c.addEditor(t),this.attach(t),!t.isAttachedToDOM){const e=t.render();this.div.append(e),t.isAttachedToDOM=!0}t.fixAndSetPosition(),t.onceAdded(!this.#l),this.#c.addToAnnotationStorage(t),t._reportTelemetry(t.telemetryInitialData)}}moveEditorInDOM(t){if(!t.isAttachedToDOM)return;const{activeElement:e}=document;t.div.contains(e)&&!this.#n&&(t._focusEventsAllowed=!1,this.#n=setTimeout(()=>{this.#n=null,t.div.contains(document.activeElement)?t._focusEventsAllowed=!0:(t.div.addEventListener("focusin",()=>{t._focusEventsAllowed=!0},{once:!0,signal:this.#c._signal}),e.focus())},0)),t._structTreeParentId=this.#t?.moveElementInDOM(this.div,t.div,t.contentDiv,!0)}addOrRebuild(t){t.needsToBeRebuilt()?(t.parent||=this,t.rebuild(),t.show()):this.add(t)}addUndoableEditor(t){const e=()=>t._uiManager.rebuild(t),s=()=>{t.remove()};this.addCommands({cmd:e,undo:s,mustExec:!1})}getEditorByUID(t){for(const e of this.#a.values())if(e.uid===t)return e;return null}get#A(){return Lt.#p.get(this.#c.getMode())}combinedSignal(t){return this.#c.combinedSignal(t)}#w(t){const e=this.#A;return e?new e.prototype.constructor(t):null}canCreateNewEmptyEditor(){return this.#A?.canCreateNewEmptyEditor()}async pasteEditor(t,e){this.updateToolbar(t),await this.#c.updateMode(t.mode);const{offsetX:s,offsetY:i}=this.#_(),n=this.#c.getId(),r=this.#w({parent:this,id:n,x:s,y:i,uiManager:this.#c,isCentered:!0,...e});r&&this.add(r)}async deserialize(t){return await Lt.#p.get(t.annotationType??t.annotationEditorType)?.deserialize(t,this,this.#c)||null}createAndAddNewEditor(t,e,s={}){const i=this.#c.getId(),n=this.#w({parent:this,id:i,x:t.offsetX,y:t.offsetY,uiManager:this.#c,isCentered:e,...s});return n&&this.add(n),n}get boundingClientRect(){return this.div.getBoundingClientRect()}#_(){const{x:t,y:e,width:s,height:i}=this.boundingClientRect,n=Math.max(0,t),r=Math.max(0,e),a=Math.min(window.innerWidth,t+s),o=Math.min(window.innerHeight,e+i),l=(n+a)/2-t,h=(r+o)/2-e,[c,u]=this.viewport.rotation%180===0?[l,h]:[h,l];return{offsetX:c,offsetY:u}}addNewEditor(t={}){this.createAndAddNewEditor(this.#_(),!0,t)}setSelected(t){this.#c.setSelected(t)}toggleSelected(t){this.#c.toggleSelected(t)}unselect(t){this.#c.unselect(t)}pointerup(t){const{isMac:e}=j.platform;if(t.button!==0||t.ctrlKey&&e||t.target!==this.div||!this.#r||(this.#r=!1,this.#A?.isDrawer&&this.#A.supportMultipleDrawings))return;if(!this.#e){this.#e=!0;return}const s=this.#c.getMode();if(s===L.STAMP||s===L.POPUP||s===L.SIGNATURE){this.#c.unselectAll();return}this.createAndAddNewEditor(t,!1)}pointerdown(t){if(this.#c.getMode()===L.HIGHLIGHT&&this.enableTextSelection(),this.#r){this.#r=!1;return}const{isMac:e}=j.platform;if(t.button!==0||t.ctrlKey&&e||t.target!==this.div)return;if(this.#r=!0,this.#A?.isDrawer){this.startDrawingSession(t);return}const s=this.#c.getActive();this.#e=!s||s.isEmpty()}startDrawingSession(t){if(this.div.focus({preventScroll:!0}),this.#h){this.#A.startDrawing(this,this.#c,!1,t);return}this.#c.setCurrentDrawingSession(this),this.#h=new AbortController;const e=this.#c.combinedSignal(this.#h);this.div.addEventListener("blur",({relatedTarget:s})=>{s&&!this.div.contains(s)&&(this.#u=null,this.commitOrRemove())},{signal:e}),this.#A.startDrawing(this,this.#c,!1,t)}pause(t){if(t){const{activeElement:e}=document;this.div.contains(e)&&(this.#u=e);return}this.#u&&setTimeout(()=>{this.#u?.focus(),this.#u=null},0)}endDrawingSession(t=!1){return this.#h?(this.#c.setCurrentDrawingSession(null),this.#h.abort(),this.#h=null,this.#u=null,this.#A.endDrawing(t)):null}findNewParent(t,e,s){const i=this.#c.findParent(e,s);return i===null||i===this?!1:(i.changeParent(t),!0)}commitOrRemove(){return this.#h?(this.endDrawingSession(),!0):!1}onScaleChanging(){this.#h&&this.#A.onScaleChangingWhenDrawing(this)}destroy(){this.commitOrRemove(),this.#c.getActive()?.parent===this&&(this.#c.commitOrRemove(),this.#c.setActiveEditor(null)),this.#n&&(clearTimeout(this.#n),this.#n=null);for(const t of this.#a.values())this.#t?.removePointerInTextLayer(t.contentDiv),t.setParent(null),t.isAttachedToDOM=!1,t.div.remove();this.div=null,this.#a.clear(),this.#c.removeLayer(this)}#S(){for(const t of this.#a.values())t.isEmpty()&&t.remove()}async render({viewport:t}){this.viewport=t,Zt(this.div,t);for(const e of this.#c.getEditors(this.pageIndex))this.add(e),e.rebuild();await this.#c.findClonesForPage(this),this.div.hidden=this.isEmpty,this.updateMode()}update({viewport:t}){this.#c.commitOrRemove(),this.#S();const e=this.viewport.rotation,s=t.rotation;if(this.viewport=t,Zt(this.div,{rotation:s}),e!==s)for(const i of this.#a.values())i.rotate(s)}get pageDimensions(){const{pageWidth:t,pageHeight:e}=this.viewport.rawDims;return[t,e]}get scale(){return this.#c.viewParameters.realScale}}function Xa(d,t){return d===t?0:d.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function Ge(d){return d?d.nodeType===Node.ELEMENT_NODE?d.closest(".textLayer"):d.parentElement?.closest(".textLayer")||null:null}function Ya(d,t,e,s){if(d===e)return t<=s;const i=d.compareDocumentPosition(e);return i&Node.DOCUMENT_POSITION_FOLLOWING?!0:i&Node.DOCUMENT_POSITION_PRECEDING?!1:null}function ji(d,t,e){if(d.nodeType!==Node.ELEMENT_NODE||!d.classList.contains("textLayer")||t!==d.childNodes.length)return{container:d,offset:t};let s=d.lastChild;return s?.nodeType===Node.ELEMENT_NODE&&s.classList.contains("endOfContent")&&(s=s.previousSibling),!s||!e.contains(s)?null:s.nodeType===Node.TEXT_NODE?{container:s,offset:s.textContent.length}:{container:s,offset:s.childNodes.length}}class R{#t=null;#e=new Map;#s=null;#i=null;#n=null;#a=null;#r=new Map;static#o=0;static#l=0;static#h=null;static#u=new Set;static#d=!1;static#f=new Set;static#g=new WeakMap;constructor({filterFactory:t=null,pageColors:e=null,pageIndex:s,textLayer:i=null}){if(this.pageIndex=s,this.#i=t,this.#n=e,i){const n=R.#g.get(i);if(n?.selectionDiv&&(n.selectionDiv.remove(),R.#u.delete(n.selectionDiv)),R.#g.set(i,{drawLayer:this}),R.#f.add(i),this.#s=i,this.#a=new MutationObserver(r=>{if(!(!this.#t||!this.#s?.isConnected||!R.#c())){for(const{addedNodes:a}of r)for(const o of a)if(o.nodeType===Node.ELEMENT_NODE&&o.classList.contains("endOfContent")){R.#b();return}}}),this.#a.observe(i,{childList:!0}),R.#h===null){R.#h=new AbortController;const{signal:r}=R.#h;document.addEventListener("selectionchange",R.#b.bind(R),{signal:r}),document.addEventListener("pointerdown",()=>{R.#d=!0},{signal:r}),document.addEventListener("pointerup",()=>{R.#d=!1},{signal:r}),window.addEventListener("blur",()=>{R.#d=!1},{signal:r})}}}setParent(t){if(!this.#t){this.#t=t,this.#s?.isConnected&&R.#c()&&R.#b();return}if(this.#t!==t){if(this.#e.size>0)for(const e of this.#e.values())e.remove(),t.append(e);this.#t=t}}static#m(t){const e=this.#g.get(t);e?.selectionDiv&&(e.selectionDiv.remove(),this.#u.delete(e.selectionDiv),e.selectionDiv=null,e.path=null)}static#c(){const t=document.getSelection();return!!t&&!t.isCollapsed}static#p(){return this.#f.keys().filter(t=>t.isConnected).toArray().sort(Xa)}static#b(){const t=document.getSelection();if(!t||t.isCollapsed){for(const r of this.#u)r.remove();this.#u.clear();return}const e=new WeakMap,s=this.#p(),i=[];for(let r=0,a=t.rangeCount;ro.intersectsNode(A));if(b.length===0)continue;let y=!1;if(f||(f=b[0],l=f,h=0,y=!0),p||(p=b.at(-1),c=p,u=p.childNodes.length,y=!0),c.nodeType===Node.ELEMENT_NODE){if(c.classList.contains("endOfContent")){const A=c.previousSibling;if(!A)continue;c=A,u=A.nodeType===Node.TEXT_NODE?A.textContent.length:A.childNodes.length}else if(c.classList.contains("textLayer")&&c.childNodes.length===u){const A=ji(c,u,p);if(!A)continue;c=A.container,u=A.offset}}if(l.nodeType===Node.ELEMENT_NODE){const A=ji(l,h,f);if(!A)continue;l=A.container,h=A.offset}if(f===p&&!y&&b.includes(f)){i.push([o,f]);continue}for(const A of b){const v=A.firstChild;if(!v)continue;const w=document.createRange();if(A===f?w.setStart(l,h):w.setStartBefore(v),A===p)w.setEnd(c,u);else{const S=A.lastChild;if(!S)continue;if(S.nodeType===Node.ELEMENT_NODE&&S.classList.contains("endOfContent")){const _=S.previousSibling;if(!_)continue;w.setEndAfter(_)}else w.setEndAfter(S)}w.collapsed||i.push([w,A])}}const n=new Set(i.map(r=>r[1]));for(const r of this.#f)n.has(r)||this.#m(r);for(const[r,a]of i){const o=R.#g.get(a);if(!o)continue;let l=e.get(a);if(!l){const p=a.getBoundingClientRect();l=(g,m,b,y)=>({x:(g-p.x)/p.width,y:(m-p.y)/p.height,width:b/p.width,height:y/p.height}),e.set(a,l)}const h=[];for(let{x:p,y:g,width:m,height:b}of r.getClientRects())m===0||b===0||({x:p,y:g,width:m,height:b}=l(p,g,m,b),!(m===1&&b===1)&&h.push(`M${p} ${g} h${m} v${b} h-${m} Z`));if(h.length===0)continue;const c=o.drawLayer;let u=o.selectionDiv,f=o.path;if(!u){const p=`clip_selection_${R.#l++}`;u=document.createElement("div"),u.className="selection",u.style.clipPath=`url(#${p})`;const g=c.#i?.createSelectionStyle(c.#n);if(g)for(const[y,A]of Object.entries(g))u.style.setProperty(y,A);const m=R._svgFactory.create(1,1,!0);m.setAttribute("aria-hidden","true"),m.setAttribute("width","100%"),m.setAttribute("height","100%");const b=R._svgFactory.createElement("clipPath");b.setAttribute("id",p),b.setAttribute("clipPathUnits","objectBoundingBox"),f=R._svgFactory.createElement("path"),b.append(f),m.append(b),u.append(m),o.path=f,o.selectionDiv=u}c.#t&&u.parentNode!==c.#t&&(c.#t.append(u),this.#u.add(u)),f.setAttribute("d",h.join(" "))}}static get _svgFactory(){return D(this,"_svgFactory",new Je)}static#y(t,[e,s,i,n]){const{style:r}=t;r.top=`${100*s}%`,r.left=`${100*e}%`,r.width=`${100*i}%`,r.height=`${100*n}%`}#A(){const t=R._svgFactory.create(1,1,!0);return this.#t.append(t),t.setAttribute("aria-hidden","true"),t}#w(t,e){const s=R._svgFactory.createElement("clipPath");t.append(s);const i=`clip_${e}`;s.setAttribute("id",i),s.setAttribute("clipPathUnits","objectBoundingBox");const n=R._svgFactory.createElement("use");return s.append(n),n.setAttribute("href",`#${e}`),n.classList.add("clip"),i}#_(t,e){for(const[s,i]of Object.entries(e))i===null?t.removeAttribute(s):t.setAttribute(s,i)}draw(t,e=!1,s=!1){const i=R.#o++,n=this.#A(),r=R._svgFactory.createElement("defs");n.append(r);const a=R._svgFactory.createElement("path");r.append(a);const o=`path_${i}`;a.setAttribute("id",o),a.setAttribute("vector-effect","non-scaling-stroke"),e&&this.#r.set(i,a);const l=s?this.#w(r,o):null,h=R._svgFactory.createElement("use");return n.append(h),h.setAttribute("href",`#${o}`),this.updateProperties(n,t),this.#e.set(i,n),{id:i,clipPathId:`url(#${l})`}}drawOutline(t,e){const s=R.#o++,i=this.#A(),n=R._svgFactory.createElement("defs");i.append(n);const r=R._svgFactory.createElement("path");n.append(r);const a=`path_${s}`;r.setAttribute("id",a),r.setAttribute("vector-effect","non-scaling-stroke");let o;if(e){const c=R._svgFactory.createElement("mask");n.append(c),o=`mask_${s}`,c.setAttribute("id",o),c.setAttribute("maskUnits","objectBoundingBox");const u=R._svgFactory.createElement("rect");c.append(u),u.setAttribute("width","1"),u.setAttribute("height","1"),u.setAttribute("fill","white");const f=R._svgFactory.createElement("use");c.append(f),f.setAttribute("href",`#${a}`),f.setAttribute("stroke","none"),f.setAttribute("fill","black"),f.setAttribute("fill-rule","nonzero"),f.classList.add("mask")}const l=R._svgFactory.createElement("use");i.append(l),l.setAttribute("href",`#${a}`),o&&l.setAttribute("mask",`url(#${o})`);const h=l.cloneNode();return i.append(h),l.classList.add("mainOutline"),h.classList.add("secondaryOutline"),this.updateProperties(i,t),this.#e.set(s,i),s}finalizeDraw(t,e){this.#r.delete(t),this.updateProperties(t,e)}updateProperties(t,e){if(!e)return;const{root:s,bbox:i,rootClass:n,path:r}=e,a=typeof t=="number"?this.#e.get(t):t;if(a){if(s&&this.#_(a,s),i&&R.#y(a,i),n){const{classList:o}=a;for(const[l,h]of Object.entries(n))o.toggle(l,h)}if(r){const l=a.firstElementChild.firstElementChild;this.#_(l,r)}}}updateParent(t,e){if(e===this)return;const s=this.#e.get(t);s&&(e.#t.append(s),this.#e.delete(t),e.#e.set(t,s))}remove(t){this.#r.delete(t),this.#t!==null&&(this.#e.get(t).remove(),this.#e.delete(t))}destroy(){this.#t=null;for(const t of this.#e.values())t.remove();this.#e.clear(),this.#r.clear(),this.#a?.disconnect(),this.#a=null,this.#s&&(R.#g.get(this.#s)?.drawLayer===this&&(R.#m(this.#s),R.#g.delete(this.#s),R.#f.delete(this.#s),R.#f.size===0&&(R.#h?.abort(),R.#h=null,R.#d=!1)),this.#s=null)}}function ze(d){return`${(d*100).toFixed(2)}%`}class Ze{#t=[];#e=new Map;#s=null;#i=0;#n=0;#a=0;static#r=null;constructor(t,e,s,i){this.#i=t,this.#t=e,this.#n=s.rawDims.pageWidth,this.#a=s.rawDims.pageHeight,this.#s=i}render(){const t=document.createElement("div");t.className="textLayerImages";for(let e=0;e{if(!(e.target instanceof HTMLCanvasElement))return;const s=e.target,i=this.#e.get(s);if(!i)return;const n=Ze.#r?.deref();if(n===s)return;n&&(n.width=0,n.height=0),Ze.#r=new WeakRef(s);const{inverseTransform:r,x1:a,y1:o,width:l,height:h}=i,c=this.#s(),u=Math.ceil(a*c.width),f=Math.ceil(o*c.height),p=Math.floor((a+l/this.#n)*c.width),g=Math.floor((o+h/this.#a)*c.height);s.width=p-u,s.height=g-f;const m=s.getContext("2d");m.setTransform(...r),m.translate(-u,-f),m.drawImage(c,0,0)}),t}#o([t,e,s,i,n,r]){const a=Math.hypot((n-t)*this.#n,(r-e)*this.#a),o=Math.hypot((s-t)*this.#n,(i-e)*this.#a);if(a{this._params.waitBeforeSync?setTimeout(()=>this._scheduleCallbacks(t),this._params.waitBeforeSync):this._scheduleCallbacks(t)})}}class Ka extends Mn{_scheduleCallbacks(t){requestAnimationFrame(()=>this._syncCallback()),requestAnimationFrame(()=>{setTimeout(()=>{this._asyncCallback(),setTimeout(t,0)},0)})}}class Ee extends Mn{static mc=new MessageChannel;_scheduleCallbacks(t){let e=!1,s=!1,i=!1;const n=()=>{!e||!s||!i||(this._asyncCallback(),setTimeout(t,0))};requestAnimationFrame(async()=>{await this._syncCallback(),i=!0,n()}),requestAnimationFrame(()=>{setTimeout(async()=>{await Promise.resolve(),e=!0,n()}),Ee.mc.port1.addEventListener("message",async function(){await Promise.resolve(),s=!0,n()},{once:!0}),Ee.mc.port1.start(),Ee.mc.port2.postMessage("speedometer")})}}const Qa={__proto__:null,raf:Ka,async:Ee};function Ja(d,t="getBoundingRectAndElementFromPoint"){d??=document.body;const e=d.getBoundingClientRect();switch(t){case"getBoundingRectAndElementFromPoint":return document.elementFromPoint(e.width/2|0,e.height/2|0);case"getBoundingClientRect":return e.height;default:throw Error(`Invalid layoutMode: ${t}`)}}class In{#t;#e;#s;#i;#n;constructor(t,e,s,i,n){this.#i=i,this.#n=n,this.#s=s,this.#e=e,this.#t=t}get page(){return this.#e}get step(){return this.#n}get isAsync(){return!1}_runSyncStep(t,e){t.run(e)}async runStep(){const t=this.#i.name,e=this.#n.name,s=`${t}.${e}-start`,i=`${t}.${e}-sync-end`,n=`${t}.${e}-async-end`;let r,a,o;const l=async()=>{if(this.#s.warmupBeforeSync){performance.mark("warmup-start");const b=performance.now();for(;performance.now()-b{const p=this.#t?.contentDocument?.body??document.body,g=Ja(p,this.#s.layoutMode);p._leakedLayoutValue=g;const m=performance.now();performance.mark(n),o=m-a,this.#s.warmupBeforeSync&&performance.measure("warmup","warmup-start","warmup-end"),performance.measure(`${t}.${e}-sync`,s,i),performance.measure(`${t}.${e}-async`,i,n)},c=this.#i.type==="async"||this.#s.useAsyncSteps?"async":this.#s.measurementMethod,u=Qa[c];return await new u(l,h,this.#s).start(),{syncTime:r,asyncTime:o}}}class Za extends In{get isAsync(){return!0}async _runSyncStep(t,e){await t.run(e)}}const Vi=Object.freeze(["getBoundingClientRect","getBoundingRectAndElementFromPoint"]);class ci{viewport={width:800,height:600};developerMode=!1;startAutomatically=!1;iterationCount=10;suites=[];tags=["default"];useWarmupSuite=!1;useAsyncSteps=!1;measurementMethod="raf";waitAfterSetup=0;waitBeforeSync=0;waitAfterSuite=0;warmupBeforeSync=0;shuffleSeed="off";complexity=1;layoutMode=Vi[0];measurePrepare=!1;config="";constructor(t=void 0,e=!1){t&&this._copyFromSearchParams(t,e),this.developerMode||(Object.freeze(this.viewport),Object.freeze(this))}_parseNumber(t,e,s=0){const i=Number(t);if(!Number.isFinite(i)&&e)throw new Error(`Invalid ${e} param: '${t}', expected Number.`);if(i= ${s}.`);return i}_parseInt(t,e,s=0){const i=this._parseNumber(t,e,s);if(!Number.isInteger(i)&&e)throw new Error(`Invalid ${e} param: '${t}', expected int.`);return parseInt(i)}_copyFromSearchParams(t,e){if(this.viewport=this._parseViewport(t),this.startAutomatically=this._parseBooleanParam(t,"startAutomatically"),this.iterationCount=this._parseIntParam(t,"iterationCount",1),this.suites=this._parseSuites(t),this.tags=this._parseTags(t),this.developerMode=this._parseBooleanParam(t,"developerMode"),this.useWarmupSuite=this._parseBooleanParam(t,"useWarmupSuite"),this.useAsyncSteps=this._parseBooleanParam(t,"useAsyncSteps"),this.waitAfterSetup=this._parseIntParam(t,"waitAfterSetup",0),this.waitBeforeSync=this._parseIntParam(t,"waitBeforeSync",0),this.waitAfterSuite=this._parseIntParam(t,"waitAfterSuite",0),this.warmupBeforeSync=this._parseIntParam(t,"warmupBeforeSync",0),this.measurementMethod=this._parseEnumParam(t,"measurementMethod",["raf"]),this.shuffleSeed=this._parseShuffleSeed(t),this.complexity=this._parserNumberParam(t,"complexity",0),this.layoutMode=this._parseEnumParam(t,"layoutMode",Vi),this.measurePrepare=this._parseBooleanParam(t,"measurePrepare"),this.config=this._parseConfig(t),e){const s=Array.from(t.keys());s.length>0&&console.error(`Got unused search params: ${s.join(", ")}`)}}_parseBooleanParam(t,e){return t.has(e)?(t.delete(e),!0):!1}_parserNumberParam(t,e,s){if(!t.has(e))return vt[e];const i=this._parseNumber(t.get(e),"waitBeforeSync",s);return t.delete(e),i}_parseIntParam(t,e,s){if(!t.has(e))return vt[e];const i=this._parseInt(t.get(e),"waitBeforeSync",s);return t.delete(e),i}_parseViewport(t){if(!t.has("viewport"))return vt.viewport;const e=t.get("viewport"),[s,i]=e.split("x"),n={width:this._parseInt(s,"viewport.width"),height:this._parseInt(i,"viewport.height")};if(this.viewport.width<800||this.viewport.height<600)throw new Error(`Invalid viewport param: ${e}`);return t.delete("viewport"),n}_parseSuites(t){if(t.has("suite")||t.has("suites")){if(t.has("suite")&&t.has("suites"))throw new Error("Params 'suite' and 'suites' can not be used together.");const s=(t.get("suite")||t.get("suites")).split(",");if(s.length===0)throw new Error("No suites selected");return t.delete("suite"),t.delete("suites"),s}return vt.suites}_parseTags(t){if(!t.has("tags"))return vt.tags;if(this.suites.length)throw new Error("'suites' and 'tags' cannot be used together.");const e=t.get("tags").split(",");return t.delete("tags"),e}_parseEnumParam(t,e,s){if(!t.has(e))return vt[e];const i=t.get(e);if(!s.includes(i))throw new Error(`Got invalid ${e}: '${i}', choices are ${s}`);return t.delete(e),i}_parseShuffleSeed(t){if(!t.has("shuffleSeed"))return vt.shuffleSeed;let e=t.get("shuffleSeed");if(e!=="off"&&(e==="generate"?(e=Math.floor(Math.random()*1<<16),console.log(`Generated a random suite order seed: ${e}`)):e=parseInt(e),!Number.isInteger(e)))throw new Error(`Invalid shuffle seed: '${e}', must be either 'off', 'generate' or an integer.`);return t.delete("shuffleSeed"),e}_parseConfig(t){const e=t.get("config")??"";if(t.delete("config"),e&&!to(e))throw new Error("Invalid config url passed in.");return e}toCompleteSearchParamsObject(){return this.toSearchParamsObject(!1)}toSearchParamsObject(t=!0){const e={__proto__:null};for(const[s,i]of Object.entries(this))s==="viewport"||s==="suites"||s==="tags"||t&&i===vt[s]||(e[s]=i);return(this.viewport.width!==vt.viewport.width||this.viewport.height!==vt.viewport.height)&&(e.viewport=`${this.viewport.width}x${this.viewport.height}`),this.suites.length?e.suites=this.suites.join(","):this.tags.length?this.tags.length===1&&this.tags[0]==="default"||(e.tags=this.tags.join(",")):e.suites="",new URLSearchParams(e)}toSearchParams(){return this.toSearchParamsObject().toString()}isDefault(){return this===vt}}function to(d){if(typeof d!="string"||d.length===0)return!1;try{return new URL(d,"http://www.example.com"),!0}catch{return!1}}const vt=new ci;let $s=vt;if(globalThis?.location?.search){const d=new URLSearchParams(globalThis.location.search);try{$s=new ci(d,!0)}catch(t){console.error("Invalid URL Param",t,` +Using defaults as fallback:`,$s)}}const eo=$s;class so{constructor(t,e){this.name=t,this.run=e}async runAndRecordStep(t,e,s){return await new In(null,null,t,e,s).runStep()}}class io extends so{async runAndRecordStep(t,e,s){return await new Za(null,null,t,e,s).runStep()}}const Gs=Object.freeze({__proto__:null,sync:"sync",async:"async"});class no{constructor(t,e,s=Gs.sync){this.name=t,this.steps=e,this.type=s,console.assert(this.type in Gs,"Invalid Type",this.type)}async runAndRecordSuite(t,e){const s={tests:{},prepare:0,total:0},i=`suite-${this.name}-start`,n=`suite-${this.name}-end`;performance.mark(i);for(const r of this.steps){const a=await r.runAndRecordStep(t,this,r);console.assert(a,"Missing test return value",r);const{syncTime:o,asyncTime:l}=a,h=o+l,c={tests:{Sync:o,Async:l},total:h};r.ignoreResult||(s.tests[r.name]=c,s.total+=h),e?.(r.name)}return performance.mark(n),performance.measure(`suite-${this.name}`,i,n),{type:"suite-tests-complete",status:"success",result:s,suiteName:this.name}}}class ro extends no{constructor(t,e){super(t,e,Gs.async)}}const je=Object.freeze({__proto__:null,appReady:"app-ready",suiteStart:"suite-start",stepComplete:"step-complete",suiteComplete:"suite-complete"}),ao=Object.freeze({__proto__:null,success:"success",error:"error"});class oo{constructor(t,e,s){this.suites=t,this.name=e,this.version=s,(!e||!s)&&console.warn("No name or version supplied, to create a unique appId"),this.appId=e&&s?`${e}-${s}`:-1,this.onMessage=this.onMessage.bind(this)}async onMessage(t){const e=t.data;if(e.appId!==this.appId||e.key!=="benchmark-connector"){console.warn("Invalid message",e);return}if(e.type===je.suiteStart){const s=new ci(new URLSearchParams(window.location.search)),{name:i}=e.payload,n=this.suites[i];n||console.error(`Suite with the name of "${i}" not found!`);const r=o=>this._sendMessage(je.stepComplete,{name:this.name,step:o}),{result:a}=await n.runAndRecordSuite(s,r);this._sendMessage(je.suiteComplete,{result:a}),this.disconnect()}else console.error(`Message data type not supported: ${e.type}`)}_sendMessage(t,e,s=ao.success){const i={appId:this.appId,type:t,payload:e,status:s};window.top.postMessage(i,"*")}connect(){window.addEventListener("message",this.onMessage),this._sendMessage(je.appReady,{appId:this.appId})}disconnect(){window.removeEventListener("message",this.onMessage)}}const Wi=[["views-manager","separator","page-number"],["zoom-out","zoom-level","zoom-in"],["search","separator","highlight","free-text","ink","separator","download","print","secondary"]],lo=["thumbnails","outline","attachments","layers"];function Dn(d,t){const e=document.createElement("button");return e.className="pdf-toolbar-button",e.dataset.icon=d,e.type="button",e.title=t,e.setAttribute("aria-label",t),e}function ho(){const d=document.createElement("span");return d.className="pdf-toolbar-separator",d}function co(d){const t=document.createElement("span");t.className="pdf-page-field";const e=document.createElement("input");e.className="pdf-page-input",e.type="text",e.value="1",e.readOnly=!0,e.setAttribute("aria-label","Page");const s=document.createElement("span");return s.className="pdf-page-total",s.textContent=`of ${d}`,t.append(e,s),t}function uo(d){const t=document.createElement("span");return t.className="pdf-zoom-level",t.textContent=`${Math.round(d*100)}%`,t}const fo={"views-manager":"Toggle sidebar","zoom-out":"Zoom out","zoom-in":"Zoom in",search:"Find in document",highlight:"Highlight","free-text":"Add text",ink:"Draw",download:"Save",print:"Print",secondary:"Tools"};function po(d,{pageCount:t,scale:e}){const s=Wi.map((i,n)=>{const r=document.createElement("div");r.className=n===Wi.length-1?"pdf-toolbar-group pdf-toolbar-group-end":"pdf-toolbar-group";for(const a of i)a==="separator"?r.append(ho()):a==="page-number"?r.append(co(t)):a==="zoom-level"?r.append(uo(e)):r.append(Dn(a,fo[a]));return r});d.replaceChildren(...s)}function go(d){const t=document.createElement("div");t.className="pdf-sidebar-tabs";for(const s of lo){const i=Dn(`view-${s}`,`Show ${s}`);i.classList.add("pdf-sidebar-tab"),i.classList.toggle("pdf-sidebar-tab-active",s==="thumbnails"),t.append(i)}const e=document.createElement("div");return e.className="pdf-thumbnails",d.replaceChildren(t,e),e}class mo{#t;#e;#s;#i;#n;#a;#r=[];constructor({pages:t,thumbnails:e},s,{scale:i,outputScale:n,thumbnailWidth:r}){this.#t=t,this.#e=e,this.#s=s,this.#i=i,this.#n=n,this.#a=r}get pageCount(){return this.#r.length}async layout(){const t=Array.from({length:this.#s.numPages},(n,r)=>r+1),e=await Promise.all(t.map(n=>this.#s.getPage(n))),s=document.createDocumentFragment(),i=document.createDocumentFragment();this.#r=e.map((n,r)=>{const a=n.getViewport({scale:1}),o=n.getViewport({scale:this.#i}),l=document.createElement("div");l.className="pdf-page",l.style.width=`${Math.floor(o.width)}px`,l.style.height=`${Math.floor(o.height)}px`,s.append(l);const h=n.getViewport({scale:this.#a/a.width}),c=document.createElement("div");c.className="pdf-thumbnail";const u=document.createElement("div");u.className="pdf-thumbnail-box",u.style.width=`${Math.floor(h.width)}px`,u.style.height=`${Math.floor(h.height)}px`;const f=document.createElement("span");return f.className="pdf-thumbnail-label",f.textContent=String(r+1),c.append(u,f),i.append(c),{proxy:n,viewport:o,element:l,thumbnailViewport:h,thumbnailBox:u,canvas:null}}),this.#t.replaceChildren(s),this.#e.replaceChildren(i)}async renderPages(t,e){const s=Math.min(t+e,this.#r.length),i=[];for(let n=t;nwindow.setTimeout(()=>s(performance.now()),0),window.cancelAnimationFrame=s=>window.clearTimeout(s);try{await d()}finally{window.requestAnimationFrame=t,window.cancelAnimationFrame=e}}function So(d){return{default:new ro("PDFViewer-PDFjs",[new io("RenderPages",()=>vo(()=>d.renderPages(0,wo(d.pageCount))))])}}const Xi="document.pdf",Yi=.67,_o=130,qi=2;function Eo(){const d=new URLSearchParams(window.location.search).get("pdfPixelRatio");if(d===null)return qi;const t=Number(d);return!Number.isFinite(t)||t<=0?(console.error(`Invalid pdfPixelRatio param: '${d}', expected a positive number.`),qi):t}async function xo(){de.workerPort=new qa;const d=await fetch(new URL(Xi,document.baseURI));if(!d.ok)throw new Error(`Could not load ${Xi}: ${d.status} ${d.statusText}`);const t=await yn({data:await d.arrayBuffer(),useSystemFonts:!1,verbosity:Me.ERRORS}).promise;po(document.getElementById("toolbar"),{pageCount:t.numPages,scale:Yi});const e=go(document.getElementById("sidebar")),s=new mo({pages:document.getElementById("viewer"),thumbnails:e},t,{scale:Yi,outputScale:Eo(),thumbnailWidth:_o});await s.layout(),new oo(So(s),bo,yo).connect()}xo().catch(d=>{console.error(d),document.getElementById("viewer").textContent=`Failed to load the document: ${d.message}`}); +//# sourceMappingURL=index.js.map diff --git a/suites-experimental/pdf-viewer/dist/assets/index.js.map b/suites-experimental/pdf-viewer/dist/assets/index.js.map new file mode 100644 index 000000000..accd8abe8 --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/assets/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../node_modules/pdfjs-dist/build/pdf.mjs","../../../../resources/shared/step-scheduler.mjs","../../../../resources/shared/helpers.mjs","../../../../resources/shared/step-runner.mjs","../../../../resources/shared/params.mjs","../../../../resources/shared/benchmark.mjs","../../src/chrome.js","../../src/viewer.js","../../src/workload-test.mjs","../../src/main.js"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 6.3.289\n * pdfjsBuild = 1c8020a7d\n */\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst BBOX_INIT = [Infinity, Infinity, -Infinity, -Infinity];\nconst F32_BBOX_INIT = new Float32Array(BBOX_INIT);\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = (/* unused pure expression or super */ null && (LINE_DESCENT_FACTOR / LINE_FACTOR));\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n INK_COLOR_AND_OPACITY: 24,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst MeshFigureType = (/* unused pure expression or super */ null && ({\n TRIANGLES: 1,\n LATTICE: 2,\n PATCH: 3\n}));\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n RICHMEDIA: 27\n};\nconst AnnotationReplyType = (/* unused pure expression or super */ null && ({\n GROUP: \"Group\",\n REPLY: \"R\"\n}));\nconst AnnotationRenditionOperation = (/* unused pure expression or super */ null && ({\n PLAY_OR_RESUME: 0,\n STOP: 1,\n PAUSE: 2,\n RESUME: 3,\n PLAY: 4\n}));\nconst AnnotationFlag = (/* unused pure expression or super */ null && ({\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n}));\nconst AnnotationFieldFlag = (/* unused pure expression or super */ null && ({\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n}));\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = (/* unused pure expression or super */ null && ({\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n}));\nconst DocumentActionEventType = (/* unused pure expression or super */ null && ({\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n}));\nconst PageActionEventType = (/* unused pure expression or super */ null && ({\n O: \"PageOpen\",\n C: \"PageClose\"\n}));\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n quadraticCurveTo: 3,\n closePath: 4\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction stripPath(str) {\n return str.substring(str.lastIndexOf(\"/\") + 1);\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nclass FeatureTest {\n static get isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return shadow(this, \"isLittleEndian\", view32[0] === 1);\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get isFloat16ArraySupported() {\n return shadow(this, \"isFloat16ArraySupported\", typeof Float16Array !== \"undefined\");\n }\n static get isSanitizerSupported() {\n return shadow(this, \"isSanitizerSupported\", typeof Sanitizer !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCanvasFilterSupported() {\n let ctx;\n if (this.isOffscreenCanvasSupported) {\n ctx = new OffscreenCanvas(1, 1).getContext(\"2d\");\n } else if (typeof document !== \"undefined\") {\n ctx = document.createElement(\"canvas\").getContext(\"2d\");\n }\n return shadow(this, \"isCanvasFilterSupported\", ctx?.filter !== undefined);\n }\n static get isAlphaColorInputSupported() {\n if (typeof document === \"undefined\") {\n return shadow(this, \"isAlphaColorInputSupported\", false);\n }\n const input = document.createElement(\"input\");\n input.type = \"color\";\n input.setAttribute(\"alpha\", \"\");\n input.value = \"#ff000080\";\n return shadow(this, \"isAlphaColorInputSupported\", input.value !== \"#ff0000\");\n }\n static get isBackdropFilterSupported() {\n return shadow(this, \"isBackdropFilterSupported\", typeof CSS !== \"undefined\" && CSS.supports(\"backdrop-filter\", \"blur(1px)\"));\n }\n}\nclass Util {\n static get hexNums() {\n return shadow(this, \"hexNums\", Array.from({\n length: 256\n }, (_, n) => n.toString(16).padStart(2, \"0\")));\n }\n static makeHexColor(r, g, b) {\n return `#${this.hexNums[r]}${this.hexNums[g]}${this.hexNums[b]}`;\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\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;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nconst makeArr = () => [];\nconst makeMap = () => new Map();\nconst makeObj = () => Object.create(null);\nconst makeSet = () => new Set();\nif (typeof Iterator.prototype.join !== \"function\") {\n Iterator.prototype.join = function (separator) {\n return [...this].join(separator);\n };\n}\n\n;// ./src/shared/math_clamp.js\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\n;// ./src/display/page_viewport.js\n\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\n }\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/xfa_layer.js\n\n\n\nconst disallowedRichTextStyleRegExp = /url\\(|image-set\\(/i;\nconst disallowedEventHandlerAttrRegExp = /^on/i;\nclass XfaLayer {\n static get _allowedHtmlElements() {\n return shadow(this, \"_allowedHtmlElements\", new Set([\"a\", \"b\", \"br\", \"button\", \"div\", \"i\", \"img\", \"input\", \"label\", \"li\", \"ol\", \"option\", \"p\", \"select\", \"span\", \"sub\", \"sup\", \"textarea\", \"ul\"]));\n }\n static get _allowedSvgElements() {\n return shadow(this, \"_allowedSvgElements\", new Set([\"ellipse\", \"line\", \"path\", \"rect\", \"svg\"]));\n }\n static get _allowedRichTextElements() {\n return shadow(this, \"_allowedRichTextElements\", new Set([\"a\", \"b\", \"br\", \"div\", \"i\", \"li\", \"ol\", \"p\", \"span\", \"sub\", \"sup\", \"ul\"]));\n }\n static get _allowedRichTextAttributes() {\n return shadow(this, \"_allowedRichTextAttributes\", new Set([\"class\", \"dir\", \"style\"]));\n }\n static get _allowedRichTextStyles() {\n return shadow(this, \"_allowedRichTextStyles\", new Set([\"color\", \"font\", \"fontFamily\", \"fontSize\", \"fontStretch\", \"fontStyle\", \"fontWeight\", \"kerningMode\", \"letterSpacing\", \"lineHeight\", \"margin\", \"marginBottom\", \"marginLeft\", \"marginRight\", \"marginTop\", \"orphans\", \"paddingLeft\", \"paddingRight\", \"breakAfter\", \"breakBefore\", \"breakInside\", \"tabInterval\", \"tabStop\", \"textAlign\", \"textDecoration\", \"textIndent\", \"transform\", \"verticalAlign\", \"widows\"]));\n }\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (Object.hasOwn(option.attributes, \"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n if (disallowedEventHandlerAttrRegExp.test(key)) {\n continue;\n }\n if (intent === \"richText\" && !this._allowedRichTextAttributes.has(key)) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n if (intent === \"richText\") {\n const allowedStyles = this._allowedRichTextStyles;\n for (const [styleName, styleValue] of Object.entries(value)) {\n if (allowedStyles.has(styleName) && !disallowedRichTextStyleRegExp.test(styleValue)) {\n html.style[styleName] = styleValue;\n }\n }\n } else {\n Object.assign(html.style, value);\n }\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService?.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static #createElement(name, xmlns, intent) {\n if (intent === \"richText\") {\n return !xmlns && this._allowedRichTextElements.has(name) ? document.createElement(name) : null;\n }\n if (xmlns) {\n return xmlns === SVG_NS && this._allowedSvgElements.has(name) ? document.createElementNS(SVG_NS, name) : null;\n }\n return this._allowedHtmlElements.has(name) ? document.createElement(name) : null;\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = this.#createElement(root.name, root.attributes?.xmlns, intent) ?? document.createElement(\"div\");\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = this.#createElement(name, child.attributes?.xmlns, intent);\n if (!childHtml) {\n continue;\n }\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n static getPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n }) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n return new PageViewport({\n viewBox: [0, 0, parseInt(width, 10), parseInt(height, 10)],\n userUnit: 1,\n scale,\n rotation\n });\n }\n}\n\n;// ./src/display/display_utils.js\n\n\n\n\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"blob\":\n return response.blob();\n case \"bytes\":\n return response.bytes();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type === \"bytes\" ? \"arraybuffer\" : type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"bytes\":\n resolve(new Uint8Array(request.response));\n return;\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return stripPath(url);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const getURL = urlString => {\n try {\n return new URL(urlString);\n } catch {}\n try {\n return new URL(decodeURIComponent(urlString));\n } catch {}\n try {\n return new URL(urlString, \"https://foo.bar\");\n } catch {}\n try {\n return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n } catch {}\n return null;\n };\n const newURL = getURL(url);\n if (!newURL) {\n return defaultFilename;\n }\n const decode = name => {\n try {\n let decoded = decodeURIComponent(name);\n if (decoded.includes(\"/\")) {\n decoded = stripPath(decoded);\n if (decoded.length === 4 && pdfRegex.test(decoded)) {\n return name;\n }\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = stripPath(newURL.pathname);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const getLast = iterator => [...iterator].findLast(v => pdfRegex.test(v));\n const name = getLast(newURL.searchParams.values()) ?? getLast(newURL.searchParams.keys());\n if (name) {\n return decode(name);\n }\n }\n if (newURL.hash) {\n const {\n hash\n } = newURL;\n let extensionStart = -1;\n for (const {\n index\n } of hash.matchAll(/\\.pdf\\b/gi)) {\n extensionStart = index;\n }\n if (extensionStart > 0) {\n let filenameStart = extensionStart;\n while (filenameStart > 0 && !\"/?#=\".includes(hash[filenameStart - 1])) {\n filenameStart--;\n }\n if (filenameStart < extensionStart) {\n return decode(hash.slice(filenameStart, extensionStart + 4));\n }\n }\n }\n return defaultFilename;\n}\nclass StatTimer {\n #started = new Map();\n times = [];\n time(name) {\n if (this.#started.has(name)) {\n warn(`Timer is already running for ${name}`);\n }\n this.#started.set(name, Date.now());\n }\n timeEnd(name) {\n if (!this.#started.has(name)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.#started.get(name),\n end: Date.now()\n });\n this.#started.delete(name);\n }\n toString() {\n const longest = Math.max(...this.times.map(t => t.name.length));\n return this.times.map(t => `${t.name.padEnd(longest)} ${t.end - t.start}ms\\n`).join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return /https?:/.test(res?.protocol ?? \"\");\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (input instanceof Date) {\n return input;\n }\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+\\\\-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getRGBA(color) {\n if (color.startsWith(\"#\")) {\n const hex = color.slice(1);\n return [parseInt(hex.slice(0, 2), 16), parseInt(hex.slice(2, 4), 16), parseInt(hex.slice(4, 6), 16), hex.length >= 8 ? parseInt(hex.slice(6, 8), 16) / 255 : 1];\n }\n if (color.startsWith(\"rgb(\")) {\n const [r, g, b] = color.slice(4, -1).split(\",\").map(x => parseInt(x, 10));\n return [r, g, b, 1];\n }\n if (color.startsWith(\"rgba(\")) {\n const parts = color.slice(5, -1).split(\",\");\n return [parseInt(parts[0], 10), parseInt(parts[1], 10), parseInt(parts[2], 10), parseFloat(parts[3])];\n }\n const m = color.match(/^color\\(srgb\\s+([\\d.]+)\\s+([\\d.]+)\\s+([\\d.]+)(?:\\s*\\/\\s*([\\d.]+|none))?\\)$/);\n if (m) {\n return [Math.round(parseFloat(m[1]) * 255), Math.round(parseFloat(m[2]) * 255), Math.round(parseFloat(m[3]) * 255), m[4] !== undefined && m[4] !== \"none\" ? parseFloat(m[4]) : 1];\n }\n return null;\n}\nfunction getRGB(color) {\n const rgba = getRGBA(color);\n if (!rgba) {\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n }\n return rgba.slice(0, 3);\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n span.style.colorScheme = \"only light\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const widthStr = `round(down, var(--total-scale-factor) * ${pageWidth}px, var(--scale-round-x))`,\n heightStr = `round(down, var(--total-scale-factor) * ${pageHeight}px, var(--scale-round-y))`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const {\n pixelRatio\n } = OutputScale;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\nclass ColorScheme {\n static get isDarkMode() {\n return shadow(this, \"isDarkMode\", !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches);\n }\n}\nclass CSSConstants {\n static get commentForegroundColor() {\n const element = document.createElement(\"span\");\n element.classList.add(\"comment\", \"sidebar\");\n const {\n style\n } = element;\n style.width = style.height = \"0\";\n style.display = \"none\";\n style.color = \"var(--comment-fg-color)\";\n document.body.append(element);\n const {\n color\n } = window.getComputedStyle(element);\n element.remove();\n return shadow(this, \"commentForegroundColor\", getRGB(color));\n }\n}\nfunction applyOpacity(color, opacity) {\n opacity = MathClamp(opacity ?? 1, 0, 1);\n const white = 255 * (1 - opacity);\n return color.map(c => Math.round(c * opacity + white));\n}\nfunction RGBToHSL(rgb, output) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (max === min) {\n output[0] = output[1] = 0;\n } else {\n const d = max - min;\n output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n switch (max) {\n case r:\n output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n break;\n case g:\n output[0] = ((b - r) / d + 2) * 60;\n break;\n case b:\n output[0] = ((r - g) / d + 4) * 60;\n break;\n }\n }\n output[2] = l;\n}\nfunction HSLToRGB(hsl, output) {\n const h = hsl[0];\n const s = hsl[1];\n const l = hsl[2];\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n switch (Math.floor(h / 60)) {\n case 0:\n output[0] = c + m;\n output[1] = x + m;\n output[2] = m;\n break;\n case 1:\n output[0] = x + m;\n output[1] = c + m;\n output[2] = m;\n break;\n case 2:\n output[0] = m;\n output[1] = c + m;\n output[2] = x + m;\n break;\n case 3:\n output[0] = m;\n output[1] = x + m;\n output[2] = c + m;\n break;\n case 4:\n output[0] = x + m;\n output[1] = m;\n output[2] = c + m;\n break;\n case 5:\n case 6:\n output[0] = c + m;\n output[1] = m;\n output[2] = x + m;\n break;\n }\n}\nfunction computeLuminance(x) {\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\nfunction contrastRatio(hsl1, hsl2, output) {\n HSLToRGB(hsl1, output);\n output.map(computeLuminance);\n const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n HSLToRGB(hsl2, output);\n output.map(computeLuminance);\n const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n return lum1 > lum2 ? (lum1 + 0.05) / (lum2 + 0.05) : (lum2 + 0.05) / (lum1 + 0.05);\n}\nconst contrastCache = new Map();\nfunction findContrastColor(baseColor, fixedColor) {\n const key = baseColor[0] + baseColor[1] * 0x100 + baseColor[2] * 0x10000 + fixedColor[0] * 0x1000000 + fixedColor[1] * 0x100000000 + fixedColor[2] * 0x10000000000;\n let cachedValue = contrastCache.get(key);\n if (cachedValue) {\n return cachedValue;\n }\n const array = new Float32Array(9);\n const output = array.subarray(0, 3);\n const baseHSL = array.subarray(3, 6);\n RGBToHSL(baseColor, baseHSL);\n const fixedHSL = array.subarray(6, 9);\n RGBToHSL(fixedColor, fixedHSL);\n const isFixedColorDark = fixedHSL[2] < 0.5;\n const minContrast = isFixedColorDark ? 12 : 4.5;\n baseHSL[2] = isFixedColorDark ? Math.sqrt(baseHSL[2]) : 1 - Math.sqrt(1 - baseHSL[2]);\n if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n let start, end;\n if (isFixedColorDark) {\n start = baseHSL[2];\n end = 1;\n } else {\n start = 0;\n end = baseHSL[2];\n }\n const PRECISION = 0.005;\n while (end - start > PRECISION) {\n const mid = baseHSL[2] = (start + end) / 2;\n if (isFixedColorDark === contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n start = mid;\n } else {\n end = mid;\n }\n }\n baseHSL[2] = isFixedColorDark ? end : start;\n }\n HSLToRGB(baseHSL, output);\n cachedValue = Util.makeHexColor(Math.round(output[0] * 255), Math.round(output[1] * 255), Math.round(output[2] * 255));\n contrastCache.set(key, cachedValue);\n return cachedValue;\n}\nfunction renderRichText({\n html,\n dir,\n className\n}, container) {\n const fragment = document.createDocumentFragment();\n if (typeof html === \"string\") {\n const p = document.createElement(\"p\");\n p.dir = dir || \"auto\";\n const lines = html.split(/\\r\\n?|\\n/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n fragment.append(p);\n } else {\n XfaLayer.render({\n xfaHtml: html,\n div: fragment,\n intent: \"richText\"\n });\n }\n fragment.firstElementChild.classList.add(\"richText\", className);\n container.append(fragment);\n}\nfunction makePathFromDrawOPS(data) {\n const path = new Path2D();\n if (!data) {\n return path;\n }\n for (let i = 0, ii = data.length; i < ii;) {\n switch (data[i++]) {\n case DrawOPS.moveTo:\n path.moveTo(data[i++], data[i++]);\n break;\n case DrawOPS.lineTo:\n path.lineTo(data[i++], data[i++]);\n break;\n case DrawOPS.curveTo:\n path.bezierCurveTo(data[i++], data[i++], data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.quadraticCurveTo:\n path.quadraticCurveTo(data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.closePath:\n path.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${data[i - 1]}`);\n break;\n }\n }\n return path;\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n #comment = null;\n #commentButtonDivider = null;\n #signatureDescriptionButton = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\",\n signature: \"pdfjs-editor-remove-signature-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return false;\n }\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n return true;\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n this.#comment?.shown();\n }\n addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", \"deleteButton\");\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n if (this.#addListenersToElement(button)) {\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n }\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n this.#altText = altText;\n }\n addComment(comment, beforeElement = null) {\n if (this.#comment) {\n return;\n }\n const button = comment.renderForToolbar();\n if (!button) {\n return;\n }\n this.#addListenersToElement(button);\n const divider = this.#commentButtonDivider = this.#divider;\n if (!beforeElement) {\n this.#buttons.append(button, divider);\n } else {\n this.#buttons.insertBefore(button, beforeElement);\n this.#buttons.insertBefore(divider, beforeElement);\n }\n this.#comment = comment;\n comment.toolbar = this;\n }\n addColorPicker(colorPicker) {\n if (this.#colorPicker) {\n return;\n }\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n removeButton(name) {\n switch (name) {\n case \"comment\":\n this.#comment?.removeToolbarCommentButton();\n this.#comment = null;\n this.#commentButtonDivider?.remove();\n this.#commentButtonDivider = null;\n break;\n }\n }\n async addButton(name, tool) {\n switch (name) {\n case \"colorPicker\":\n if (tool) {\n this.addColorPicker(tool);\n }\n break;\n case \"altText\":\n if (tool) {\n await this.addAltText(tool);\n }\n break;\n case \"editSignature\":\n if (tool) {\n await this.addEditSignatureButton(tool);\n }\n break;\n case \"delete\":\n this.addDeleteButton();\n break;\n case \"comment\":\n if (tool) {\n this.addComment(tool);\n }\n break;\n }\n }\n async addButtonBefore(name, tool, beforeSelector) {\n if (!tool && name === \"comment\") {\n return;\n }\n const beforeElement = this.#buttons.querySelector(beforeSelector);\n if (!beforeElement) {\n return;\n }\n if (name === \"comment\") {\n this.addComment(tool, beforeElement);\n }\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass FloatingToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.dir = this.#uiManager.direction;\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n if (this.#uiManager.hasCommentManager()) {\n this.#makeButton(\"commentButton\", `pdfjs-comment-floating-button`, \"pdfjs-comment-floating-button-label\", () => {\n this.#uiManager.commentSelection(\"floating_button\");\n });\n }\n this.#makeButton(\"highlightButton\", `pdfjs-highlight-floating-button1`, \"pdfjs-highlight-floating-button-label\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", buttonClass);\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", l10nId);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", labelL10nId);\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", clickHandler, {\n signal\n });\n }\n this.#buttons.append(button);\n }\n}\n\n;// ./src/shared/internal_evt.js\nconst INTERNAL_EVT = \"59968104-cc61-4cf9-b570-014b35b3709c\";\nconst internalOpt = Object.freeze({\n internal: INTERNAL_EVT\n});\n\n;// ./src/display/editor/tools.js\n\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nclass CurrentPointers {\n static #pointerId = NaN;\n static #pointerIds = null;\n static #moveTimestamp = NaN;\n static #pointerType = null;\n static initializeAndAddPointerId(pointerId) {\n (CurrentPointers.#pointerIds ||= new Set()).add(pointerId);\n }\n static setPointer(pointerType, pointerId) {\n CurrentPointers.#pointerId ||= pointerId;\n CurrentPointers.#pointerType ??= pointerType;\n }\n static setTimeStamp(timeStamp) {\n CurrentPointers.#moveTimestamp = timeStamp;\n }\n static isSamePointerId(pointerId) {\n return CurrentPointers.#pointerId === pointerId;\n }\n static isSamePointerIdOrRemove(pointerId) {\n if (CurrentPointers.#pointerId === pointerId) {\n return true;\n }\n CurrentPointers.#pointerIds?.delete(pointerId);\n return false;\n }\n static isSamePointerType(pointerType) {\n return CurrentPointers.#pointerType === pointerType;\n }\n static isInitializedAndDifferentPointerType(pointerType) {\n return CurrentPointers.#pointerType !== null && !CurrentPointers.isSamePointerType(pointerType);\n }\n static isSameTimeStamp(timeStamp) {\n return CurrentPointers.#moveTimestamp === timeStamp;\n }\n static isUsingMultiplePointers() {\n return CurrentPointers.#pointerIds?.size >= 1;\n }\n static clearPointerType() {\n CurrentPointers.#pointerType = null;\n }\n static clearPointerIds() {\n CurrentPointers.#pointerId = NaN;\n CurrentPointers.#pointerIds = null;\n }\n static clearTimeStamp() {\n CurrentPointers.#moveTimestamp = NaN;\n }\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n static ALT = 0x1;\n static CTRL = 0x2;\n static META = 0x4;\n static SHIFT = 0x8;\n constructor(callbacks) {\n this.callbacks = new Map();\n const {\n isMac\n } = FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n const hasMacOverride = keys.some(k => k.startsWith(\"mac+\"));\n for (const key of keys) {\n let shortcut = key;\n if (hasMacOverride) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac !== isMacKey) {\n continue;\n }\n if (isMacKey) {\n shortcut = key.slice(4);\n }\n }\n const [keyName, modifiers] = KeyboardManager.#parseShortcut(shortcut);\n if (keyName === null) {\n continue;\n }\n this.callbacks.getOrInsertComputed(keyName, makeArr).push({\n callback,\n options,\n modifiers\n });\n }\n }\n }\n static #parseShortcut(value) {\n let keyPart = null;\n let modifiers = 0;\n for (let part of value.split(\"+\")) {\n part = part.trim();\n if (!part) {\n continue;\n }\n const upper = part.toUpperCase();\n const modifier = KeyboardManager[upper];\n if (modifier) {\n modifiers |= modifier;\n continue;\n }\n if (keyPart !== null) {\n warn(`KeyboardManager: multiple keys in shortcut \"${value}\"`);\n break;\n }\n keyPart = upper === \"SPACE\" ? \" \" : part;\n }\n if (keyPart === null) {\n warn(`KeyboardManager: no key found in shortcut \"${value}\"`);\n }\n return [keyPart, modifiers];\n }\n static #codeToKey(code) {\n const match = /^(?:Key([A-Z])|(?:Digit|Numpad)(\\d))$/.exec(code);\n if (!match) {\n return null;\n }\n return match[1]?.toLowerCase() ?? match[2];\n }\n exec(self, event) {\n let shortcuts = this.callbacks.get(event.key);\n if (!shortcuts) {\n if (/^[a-z]$/i.test(event.key)) {\n return;\n }\n const fallback = KeyboardManager.#codeToKey(event.code);\n if (fallback === null || fallback === event.key) {\n return;\n }\n shortcuts = this.callbacks.get(fallback);\n if (!shortcuts) {\n return;\n }\n }\n const eventModifiers = (event.altKey ? KeyboardManager.ALT : 0) | (event.ctrlKey ? KeyboardManager.CTRL : 0) | (event.metaKey ? KeyboardManager.META : 0) | (event.shiftKey ? KeyboardManager.SHIFT : 0);\n const info = shortcuts.find(shortcut => shortcut.modifiers === eventModifiers);\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditableAnnotations = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #savedAllLayers = null;\n #savedEditorsByPage = null;\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #commentManager = null;\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #floatingToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isPointerDown = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #pdfDocument = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #viewerAlert = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\"Space\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\"], proto.unselectAll], [[\"ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, viewerAlert, altTextManager, commentManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#viewerAlert = viewerAlert;\n this.#altTextManager = altTextManager;\n this.#commentManager = commentManager;\n this.#signatureManager = signatureManager;\n this.#pdfDocument = pdfDocument;\n this._eventBus = eventBus;\n const evtOpts = {\n signal,\n ...internalOpt\n };\n eventBus.on(\"editingaction\", this.onEditingAction.bind(this), evtOpts);\n eventBus.on(\"pagechanging\", this.onPageChanging.bind(this), evtOpts);\n eventBus.on(\"scalechanging\", this.onScaleChanging.bind(this), evtOpts);\n eventBus.on(\"rotationchanging\", this.onRotationChanging.bind(this), evtOpts);\n eventBus.on(\"setpreference\", this.onSetPreference.bind(this), evtOpts);\n eventBus.on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), evtOpts);\n window.addEventListener(\"pointerdown\", () => {\n this.#isPointerDown = true;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"pointerup\", () => {\n this.#isPointerDown = false;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"beforeunload\", this.endCurrentEditing.bind(this), {\n capture: true,\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n commentManager?.setSidebarUiManager(this);\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#commentManager?.destroy();\n this.#signatureManager?.destroy();\n this.#floatingToolbar?.hide();\n this.#floatingToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n this.#allEditableAnnotations = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n this.#pdfDocument = null;\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get _highlightColors() {\n return shadow(this, \"_highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => {\n pair = pair.split(\"=\").map(x => x.trim());\n pair[1] = pair[1].toUpperCase();\n return pair;\n })) : null);\n }\n get highlightColors() {\n const {\n _highlightColors\n } = this;\n if (!_highlightColors) {\n return shadow(this, \"highlightColors\", null);\n }\n const map = new Map();\n const hasHCM = !!this.#pageColors;\n for (const [name, color] of _highlightColors) {\n const isNameForHCM = name.endsWith(\"_HCM\");\n if (hasHCM && isNameForHCM) {\n map.set(name.replace(\"_HCM\", \"\"), color);\n continue;\n }\n if (!hasHCM && !isNameForHCM) {\n map.set(name, color);\n }\n }\n return shadow(this, \"highlightColors\", map);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n getNonHCMColor(color) {\n if (!this._highlightColors) {\n return color;\n }\n const colorName = this.highlightColorNames.get(color);\n return this._highlightColors.get(colorName) || color;\n }\n getNonHCMColorName(color) {\n return this.highlightColorNames.get(color) || color;\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n hasCommentManager() {\n return !!this.#commentManager;\n }\n editComment(editor, posX, posY, options) {\n this.#commentManager?.showDialog(this, editor, posX, posY, options);\n }\n selectComment(pageIndex, uid) {\n const layer = this.#allLayers.get(pageIndex);\n const editor = layer?.getEditorByUID(uid);\n editor?.toggleComment(true, true);\n }\n updateComment(editor) {\n this.#commentManager?.updateComment(editor.getData());\n }\n updatePopupColor(editor) {\n this.#commentManager?.updatePopupColor(editor);\n }\n removeComment(editor) {\n this.#commentManager?.removeComments([editor.uid]);\n }\n deleteComment(editor, savedData) {\n const undo = () => {\n editor.comment = savedData;\n };\n const cmd = () => {\n this._editorUndoBar?.show(undo, \"comment\");\n this.toggleComment(null);\n editor.comment = null;\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n toggleComment(editor, isSelected, visibility = undefined) {\n this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n }\n makeCommentColor(color, opacity) {\n return color && this.#commentManager?.makeCommentColor(color, opacity) || null;\n }\n getCommentDialogElement() {\n return this.#commentManager?.dialogElement || null;\n }\n async waitForEditorsRendered(pageNumber) {\n if (this.#allLayers.has(pageNumber - 1)) {\n return;\n }\n const {\n resolve,\n promise\n } = Promise.withResolvers();\n const onEditorsRendered = evt => {\n if (evt.pageNumber === pageNumber) {\n this._eventBus.off(\"editorsrendered\", onEditorsRendered);\n resolve();\n }\n };\n this._eventBus.on(\"editorsrendered\", onEditorsRendered, internalOpt);\n await promise;\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal,\n ...internalOpt\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n deletePage(id) {\n for (const editor of this.getEditors(id)) {\n editor.remove();\n }\n this.#allLayers.delete(id);\n if (this.#currentPageIndex === id) {\n this.#currentPageIndex = 0;\n }\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\", comment = false) {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n const editor = layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n if (comment) {\n editor?.editComment();\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n commentSelection(methodOfCreation = \"\") {\n this.highlightSelection(methodOfCreation, true);\n }\n endCurrentEditing() {\n this.commitOrRemove();\n this.currentLayer?.endDrawingSession(false);\n }\n #displayFloatingToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#floatingToolbar ||= new FloatingToolbar(this);\n this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n getAndRemoveDataFromAnnotationStorage(annotationId) {\n if (!this.#annotationStorage) {\n return null;\n }\n const key = `${AnnotationEditorPrefix}${annotationId}`;\n const storedValue = this.#annotationStorage.getRawValue(key);\n if (storedValue) {\n this.#annotationStorage.remove(key);\n }\n return storedValue;\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n a11yAlert(messageId, args = null) {\n const viewerAlert = this.#viewerAlert;\n if (!viewerAlert) {\n return;\n }\n viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n if (args) {\n viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n } else {\n viewerAlert.removeAttribute(\"data-l10n-args\");\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n if (this.#isPointerDown) {\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n } else {\n activeLayer?.toggleDrawing(true);\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayFloatingToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.setEditingState(true);\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.setEditingState(false);\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n case \"commentSelection\":\n this.commentSelection(\"context_menu\");\n break;\n }\n }\n updatePageIndex(oldPageIndex, newPageIndex) {\n for (const editor of this.#savedEditorsByPage.get(oldPageIndex) || []) {\n editor.pageIndex = newPageIndex;\n }\n const layer = this.#savedAllLayers.get(oldPageIndex);\n if (layer) {\n layer.pageIndex = newPageIndex;\n this.#allLayers.set(newPageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n }\n startUpdatePages() {\n this.#savedAllLayers = new Map(this.#allLayers);\n this.#allLayers.clear();\n const savedEditorsByPage = this.#savedEditorsByPage = new Map();\n const saveEditor = editor => {\n savedEditorsByPage.getOrInsertComputed(editor.pageIndex, makeArr).push(editor);\n };\n for (const editor of this.#allEditors.values()) {\n saveEditor(editor);\n }\n for (const [id, editor] of this.#annotationStorage) {\n if (id.startsWith(AnnotationEditorPrefix) && !this.#allEditors.has(id) && Number.isInteger(editor?.pageIndex)) {\n saveEditor(editor);\n }\n }\n }\n endUpdatePages() {\n this.#savedAllLayers = null;\n this.#savedEditorsByPage = null;\n }\n clonePage(pageIndex, newPageIndex) {\n for (const editor of this.getEditors(pageIndex)) {\n const serialized = editor.serialize(editor.mode !== AnnotationEditorType.HIGHLIGHT);\n if (!serialized) {\n continue;\n }\n serialized.pageIndex = newPageIndex;\n serialized.id = this.getId();\n serialized.isClone = true;\n delete serialized.popupRef;\n this.#annotationStorage.setValue(serialized.id, serialized);\n }\n }\n findClonesForPage(layer) {\n const promises = [];\n const {\n pageIndex\n } = layer;\n for (const [id, editor] of this.#annotationStorage) {\n if (editor.pageIndex === pageIndex && editor.isClone) {\n this.#annotationStorage.remove(id);\n promises.push(layer.deserialize(editor).then(deserializedEditor => {\n if (deserializedEditor) {\n deserializedEditor.isClone = true;\n layer.addOrRebuild(deserializedEditor);\n }\n }));\n }\n }\n return Promise.all(promises);\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"editingstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromUser = false, isFromKeyboard = false, mustEnterInEditMode = false, editComment = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#currentDrawingSession?.commitOrRemove();\n if (this.#mode === AnnotationEditorType.POPUP) {\n this.#commentManager?.hideSidebar();\n }\n this.#commentManager?.destroyPopup();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n for (const editor of this.#allEditors.values()) {\n editor.hideStandaloneCommentButton();\n }\n this._editorUndoBar?.hide();\n this.toggleComment(null);\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n editor.addStandaloneCommentButton();\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n if (isFromUser) {\n CurrentPointers.clearPointerType();\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (mode === AnnotationEditorType.POPUP) {\n this.#allEditableAnnotations ||= await this.#pdfDocument.getAnnotationsByType(new Set(this.#editorTypes.map(editorClass => editorClass._editorType)));\n const elementIds = new Set();\n const allComments = [];\n for (const editor of this.#allEditors.values()) {\n const {\n annotationElementId,\n hasComment,\n deleted\n } = editor;\n if (annotationElementId) {\n elementIds.add(annotationElementId);\n }\n if (hasComment && !deleted) {\n allComments.push(editor.getData());\n }\n }\n for (const annotation of this.#allEditableAnnotations) {\n const {\n id,\n popupRef,\n contentsObj\n } = annotation;\n if (popupRef && contentsObj?.str && !elementIds.has(id) && !this.#deletedAnnotationsElementIds.has(id)) {\n allComments.push(annotation);\n }\n }\n this.#commentManager?.showSidebar(allComments);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.uid === editId) {\n this.setSelected(editor);\n if (editComment) {\n editor.editComment();\n } else if (mustEnterInEditMode) {\n editor.enterInEditMode();\n } else {\n editor.focus();\n }\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n if (this.hasSelection) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n } else {\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n *getEditors(pageIndex) {\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n yield editor;\n }\n }\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.updateToolbar({\n mode: editor.mode,\n editId: editor.uid\n });\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#commentManager?.destroyPopup();\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n this.#commentManager?.destroyPopup();\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n isEditingMode() {\n return this.#mode !== AnnotationEditorType.NONE;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n return this.#useNewAltTextFlow ? this.#altText === null : !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n return this.#useNewAltTextFlow ? this.#altText !== null || !!this.#guessedText : this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/comment.js\n\nclass Comment {\n #commentStandaloneButton = null;\n #commentToolbarButton = null;\n #commentWasFromKeyBoard = false;\n #editor = null;\n #initialText = null;\n #richText = null;\n #text = null;\n #date = null;\n #deleted = false;\n #popupPosition = null;\n constructor(editor) {\n this.#editor = editor;\n }\n renderForToolbar() {\n const button = this.#commentToolbarButton = document.createElement(\"button\");\n button.className = \"comment\";\n return this.#render(button, false);\n }\n renderForStandalone() {\n const button = this.#commentStandaloneButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const position = this.#editor.commentButtonPosition;\n if (position) {\n const {\n style\n } = button;\n style.insetInlineEnd = `calc(${100 * (this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0])}% - var(--comment-button-dim))`;\n style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n const color = this.#editor.commentButtonColor;\n if (color) {\n style.backgroundColor = color;\n }\n }\n return this.#render(button, true);\n }\n focusButton() {\n setTimeout(() => {\n (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n }, 0);\n }\n onUpdatedColor() {\n if (!this.#commentStandaloneButton) {\n return;\n }\n const color = this.#editor.commentButtonColor;\n if (color) {\n this.#commentStandaloneButton.style.backgroundColor = color;\n }\n this.#editor._uiManager.updatePopupColor(this.#editor);\n }\n get commentButtonWidth() {\n return (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) / this.#editor.parent.boundingClientRect.width;\n }\n get commentPopupPositionInLayer() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n if (!this.#commentStandaloneButton) {\n return null;\n }\n const {\n x,\n y,\n height\n } = this.#commentStandaloneButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#editor.parent.boundingClientRect;\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPositionInLayer(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n removeStandaloneCommentButton() {\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n }\n removeToolbarCommentButton() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentStandaloneButton) {\n return;\n }\n this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n this.#commentStandaloneButton.ariaExpanded = hasPopup;\n }\n #render(comment, isStandalone) {\n if (!this.#editor._uiManager.hasCommentManager()) {\n return null;\n }\n comment.tabIndex = \"0\";\n comment.ariaHasPopup = \"dialog\";\n if (isStandalone) {\n comment.ariaControls = \"commentPopup\";\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n } else {\n comment.ariaControlsElements = [this.#editor._uiManager.getCommentDialogElement()];\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-add-comment-button\");\n }\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return comment;\n }\n comment.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n if (isStandalone) {\n comment.addEventListener(\"focusin\", e => {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n comment.addEventListener(\"focusout\", e => {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n }\n comment.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n if (comment === this.#commentToolbarButton) {\n this.edit();\n } else {\n this.#editor.toggleComment(true);\n }\n };\n comment.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n comment.addEventListener(\"keydown\", event => {\n if (event.target === comment && event.key === \"Enter\") {\n this.#commentWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n comment.addEventListener(\"pointerenter\", () => {\n this.#editor.toggleComment(false, true);\n }, {\n signal\n });\n comment.addEventListener(\"pointerleave\", () => {\n this.#editor.toggleComment(false, false);\n }, {\n signal\n });\n return comment;\n }\n edit(options) {\n const position = this.commentPopupPositionInLayer;\n let posX, posY;\n if (position) {\n [posX, posY] = position;\n } else {\n [posX, posY] = this.#editor.commentButtonPosition;\n const {\n width,\n height,\n x,\n y\n } = this.#editor;\n posX = x + posX * width;\n posY = y + posY * height;\n }\n const parentDimensions = this.#editor.parent.boundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#editor._uiManager.editComment(this.#editor, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n finish() {\n if (!this.#commentToolbarButton) {\n return;\n }\n this.#commentToolbarButton.focus({\n focusVisible: this.#commentWasFromKeyBoard\n });\n this.#commentWasFromKeyBoard = false;\n }\n isDeleted() {\n return this.#deleted || this.#text === \"\";\n }\n isEmpty() {\n return this.#text === null;\n }\n hasBeenEdited() {\n return this.isDeleted() || this.#text !== this.#initialText;\n }\n serialize() {\n return this.data;\n }\n get data() {\n return {\n text: this.#text,\n richText: this.#richText,\n date: this.#date,\n deleted: this.isDeleted()\n };\n }\n set data(text) {\n if (text !== this.#text) {\n this.#richText = null;\n }\n if (text === null) {\n this.#text = \"\";\n this.#deleted = true;\n return;\n }\n this.#text = text;\n this.#date = new Date();\n this.#deleted = false;\n }\n restoreData({\n text,\n richText,\n date\n }) {\n this.#text = text;\n this.#richText = richText;\n this.#date = date;\n this.#deleted = false;\n }\n setInitialText(text, richText = null) {\n this.#initialText = text;\n this.data = text;\n this.#date = null;\n this.#richText = richText;\n }\n shown() {}\n destroy() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n this.#text = \"\";\n this.#richText = null;\n this.#date = null;\n this.#editor = null;\n this.#commentWasFromKeyBoard = false;\n this.#deleted = false;\n }\n}\n\n;// ./src/display/touch_manager.js\n\nfunction preventDefault(evt) {\n evt.preventDefault();\n}\nconst MIN_TOUCH_SPAN = 1e-4;\nfunction stopTouchEvent(evt) {\n if (evt.cancelable) {\n stopEvent(evt);\n return true;\n }\n evt.stopPropagation();\n return false;\n}\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #onPanning;\n #ownsGesture = false;\n #pointerDownAC = null;\n #signal;\n #touchIds = new Set();\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n #unconfirmedPinch = 0;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n onPanning = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#onPanning = onPanning;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n get MIN_TOUCH_DISTANCE_TO_SCALE() {\n return 4 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n this.#pruneTouchIds(evt);\n const touchIds = this.#touchIds;\n for (const {\n identifier\n } of evt.changedTouches) {\n touchIds.add(identifier);\n }\n if (touchIds.size === 1) {\n this.#armPointerDown();\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", preventDefault, opt);\n container.addEventListener(\"pointerup\", preventDefault, opt);\n this.#onPinchStart?.();\n }\n this.#ownsGesture = stopTouchEvent(evt);\n this.#setTouchInfo(evt);\n }\n #armPointerDown() {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n }\n #pruneTouchIds(evt) {\n const previous = this.#touchIds;\n if (previous.size === 0) {\n return;\n }\n const touchIds = this.#touchIds = new Set();\n for (const {\n identifier\n } of evt.touches) {\n if (previous.has(identifier)) {\n touchIds.add(identifier);\n }\n }\n }\n #getTrackedTouches(evt) {\n const touchIds = this.#touchIds;\n const touches = [];\n for (const touch of evt.touches) {\n if (touchIds.has(touch.identifier)) {\n touches.push(touch);\n }\n }\n return touches;\n }\n #setTouchInfo(evt) {\n const touches = this.#getTrackedTouches(evt);\n if (touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n const [touch0, touch1] = touches;\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY,\n panX: (touch0.clientX + touch1.clientX) / 2,\n panY: (touch0.clientY + touch1.clientY) / 2,\n screenPanX: (touch0.screenX + touch1.screenX) / 2,\n screenPanY: (touch0.screenY + touch1.screenY) / 2\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo) {\n return;\n }\n const touches = this.#getTrackedTouches(evt);\n if (touches.length !== 2) {\n return;\n }\n const wasOwned = this.#ownsGesture;\n this.#ownsGesture = stopTouchEvent(evt);\n if (!this.#ownsGesture) {\n return;\n }\n if (!wasOwned) {\n this.#setTouchInfo(evt);\n return;\n }\n const [touch0, touch1] = touches;\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y,\n panX: pPanX,\n panY: pPanY\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const panX = (touch0.clientX + touch1.clientX) / 2;\n const panY = (touch0.clientY + touch1.clientY) / 2;\n touchInfo.panX = panX;\n touchInfo.panY = panY;\n const dx = panX - pPanX;\n const dy = panY - pPanY;\n const screenPanX = (screen0X + screen1X) / 2;\n const screenPanY = (screen0Y + screen1Y) / 2;\n const translation = Math.hypot(screenPanX - touchInfo.screenPanX, screenPanY - touchInfo.screenPanY);\n touchInfo.screenPanX = screenPanX;\n touchInfo.screenPanY = screenPanY;\n const distance = Math.hypot(currGapX, currGapY);\n const pDistance = Math.hypot(prevGapX, prevGapY);\n const minDistance = this.#isPinching ? this.MIN_TOUCH_DISTANCE_TO_SCALE : this.MIN_TOUCH_DISTANCE_TO_PINCH + 2 * translation;\n if (distance < MIN_TOUCH_SPAN || pDistance < MIN_TOUCH_SPAN || Math.abs(pDistance - distance) <= minDistance) {\n if (dx || dy) {\n this.#onPanning?.(dx, dy);\n }\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n const direction = Math.sign(distance - pDistance);\n if (!this.#isPinching) {\n this.#isPinching = true;\n this.#unconfirmedPinch = direction;\n if (dx || dy) {\n this.#onPanning?.(dx, dy);\n }\n return;\n }\n if (this.#unconfirmedPinch) {\n const unconfirmed = this.#unconfirmedPinch;\n this.#unconfirmedPinch = 0;\n if (direction !== unconfirmed && Math.abs(distance - pDistance) <= 2 * translation) {\n this.#isPinching = false;\n if (dx || dy) {\n this.#onPanning?.(dx, dy);\n }\n return;\n }\n }\n this.#onPinching?.([pPanX, pPanY], pDistance, distance, dx, dy);\n }\n #onTouchEnd(evt) {\n this.#pruneTouchIds(evt);\n if (this.#touchIds.size >= 2) {\n this.#setTouchInfo(evt);\n return;\n }\n const wasTracking = !!this.#touchInfo;\n this.#endGesture();\n if (this.#touchIds.size === 1) {\n this.#armPointerDown();\n }\n if (wasTracking) {\n stopTouchEvent(evt);\n }\n }\n #endGesture() {\n this.#touchInfo = null;\n this.#isPinching = false;\n this.#unconfirmedPinch = 0;\n this.#ownsGesture = false;\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n }\n destroy() {\n this.#endGesture();\n this.#touchIds.clear();\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #comment = null;\n #commentStandaloneButton = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #fakeAnnotation = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n isSelected = false;\n _isCopy = false;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nAlert = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n this.annotationElementId = parameters.annotationElementId || null;\n this.creationDate = parameters.creationDate || new Date();\n this.modificationDate = parameters.modificationDate || null;\n this.canAddComment = true;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n updatePageIndex(newPageIndex) {\n this.pageIndex = newPageIndex;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n get mode() {\n return Object.getPrototypeOf(this).constructor._editorType;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor._uiManager.getId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nAlert ??= Object.freeze({\n highlight: \"pdfjs-editor-highlight-added-alert\",\n freetext: \"pdfjs-editor-freetext-added-alert\",\n ink: \"pdfjs-editor-ink-added-alert\",\n stamp: \"pdfjs-editor-stamp-added-alert\",\n signature: \"pdfjs-editor-signature-added-alert\"\n });\n AnnotationEditor._l10nResizer ??= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get uid() {\n return this.annotationElementId || this.id;\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n _moveAfterPaste(baseX, baseY) {\n if (this.isClone) {\n delete this.isClone;\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims() {\n const {\n div: {\n style\n },\n width,\n height\n } = this;\n style.width = `${(100 * width).toFixed(2)}%`;\n style.height = `${(100 * height).toFixed(2)}%`;\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n this.setDims();\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n get toolbarButtons() {\n return null;\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n const {\n toolbarButtons\n } = this;\n if (toolbarButtons) {\n for (const [name, tool] of toolbarButtons) {\n await this._editToolbar.addButton(name, tool);\n }\n }\n if (!this.hasComment) {\n this._editToolbar.addButton(\"comment\", this.addCommentButton());\n }\n this._editToolbar.addButton(\"delete\");\n return this._editToolbar;\n }\n addCommentButtonInToolbar() {\n this._editToolbar?.addButtonBefore(\"comment\", this.addCommentButton(), \".deleteButton\");\n }\n removeCommentButtonFromToolbar() {\n this._editToolbar?.removeButton(\"comment\");\n }\n removeEditToolbar() {\n this._editToolbar?.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n createAltText() {\n if (!this.#altText) {\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n }\n return this.#altText;\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n focusCommentButton() {\n this.#comment?.focusButton();\n }\n addCommentButton() {\n return this.canAddComment ? this.#comment ||= new Comment(this) : null;\n }\n addStandaloneCommentButton() {\n if (!this._uiManager.hasCommentManager()) {\n return;\n }\n if (this.#commentStandaloneButton) {\n if (this._uiManager.isEditingMode()) {\n this.#commentStandaloneButton.classList.remove(\"hidden\");\n }\n return;\n }\n if (!this.hasComment) {\n return;\n }\n this.#commentStandaloneButton = this.#comment.renderForStandalone();\n this.div.append(this.#commentStandaloneButton);\n }\n removeStandaloneCommentButton() {\n this.#comment.removeStandaloneCommentButton();\n this.#commentStandaloneButton = null;\n }\n hideStandaloneCommentButton() {\n this.#commentStandaloneButton?.classList.add(\"hidden\");\n }\n get comment() {\n if (!this.#comment) {\n return null;\n }\n const {\n data: {\n richText,\n text,\n date,\n deleted\n }\n } = this.#comment;\n return {\n text,\n richText,\n date,\n deleted,\n color: this.getNonHCMColor(),\n opacity: this.opacity ?? 1\n };\n }\n set comment(value) {\n this.#comment ||= new Comment(this);\n if (typeof value === \"object\" && value !== null) {\n this.#comment.restoreData(value);\n } else {\n this.#comment.data = value;\n }\n if (this.hasComment) {\n this.removeCommentButtonFromToolbar();\n this.addStandaloneCommentButton();\n this._uiManager.updateComment(this);\n } else {\n this.addCommentButtonInToolbar();\n this.removeStandaloneCommentButton();\n this._uiManager.removeComment(this);\n }\n }\n setCommentData({\n comment,\n popupRef,\n richText\n }) {\n if (!popupRef) {\n return;\n }\n this.#comment ||= new Comment(this);\n this.#comment.setInitialText(comment, richText);\n if (!this.annotationElementId) {\n return;\n }\n const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);\n if (storedData) {\n this.updateFromAnnotationLayer(storedData);\n }\n }\n get hasEditedComment() {\n return this.#comment?.hasBeenEdited();\n }\n get hasDeletedComment() {\n return this.#comment?.isDeleted();\n }\n get hasComment() {\n return !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted();\n }\n async editComment(options) {\n this.#comment ||= new Comment(this);\n this.#comment.edit(options);\n }\n toggleComment(isSelected, visibility = undefined) {\n if (this.hasComment) {\n this._uiManager.toggleComment(this, isSelected, visibility);\n }\n }\n setSelectedCommentButton(selected) {\n this.#comment.setSelectedButton(selected);\n }\n addComment(serialized) {\n if (this.hasEditedComment) {\n const DEFAULT_POPUP_WIDTH = 180;\n const DEFAULT_POPUP_HEIGHT = 100;\n const [,,, trY] = serialized.rect;\n const [pageWidth] = this.pageDimensions;\n const [pageX] = this.pageTranslation;\n const blX = pageX + pageWidth + 1;\n const blY = trY - DEFAULT_POPUP_HEIGHT;\n const trX = blX + DEFAULT_POPUP_WIDTH;\n serialized.popup = {\n contents: this.comment.text,\n deleted: this.comment.deleted,\n rect: [blX, blY, trX, trY]\n };\n }\n }\n updateFromAnnotationLayer({\n popup: {\n contents,\n deleted\n }\n }) {\n this.#comment.data = deleted ? null : contents;\n }\n get parentBoundingClientRect() {\n return this.parent.boundingClientRect;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n this.#addTouchManager();\n this.addStandaloneCommentButton();\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._uiManager.toggleComment(this, true, false);\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getPDFRect() {\n return this.getRect(0, 0);\n }\n getNonHCMColor() {\n return this.color && AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n }\n onUpdatedColor() {\n this.#comment?.onUpdatedColor();\n }\n getData() {\n const {\n comment: {\n text: str,\n color,\n date,\n opacity,\n deleted,\n richText\n },\n uid: id,\n pageIndex,\n creationDate,\n modificationDate\n } = this;\n return {\n id,\n pageIndex,\n rect: this.getPDFRect(),\n richText,\n contentsObj: {\n str\n },\n creationDate,\n modificationDate: date || modificationDate,\n popupRef: !deleted,\n color,\n opacity\n };\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n #addTouchManager() {\n if (this.#touchManager || !this.div || !this.isResizable || !this._uiManager._supportsPinchToZoom) {\n return;\n }\n this.#touchManager = new TouchManager({\n container: this.div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n this.#addTouchManager();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n return {\n annotationType: this.mode,\n pageIndex: this.pageIndex,\n rect: this.getPDFRect(),\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: uiManager.getId(),\n uiManager,\n annotationElementId: data.annotationElementId,\n creationDate: data.creationDate,\n modificationDate: data.modificationDate\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n this.#touchManager?.destroy();\n this.#touchManager = null;\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n this.hideCommentPopup();\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n get commentButtonPosition() {\n return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n }\n get commentButtonPositionInPage() {\n const {\n commentButtonPosition: [posX, posY]\n } = this;\n const [blX, blY, trX, trY] = this.getPDFRect();\n return [AnnotationEditor._round(blX + (trX - blX) * posX), AnnotationEditor._round(blY + (trY - blY) * (1 - posY))];\n }\n get commentButtonColor() {\n return this._uiManager.makeCommentColor(this.getNonHCMColor(), this.opacity);\n }\n get commentPopupPosition() {\n return this.#comment.commentPopupPositionInLayer;\n }\n set commentPopupPosition(pos) {\n this.#comment.commentPopupPositionInLayer = pos;\n }\n hasDefaultPopupPosition() {\n return this.#comment.hasDefaultPopupPosition();\n }\n get commentButtonWidth() {\n return this.#comment.commentButtonWidth;\n }\n get elementBeforePopup() {\n return this.div;\n }\n setCommentButtonStates(options) {\n this.#comment?.setCommentButtonStates(options);\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstElementChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstElementChild.before(this.#resizersDiv.lastElementChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstElementChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n if (this.isSelected && this._editToolbar) {\n this._editToolbar.show();\n return;\n }\n this.isSelected = true;\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n focus() {\n if (this.div && !this.div.contains(document.activeElement)) {\n setTimeout(() => this.div?.focus({\n preventScroll: true\n }), 0);\n }\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n this.hideCommentPopup();\n }\n hideCommentPopup() {\n if (this.hasComment) {\n this._uiManager.toggleComment(null);\n }\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n if (event.target.nodeName === \"BUTTON\") {\n return;\n }\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.uid\n });\n }\n getElementForAltText() {\n return this.div;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n updateFakeAnnotationElement(annotationLayer) {\n if (!this.#fakeAnnotation && !this.deleted) {\n this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n return;\n }\n if (this.deleted) {\n this.#fakeAnnotation.remove();\n this.#fakeAnnotation = null;\n return;\n }\n if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n this.#fakeAnnotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n }\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstElementChild\n } = annotation.container;\n if (firstElementChild?.nodeName === \"DIV\" && firstElementChild.classList.contains(\"annotationContent\")) {\n firstElementChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #editorsMap = null;\n #storage = new Map();\n onSetModified = null;\n onResetModified = null;\n onAnnotationEditor = null;\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n const storedValue = this.#storage.get(key);\n if (storedValue === undefined) {\n return;\n }\n if (storedValue instanceof AnnotationEditor) {\n this.#editorsMap.delete(storedValue.annotationElementId);\n }\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (this.#storage.values().some(v => v instanceof AnnotationEditor)) {\n return;\n }\n this.onAnnotationEditor?.(null);\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor) {\n (this.#editorsMap ||= new Map()).set(value.annotationElementId, value);\n this.onAnnotationEditor?.(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n this.onSetModified?.();\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n this.onResetModified?.();\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (val.page) {\n val.pageIndex = val.page._pageIndex;\n delete val.page;\n }\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n let numberOfEditedComments = 0;\n let numberOfDeletedComments = 0;\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n if (value.popup) {\n if (value.popup.deleted) {\n numberOfDeletedComments += 1;\n } else {\n numberOfEditedComments += 1;\n }\n }\n continue;\n }\n if (value.isCommentDeleted) {\n numberOfDeletedComments += 1;\n } else if (value.hasEditedComment) {\n numberOfEditedComments += 1;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n typeToEditor.getOrInsertComputed(type, () => Object.getPrototypeOf(value).constructor);\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n const counters = map.getOrInsertComputed(key, makeMap);\n counters.set(val, (counters.get(val) ?? 0) + 1);\n }\n }\n if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n stats ||= Object.create(null);\n stats.comments = {\n deleted: numberOfDeletedComments,\n edited: numberOfEditedComments\n };\n }\n if (!stats) {\n return null;\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n updateEditor(annotationId, data) {\n const value = this.#editorsMap?.get(annotationId);\n if (value) {\n value.updateFromAnnotationLayer(data);\n return true;\n }\n return false;\n }\n getEditor(annotationId) {\n return this.#editorsMap?.get(annotationId) || null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n if (this.#editorsMap) {\n for (const value of this.#editorsMap.values()) {\n if (!value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n }\n let hash = \"\";\n if (ids.length) {\n const h = new MurmurHash3_64();\n h.update(ids.join(\",\"));\n hash = h.hexdigest();\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable = SerializableEmpty;\n constructor(parent) {\n super();\n const {\n serializable\n } = parent;\n if (serializable === SerializableEmpty) {\n return;\n }\n const {\n map,\n hash,\n transfer\n } = serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer: []\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/canvas_dependency_tracker.js\n\n\n\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\nconst {\n floor,\n ceil\n} = Math;\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\nfunction scaleCharBBox(scaleX, scaleY, x, y, bbox) {\n let temp;\n if (scaleX) {\n if (scaleX < 0) {\n temp = bbox[0];\n bbox[0] = bbox[2];\n bbox[2] = temp;\n }\n bbox[0] *= scaleX;\n bbox[2] *= scaleX;\n if (scaleY < 0) {\n temp = bbox[1];\n bbox[1] = bbox[3];\n bbox[3] = temp;\n }\n bbox[1] *= scaleY;\n bbox[3] *= scaleY;\n } else {\n bbox.fill(0);\n }\n bbox[0] += x;\n bbox[1] += y;\n bbox[2] += x;\n bbox[3] += y;\n}\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\nclass BBoxReader {\n #bboxes;\n #coords;\n constructor(bboxes, coords) {\n this.#bboxes = bboxes;\n this.#coords = coords;\n }\n get length() {\n return this.#bboxes.length;\n }\n isEmpty(i) {\n return this.#bboxes[i] === EMPTY_BBOX;\n }\n minX(i) {\n return this.#coords[i * 4 + 0] / 256;\n }\n minY(i) {\n return this.#coords[i * 4 + 1] / 256;\n }\n maxX(i) {\n return (this.#coords[i * 4 + 2] + 1) / 256;\n }\n maxY(i) {\n return (this.#coords[i * 4 + 3] + 1) / 256;\n }\n}\nconst ensureDebugMetadata = (map, key) => map?.getOrInsertComputed(key, () => ({\n dependencies: new Set(),\n isRenderingOperation: false\n}));\nclass CanvasBBoxTracker {\n #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n #pendingBBox = new Float64Array(BBOX_INIT);\n _pendingBBoxIdx = -1;\n #canvasWidth;\n #canvasHeight;\n #bboxesCoords;\n #bboxes;\n _savesStack = [];\n _markedContentStack = [];\n constructor(canvas, operationsCount) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n this.#initializeBBoxes(operationsCount);\n }\n growOperationsCount(operationsCount) {\n if (operationsCount >= this.#bboxes.length) {\n this.#initializeBBoxes(operationsCount, this.#bboxes);\n }\n }\n #initializeBBoxes(operationsCount, oldBBoxes) {\n const buffer = new ArrayBuffer(operationsCount * 4);\n this.#bboxesCoords = new Uint8ClampedArray(buffer);\n this.#bboxes = new Uint32Array(buffer);\n if (oldBBoxes && oldBBoxes.length > 0) {\n this.#bboxes.set(oldBBoxes);\n this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n } else {\n this.#bboxes.fill(EMPTY_BBOX);\n }\n }\n get clipBox() {\n return this.#clipBox;\n }\n save(opIdx) {\n this.#clipBox = {\n __proto__: this.#clipBox\n };\n this._savesStack.push(opIdx);\n return this;\n }\n restore(opIdx, onSavePopped) {\n const previous = Object.getPrototypeOf(this.#clipBox);\n if (previous === null) {\n return this;\n }\n this.#clipBox = previous;\n const lastSave = this._savesStack.pop();\n if (lastSave !== undefined) {\n onSavePopped?.(lastSave, opIdx);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n recordOpenMarker(idx) {\n this._savesStack.push(idx);\n return this;\n }\n getOpenMarker() {\n return this._savesStack.length === 0 ? null : this._savesStack.at(-1);\n }\n recordCloseMarker(opIdx, onSavePopped) {\n const lastSave = this._savesStack.pop();\n if (lastSave !== undefined) {\n onSavePopped?.(lastSave, opIdx);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n beginMarkedContent(opIdx) {\n this._markedContentStack.push(opIdx);\n return this;\n }\n endMarkedContent(opIdx, onSavePopped) {\n const lastSave = this._markedContentStack.pop();\n if (lastSave !== undefined) {\n onSavePopped?.(lastSave, opIdx);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n pushBaseTransform(ctx) {\n this.#baseTransformStack.push(Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform()));\n return this;\n }\n popBaseTransform() {\n if (this.#baseTransformStack.length > 1) {\n this.#baseTransformStack.pop();\n }\n return this;\n }\n resetBBox(idx) {\n if (this._pendingBBoxIdx !== idx) {\n this._pendingBBoxIdx = idx;\n this.#pendingBBox.set(BBOX_INIT, 0);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n const clipBox = BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n const intersection = Util.intersect(this.#clipBox, clipBox);\n if (intersection) {\n this.#clipBox[0] = intersection[0];\n this.#clipBox[1] = intersection[1];\n this.#clipBox[2] = intersection[2];\n this.#clipBox[3] = intersection[3];\n } else {\n this.#clipBox[0] = this.#clipBox[1] = Infinity;\n this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n const clipBox = this.#clipBox;\n if (clipBox[0] === Infinity) {\n return this;\n }\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n if (clipBox[0] === -Infinity) {\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, this.#pendingBBox);\n return this;\n }\n const bbox = BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n this.#pendingBBox[0] = MathClamp(bbox[0], clipBox[0], this.#pendingBBox[0]);\n this.#pendingBBox[1] = MathClamp(bbox[1], clipBox[1], this.#pendingBBox[1]);\n this.#pendingBBox[2] = MathClamp(bbox[2], this.#pendingBBox[2], clipBox[2]);\n this.#pendingBBox[3] = MathClamp(bbox[3], this.#pendingBBox[3], clipBox[3]);\n return this;\n }\n recordFullPageBBox(idx) {\n this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n return this;\n }\n recordOperation(idx, preserve = false, dependencyLists) {\n if (this._pendingBBoxIdx !== idx) {\n return this;\n }\n const minX = floor(this.#pendingBBox[0] * 256 / this.#canvasWidth);\n const minY = floor(this.#pendingBBox[1] * 256 / this.#canvasHeight);\n const maxX = ceil(this.#pendingBBox[2] * 256 / this.#canvasWidth);\n const maxY = ceil(this.#pendingBBox[3] * 256 / this.#canvasHeight);\n expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n if (dependencyLists) {\n for (const dependencies of dependencyLists) {\n for (const depIdx of dependencies) {\n if (depIdx !== idx) {\n expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n }\n }\n }\n }\n if (!preserve) {\n this._pendingBBoxIdx = -1;\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (this._pendingBBoxIdx === idx) {\n this._pendingBBoxIdx = -1;\n this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n }\n return this;\n }\n take() {\n return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n recordSimpleData(name, idx) {\n return this;\n }\n recordIncrementalData(name, idx) {\n return this;\n }\n resetIncrementalData(name, idx) {\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n return this;\n }\n getSimpleIndex(dependencyName) {\n return undefined;\n }\n recordDependencies(idx, dependencyNames) {\n return this;\n }\n recordNamedDependency(idx, name) {\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n return this;\n }\n}\nclass CanvasDependencyTracker {\n #simple = {\n __proto__: null\n };\n #incremental = {\n __proto__: null,\n transform: [],\n moveText: [],\n sameLineText: [],\n [FORCED_DEPENDENCY_LABEL]: []\n };\n #namedDependencies = new Map();\n #pendingDependencies = new Set();\n #fontBBoxTrustworthy = new Map();\n #debugMetadata;\n #recordDebugMetadataDepenencyAfterRestore;\n #bboxTracker;\n constructor(bboxTracker, recordDebugMetadata = false) {\n this.#bboxTracker = bboxTracker;\n if (recordDebugMetadata) {\n this.#debugMetadata = new Map();\n this.#recordDebugMetadataDepenencyAfterRestore = (lastSave, opIdx) => {\n ensureDebugMetadata(this.#debugMetadata, opIdx).dependencies.add(lastSave);\n };\n }\n }\n get clipBox() {\n return this.#bboxTracker.clipBox;\n }\n growOperationsCount(operationsCount) {\n this.#bboxTracker.growOperationsCount(operationsCount);\n }\n save(opIdx) {\n this.#simple = {\n __proto__: this.#simple\n };\n this.#incremental = {\n __proto__: this.#incremental,\n transform: {\n __proto__: this.#incremental.transform\n },\n moveText: {\n __proto__: this.#incremental.moveText\n },\n sameLineText: {\n __proto__: this.#incremental.sameLineText\n },\n [FORCED_DEPENDENCY_LABEL]: {\n __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL]\n }\n };\n this.#bboxTracker.save(opIdx);\n return this;\n }\n restore(opIdx) {\n this.#bboxTracker.restore(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n const previous = Object.getPrototypeOf(this.#simple);\n if (previous === null) {\n return this;\n }\n this.#simple = previous;\n this.#incremental = Object.getPrototypeOf(this.#incremental);\n return this;\n }\n recordOpenMarker(opIdx) {\n this.#bboxTracker.recordOpenMarker(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n return this;\n }\n getOpenMarker() {\n return this.#bboxTracker.getOpenMarker();\n }\n recordCloseMarker(opIdx) {\n this.#bboxTracker.recordCloseMarker(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n return this;\n }\n beginMarkedContent(opIdx) {\n this.#bboxTracker.beginMarkedContent(opIdx);\n return this;\n }\n endMarkedContent(opIdx) {\n this.#bboxTracker.endMarkedContent(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n return this;\n }\n pushBaseTransform(ctx) {\n this.#bboxTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#bboxTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#simple[name] = idx;\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#incremental[name].push(idx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#incremental[name].length = 0;\n return this;\n }\n recordNamedData(name, idx) {\n this.#namedDependencies.set(name, idx);\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n }\n recordFutureForcedDependency(name, idx) {\n this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n for (const name of names) {\n if (name in this.#simple) {\n this.recordFutureForcedDependency(name, this.#simple[name]);\n }\n }\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n for (const dep of this.#pendingDependencies) {\n this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n }\n return this;\n }\n resetBBox(idx) {\n this.#bboxTracker.resetBBox(idx);\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n this.#bboxTracker.recordClipBox(idx, ctx, minX, maxX, minY, maxY);\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n this.#bboxTracker.recordBBox(idx, ctx, minX, maxX, minY, maxY);\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n const fontBBox = font.bbox;\n let isBBoxTrustworthy;\n let computedBBox;\n if (fontBBox) {\n isBBoxTrustworthy = fontBBox[2] !== fontBBox[0] && fontBBox[3] !== fontBBox[1] && this.#fontBBoxTrustworthy.get(font);\n if (isBBoxTrustworthy !== false) {\n computedBBox = [0, 0, 0, 0];\n Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n if (scale !== 1 || x !== 0 || y !== 0) {\n scaleCharBBox(scale, -scale, x, y, computedBBox);\n }\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n }\n if (!getMeasure) {\n return this.recordFullPageBBox(idx);\n }\n const measure = getMeasure();\n if (fontBBox && computedBBox && isBBoxTrustworthy === undefined) {\n isBBoxTrustworthy = computedBBox[0] <= x - measure.actualBoundingBoxLeft && computedBBox[2] >= x + measure.actualBoundingBoxRight && computedBBox[1] <= y - measure.actualBoundingBoxAscent && computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n return this.recordBBox(idx, ctx, x - measure.actualBoundingBoxLeft, x + measure.actualBoundingBoxRight, y - measure.actualBoundingBoxAscent, y + measure.actualBoundingBoxDescent);\n }\n recordFullPageBBox(idx) {\n this.#bboxTracker.recordFullPageBBox(idx);\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#simple[dependencyName];\n }\n recordDependencies(idx, dependencyNames) {\n const pendingDependencies = this.#pendingDependencies;\n const simple = this.#simple;\n const incremental = this.#incremental;\n for (const name of dependencyNames) {\n if (name in this.#simple) {\n pendingDependencies.add(simple[name]);\n } else if (name in incremental) {\n incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n }\n }\n return this;\n }\n recordNamedDependency(idx, name) {\n if (this.#namedDependencies.has(name)) {\n this.#pendingDependencies.add(this.#namedDependencies.get(name));\n }\n return this;\n }\n recordOperation(idx, preserve = false) {\n this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n if (this.#debugMetadata) {\n const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n const {\n dependencies\n } = metadata;\n this.#pendingDependencies.forEach(dependencies.add, dependencies);\n this.#bboxTracker._savesStack.forEach(dependencies.add, dependencies);\n this.#bboxTracker._markedContentStack.forEach(dependencies.add, dependencies);\n dependencies.delete(idx);\n metadata.isRenderingOperation = true;\n }\n const needsCleanup = !preserve && idx === this.#bboxTracker._pendingBBoxIdx;\n this.#bboxTracker.recordOperation(idx, preserve, [this.#pendingDependencies, this.#bboxTracker._savesStack, this.#bboxTracker._markedContentStack]);\n if (needsCleanup) {\n this.#pendingDependencies.clear();\n }\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n const deps = Array.from(this.#pendingDependencies);\n this.recordOperation(idx, preserve);\n this.recordIncrementalData(\"sameLineText\", idx);\n for (const dep of deps) {\n this.recordIncrementalData(\"sameLineText\", dep);\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx, preserve = false) {\n const needsCleanup = !preserve && idx === this.#bboxTracker._pendingBBoxIdx;\n this.#bboxTracker.bboxToClipBoxDropOperation(idx);\n if (needsCleanup) {\n this.#pendingDependencies.clear();\n }\n return this;\n }\n take() {\n this.#fontBBoxTrustworthy.clear();\n return this.#bboxTracker.take();\n }\n takeDebugMetadata() {\n return this.#debugMetadata;\n }\n}\nclass CanvasNestedDependencyTracker {\n #dependencyTracker;\n #opIdx;\n #ignoreBBoxes;\n #nestingLevel = 0;\n #savesLevel = 0;\n constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n if (dependencyTracker instanceof CanvasNestedDependencyTracker && dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes) {\n return dependencyTracker;\n }\n this.#dependencyTracker = dependencyTracker;\n this.#opIdx = opIdx;\n this.#ignoreBBoxes = !!ignoreBBoxes;\n }\n get clipBox() {\n return this.#dependencyTracker.clipBox;\n }\n growOperationsCount() {\n throw new Error(\"Unreachable\");\n }\n save(opIdx) {\n this.#savesLevel++;\n this.#dependencyTracker.save(this.#opIdx);\n return this;\n }\n restore(opIdx) {\n if (this.#savesLevel > 0) {\n this.#dependencyTracker.restore(this.#opIdx);\n this.#savesLevel--;\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#nestingLevel++;\n return this;\n }\n getOpenMarker() {\n return this.#nestingLevel > 0 ? this.#opIdx : this.#dependencyTracker.getOpenMarker();\n }\n recordCloseMarker(idx) {\n this.#nestingLevel--;\n return this;\n }\n beginMarkedContent(opIdx) {\n return this;\n }\n endMarkedContent(opIdx) {\n return this;\n }\n pushBaseTransform(ctx) {\n this.#dependencyTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#dependencyTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#dependencyTracker.recordSimpleDataFromNamed(name, depName, this.#opIdx);\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n return this;\n }\n resetBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.resetBBox(this.#opIdx);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordClipBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordBBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordCharacterBBox(this.#opIdx, ctx, font, scale, x, y, getMeasure);\n }\n return this;\n }\n recordFullPageBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n }\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#dependencyTracker.getSimpleIndex(dependencyName);\n }\n recordDependencies(idx, dependencyNames) {\n this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n return this;\n }\n recordNamedDependency(idx, name) {\n this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n return this;\n }\n recordOperation(idx) {\n this.#dependencyTracker.recordOperation(this.#opIdx, true);\n return this;\n }\n recordShowTextOperation(idx) {\n this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n }\n return this;\n }\n take() {\n throw new Error(\"Unreachable\");\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n}\nconst Dependencies = {\n stroke: [\"path\", \"transform\", \"filter\", \"strokeColor\", \"strokeAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"dash\"],\n fill: [\"path\", \"transform\", \"filter\", \"fillColor\", \"fillAlpha\", \"globalCompositeOperation\", \"SMask\"],\n imageXObject: [\"transform\", \"SMask\", \"filter\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"],\n rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n showText: [\"transform\", \"leading\", \"charSpacing\", \"wordSpacing\", \"hScale\", \"textRise\", \"moveText\", \"textMatrix\", \"font\", \"fontObj\", \"filter\", \"fillColor\", \"textRenderingMode\", \"SMask\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\", \"sameLineText\"],\n transform: [\"transform\"],\n transformAndFill: [\"transform\", \"fillColor\"]\n};\nclass CanvasImagesTracker {\n #canvasWidth;\n #canvasHeight;\n #capacity = 4;\n #count = 0;\n #coords = new CanvasImagesTracker.#CoordsArray(this.#capacity * 6);\n static #CoordsArray = FeatureTest.isFloat16ArraySupported ? Float16Array : Float32Array;\n constructor(canvas) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n }\n record(ctx, width, height, clipBox) {\n if (this.#count === this.#capacity) {\n this.#capacity *= 2;\n const newCoords = new CanvasImagesTracker.#CoordsArray(this.#capacity * 6);\n newCoords.set(this.#coords);\n this.#coords = newCoords;\n }\n const transform = getCurrentTransform(ctx);\n let coords;\n if (clipBox[0] !== Infinity) {\n const bbox = BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([0, -height, width, 0], transform, bbox);\n const finalBBox = Util.intersect(clipBox, bbox);\n if (!finalBBox) {\n return;\n }\n const [minX, minY, maxX, maxY] = finalBBox;\n if (minX !== bbox[0] || minY !== bbox[1] || maxX !== bbox[2] || maxY !== bbox[3]) {\n const rotationAngle = Math.atan2(transform[1], transform[0]);\n const sin = Math.abs(Math.sin(rotationAngle));\n const cos = Math.abs(Math.cos(rotationAngle));\n if (sin < 1e-6 || cos < 1e-6 || Math.abs(sin - cos) < 1e-6) {\n coords = [minX, minY, minX, maxY, maxX, minY];\n } else {\n const finalBBoxWidth = maxX - minX;\n const finalBBoxHeight = maxY - minY;\n const sin2 = sin * sin;\n const cos2 = cos * cos;\n const cosSin = cos * sin;\n const denom = cos2 - sin2;\n const a = (finalBBoxHeight * cos2 - finalBBoxWidth * cosSin) / denom;\n const b = (finalBBoxHeight * cosSin - finalBBoxWidth * sin2) / denom;\n coords = [minX + b, minY, minX, minY + a, maxX, maxY - a];\n }\n }\n }\n if (!coords) {\n coords = [0, -height, 0, 0, width, -height];\n Util.applyTransform(coords, transform, 0);\n Util.applyTransform(coords, transform, 2);\n Util.applyTransform(coords, transform, 4);\n }\n coords[0] /= this.#canvasWidth;\n coords[1] /= this.#canvasHeight;\n coords[2] /= this.#canvasWidth;\n coords[3] /= this.#canvasHeight;\n coords[4] /= this.#canvasWidth;\n coords[5] /= this.#canvasHeight;\n this.#coords.set(coords, this.#count * 6);\n this.#count++;\n }\n take() {\n return this.#coords.subarray(0, this.#count * 6);\n }\n}\n\n;// ./src/shared/css_utils.js\nconst CONTROL_CHAR_REGEXP = /\\p{Cc}/u;\nfunction isCSSString(str) {\n const quote = str[0];\n if (str.length < 2 || quote !== `\"` && quote !== `'` || str.at(-1) !== quote) {\n return false;\n }\n const end = str.length - 1;\n for (let i = 1; i < end; i++) {\n const char = str[i];\n if (char === quote || CONTROL_CHAR_REGEXP.test(char)) {\n return false;\n }\n if (char === \"\\\\\") {\n if (++i >= end || CONTROL_CHAR_REGEXP.test(str[i])) {\n return false;\n }\n }\n }\n return true;\n}\nfunction serializeFontFamily(fontFamily) {\n if (isCSSString(fontFamily)) {\n return fontFamily;\n }\n const escaped = fontFamily.replaceAll(/[\"\\\\\\p{Cc}]/gu, char => char === `\"` || char === \"\\\\\" ? `\\\\${char}` : `\\\\${char.codePointAt(0).toString(16)} `);\n return `\"${escaped}\"`;\n}\n\n;// ./src/display/font_loader.js\n\n\n\nclass FontLoader {\n #systemFonts = new Set();\n #styleSheet = null;\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n const styleSheet = this.#getStyleSheet();\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n #getStyleSheet() {\n if (this.#styleSheet) {\n return this.#styleSheet;\n }\n const StyleSheet = this._document.defaultView?.CSSStyleSheet || globalThis.CSSStyleSheet;\n if (!this.styleElement && StyleSheet) {\n const {\n adoptedStyleSheets\n } = this._document;\n if (adoptedStyleSheets) {\n const styleSheet = new StyleSheet();\n adoptedStyleSheets.push(styleSheet);\n return this.#styleSheet = styleSheet;\n }\n }\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n return this.#styleSheet = this.styleElement.sheet;\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.#styleSheet) {\n const {\n adoptedStyleSheets\n } = this._document;\n if (adoptedStyleSheets?.includes(this.#styleSheet)) {\n this._document.adoptedStyleSheets = adoptedStyleSheets.filter(styleSheet => styleSheet !== this.#styleSheet);\n }\n this.#styleSheet = null;\n }\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || FeatureTest.platform.isFirefox);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n compiledGlyphs = Object.create(null);\n #fontData;\n constructor(translatedData, inspectFont = null, charProcOperatorList, extra) {\n this.#fontData = translatedData;\n this._inspectFont = inspectFont;\n if (charProcOperatorList) {\n this.charProcOperatorList = charProcOperatorList;\n }\n if (extra) {\n Object.assign(this, extra);\n }\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(serializeFontFamily(this.cssFontInfo.fontFamily), this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${this.data.toBase64()});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n const fontFamily = serializeFontFamily(this.cssFontInfo.fontFamily);\n rule = `@font-face {font-family:${fontFamily};${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = makePathFromDrawOPS(cmds?.path);\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n get black() {\n return this.#fontData.black;\n }\n get bold() {\n return this.#fontData.bold;\n }\n get disableFontFace() {\n return this.#fontData.disableFontFace;\n }\n set disableFontFace(value) {\n shadow(this, \"disableFontFace\", !!value);\n }\n get fontExtraProperties() {\n return this.#fontData.fontExtraProperties;\n }\n get isInvalidPDFjsFont() {\n return this.#fontData.isInvalidPDFjsFont;\n }\n get isType3Font() {\n return this.#fontData.isType3Font;\n }\n get italic() {\n return this.#fontData.italic;\n }\n get missingFile() {\n return this.#fontData.missingFile;\n }\n get remeasure() {\n return this.#fontData.remeasure;\n }\n get vertical() {\n return this.#fontData.vertical;\n }\n get ascent() {\n return this.#fontData.ascent;\n }\n get defaultWidth() {\n return this.#fontData.defaultWidth;\n }\n get descent() {\n return this.#fontData.descent;\n }\n get bbox() {\n return this.#fontData.bbox;\n }\n get fontMatrix() {\n return this.#fontData.fontMatrix;\n }\n get fallbackName() {\n return this.#fontData.fallbackName;\n }\n get loadedName() {\n return this.#fontData.loadedName;\n }\n get mimetype() {\n return this.#fontData.mimetype;\n }\n get name() {\n return this.#fontData.name;\n }\n get data() {\n return this.#fontData.data;\n }\n clearData() {\n this.#fontData.clearData();\n }\n get cssFontInfo() {\n return this.#fontData.cssFontInfo;\n }\n get systemFontInfo() {\n return this.#fontData.systemFontInfo;\n }\n get defaultVMetrics() {\n return this.#fontData.defaultVMetrics;\n }\n}\n\n;// ./src/shared/obj_bin_transform_utils.js\n\nclass CSS_FONT_INFO {\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n}\nclass SYSTEM_FONT_INFO {\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n}\nclass FONT_INFO {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static OFFSET_BBOX = this.OFFSET_NUMBERS + this.numbers.length * 8;\n static OFFSET_FONT_MATRIX = this.OFFSET_BBOX + 1 + 2 * 4;\n static OFFSET_DEFAULT_VMETRICS = this.OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static OFFSET_STRINGS = this.OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n}\nclass PATTERN_INFO {\n static KIND = 0;\n static HAS_BBOX = 1;\n static HAS_BACKGROUND = 2;\n static SHADING_TYPE = 3;\n static N_COORD = 4;\n static N_COLOR = 8;\n static N_STOP = 12;\n static N_FIGURES = 16;\n}\nclass InfoUtils {\n static get decoder() {\n return shadow(this, \"decoder\", new TextDecoder());\n }\n static get encoder() {\n return shadow(this, \"encoder\", new TextEncoder());\n }\n}\n\n;// ./src/display/obj_bin_transform_display.js\n\n\nclass CssFontInfo {\n #buffer;\n #view;\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(buffer);\n }\n #readString(index) {\n assert(index < CSS_FONT_INFO.strings.length, \"Invalid string index\");\n const {\n decoder\n } = InfoUtils;\n let offset = 0;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fontFamily() {\n return this.#readString(0);\n }\n get fontWeight() {\n return this.#readString(1);\n }\n get italicAngle() {\n return this.#readString(2);\n }\n}\nclass SystemFontInfo {\n #buffer;\n #view;\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(buffer);\n }\n get guessFallback() {\n return this.#view.getUint8(0) !== 0;\n }\n #readString(index) {\n assert(index < SYSTEM_FONT_INFO.strings.length, \"Invalid string index\");\n const {\n decoder\n } = InfoUtils;\n let offset = 5;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get css() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get baseFontName() {\n return this.#readString(2);\n }\n get src() {\n return this.#readString(3);\n }\n get style() {\n const {\n decoder\n } = InfoUtils;\n let offset = 1;\n offset += 4 + this.#view.getUint32(offset);\n const styleLength = this.#view.getUint32(offset);\n const style = decoder.decode(new Uint8Array(this.#buffer, offset + 4, styleLength));\n offset += 4 + styleLength;\n const weightLength = this.#view.getUint32(offset);\n const weight = decoder.decode(new Uint8Array(this.#buffer, offset + 4, weightLength));\n return {\n style,\n weight\n };\n }\n}\nclass FontInfo {\n #buffer;\n #view;\n constructor({\n buffer,\n extra\n }) {\n this.#buffer = buffer;\n this.#view = new DataView(buffer);\n if (extra) {\n Object.assign(this, extra);\n }\n }\n #readBoolean(index) {\n assert(index < FONT_INFO.bools.length, \"Invalid boolean index\");\n const byteOffset = Math.floor(index / 4);\n const bitOffset = index * 2 % 8;\n const value = this.#view.getUint8(byteOffset) >> bitOffset & 0x03;\n return value === 0x00 ? undefined : value === 0x02;\n }\n get black() {\n return this.#readBoolean(0);\n }\n get bold() {\n return this.#readBoolean(1);\n }\n get disableFontFace() {\n return this.#readBoolean(2);\n }\n get fontExtraProperties() {\n return this.#readBoolean(3);\n }\n get isInvalidPDFjsFont() {\n return this.#readBoolean(4);\n }\n get isType3Font() {\n return this.#readBoolean(5);\n }\n get italic() {\n return this.#readBoolean(6);\n }\n get missingFile() {\n return this.#readBoolean(7);\n }\n get remeasure() {\n return this.#readBoolean(8);\n }\n get vertical() {\n return this.#readBoolean(9);\n }\n #readNumber(index) {\n assert(index < FONT_INFO.numbers.length, \"Invalid number index\");\n return this.#view.getFloat64(FONT_INFO.OFFSET_NUMBERS + index * 8);\n }\n get ascent() {\n return this.#readNumber(0);\n }\n get defaultWidth() {\n return this.#readNumber(1);\n }\n get descent() {\n return this.#readNumber(2);\n }\n #readArray(offset, arrLen, lookupName, increment) {\n const len = this.#view.getUint8(offset);\n if (len === 0) {\n return undefined;\n }\n assert(len === arrLen, \"Invalid array length.\");\n offset += 1;\n const arr = new Array(len);\n for (let i = 0; i < len; i++) {\n arr[i] = this.#view[lookupName](offset, true);\n offset += increment;\n }\n return arr;\n }\n get bbox() {\n return this.#readArray(FONT_INFO.OFFSET_BBOX, 4, \"getInt16\", 2);\n }\n get fontMatrix() {\n return this.#readArray(FONT_INFO.OFFSET_FONT_MATRIX, 6, \"getFloat64\", 8);\n }\n get defaultVMetrics() {\n return this.#readArray(FONT_INFO.OFFSET_DEFAULT_VMETRICS, 3, \"getInt16\", 2);\n }\n #readString(index) {\n assert(index < FONT_INFO.strings.length, \"Invalid string index\");\n const {\n decoder\n } = InfoUtils;\n let offset = FONT_INFO.OFFSET_STRINGS + 4;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fallbackName() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get mimetype() {\n return this.#readString(2);\n }\n get name() {\n return this.#readString(3);\n }\n #getDataOffsets() {\n let offset = FONT_INFO.OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n return {\n offset,\n length\n };\n }\n get data() {\n const {\n offset,\n length\n } = this.#getDataOffsets();\n return length === 0 ? undefined : new Uint8Array(this.#buffer, offset + 4, length);\n }\n clearData() {\n const {\n offset,\n length\n } = this.#getDataOffsets();\n if (length === 0) {\n return;\n }\n this.#view.setUint32(offset, 0);\n this.#buffer = new Uint8Array(this.#buffer, 0, offset + 4).slice().buffer;\n this.#view = new DataView(this.#buffer);\n }\n get cssFontInfo() {\n let offset = FONT_INFO.OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n if (cssFontInfoLength === 0) {\n return null;\n }\n const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n cssFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength));\n return new CssFontInfo(cssFontInfoData.buffer);\n }\n get systemFontInfo() {\n let offset = FONT_INFO.OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n if (systemFontInfoLength === 0) {\n return null;\n }\n const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n systemFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength));\n return new SystemFontInfo(systemFontInfoData.buffer);\n }\n}\nclass PatternInfo {\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(buffer);\n this.data = new Uint8Array(buffer);\n }\n getIR() {\n const dataView = this.view;\n const kind = this.data[PATTERN_INFO.KIND];\n const hasBBox = !!this.data[PATTERN_INFO.HAS_BBOX];\n const hasBackground = !!this.data[PATTERN_INFO.HAS_BACKGROUND];\n const nCoord = dataView.getUint32(PATTERN_INFO.N_COORD, true);\n const nColor = dataView.getUint32(PATTERN_INFO.N_COLOR, true);\n const nStop = dataView.getUint32(PATTERN_INFO.N_STOP, true);\n let offset = 20;\n const coords = new Float32Array(this.buffer, offset, nCoord * 2);\n offset += nCoord * 8;\n const colors = new Uint8Array(this.buffer, offset, nColor * 4);\n offset += nColor * 4;\n const stops = [];\n for (let i = 0; i < nStop; ++i) {\n const p = dataView.getFloat32(offset, true);\n offset += 4;\n const rgb = dataView.getUint32(offset, true);\n offset += 4;\n stops.push([p, `#${rgb.toString(16).padStart(6, \"0\")}`]);\n }\n let bbox = null;\n if (hasBBox) {\n bbox = [];\n for (let i = 0; i < 4; ++i) {\n bbox.push(dataView.getFloat32(offset, true));\n offset += 4;\n }\n }\n let background = null;\n if (hasBackground) {\n background = new Uint8Array(this.buffer, offset, 3);\n offset += 3;\n }\n if (kind === 1) {\n return [\"RadialAxial\", \"axial\", bbox, stops, Array.from(coords.slice(0, 2)), Array.from(coords.slice(2, 4)), null, null];\n }\n if (kind === 2) {\n return [\"RadialAxial\", \"radial\", bbox, stops, [coords[0], coords[1]], [coords[3], coords[4]], coords[2], coords[5]];\n }\n if (kind === 3) {\n const shadingType = this.data[PATTERN_INFO.SHADING_TYPE];\n let bounds = null;\n if (coords.length > 0) {\n bounds = BBOX_INIT.slice();\n for (let i = 0, ii = coords.length; i < ii; i += 2) {\n Util.pointBoundingBox(coords[i], coords[i + 1], bounds);\n }\n }\n return [\"Mesh\", shadingType, coords, colors, nCoord, bounds, bbox, background];\n }\n throw new Error(`Unsupported pattern kind: ${kind}`);\n }\n}\nclass FontPathInfo {\n #buffer;\n constructor(buffer) {\n this.#buffer = buffer;\n }\n get path() {\n if (FeatureTest.isFloat16ArraySupported) {\n return new Float16Array(this.#buffer);\n }\n return new Float32Array(this.#buffer);\n }\n}\n\n;// ./src/display/api_utils.js\n\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n if (/^[a-z][a-z0-9\\-+.]+:/i.test(val)) {\n return new URL(val);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(val));\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/binary_data_factory.js\n\n\nclass BaseBinaryDataFactory {\n #errorStr = Object.freeze({\n cMapUrl: \"CMap\",\n standardFontDataUrl: \"font\",\n wasmUrl: \"wasm\"\n });\n constructor({\n cMapUrl = null,\n standardFontDataUrl = null,\n wasmUrl = null\n }) {\n this.cMapUrl = cMapUrl;\n this.standardFontDataUrl = standardFontDataUrl;\n this.wasmUrl = wasmUrl;\n }\n async fetch({\n kind,\n filename\n }) {\n switch (kind) {\n case \"cMapUrl\":\n case \"standardFontDataUrl\":\n case \"wasmUrl\":\n break;\n default:\n unreachable(`Not implemented: ${kind}`);\n }\n const baseUrl = this[kind];\n if (!baseUrl) {\n throw new Error(`Ensure that the \\`${kind}\\` API parameter is provided.`);\n }\n const url = `${baseUrl}${filename}`;\n return this._fetch(url, kind).catch(reason => {\n throw new Error(`Unable to load ${this.#errorStr[kind]} data at: ${url}`);\n });\n }\n async _fetch(url, kind) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMBinaryDataFactory extends BaseBinaryDataFactory {\n async _fetch(url, kind) {\n const type = kind === \"cMapUrl\" && !url.endsWith(\".bcmap\") ? \"text\" : \"bytes\";\n const data = await fetchData(url, type);\n return data instanceof Uint8Array ? data : stringToBytes(data);\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset({\n canvas\n }, width, height) {\n if (!canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvas.width = width;\n canvas.height = height;\n }\n destroy(canvasAndContext) {\n const {\n canvas\n } = canvasAndContext;\n if (!canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvas.width = canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addKnockoutFilter(alpha = 0) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n addSelectionHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addSelectionFilter() {\n return \"none\";\n }\n createSelectionStyle(pageColors = null) {\n return null;\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.colorScheme = \"only light\";\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = updateUrlHash(url, \"\");\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#resetDefsColor();\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = Array.from({\n length: 256\n }, (_, i) => computeLuminance(i / 255));\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addSelectionHCMFilter(fgColor, bgColor) {\n return this.addHighlightHCMFilter(\"selection\", fgColor, bgColor, \"HighlightText\", \"Highlight\");\n }\n addSelectionFilter() {\n return this.addHighlightHCMFilter(\"selection_default\", \"black\", \"white\", \"HighlightText\", \"Highlight\");\n }\n createSelectionStyle(pageColors = null) {\n const filter = pageColors ? this.addSelectionHCMFilter(pageColors.foreground, pageColors.background) : this.addSelectionFilter();\n if (filter === \"none\" || !FeatureTest.platform.isFirefox) {\n return null;\n }\n return {\n \"backdrop-filter\": filter,\n \"background-color\": \"transparent\"\n };\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addKnockoutFilter(alpha = 0) {\n const slope = alpha > 0 ? Math.min(1 / alpha, 1e6) : 1e6;\n const key = `knockout_${slope}`;\n const value = this.#cache.get(key);\n if (value) {\n return value;\n }\n const id = `g_${this.#docId}_knockout_filter_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n const feFuncA = this.#document.createElementNS(SVG_NS, \"feFuncA\");\n feFuncA.setAttribute(\"type\", \"linear\");\n feFuncA.setAttribute(\"slope\", `${slope}`);\n feFuncA.setAttribute(\"intercept\", \"0\");\n feComponentTransfer.append(feFuncA);\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getOpaqueTextColor.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#resetDefsColor();\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = \"CanvasText\";\n this.#defs.style.backgroundColor = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"background-color\"));\n }\n #getRGBA(color) {\n this.#defs.style.color = \"CanvasText\";\n this.#defs.style.backgroundColor = color;\n return getRGBA(getComputedStyle(this.#defs).getPropertyValue(\"background-color\"));\n }\n #resetDefsColor() {\n this.#defs.style.color = \"\";\n this.#defs.style.backgroundColor = \"\";\n }\n #getOpaqueTextColor(color) {\n const [r, g, b, alpha] = this.#getRGBA(color);\n if (alpha === 1) {\n return [r, g, b];\n }\n const [canvasR, canvasG, canvasB] = this.#getRGB(\"Canvas\");\n return [blend(r, canvasR, alpha), blend(g, canvasG, alpha), blend(b, canvasB, alpha)];\n }\n}\nfunction blend(fg, bg, alpha) {\n return Math.round(alpha * fg + (1 - alpha) * bg);\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\nif (isNodeJS) {\n warn(\"Please use the `legacy` build in Node.js environments.\");\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs/promises\");\n const data = await fs.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeBinaryDataFactory extends BaseBinaryDataFactory {\n async _fetch(url, kind) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/shared/image_utils.js\n/* unused harmony import specifier */ var image_utils_ImageKind;\n/* unused harmony import specifier */ var image_utils_FeatureTest;\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case image_utils_ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case image_utils_ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const xorMask = zeroMapping ^ oneMapping;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; ++i) {\n for (const max = srcPos + widthInSource; srcPos < max; ++srcPos, destPos += 8) {\n const elem = src[srcPos];\n dest[destPos] = zeroMapping ^ -(elem >> 7 & 1) & xorMask;\n dest[destPos + 1] = zeroMapping ^ -(elem >> 6 & 1) & xorMask;\n dest[destPos + 2] = zeroMapping ^ -(elem >> 5 & 1) & xorMask;\n dest[destPos + 3] = zeroMapping ^ -(elem >> 4 & 1) & xorMask;\n dest[destPos + 4] = zeroMapping ^ -(elem >> 3 & 1) & xorMask;\n dest[destPos + 5] = zeroMapping ^ -(elem >> 2 & 1) & xorMask;\n dest[destPos + 6] = zeroMapping ^ -(elem >> 1 & 1) & xorMask;\n dest[destPos + 7] = zeroMapping ^ -(elem & 1) & xorMask;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; ++j, ++destPos) {\n dest[destPos] = zeroMapping ^ -(elem >> 7 - j & 1) & xorMask;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n const alphaMask = FeatureTest.isLittleEndian ? 0xff000000 : 0xff;\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i],\n s2 = src32[i + 1],\n s3 = src32[i + 2];\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | alphaMask;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | alphaMask;\n dest[destPos + 3] = s3 >>> 8 | alphaMask;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | alphaMask;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i],\n s2 = src32[i + 1],\n s3 = src32[i + 2];\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | alphaMask;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | alphaMask;\n dest[destPos + 3] = s3 << 8 | alphaMask;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | alphaMask;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (image_utils_FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/webgpu.js\nconst MESH_WGSL = `\nstruct Uniforms {\n offsetX : f32,\n offsetY : f32,\n scaleX : f32,\n scaleY : f32,\n paddedWidth : f32,\n paddedHeight : f32,\n borderSize : f32,\n _pad : f32,\n};\n\n@group(0) @binding(0) var u : Uniforms;\n\nstruct VertexInput {\n @location(0) position : vec2,\n @location(1) color : vec4,\n};\n\nstruct VertexOutput {\n @builtin(position) position : vec4,\n @location(0) color : vec3,\n};\n\n@vertex\nfn vs_main(in : VertexInput) -> VertexOutput {\n var out : VertexOutput;\n let cx = (in.position.x + u.offsetX) * u.scaleX;\n let cy = (in.position.y + u.offsetY) * u.scaleY;\n out.position = vec4(\n ((cx + u.borderSize) / u.paddedWidth) * 2.0 - 1.0,\n 1.0 - ((cy + u.borderSize) / u.paddedHeight) * 2.0,\n 0.0,\n 1.0\n );\n out.color = in.color.rgb;\n return out;\n}\n\n@fragment\nfn fs_main(in : VertexOutput) -> @location(0) vec4 {\n return vec4(in.color, 1.0);\n}\n`;\nclass WebGPU {\n #initPromise = null;\n #device = null;\n #meshPipeline = null;\n #preferredFormat = null;\n async #initGPU() {\n if (!globalThis.navigator?.gpu) {\n return false;\n }\n try {\n const adapter = await navigator.gpu.requestAdapter();\n if (!adapter) {\n return false;\n }\n this.#preferredFormat = navigator.gpu.getPreferredCanvasFormat();\n this.#device = await adapter.requestDevice();\n return true;\n } catch {\n return false;\n }\n }\n init() {\n return this.#initPromise ||= this.#initGPU();\n }\n get isReady() {\n return this.#device !== null;\n }\n loadMeshShader() {\n if (!this.#device || this.#meshPipeline) {\n return;\n }\n const shaderModule = this.#device.createShaderModule({\n code: MESH_WGSL\n });\n this.#meshPipeline = this.#device.createRenderPipeline({\n layout: \"auto\",\n vertex: {\n module: shaderModule,\n entryPoint: \"vs_main\",\n buffers: [{\n arrayStride: 2 * 4,\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: \"float32x2\"\n }]\n }, {\n arrayStride: 4,\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: \"unorm8x4\"\n }]\n }]\n },\n fragment: {\n module: shaderModule,\n entryPoint: \"fs_main\",\n targets: [{\n format: this.#preferredFormat\n }]\n },\n primitive: {\n topology: \"triangle-list\"\n }\n });\n }\n draw(posData, colData, vertexCount, context, backgroundColor, paddedWidth, paddedHeight, borderSize) {\n this.loadMeshShader();\n const device = this.#device;\n const {\n offsetX,\n offsetY,\n scaleX,\n scaleY\n } = context;\n const posBuffer = device.createBuffer({\n size: Math.max(posData.byteLength, 4),\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST\n });\n if (posData.byteLength > 0) {\n device.queue.writeBuffer(posBuffer, 0, posData);\n }\n const colBuffer = device.createBuffer({\n size: Math.max(colData.byteLength, 4),\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST\n });\n if (colData.byteLength > 0) {\n device.queue.writeBuffer(colBuffer, 0, colData);\n }\n const uniformBuffer = device.createBuffer({\n size: 8 * 4,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST\n });\n device.queue.writeBuffer(uniformBuffer, 0, new Float32Array([offsetX, offsetY, scaleX, scaleY, paddedWidth, paddedHeight, borderSize, 0]));\n const bindGroup = device.createBindGroup({\n layout: this.#meshPipeline.getBindGroupLayout(0),\n entries: [{\n binding: 0,\n resource: {\n buffer: uniformBuffer\n }\n }]\n });\n const offscreen = new OffscreenCanvas(paddedWidth, paddedHeight);\n const gpuCtx = offscreen.getContext(\"webgpu\");\n gpuCtx.configure({\n device,\n format: this.#preferredFormat,\n alphaMode: backgroundColor ? \"opaque\" : \"premultiplied\"\n });\n const clearValue = backgroundColor ? {\n r: backgroundColor[0] / 255,\n g: backgroundColor[1] / 255,\n b: backgroundColor[2] / 255,\n a: 1\n } : {\n r: 0,\n g: 0,\n b: 0,\n a: 0\n };\n const commandEncoder = device.createCommandEncoder();\n const renderPass = commandEncoder.beginRenderPass({\n colorAttachments: [{\n view: gpuCtx.getCurrentTexture().createView(),\n clearValue,\n loadOp: \"clear\",\n storeOp: \"store\"\n }]\n });\n if (vertexCount > 0) {\n renderPass.setPipeline(this.#meshPipeline);\n renderPass.setBindGroup(0, bindGroup);\n renderPass.setVertexBuffer(0, posBuffer);\n renderPass.setVertexBuffer(1, colBuffer);\n renderPass.draw(vertexCount);\n }\n renderPass.end();\n device.queue.submit([commandEncoder.finish()]);\n posBuffer.destroy();\n colBuffer.destroy();\n uniformBuffer.destroy();\n return offscreen.transferToImageBitmap();\n }\n}\nconst _webGPU = new WebGPU();\nfunction initGPU() {\n return _webGPU.init();\n}\nfunction isGPUReady() {\n return _webGPU.isReady;\n}\nfunction loadMeshShader() {\n _webGPU.loadMeshShader();\n}\nfunction drawMeshWithGPU(posData, colData, vertexCount, context, backgroundColor, paddedWidth, paddedHeight, borderSize) {\n return _webGPU.draw(posData, colData, vertexCount, context, backgroundColor, paddedWidth, paddedHeight, borderSize);\n}\n\n;// ./src/display/pattern_helper.js\n\n\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n matrix = null;\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n }\n isOriginBased() {\n return this._p0[0] === 0 && this._p0[1] === 0 && (!this.isRadial() || this._p1[0] === 0 && this._p1[1] === 0);\n }\n isRadial() {\n return this._type === \"radial\";\n }\n areConic() {\n if (!this.isRadial()) {\n return false;\n }\n const dist = Math.hypot(this._p0[0] - this._p1[0], this._p0[1] - this._p1[1]);\n return dist + this._r1 > this._r0 && dist + this._r0 > this._r1;\n }\n _createGradient(ctx, transform = null) {\n let grad;\n let firstPoint = this._p0;\n let secondPoint = this._p1;\n if (transform) {\n firstPoint = firstPoint.slice();\n secondPoint = secondPoint.slice();\n Util.applyTransform(firstPoint, transform);\n Util.applyTransform(secondPoint, transform);\n }\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(firstPoint[0], firstPoint[1], secondPoint[0], secondPoint[1]);\n } else if (this._type === \"radial\") {\n let r0 = this._r0;\n let r1 = this._r1;\n if (transform) {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(transform, scale);\n r0 *= scale[0];\n r1 *= scale[0];\n }\n grad = ctx.createRadialGradient(firstPoint[0], firstPoint[1], r0, secondPoint[0], secondPoint[1], r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n _createReversedGradient(ctx, transform = null) {\n let firstPoint = this._p1;\n let secondPoint = this._p0;\n if (transform) {\n firstPoint = firstPoint.slice();\n secondPoint = secondPoint.slice();\n Util.applyTransform(firstPoint, transform);\n Util.applyTransform(secondPoint, transform);\n }\n let r0 = this._r1;\n let r1 = this._r0;\n if (transform) {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(transform, scale);\n r0 *= scale[0];\n r1 *= scale[0];\n }\n const grad = ctx.createRadialGradient(firstPoint[0], firstPoint[1], r0, secondPoint[0], secondPoint[1], r1);\n const reversedStops = this._colorStops.map(([t, c]) => [1 - t, c]).reverse();\n for (const [t, c] of reversedStops) {\n grad.addColorStop(t, c);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n if (this.isOriginBased()) {\n let transf = Util.transform(inverse, owner.baseTransform);\n if (this.matrix) {\n transf = Util.transform(transf, this.matrix);\n }\n const precision = 1e-3;\n const n1 = Math.hypot(transf[0], transf[1]);\n const n2 = Math.hypot(transf[2], transf[3]);\n const ps = (transf[0] * transf[2] + transf[1] * transf[3]) / (n1 * n2);\n if (Math.abs(ps) < precision) {\n if (this.isRadial()) {\n if (Math.abs(n1 - n2) < precision) {\n return this._createGradient(ctx, transf);\n }\n } else {\n return this._createGradient(ctx, transf);\n }\n }\n }\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.canvasFactory.create(width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n if (this.areConic()) {\n tmpCtx.fillStyle = this._createReversedGradient(tmpCtx);\n tmpCtx.fill();\n }\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n owner.canvasFactory.destroy(tmpCanvas);\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n if (this.areConic()) {\n ctx.save();\n applyBoundingBox(ctx, this._bbox);\n ctx.fillStyle = this._createReversedGradient(ctx);\n ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n ctx.restore();\n }\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 * 2 + 1] > coords[p2 * 2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 * 2 + 1] > coords[p3 * 2 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 * 2 + 1] > coords[p2 * 2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1 * 2] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 * 2 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2 * 2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 * 2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3 * 2] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 * 2 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1 * 4],\n c1g = colors[c1 * 4 + 1],\n c1b = colors[c1 * 4 + 2];\n const c2r = colors[c2 * 4],\n c2g = colors[c2 * 4 + 1],\n c2b = colors[c2 * 4 + 2];\n const c3r = colors[c3 * 4],\n c3g = colors[c3 * 4 + 1],\n c3b = colors[c3 * 4 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._posData = IR[2];\n this._colData = IR[3];\n this._vertexCount = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[6];\n this._background = IR[7];\n loadMeshShader();\n }\n _createMeshCanvas(combinedScale, backgroundColor, canvasFactory) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE) || 1;\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE) || 1;\n const scaleX = boundsWidth ? boundsWidth / width : 1;\n const scaleY = boundsHeight ? boundsHeight / height : 1;\n const context = {\n coords: this._posData,\n colors: this._colData,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = canvasFactory.create(paddedWidth, paddedHeight);\n if (isGPUReady() && this._vertexCount > 48) {\n tmpCanvas.context.drawImage(drawMeshWithGPU(this._posData, this._colData, this._vertexCount, context, backgroundColor, paddedWidth, paddedHeight, BORDER_SIZE), 0, 0);\n } else {\n const data = tmpCanvas.context.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (let i = 0, ii = this._vertexCount; i < ii; i += 3) {\n drawTriangle(data, context, i, i + 1, i + 2, i, i + 1, i + 2);\n }\n tmpCanvas.context.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n }\n return {\n canvas: tmpCanvas.canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.canvasFactory);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n owner.canvasFactory.destroy(temporaryPatternCanvas);\n return pattern;\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.needsIsolation = IR[9] ?? true;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.patternBaseMatrix = this.matrix ? Util.transform(baseTransform, this.matrix) : baseTransform;\n }\n canSkipPatternCanvas([width, height, offsetX, offsetY]) {\n const [x0, y0, x1, y1] = this.bbox;\n const absXStep = Math.abs(this.xstep);\n const absYStep = Math.abs(this.ystep);\n if (width > absXStep + 1e-6 || height > absYStep + 1e-6) {\n return null;\n }\n const nXFirst = Math.floor((offsetX - x1) / absXStep) + 1;\n const nXLast = Math.ceil((offsetX + width - x0) / absXStep) - 1;\n const nYFirst = Math.floor((offsetY - y1) / absYStep) + 1;\n const nYLast = Math.ceil((offsetY + height - y0) / absYStep) - 1;\n return nXLast <= nXFirst && nYLast <= nYFirst ? [nXFirst, nYFirst] : null;\n }\n updatePatternDims(clippedBBox, dims) {\n const inv = Util.inverseTransform(this.patternBaseMatrix);\n const c1 = [clippedBBox[0], clippedBBox[1]];\n const c2 = [clippedBBox[2], clippedBBox[3]];\n Util.applyTransform(c1, inv);\n Util.applyTransform(c2, inv);\n dims[0] = Math.abs(c2[0] - c1[0]);\n dims[1] = Math.abs(c2[1] - c1[1]);\n dims[2] = Math.min(c1[0], c2[0]);\n dims[3] = Math.min(c1[1], c2[1]);\n }\n _renderTileCanvas(owner, opIdx, dimx, dimy) {\n const [x0, y0, x1, y1] = this.bbox;\n const tmpCanvas = owner.canvasFactory.create(dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = this.canvasGraphicsFactory.createCanvasGraphics(tmpCtx, opIdx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, this.paintType, this.color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(0, dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n graphics.dependencyTracker?.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(this.operatorList);\n graphics.endDrawing();\n graphics.dependencyTracker?.restore();\n tmpCtx.restore();\n return tmpCanvas;\n }\n _getCombinedScales() {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n return [matrixScaleX * scale[0], matrixScaleY * scale[1]];\n }\n drawPattern(owner, path, useEOFill = false, [n, m], opIdx) {\n const [x0, y0, x1, y1] = this.bbox;\n const dependencyTracker = owner.dependencyTracker;\n if (dependencyTracker) {\n owner.dependencyTracker = new CanvasNestedDependencyTracker(dependencyTracker, opIdx);\n }\n owner.save();\n if (useEOFill) {\n owner.ctx.clip(path, \"evenodd\");\n } else {\n owner.ctx.clip(path);\n }\n owner.ctx.setTransform(...this.patternBaseMatrix);\n owner.ctx.translate(n * this.xstep, m * this.ystep);\n if (this.needsIsolation || owner.ctx.globalAlpha !== 1 || owner.ctx.globalCompositeOperation !== \"source-over\" || owner.inSMaskMode) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n const [combinedScaleX, combinedScaleY] = this._getCombinedScales();\n const dimx = this.getSizeAndScale(bboxWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(bboxHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = this._renderTileCanvas(owner, opIdx, dimx, dimy);\n owner.ctx.drawImage(tmpCanvas.canvas, x0, y0, bboxWidth, bboxHeight);\n owner.canvasFactory.destroy(tmpCanvas);\n } else {\n this.setFillAndStrokeStyleToContext(owner, this.paintType, this.color);\n this.clipBbox(owner, x0, y0, x1, y1);\n owner.baseTransformStack.push(owner.baseTransform);\n owner.baseTransform = getCurrentTransform(owner.ctx);\n owner.executeOperatorList(this.operatorList);\n owner.baseTransform = owner.baseTransformStack.pop();\n }\n owner.restore();\n if (dependencyTracker) {\n owner.dependencyTracker = dependencyTracker;\n }\n }\n createPatternCanvas(owner, opIdx) {\n const [x0, y0, x1, y1] = this.bbox;\n const width = x1 - x0;\n const height = y1 - y0;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + this.tilingType);\n const [combinedScaleX, combinedScaleY] = this._getCombinedScales();\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n if (Math.ceil(xstep * combinedScaleX) >= Math.ceil(width * combinedScaleX)) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (Math.ceil(ystep * combinedScaleY) >= Math.ceil(height * combinedScaleY)) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = this._renderTileCanvas(owner, opIdx, dimx, dimy);\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.canvasFactory.create(xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n owner.canvasFactory.destroy(tmpCanvas);\n return {\n canvas: tmpCanvas2.canvas,\n canvasEntry: tmpCanvas2,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n canvasEntry: tmpCanvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n const clip = new Path2D();\n clip.rect(x0, y0, bboxWidth, bboxHeight);\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n graphics.ctx.clip(clip);\n graphics.current.updateClipFromPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n current.patternFill = current.patternStroke = false;\n switch (paintType) {\n case PaintType.COLORED:\n const {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType, opIdx) {\n const matrix = pathType !== PathType.SHADING ? Util.transform(inverse, this.patternBaseMatrix) : inverse;\n const temporaryPatternCanvas = this.createPatternCanvas(owner, opIdx);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n owner.canvasFactory.destroy(temporaryPatternCanvas.canvasEntry);\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst XY = new Float32Array(2);\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n const originalMethods = new Map();\n for (const name of [\"save\", \"restore\", \"rotate\", \"scale\", \"translate\", \"transform\", \"setTransform\", \"resetTransform\", \"clip\", \"moveTo\", \"lineTo\", \"bezierCurveTo\", \"quadraticCurveTo\", \"arc\", \"arcTo\", \"ellipse\", \"rect\", \"roundRect\", \"closePath\", \"beginPath\"]) {\n const original = ctx[name];\n if (typeof original !== \"function\" || typeof destCtx[name] !== \"function\") {\n continue;\n }\n originalMethods.set(name, original);\n ctx[name] = function (...args) {\n destCtx[name](...args);\n return original.apply(this, args);\n };\n }\n ctx._removeMirroring = () => {\n for (const [name, original] of originalMethods) {\n ctx[name] = original;\n }\n delete ctx._removeMirroring;\n };\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n tilingPatternDims = null;\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n minMax = F32_BBOX_INIT.slice();\n constructor(width, height) {\n this.clipBox = new Float32Array([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n clone.tilingPatternDims = this.tilingPatternDims?.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(F32_BBOX_INIT, 0);\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n const {\n width,\n height,\n kind\n } = imgData;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i;\n if (kind === ImageKind.GRAYSCALE_1BPP) {\n for (i = 0; i < totalChunks; i++) {\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (kind === ImageKind.RGBA_32BPP) {\n let j = 0;\n let elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (kind === ImageKind.RGB_24BPP) {\n for (i = 0; i < totalChunks; i++) {\n ({\n srcPos\n } = convertRGBToRGBA({\n src,\n srcPos,\n dest: new Uint32Array(dest.buffer),\n width,\n height: i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const {\n width,\n height\n } = imgData;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n static #SCALE_MATRIX = null;\n #knockoutGroupLevel = 0;\n #knockoutElementDepth = 0;\n #knockoutTempCanvasEntry = null;\n #knockoutSavedCtx = null;\n #knockoutSavedSMaskCtx = null;\n #knockoutSavedGCO = null;\n #knockoutElementAlpha = 1;\n #knockoutFilterCache;\n #knockoutElementGroupMeta = null;\n #groupStackMeta = [];\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors, dependencyTracker, imagesTracker) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.tempSMask = null;\n this.smaskGroupCanvases = [];\n this.smaskPreparedEntry = null;\n this.smaskPreparedFor = null;\n this.smaskPreparedOffsetX = 0;\n this.smaskPreparedOffsetY = 0;\n this.smaskPreparedOOBAlpha = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n this.dependencyTracker = dependencyTracker ?? null;\n this.imagesTracker = imagesTracker ?? null;\n }\n getObject(opIdx, data, fallback = null) {\n if (typeof data === \"string\") {\n this.dependencyTracker?.recordNamedDependency(opIdx, data);\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.transparentCanvasEntry = this.canvasFactory.create(width, height);\n this.compositeCtx = this.ctx;\n ({\n canvas: this.transparentCanvas,\n context: this.ctx\n } = transparentCanvas);\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[3];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper, operationsFilter) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId, fnArgs;\n while (true) {\n if (stepper !== undefined) {\n if (i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n if (stepper.shouldSkip(i)) {\n if (++i === argsArrayLen) {\n return i;\n }\n continue;\n }\n }\n if (!operationsFilter || operationsFilter(i)) {\n fnId = fnArray[i];\n fnArgs = argsArray[i] ?? null;\n if (fnId !== OPS.dependency) {\n if (fnArgs === null) {\n this[fnId](i);\n } else {\n this[fnId](i, ...fnArgs);\n }\n } else {\n for (const depObjId of fnArgs) {\n this.dependencyTracker?.recordNamedData(depObjId, i);\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.canvasFactory.destroy(this.transparentCanvasEntry);\n this.transparentCanvas = null;\n this.transparentCanvasEntry = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n for (const canvas of this.smaskGroupCanvases) {\n this.canvasFactory.destroy(canvas);\n }\n this.smaskGroupCanvases.length = 0;\n this._clearPreparedSMask();\n this.tempSMask = null;\n this.smaskStack.length = 0;\n for (const meta of this.#groupStackMeta) {\n this.#destroyKnockoutPools(meta);\n }\n this.#groupStackMeta.length = 0;\n this.#knockoutTempCanvasEntry = null;\n this.#knockoutSavedCtx = null;\n this.#knockoutSavedSMaskCtx = null;\n this.#knockoutSavedGCO = null;\n this.#knockoutElementAlpha = 1;\n this.#knockoutElementGroupMeta = null;\n this.#knockoutElementDepth = 0;\n this.#knockoutGroupLevel = 0;\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n const widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n const heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n const scaleSteps = [];\n let ws = widthScale,\n hs = heightScale,\n pw = width,\n ph = height;\n while (ws > 2 && pw > 1 || hs > 2 && ph > 1) {\n let nw = pw,\n nh = ph;\n if (ws > 2 && pw > 1) {\n nw = Math.ceil(pw / 2);\n ws /= pw / nw;\n }\n if (hs > 2 && ph > 1) {\n nh = Math.ceil(ph / 2);\n hs /= ph / nh;\n }\n scaleSteps.push({\n newWidth: nw,\n newHeight: nh\n });\n pw = nw;\n ph = nh;\n }\n if (scaleSteps.length === 0) {\n return {\n img,\n paintWidth: width,\n paintHeight: height,\n tmpCanvas: null\n };\n }\n if (scaleSteps.length === 1) {\n const {\n newWidth,\n newHeight\n } = scaleSteps[0];\n const tmpCanvas = this.canvasFactory.create(newWidth, newHeight);\n tmpCanvas.context.drawImage(img, 0, 0, width, height, 0, 0, newWidth, newHeight);\n return {\n img: tmpCanvas.canvas,\n paintWidth: newWidth,\n paintHeight: newHeight,\n tmpCanvas\n };\n }\n let readEntry = this.canvasFactory.create(1, 1);\n let writeEntry = this.canvasFactory.create(1, 1);\n let paintWidth = width,\n paintHeight = height;\n let source = img;\n for (const {\n newWidth,\n newHeight\n } of scaleSteps) {\n this.canvasFactory.reset(writeEntry, newWidth, newHeight);\n writeEntry.context.drawImage(source, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n [readEntry, writeEntry] = [writeEntry, readEntry];\n source = readEntry.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n }\n this.canvasFactory.destroy(writeEntry);\n return {\n img: readEntry.canvas,\n paintWidth,\n paintHeight,\n tmpCanvas: readEntry\n };\n }\n _createMaskCanvas(opIdx, img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.getOrInsertComputed(mainKey, makeMap);\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.canvasFactory.create(width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const minMax = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.canvasFactory.create(drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n let scaledEntry = null;\n if (!scaled) {\n const scaleResult = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaleResult.img;\n scaledEntry = scaleResult.tmpCanvas;\n if (scaled !== maskCanvas.canvas) {\n this.canvasFactory.destroy(maskCanvas);\n maskCanvas = null;\n }\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n scaledEntry = null;\n maskCanvas = null;\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n if (scaledEntry) {\n this.canvasFactory.destroy(scaledEntry);\n }\n if (maskCanvas) {\n this.canvasFactory.destroy(maskCanvas);\n }\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL, opIdx) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n cache.set(cacheKey, fillCanvas.canvas);\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: fillCanvas.canvas,\n canvasEntry: cache && !isPatternFill ? null : fillCanvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(opIdx, width) {\n this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(opIdx, limit) {\n this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n this.ctx.miterLimit = limit;\n }\n setDash(opIdx, dashArray, dashPhase) {\n this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(opIdx, intent) {}\n setFlatness(opIdx, flatness) {}\n setGState(opIdx, states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(opIdx, value);\n break;\n case \"LC\":\n this.setLineCap(opIdx, value);\n break;\n case \"LJ\":\n this.setLineJoin(opIdx, value);\n break;\n case \"ML\":\n this.setMiterLimit(opIdx, value);\n break;\n case \"D\":\n this.setDash(opIdx, value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(opIdx, value);\n break;\n case \"FL\":\n this.setFlatness(opIdx, value);\n break;\n case \"Font\":\n this.setFont(opIdx, value[0], value[1]);\n break;\n case \"CA\":\n this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.dependencyTracker?.recordSimpleData(\"globalCompositeOperation\", opIdx);\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n this.current.activeSMask = value ? this.tempSMask : null;\n if (this.current.activeSMask) {\n this.current.activeSMask.blendMode = this.ctx.globalCompositeOperation;\n }\n this.tempSMask = null;\n this.checkSMaskState(opIdx);\n break;\n case \"TR\":\n this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n _clearPreparedSMask() {\n if (this.smaskPreparedEntry) {\n this.canvasFactory.destroy(this.smaskPreparedEntry);\n this.smaskPreparedEntry = null;\n }\n this.smaskPreparedFor = null;\n this.smaskPreparedOffsetX = 0;\n this.smaskPreparedOffsetY = 0;\n this.smaskPreparedOOBAlpha = null;\n }\n _ensurePreparedSMask(smask) {\n if (smask === this.smaskPreparedFor) {\n return;\n }\n this._clearPreparedSMask();\n this._prepareSMaskCanvas(smask);\n }\n checkSMaskState(opIdx) {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode(opIdx);\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n } else if (this.current.activeSMask && inSMaskMode) {\n this._ensurePreparedSMask(this.current.activeSMask);\n }\n }\n _prepareSMaskCanvas(smask) {\n const {\n canvas: maskCanvas,\n subtype,\n backdrop,\n transferMap\n } = smask;\n const hasFilter = subtype === \"Luminosity\" || subtype === \"Alpha\" && transferMap;\n if (!hasFilter && !(subtype === \"Luminosity\" && backdrop)) {\n this.smaskPreparedFor = smask;\n return;\n }\n let filteredOOBAlpha;\n if (subtype === \"Luminosity\" && backdrop) {\n const [r, g, b] = getRGBA(backdrop);\n const inputAlpha = Math.round(0.3 * r + 0.59 * g + 0.11 * b);\n filteredOOBAlpha = transferMap?.[inputAlpha] ?? inputAlpha;\n } else {\n filteredOOBAlpha = transferMap?.[0] ?? 0;\n }\n const SMASK_LAYER_TO_MASK_AREA_RATIO = 4;\n const {\n width: layerW,\n height: layerH\n } = this.ctx.canvas;\n const maskArea = maskCanvas.width * maskCanvas.height;\n const useLayerSize = layerW * layerH < SMASK_LAYER_TO_MASK_AREA_RATIO * maskArea;\n const filterSpec = hasFilter ? {\n url: subtype === \"Alpha\" ? this.filterFactory.addAlphaFilter(transferMap) : this.filterFactory.addLuminosityFilter(transferMap),\n subtype,\n transferMap\n } : null;\n const bakedBackdrop = subtype === \"Luminosity\" ? backdrop : null;\n let preparedEntry, offsetX, offsetY;\n if (useLayerSize) {\n preparedEntry = this._bakeSMaskCanvas(maskCanvas, smask.offsetX, smask.offsetY, layerW, layerH, bakedBackdrop, filterSpec);\n offsetX = 0;\n offsetY = 0;\n } else {\n preparedEntry = this._bakeSMaskCanvas(maskCanvas, 0, 0, maskCanvas.width, maskCanvas.height, bakedBackdrop, filterSpec);\n offsetX = smask.offsetX;\n offsetY = smask.offsetY;\n }\n this.smaskPreparedEntry = preparedEntry;\n this.smaskPreparedFor = smask;\n this.smaskPreparedOffsetX = offsetX;\n this.smaskPreparedOffsetY = offsetY;\n this.smaskPreparedOOBAlpha = !useLayerSize && filteredOOBAlpha !== 0 ? filteredOOBAlpha : null;\n }\n _bakeSMaskCanvas(maskCanvas, drawX, drawY, w, h, backdrop, filterSpec) {\n if (!backdrop && !filterSpec) {\n unreachable(\"_bakeSMaskCanvas with neither backdrop nor filter\");\n }\n const srcEntry = this.canvasFactory.create(w, h);\n const sCtx = srcEntry.context;\n sCtx.drawImage(maskCanvas, drawX, drawY);\n if (backdrop) {\n sCtx.globalCompositeOperation = \"destination-atop\";\n sCtx.fillStyle = backdrop;\n sCtx.fillRect(0, 0, w, h);\n }\n if (!filterSpec) {\n return srcEntry;\n }\n const preparedEntry = this.canvasFactory.create(w, h);\n const pCtx = preparedEntry.context;\n pCtx.filter = filterSpec.url;\n const filterApplied = FeatureTest.isCanvasFilterSupported && pCtx.filter !== \"none\" && pCtx.filter !== \"\";\n pCtx.drawImage(srcEntry.canvas, 0, 0);\n if (FeatureTest.isCanvasFilterSupported) {\n pCtx.filter = \"none\";\n }\n if (!filterApplied) {\n const img = pCtx.getImageData(0, 0, w, h);\n const {\n data\n } = img;\n const {\n transferMap\n } = filterSpec;\n if (filterSpec.subtype === \"Luminosity\") {\n for (let i = 0, ii = data.length; i < ii; i += 4) {\n const a = 0.3 * data[i] + 0.59 * data[i + 1] + 0.11 * data[i + 2] + 0.5 | 0;\n data[i] = data[i + 1] = data[i + 2] = 0;\n data[i + 3] = transferMap?.[a] ?? a;\n }\n } else {\n for (let i = 3, ii = data.length; i < ii; i += 4) {\n data[i] = transferMap[data[i]];\n }\n }\n pCtx.putImageData(img, 0, 0);\n }\n this.canvasFactory.destroy(srcEntry);\n return preparedEntry;\n }\n beginSMaskMode(opIdx) {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const {\n width: drawnWidth,\n height: drawnHeight\n } = this.ctx.canvas;\n const scratchCanvas = this.canvasFactory.create(drawnWidth, drawnHeight);\n this.smaskScratchCanvas = scratchCanvas;\n this.suspendedCtx = this.ctx;\n const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this._ensurePreparedSMask(this.current.activeSMask);\n this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n this.canvasFactory.destroy(this.smaskScratchCanvas);\n this.smaskScratchCanvas = null;\n this._clearPreparedSMask();\n }\n #createKnockoutMaskCanvas(sourceCanvas, reuseEntry = null, alpha = 1) {\n const {\n width,\n height\n } = sourceCanvas;\n const maskEntry = reuseEntry ?? this.canvasFactory.create(width, height);\n const maskCtx = maskEntry.context;\n alpha = Math.round(alpha * 255) / 255;\n const needsAlphaScaling = alpha < 1;\n if (needsAlphaScaling && this.#knockoutFilterCache === undefined) {\n this.#knockoutFilterCache = FeatureTest.isCanvasFilterSupported ? new Map() : \"none\";\n }\n let knockoutFilter = \"none\";\n if (needsAlphaScaling && this.#knockoutFilterCache instanceof Map) {\n knockoutFilter = this.#knockoutFilterCache.getOrInsertComputed(alpha, () => this.filterFactory.addKnockoutFilter(alpha));\n }\n if (!needsAlphaScaling || knockoutFilter !== \"none\") {\n if (reuseEntry) {\n maskCtx.save();\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n maskCtx.clearRect(0, 0, width, height);\n maskCtx.restore();\n }\n maskCtx.filter = knockoutFilter;\n maskCtx.drawImage(sourceCanvas, 0, 0);\n maskCtx.filter = \"none\";\n return maskEntry;\n }\n const sourceData = sourceCanvas.getContext(\"2d\", {\n willReadFrequently: true\n }).getImageData(0, 0, width, height);\n const maskData = maskCtx.createImageData(width, height);\n const sourcePixels = sourceData.data,\n maskPixels = maskData.data;\n const alphaScale = alpha > 0 ? 1 / alpha : 1e6;\n for (let i = 3, ii = sourcePixels.length; i < ii; i += 4) {\n maskPixels[i] = Math.min(Math.round(sourcePixels[i] * alphaScale), 255);\n }\n maskCtx.putImageData(maskData, 0, 0);\n return maskEntry;\n }\n #getOrCreatePooledEntry(meta, key, width, height) {\n let entry = meta?.[key] ?? null;\n if (entry && (entry.canvas.width !== width || entry.canvas.height !== height)) {\n this.canvasFactory.destroy(entry);\n entry = null;\n }\n if (!entry) {\n entry = this.canvasFactory.create(width, height);\n if (meta) {\n meta[key] = entry;\n }\n return entry;\n }\n const ctx = entry.context;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, width, height);\n ctx.restore();\n return entry;\n }\n #compositeKnockoutSurface(destCtx, surfaceCanvas, options = {}) {\n const {\n backdropCanvas = null,\n destTransform = [1, 0, 0, 1, 0, 0],\n backdropOffset = [0, 0],\n reuseMaskEntry = null,\n poolMeta = null,\n sourceAlpha = 1,\n sourceFilter = \"none\",\n knockoutAlpha = 1\n } = options;\n const {\n width,\n height\n } = surfaceCanvas;\n const knockoutMaskEntry = this.#createKnockoutMaskCanvas(surfaceCanvas, reuseMaskEntry, knockoutAlpha);\n const sourceCompositeOperation = destCtx.globalCompositeOperation;\n destCtx.save();\n destCtx.setTransform(...destTransform);\n destCtx.globalAlpha = 1;\n if (FeatureTest.isCanvasFilterSupported) {\n destCtx.filter = \"none\";\n }\n destCtx.globalCompositeOperation = \"destination-out\";\n destCtx.drawImage(knockoutMaskEntry.canvas, 0, 0);\n if (backdropCanvas) {\n const [bx, by] = backdropOffset;\n const backdropEntry = this.#getOrCreatePooledEntry(poolMeta, \"knockoutBackdropEntry\", width, height);\n const backdropCtx = backdropEntry.context;\n backdropCtx.drawImage(backdropCanvas, bx, by, width, height, 0, 0, width, height);\n backdropCtx.globalCompositeOperation = \"destination-in\";\n backdropCtx.drawImage(knockoutMaskEntry.canvas, 0, 0);\n backdropCtx.globalCompositeOperation = \"source-over\";\n destCtx.globalCompositeOperation = \"destination-over\";\n destCtx.drawImage(backdropEntry.canvas, 0, 0);\n if (!poolMeta) {\n this.canvasFactory.destroy(backdropEntry);\n }\n }\n destCtx.globalCompositeOperation = sourceCompositeOperation;\n destCtx.globalAlpha = sourceAlpha;\n if (FeatureTest.isCanvasFilterSupported) {\n destCtx.filter = sourceFilter ?? \"none\";\n }\n destCtx.drawImage(surfaceCanvas, 0, 0);\n destCtx.restore();\n if (!reuseMaskEntry) {\n this.canvasFactory.destroy(knockoutMaskEntry);\n }\n }\n #beginKnockoutElement(alpha = 1) {\n if (this.#knockoutGroupLevel === 0 || this.#knockoutElementDepth > 0 || !this.contentVisible) {\n return false;\n }\n this.#knockoutElementDepth++;\n this.#knockoutElementAlpha = alpha;\n const groupMeta = this.#groupStackMeta.at(-1);\n const {\n canvas\n } = this.ctx;\n const tempEntry = this.#getOrCreatePooledEntry(groupMeta, \"knockoutTempEntry\", canvas.width, canvas.height);\n this.#knockoutTempCanvasEntry = tempEntry;\n const tempCtx = tempEntry.context;\n tempCtx.save();\n tempCtx.setTransform(this.ctx.getTransform());\n copyCtxState(this.ctx, tempCtx);\n this.#knockoutSavedGCO = tempCtx.globalCompositeOperation;\n tempCtx.globalCompositeOperation = \"source-over\";\n mirrorContextOperations(tempCtx, this.ctx);\n this.#knockoutElementGroupMeta = groupMeta;\n this.#knockoutSavedCtx = this.ctx;\n this.#knockoutSavedSMaskCtx = this.suspendedCtx;\n this.ctx = tempCtx;\n if (this.inSMaskMode) {\n this.suspendedCtx = tempCtx;\n }\n return true;\n }\n #endKnockoutElement(started) {\n if (!started) {\n return;\n }\n const tempEntry = this.#knockoutTempCanvasEntry;\n const savedCtx = this.#knockoutSavedCtx;\n const savedSMaskCtx = this.#knockoutSavedSMaskCtx;\n const tempCtx = tempEntry.context;\n this.#knockoutTempCanvasEntry = null;\n this.#knockoutSavedCtx = null;\n this.#knockoutSavedSMaskCtx = null;\n if (this.inSMaskMode && this.suspendedCtx === tempCtx && this.ctx !== tempCtx) {\n this.endSMaskMode();\n }\n if (this.inSMaskMode) {\n this.suspendedCtx = savedSMaskCtx;\n }\n this.ctx._removeMirroring();\n this.ctx.globalCompositeOperation = this.#knockoutSavedGCO;\n this.#knockoutSavedGCO = null;\n copyCtxState(this.ctx, savedCtx);\n this.ctx = savedCtx;\n const groupMeta = this.#knockoutElementGroupMeta;\n this.#knockoutElementGroupMeta = null;\n const knockoutAlpha = this.#knockoutElementAlpha;\n this.#knockoutElementAlpha = 1;\n try {\n this.#compositeKnockoutSurface(savedSMaskCtx ?? savedCtx, tempEntry.canvas, {\n backdropCanvas: groupMeta?.backdropCtx?.canvas ?? null,\n backdropOffset: groupMeta?.backdropCtx ? [groupMeta.offsetX, groupMeta.offsetY] : [0, 0],\n reuseMaskEntry: groupMeta?.knockoutMaskEntry ?? null,\n poolMeta: groupMeta,\n knockoutAlpha\n });\n } finally {\n tempCtx.restore();\n this.#knockoutElementDepth--;\n if (!groupMeta) {\n this.canvasFactory.destroy(tempEntry);\n }\n }\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n dirtyBox = dirtyBox ? [Math.floor(dirtyBox[0]), Math.floor(dirtyBox[1]), Math.ceil(dirtyBox[2]), Math.ceil(dirtyBox[3])] : [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n const applySMaskInPlace = this.#knockoutElementDepth > 0 && suspendedCtx === this.ctx;\n this.composeSMask(applySMaskInPlace ? null : suspendedCtx, smask, this.ctx, dirtyBox);\n if (applySMaskInPlace) {\n return;\n }\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n const preparedEntry = this.smaskPreparedEntry;\n if (preparedEntry) {\n let clipX = layerOffsetX;\n let clipY = layerOffsetY;\n let clipW = layerWidth;\n let clipH = layerHeight;\n const oobAlpha = this.smaskPreparedOOBAlpha;\n const hasOOBAlpha = oobAlpha !== null;\n if (hasOOBAlpha) {\n clipX = Math.max(layerOffsetX, smask.offsetX);\n clipY = Math.max(layerOffsetY, smask.offsetY);\n const x1 = Math.min(layerOffsetX + layerWidth, smask.offsetX + smask.canvas.width);\n const y1 = Math.min(layerOffsetY + layerHeight, smask.offsetY + smask.canvas.height);\n clipW = x1 - clipX;\n clipH = y1 - clipY;\n }\n if (clipW > 0 && clipH > 0) {\n const srcX = clipX - this.smaskPreparedOffsetX;\n const srcY = clipY - this.smaskPreparedOffsetY;\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(clipX, clipY, clipW, clipH);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(preparedEntry.canvas, srcX, srcY, clipW, clipH, clipX, clipY, clipW, clipH);\n layerCtx.restore();\n }\n if (hasOOBAlpha && oobAlpha < 255) {\n this._applySMaskOOBAlpha(layerCtx, layerOffsetX, layerOffsetY, layerWidth, layerHeight, clipX, clipY, clipX + clipW, clipY + clipH, oobAlpha);\n }\n } else {\n this.genericComposeSMask(smask, layerCtx, layerWidth, layerHeight, layerOffsetX, layerOffsetY);\n }\n if (!ctx) {\n return;\n }\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = smask.blendMode || \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, layerOffsetX, layerOffsetY, layerWidth, layerHeight, layerOffsetX, layerOffsetY, layerWidth, layerHeight);\n ctx.restore();\n }\n _applySMaskOOBAlpha(layerCtx, layerOffsetX, layerOffsetY, layerWidth, layerHeight, maskX0, maskY0, maskX1, maskY1, alpha) {\n const hasInnerCutout = maskX0 < maskX1 && maskY0 < maskY1;\n if (hasInnerCutout && maskX0 === layerOffsetX && maskY0 === layerOffsetY && maskX1 === layerOffsetX + layerWidth && maskY1 === layerOffsetY + layerHeight) {\n return;\n }\n const path = new Path2D();\n path.rect(layerOffsetX, layerOffsetY, layerWidth, layerHeight);\n if (hasInnerCutout) {\n path.rect(maskX0, maskY0, maskX1 - maskX0, maskY1 - maskY0);\n }\n layerCtx.save();\n layerCtx.globalAlpha = alpha / 255;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n layerCtx.clip(path, \"evenodd\");\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.fillStyle = \"#000000\";\n layerCtx.fillRect(layerOffsetX, layerOffsetY, layerWidth, layerHeight);\n layerCtx.restore();\n }\n genericComposeSMask(smask, layerCtx, width, height, layerOffsetX, layerOffsetY) {\n const {\n context: maskCtx,\n offsetX: maskOffsetX,\n offsetY: maskOffsetY\n } = smask;\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCtx.canvas, layerOffsetX - maskOffsetX, layerOffsetY - maskOffsetY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save(opIdx) {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.dependencyTracker?.save(opIdx);\n }\n restore(opIdx) {\n this.dependencyTracker?.restore(opIdx);\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n this.ctx.setTransform(this.suspendedCtx.getTransform());\n }\n this.checkSMaskState(opIdx);\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(opIdx, a, b, c, d, e, f) {\n this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(opIdx, op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n if (op !== OPS.stroke && op !== OPS.closeStroke) {\n this.current.tilingPatternDims = null;\n }\n this[op](opIdx, path);\n return;\n }\n if (this.dependencyTracker !== null) {\n const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, this.ctx, minMax[0] - outerExtraSize, minMax[2] + outerExtraSize, minMax[1] - outerExtraSize, minMax[3] + outerExtraSize).recordDependencies(opIdx, [\"transform\"]);\n }\n if (!(path instanceof Path2D)) {\n path = data[0] = makePathFromDrawOPS(path);\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n const tilingDims = this.current.tilingPatternDims;\n if (tilingDims && op !== OPS.stroke && op !== OPS.closeStroke && this.current.fillColor instanceof TilingPattern) {\n const clippedBBox = Util.intersect(this.current.clipBox, this.current.minMax);\n if (!clippedBBox) {\n this.current.tilingPatternDims = null;\n } else {\n this.current.fillColor.updatePatternDims(clippedBBox, tilingDims);\n }\n }\n this[op](opIdx, path);\n this._pathStartIdx = opIdx;\n }\n closePath(opIdx) {\n this.ctx.closePath();\n }\n stroke(opIdx, path, consumePath = true) {\n const started = consumePath && this.#beginKnockoutElement(this.current.strokeAlpha);\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n if (consumePath) {\n this.consumePath(opIdx, path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n this.#endKnockoutElement(started);\n }\n closeStroke(opIdx, path) {\n this.stroke(opIdx, path);\n }\n fill(opIdx, path, consumePath = true) {\n const started = consumePath && this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n const intersect = this.current.getClippedPathBoundingBox();\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n if (isPatternFill) {\n const dims = this.current.tilingPatternDims;\n const tileIdx = dims && fillColor.canSkipPatternCanvas(dims);\n if (tileIdx) {\n fillColor.drawPattern(this, path, this.pendingEOFill, tileIdx, opIdx);\n this.pendingEOFill = false;\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n this.current.tilingPatternDims = null;\n this.#endKnockoutElement(started);\n return;\n }\n const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n this.dependencyTracker?.save(opIdx);\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n if (needRestore) {\n ctx.restore();\n this.dependencyTracker?.restore(opIdx);\n }\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n this.#endKnockoutElement(started);\n }\n eoFill(opIdx, path) {\n this.pendingEOFill = true;\n this.fill(opIdx, path);\n }\n fillStroke(opIdx, path) {\n const started = this.#beginKnockoutElement(Math.min(this.current.fillAlpha, this.current.strokeAlpha));\n this.fill(opIdx, path, false);\n this.stroke(opIdx, path, false);\n this.consumePath(opIdx, path);\n this.#endKnockoutElement(started);\n }\n eoFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n closeFillStroke(opIdx, path) {\n this.fillStroke(opIdx, path);\n }\n closeEOFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n endPath(opIdx, path) {\n this.consumePath(opIdx, path);\n }\n rawFillPath(opIdx, path) {\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n this.ctx.fill(path);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.rawFillPath).recordOperation(opIdx);\n this.#endKnockoutElement(started);\n }\n clip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = EO_CLIP;\n }\n beginText(opIdx) {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.dependencyTracker?.recordOpenMarker(opIdx).resetIncrementalData(\"sameLineText\").resetIncrementalData(\"moveText\", opIdx);\n }\n endText(opIdx) {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (this.dependencyTracker) {\n const {\n dependencyTracker\n } = this;\n if (paths !== undefined) {\n dependencyTracker.recordFutureForcedDependency(\"textClip\", dependencyTracker.getOpenMarker()).recordFutureForcedDependency(\"textClip\", opIdx);\n }\n dependencyTracker.recordCloseMarker(opIdx);\n }\n if (paths !== undefined) {\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n if (!path) {\n continue;\n }\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n }\n delete this.pendingTextPaths;\n }\n setCharSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n this.current.charSpacing = spacing;\n }\n setWordSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n this.current.wordSpacing = spacing;\n }\n setHScale(opIdx, scale) {\n this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n this.current.textHScale = scale / 100;\n }\n setLeading(opIdx, leading) {\n this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n this.current.leading = -leading;\n }\n setFont(opIdx, fontRefName, size) {\n this.dependencyTracker?.recordSimpleData(\"font\", opIdx).recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n const browserFontSize = MathClamp(size, MIN_FONT_SIZE, MAX_FONT_SIZE);\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(opIdx, mode) {\n this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n this.current.textRenderingMode = mode;\n }\n setTextRise(opIdx, rise) {\n this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n this.current.textRise = rise;\n }\n moveText(opIdx, x, y) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordIncrementalData(\"moveText\", opIdx);\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(opIdx, x, y) {\n this.setLeading(opIdx, -y);\n this.moveText(opIdx, x, y);\n }\n setTextMatrix(opIdx, matrix) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordSimpleData(\"textMatrix\", opIdx);\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine(opIdx) {\n this.moveText(opIdx, 0, this.current.leading);\n this.dependencyTracker?.recordIncrementalData(\"moveText\", this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(opIdx, character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if ((font.disableFontFace || isAddToPathSet || patternFill || patternStroke) && !font.missingFile) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (path && (font.disableFontFace || patternFill || patternStroke)) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n const scaledPath = this.#getScaledPath(path, currentTransform, patternFillTransform);\n ctx.fill(scaledPath);\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character));\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (this.dependencyTracker) {\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character)).recordDependencies(opIdx, Dependencies.stroke);\n }\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y);\n }\n }\n get isFontSubpixelAAEnabled() {\n const tmpCanvas = this.canvasFactory.create(10, 10);\n const ctx = tmpCanvas.context;\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n this.canvasFactory.destroy(tmpCanvas);\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(opIdx, glyphs) {\n if (this.dependencyTracker) {\n this.dependencyTracker.recordDependencies(opIdx, Dependencies.showText).resetBBox(opIdx);\n if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n this.dependencyTracker.recordFutureForcedDependency(\"textClip\", opIdx).inheritPendingDependenciesAsFutureForcedDependencies();\n }\n }\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n const started = this.#beginKnockoutElement(current.fillAlpha);\n this.showType3Text(opIdx, glyphs);\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n this.#endKnockoutElement(started);\n return;\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n this.dependencyTracker?.recordOperation(opIdx);\n return;\n }\n const started = this.#beginKnockoutElement(current.fillAlpha);\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const needsFill = fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n const needsStroke = fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n if (needsStroke) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (needsFill && current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (needsStroke && current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n const joinedChars = chars.join(\"\");\n ctx.fillText(joinedChars, 0, 0);\n if (this.dependencyTracker !== null) {\n const measure = ctx.measureText(joinedChars);\n this.dependencyTracker.recordBBox(opIdx, this.ctx, -measure.actualBoundingBoxLeft, measure.actualBoundingBoxRight, -measure.actualBoundingBoxAscent, measure.actualBoundingBoxDescent).recordShowTextOperation(opIdx);\n }\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n this.#endKnockoutElement(started);\n return;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n let measure;\n if (font.remeasure && width > 0) {\n measure = ctx.measureText(character);\n const measuredWidth = measure.width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, measure ? {\n bbox: null\n } : font, fontSize / fontSizeScale, scaledX, scaledY, () => measure ?? ctx.measureText(character));\n } else {\n this.paintChar(opIdx, character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(opIdx, accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n this.#endKnockoutElement(started);\n }\n showType3Text(opIdx, glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n const dependencyTracker = this.dependencyTracker;\n this.dependencyTracker = dependencyTracker ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx) : null;\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList.get(glyph.operatorListId);\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n } else if (this.contentVisible) {\n this.save();\n if (operatorList.fnArray[0] === OPS.setCharWidth) {\n current.fillAlpha = current.strokeAlpha = 1;\n ctx.globalAlpha = 1;\n }\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n if (dependencyTracker) {\n this.dependencyTracker = dependencyTracker;\n }\n }\n setCharWidth(opIdx, xWidth, yWidth) {}\n setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury).recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n this.endPath(opIdx);\n }\n getColorN_Pattern(opIdx, IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: (ctx, renderingOpIdx) => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n }, undefined, undefined, this.dependencyTracker ? new CanvasNestedDependencyTracker(this.dependencyTracker, renderingOpIdx, true) : null)\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(opIdx, IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternStroke = true;\n }\n setFillColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n const pattern = this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternFill = true;\n this.current.tilingPatternDims = pattern instanceof TilingPattern ? [0, 0, 0, 0] : null;\n }\n setStrokeRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n this.current.tilingPatternDims = null;\n }\n setFillTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n this.current.tilingPatternDims = null;\n }\n _getPattern(opIdx, objId, matrix = null) {\n const pattern = this.cachedPatterns.getOrInsertComputed(objId, () => getShadingPattern(this.getObject(opIdx, objId)));\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n this.save(opIdx);\n const pattern = this._getPattern(opIdx, objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING, opIdx);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.dependencyTracker?.resetBBox(opIdx).recordFullPageBBox(opIdx).recordDependencies(opIdx, Dependencies.transform).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore(opIdx);\n this.#endKnockoutElement(started);\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(opIdx, matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(opIdx, ...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n this.endPath(opIdx);\n }\n }\n paintFormXObjectEnd(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.restore(opIdx);\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n const {\n inSMaskMode\n } = this;\n if (inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if ((!group.needsIsolation || !group.isolated && !group.hasSoftMask) && !group.knockout && !group.isGray && this.#knockoutGroupLevel === 0 && currentCtx.globalAlpha === 1 && currentCtx.globalCompositeOperation === \"source-over\" && !inSMaskMode) {\n if (group.bbox) {\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n currentCtx.clip(clip);\n }\n this.groupStack.push(null);\n this.#groupStackMeta.push(null);\n this.groupLevel++;\n return;\n }\n if (!group.isolated && !group.knockout && this.#knockoutGroupLevel === 0) {\n info(\"TODO: Fully support non-isolated non-knockout groups.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n let bounds;\n if (group.bbox) {\n bounds = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n } else {\n bounds = canvasBounds;\n }\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n const scratchCanvas = this.canvasFactory.create(drawnWidth, drawnHeight);\n if (group.smask) {\n this.smaskGroupCanvases.push(scratchCanvas);\n }\n const groupCtx = scratchCanvas.context;\n const backdropCtx = group.knockout && !group.isolated ? currentCtx : null;\n const hasInnerBackdrop = !group.isolated && !group.knockout && !group.smask && group.needsIsolation && this.#knockoutGroupLevel > 0;\n const knockoutMaskEntry = group.knockout ? this.canvasFactory.create(drawnWidth, drawnHeight) : null;\n const savedKnockoutLevel = this.#knockoutGroupLevel;\n if (group.knockout) {\n this.#knockoutGroupLevel++;\n } else {\n this.#knockoutGroupLevel = 0;\n }\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n const needsBackdropCopy = !group.isolated && !group.smask && group.needsIsolation;\n const replaceBackdrop = needsBackdropCopy && !inSMaskMode && savedKnockoutLevel === 0 && !group.knockout && !group.isGray && group.hasSoftMask && currentCtx.globalAlpha === 1 && currentCtx.globalCompositeOperation === \"source-over\" && this.current.transferMaps === \"none\";\n if (needsBackdropCopy && (inSMaskMode || replaceBackdrop)) {\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.drawImage(currentCtx.canvas, -offsetX, -offsetY);\n groupCtx.restore();\n }\n if (group.bbox) {\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\n }\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null\n });\n }\n if (!group.smask || this.dependencyTracker) {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([\"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"]).pushBaseTransform(currentCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1], [\"TR\", null]]);\n this.groupStack.push(currentCtx);\n this.#groupStackMeta.push({\n backdropCtx,\n savedKnockoutLevel,\n offsetX,\n offsetY,\n hasInnerBackdrop,\n replaceBackdrop,\n knockoutMaskEntry,\n knockoutTempEntry: null,\n knockoutBackdropEntry: null\n });\n this.groupLevel++;\n }\n endGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n const groupMeta = this.#groupStackMeta.pop();\n if (groupMeta) {\n this.#knockoutGroupLevel = groupMeta.savedKnockoutLevel;\n }\n if (ctx === null) {\n this.restore(opIdx);\n return;\n }\n if (group.isGray) {\n this.#convertGroupToGray(groupCtx);\n }\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n this.dependencyTracker?.popBaseTransform();\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore(opIdx);\n if (this.dependencyTracker) {\n this.ctx.restore();\n if (this.inSMaskMode) {\n this.ctx.setTransform(this.suspendedCtx.getTransform());\n }\n }\n this.#destroyKnockoutPools(groupMeta);\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore(opIdx);\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n const parentGroupMeta = this.#groupStackMeta.at(-1);\n if (this.#knockoutGroupLevel > 0) {\n if (groupMeta.hasInnerBackdrop) {\n const {\n width,\n height\n } = groupCtx.canvas;\n const colorEntry = this.canvasFactory.create(width, height);\n const colorCtx = colorEntry.context;\n colorCtx.drawImage(ctx.canvas, groupMeta.offsetX, groupMeta.offsetY, width, height, 0, 0, width, height);\n colorCtx.globalCompositeOperation = \"source-over\";\n colorCtx.drawImage(groupCtx.canvas, 0, 0);\n const shapeMaskEntry = this.#createKnockoutMaskCanvas(groupCtx.canvas);\n colorCtx.globalCompositeOperation = \"destination-in\";\n colorCtx.drawImage(shapeMaskEntry.canvas, 0, 0);\n const sourceCompositeOperation = this.ctx.globalCompositeOperation;\n const sourceAlpha = this.ctx.globalAlpha;\n const sourceFilter = this.ctx.filter;\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n this.ctx.globalAlpha = 1;\n if (FeatureTest.isCanvasFilterSupported) {\n this.ctx.filter = \"none\";\n }\n this.ctx.globalCompositeOperation = \"destination-out\";\n this.ctx.drawImage(shapeMaskEntry.canvas, 0, 0);\n this.ctx.globalCompositeOperation = sourceCompositeOperation;\n this.ctx.globalAlpha = sourceAlpha;\n if (FeatureTest.isCanvasFilterSupported) {\n this.ctx.filter = sourceFilter ?? \"none\";\n }\n this.ctx.drawImage(colorEntry.canvas, 0, 0);\n this.ctx.restore();\n this.canvasFactory.destroy(shapeMaskEntry);\n this.canvasFactory.destroy(colorEntry);\n } else {\n const backdropCtx = parentGroupMeta?.backdropCtx ?? null;\n this.#compositeKnockoutSurface(this.ctx, groupCtx.canvas, {\n backdropCanvas: backdropCtx?.canvas ?? null,\n destTransform: currentMtx,\n backdropOffset: backdropCtx ? [parentGroupMeta.offsetX + groupMeta.offsetX, parentGroupMeta.offsetY + groupMeta.offsetY] : [0, 0],\n sourceAlpha: this.ctx.globalAlpha,\n sourceFilter: this.ctx.filter\n });\n }\n } else {\n if (groupMeta.replaceBackdrop) {\n const clip = new Path2D();\n clip.rect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n this.ctx.clip(clip);\n this.ctx.globalCompositeOperation = \"copy\";\n }\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n }\n this.ctx.restore();\n this.canvasFactory.destroy({\n canvas: groupCtx.canvas,\n context: groupCtx\n });\n this.#destroyKnockoutPools(groupMeta);\n this.compose(dirtyBox);\n }\n }\n #convertGroupToGray(groupCtx) {\n const {\n canvas\n } = groupCtx;\n const {\n width,\n height\n } = canvas;\n if (FeatureTest.isCanvasFilterSupported) {\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.filter = \"grayscale(1)\";\n groupCtx.globalAlpha = 1;\n groupCtx.globalCompositeOperation = \"copy\";\n groupCtx.drawImage(canvas, 0, 0);\n groupCtx.restore();\n return;\n }\n const imageData = groupCtx.getImageData(0, 0, width, height);\n const {\n data\n } = imageData;\n for (let i = 0, ii = data.length; i < ii; i += 4) {\n const gray = data[i] * 0.2126 + data[i + 1] * 0.7152 + data[i + 2] * 0.0722 + 0.5 | 0;\n data[i] = data[i + 1] = data[i + 2] = gray;\n }\n groupCtx.putImageData(imageData, 0, 0);\n }\n #destroyKnockoutPools(groupMeta) {\n if (!groupMeta) {\n return;\n }\n if (groupMeta.knockoutMaskEntry) {\n this.canvasFactory.destroy(groupMeta.knockoutMaskEntry);\n groupMeta.knockoutMaskEntry = null;\n }\n if (groupMeta.knockoutTempEntry) {\n this.canvasFactory.destroy(groupMeta.knockoutTempEntry);\n groupMeta.knockoutTempEntry = null;\n }\n if (groupMeta.knockoutBackdropEntry) {\n this.canvasFactory.destroy(groupMeta.knockoutBackdropEntry);\n groupMeta.knockoutBackdropEntry = null;\n }\n }\n beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas, canvasName) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save(opIdx);\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n if (canvasName) {\n const canvases = this.annotationCanvasMap.getOrInsertComputed(id, makeArr);\n canvas.setAttribute(\"data-canvas-name\", canvasName);\n const index = canvases.findIndex(c => c.getAttribute(\"data-canvas-name\") === canvasName);\n if (index === -1) {\n canvases.push(canvas);\n } else {\n canvases[index] = canvas;\n }\n } else {\n this.annotationCanvasMap.set(id, canvas);\n }\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath(opIdx);\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.baseTransformStack.push(this.baseTransform);\n this.transform(opIdx, ...transform);\n this.transform(opIdx, ...matrix);\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n endAnnotation(opIdx) {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n this.baseTransform = this.baseTransformStack.pop();\n }\n paintImageMaskXObject(opIdx, img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(opIdx, img.data, img);\n img.count = count;\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(opIdx, img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, mask.offsetX, mask.offsetX + maskCanvas.width, mask.offsetY, mask.offsetY + maskCanvas.height).recordOperation(opIdx);\n ctx.restore();\n if (mask.canvasEntry) {\n this.canvasFactory.destroy(mask.canvasEntry);\n }\n this.compose();\n this.#endKnockoutElement(started);\n }\n paintImageMaskXObjectRepeat(opIdx, img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(opIdx, img.data, img);\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(opIdx, img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n this.dependencyTracker?.resetBBox(opIdx);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n ctx.drawImage(mask.canvas, trans[4], trans[5]);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, trans[4], trans[4] + mask.canvas.width, trans[5], trans[5] + mask.canvas.height);\n }\n ctx.restore();\n if (mask.canvasEntry) {\n this.canvasFactory.destroy(mask.canvasEntry);\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n this.#endKnockoutElement(started);\n }\n paintImageMaskXObjectGroup(opIdx, images) {\n if (!this.contentVisible) {\n return;\n }\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n this.dependencyTracker?.resetBBox(opIdx).recordDependencies(opIdx, Dependencies.transformAndFill);\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.canvasFactory.create(width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(opIdx, data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n this.canvasFactory.destroy(maskCanvas);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n ctx.restore();\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n this.#endKnockoutElement(started);\n }\n paintImageXObject(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(opIdx, imgData);\n }\n paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(opIdx, imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return {\n img: imgData.bitmap,\n canvasEntry: null\n };\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.canvasFactory.create(width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return {\n img: tmpCanvas.canvas,\n canvasEntry: tmpCanvas\n };\n }\n paintInlineImageXObject(opIdx, imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n this.save(opIdx);\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n let inlineImgCanvas = null;\n if (imgData.bitmap) {\n const result = this.applyTransferMapsToBitmap(imgData);\n imgToPaint = result.img;\n inlineImgCanvas = result.canvasEntry;\n } else {\n const tmpCanvas = this.canvasFactory.create(width, height);\n putBinaryImageData(tmpCanvas.context, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCanvas.context);\n inlineImgCanvas = tmpCanvas;\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n if (this.dependencyTracker) {\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, ctx, 0, width, -height, 0).recordDependencies(opIdx, Dependencies.imageXObject).recordOperation(opIdx);\n this.imagesTracker?.record(ctx, width, height, this.dependencyTracker.clipBox);\n }\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n if (scaled.tmpCanvas) {\n this.canvasFactory.destroy(scaled.tmpCanvas);\n }\n if (inlineImgCanvas) {\n this.canvasFactory.destroy(inlineImgCanvas);\n }\n this.compose();\n this.restore(opIdx);\n this.#endKnockoutElement(started);\n }\n paintInlineImageXObjectGroup(opIdx, imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n let imgToPaint;\n let inlineImgCanvas = null;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.canvasFactory.create(w, h);\n putBinaryImageData(tmpCanvas.context, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCanvas.context);\n inlineImgCanvas = tmpCanvas;\n }\n this.dependencyTracker?.resetBBox(opIdx);\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n ctx.restore();\n }\n if (inlineImgCanvas) {\n this.canvasFactory.destroy(inlineImgCanvas);\n }\n this.dependencyTracker?.recordOperation(opIdx);\n this.compose();\n this.#endKnockoutElement(started);\n }\n paintSolidColorImageMask(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, 0, 1, 0, 1).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n this.#endKnockoutElement(started);\n }\n markPoint(opIdx, tag) {}\n markPointProps(opIdx, tag, properties) {}\n beginMarkedContent(opIdx, tag) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(opIdx, tag, properties) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent(opIdx) {\n this.dependencyTracker?.endMarkedContent(opIdx);\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat(opIdx) {}\n endCompat(opIdx) {}\n consumePath(opIdx, path, clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n this.dependencyTracker?.bboxToClipBoxDropOperation(opIdx).recordFutureForcedDependency(\"clipPath\", opIdx);\n } else {\n this.dependencyTracker?.recordOperation(opIdx);\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const SCALE_MATRIX = CanvasGraphics.#SCALE_MATRIX ??= new DOMMatrix();\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/shared/base_pdf_stream.js\n\nclass BasePDFStream {\n #PDFStreamReader = null;\n #PDFStreamRangeReader = null;\n _fullReader = null;\n _rangeReaders = new Set();\n _source = null;\n constructor(source, PDFStreamReader, PDFStreamRangeReader) {\n this._source = source;\n this.#PDFStreamReader = PDFStreamReader;\n this.#PDFStreamRangeReader = PDFStreamRangeReader;\n }\n get _progressiveDataLength() {\n return this._fullReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullReader, \"BasePDFStream.getFullReader can only be called once.\");\n return this._fullReader = new this.#PDFStreamReader(this);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new this.#PDFStreamRangeReader(this, begin, end);\n this._rangeReaders.add(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullReader?.cancel(reason);\n for (const reader of new Set(this._rangeReaders)) {\n reader.cancel(reason);\n }\n }\n}\nclass BasePDFStreamReader {\n onProgress = null;\n _contentLength = 0;\n _filename = null;\n _headersCapability = Promise.withResolvers();\n _isRangeSupported = false;\n _isStreamingSupported = false;\n _loaded = 0;\n _stream = null;\n constructor(stream) {\n this._stream = stream;\n }\n _callOnProgress() {\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n unreachable(\"Abstract method `read` called\");\n }\n cancel(reason) {\n unreachable(\"Abstract method `cancel` called\");\n }\n}\nclass BasePDFStreamRangeReader {\n _stream = null;\n constructor(stream, begin, end) {\n this._stream = stream;\n }\n async read() {\n unreachable(\"Abstract method `read` called\");\n }\n cancel(reason) {\n unreachable(\"Abstract method `cancel` called\");\n }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QB])\\?((?:[^?]|\\?(?!=))*)\\?=/gi, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-f]{2})/gi, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction trimHeadersEnd(str) {\n let end = str.length;\n while (end > 0 && str[end - 1] !== \" \" && /\\s/.test(str[end - 1])) {\n end--;\n }\n return str.slice(0, end);\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const rv = {\n contentLength: 0,\n isRangeSupported: false\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return rv;\n }\n rv.contentLength = length;\n if (length <= 2 * rangeChunkSize) {\n return rv;\n }\n if (disableRange || !isHttp) {\n return rv;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return rv;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding === \"identity\") {\n rv.isRangeSupported = true;\n }\n return rv;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url.href}\".`, status, status === 404 || status === 0 && url.protocol === \"file:\");\n}\nfunction ensureResponseOrigin(rangeOrigin, origin) {\n if (rangeOrigin !== origin) {\n throw new Error(`Expected range response-origin \"${rangeOrigin}\" to match \"${origin}\".`);\n }\n}\n\n;// ./src/display/fetch_stream.js\n\n\n\nfunction fetchUrl(url, headers, withCredentials, abortController) {\n return fetch(url, {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n });\n}\nfunction ensureResponseStatus(status, url) {\n if (status !== 200 && status !== 206) {\n throw createResponseError(status, url);\n }\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n throw new Error(`getArrayBuffer - unexpected data: ${val}`);\n}\nclass PDFFetchStream extends BasePDFStream {\n _responseOrigin = null;\n constructor(source) {\n super(source, PDFFetchStreamReader, PDFFetchStreamRangeReader);\n const {\n httpHeaders,\n url\n } = source;\n assert(/https?:/.test(url.protocol), \"PDFFetchStream only supports http(s):// URLs.\");\n this.headers = createHeaders(true, httpHeaders);\n }\n}\nclass PDFFetchStreamReader extends BasePDFStreamReader {\n _abortController = new AbortController();\n _reader = null;\n constructor(stream) {\n super(stream);\n const {\n disableRange,\n disableStream,\n rangeChunkSize,\n url,\n withCredentials\n } = stream._source;\n this._isStreamingSupported = !disableStream;\n const headers = new Headers(stream.headers);\n fetchUrl(url, headers, withCredentials, this._abortController).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n ensureResponseStatus(response.status, url);\n this._reader = response.body.getReader();\n const responseHeaders = response.headers;\n const {\n contentLength,\n isRangeSupported\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: true,\n rangeChunkSize,\n disableRange\n });\n this._contentLength = contentLength;\n this._isRangeSupported = isRangeSupported;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n this._headersCapability.resolve();\n }).catch(this._headersCapability.reject);\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this._callOnProgress();\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader extends BasePDFStreamRangeReader {\n _abortController = new AbortController();\n _readCapability = Promise.withResolvers();\n _reader = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n const {\n url,\n withCredentials\n } = stream._source;\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n fetchUrl(url, headers, withCredentials, this._abortController).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n ensureResponseOrigin(responseOrigin, stream._responseOrigin);\n ensureResponseStatus(response.status, url);\n this._reader = response.body.getReader();\n this._readCapability.resolve();\n }).catch(this._readCapability.reject);\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\n\nfunction transport_stream_getArrayBuffer(val) {\n return val instanceof Uint8Array && val.byteLength === val.buffer.byteLength ? val.buffer : new Uint8Array(val).buffer;\n}\nfunction endRequests() {\n for (const capability of this._requests) {\n capability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n}\nclass PDFDataTransportStream extends BasePDFStream {\n _progressiveDone = false;\n _queuedChunks = [];\n constructor(source) {\n super(source, PDFDataTransportStreamReader, PDFDataTransportStreamRangeReader);\n const {\n pdfDataRangeTransport\n } = source;\n const {\n initialData,\n progressiveDone\n } = pdfDataRangeTransport;\n if (initialData?.length > 0) {\n const buffer = transport_stream_getArrayBuffer(initialData);\n this._queuedChunks.push(buffer);\n }\n this._progressiveDone = progressiveDone;\n const listener = args => {\n switch (args.type) {\n case \"range\":\n case \"progressiveRead\":\n this.#onReceiveData(args.begin, args.chunk);\n break;\n case \"progressiveDone\":\n this._fullReader?.progressiveDone();\n this._progressiveDone = true;\n break;\n }\n };\n pdfDataRangeTransport.transportReady(listener);\n }\n #onReceiveData(begin, chunk) {\n const buffer = transport_stream_getArrayBuffer(chunk);\n if (begin === undefined) {\n if (this._fullReader) {\n this._fullReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const rangeReader = this._rangeReaders.keys().find(r => r._begin === begin);\n assert(rangeReader, \"#onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n rangeReader._enqueue(buffer);\n }\n }\n getFullReader() {\n const reader = super.getFullReader();\n this._queuedChunks = null;\n return reader;\n }\n getRangeReader(begin, end) {\n const reader = super.getRangeReader(begin, end);\n if (reader) {\n reader.onDone = () => this._rangeReaders.delete(reader);\n this._source.pdfDataRangeTransport.requestDataRange(begin, end);\n }\n return reader;\n }\n cancelAllRequests(reason) {\n super.cancelAllRequests(reason);\n this._source.pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader extends BasePDFStreamReader {\n #endRequests = endRequests.bind(this);\n _done = false;\n _queuedChunks = null;\n _requests = [];\n constructor(stream) {\n super(stream);\n const {\n pdfDataRangeTransport,\n disableRange,\n disableStream\n } = stream._source;\n const {\n length,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = stream._queuedChunks || [];\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._done = stream._progressiveDone;\n this._contentLength = length;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n if (isPdfFile(contentDispositionFilename)) {\n this._filename = contentDispositionFilename;\n }\n this._headersCapability.resolve();\n const loaded = this._loaded;\n Promise.resolve().then(() => {\n if (loaded > 0 && this._loaded === loaded) {\n this._callOnProgress();\n }\n });\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n this._callOnProgress();\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this.#endRequests();\n }\n progressiveDone() {\n this._done ||= true;\n if (this._queuedChunks.length === 0) {\n this.#endRequests();\n }\n }\n}\nclass PDFDataTransportStreamRangeReader extends BasePDFStreamRangeReader {\n #endRequests = endRequests.bind(this);\n onDone = null;\n _begin = -1;\n _done = false;\n _queuedChunk = null;\n _requests = [];\n constructor(stream, begin, end) {\n super(stream, begin, end);\n this._begin = begin;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n this.#endRequests();\n }\n this._done = true;\n this.onDone?.();\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this.#endRequests();\n this.onDone?.();\n }\n}\n\n;// ./src/display/network.js\n\n\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(val) {\n return typeof val !== \"string\" ? val : stringToBytes(val).buffer;\n}\nclass PDFNetworkStream extends BasePDFStream {\n #pendingRequests = new WeakMap();\n _responseOrigin = null;\n constructor(source) {\n super(source, PDFNetworkStreamReader, PDFNetworkStreamRangeReader);\n const {\n httpHeaders,\n url\n } = source;\n this.url = url;\n this.isHttp = /https?:/.test(url.protocol);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n }\n _request(args) {\n const xhr = new XMLHttpRequest();\n const pendingRequest = {\n validateStatus: null,\n onHeadersReceived: args.onHeadersReceived,\n onDone: args.onDone,\n onError: args.onError,\n onProgress: args.onProgress\n };\n this.#pendingRequests.set(xhr, pendingRequest);\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this._source.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.validateStatus = status => status === PARTIAL_CONTENT_RESPONSE || status === OK_RESPONSE;\n } else {\n pendingRequest.validateStatus = status => status === OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => args.onError(xhr.status);\n xhr.onreadystatechange = this.#onStateChange.bind(this, xhr);\n xhr.onprogress = this.#onProgress.bind(this, xhr);\n xhr.send(null);\n return xhr;\n }\n #onProgress(xhr, evt) {\n const pendingRequest = this.#pendingRequests.get(xhr);\n pendingRequest?.onProgress?.(evt);\n }\n #onStateChange(xhr, evt) {\n const pendingRequest = this.#pendingRequests.get(xhr);\n if (!pendingRequest) {\n return;\n }\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!this.#pendingRequests.has(xhr)) {\n return;\n }\n this.#pendingRequests.delete(xhr);\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n if (!pendingRequest.validateStatus(xhrStatus)) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr.response);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n if (/bytes \\d+-\\d+\\/\\d+/.test(rangeHeader)) {\n pendingRequest.onDone(chunk);\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone(chunk);\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n _abortRequest(xhr) {\n if (this.#pendingRequests.has(xhr)) {\n this.#pendingRequests.delete(xhr);\n xhr.abort();\n }\n }\n getRangeReader(begin, end) {\n const reader = super.getRangeReader(begin, end);\n if (reader) {\n reader.onClosed = () => this._rangeReaders.delete(reader);\n }\n return reader;\n }\n}\nclass PDFNetworkStreamReader extends BasePDFStreamReader {\n #endRequests = endRequests.bind(this);\n _cachedChunks = [];\n _done = false;\n _requests = [];\n _storedError = null;\n constructor(stream) {\n super(stream);\n this._fullRequestXhr = stream._request({\n onHeadersReceived: this.#onHeadersReceived.bind(this),\n onDone: this.#onDone.bind(this),\n onError: this.#onError.bind(this),\n onProgress: this.#onProgress.bind(this)\n });\n }\n #onHeadersReceived() {\n const stream = this._stream;\n const {\n disableRange,\n rangeChunkSize\n } = stream._source;\n const fullRequestXhr = this._fullRequestXhr;\n stream._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? trimHeadersEnd(rawResponseHeaders.trimStart()).split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n contentLength,\n isRangeSupported\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize,\n disableRange\n });\n this._contentLength = contentLength;\n this._isRangeSupported = isRangeSupported;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n stream._abortRequest(fullRequestXhr);\n }\n this._headersCapability.resolve();\n }\n #onDone(chunk) {\n if (this._requests.length > 0) {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(chunk);\n }\n this._done = true;\n if (this._cachedChunks.length === 0) {\n this.#endRequests();\n }\n }\n #onError(status) {\n this._storedError = createResponseError(status, this._stream.url);\n this._headersCapability.reject(this._storedError);\n for (const capability of this._requests) {\n capability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n #onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n this.#endRequests();\n this._stream._abortRequest(this._fullRequestXhr);\n this._fullRequestXhr = null;\n }\n}\nclass PDFNetworkStreamRangeReader extends BasePDFStreamRangeReader {\n #endRequests = endRequests.bind(this);\n onClosed = null;\n _done = false;\n _queuedChunk = null;\n _requests = [];\n _storedError = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n this._requestXhr = stream._request({\n begin,\n end,\n onHeadersReceived: this.#onHeadersReceived.bind(this),\n onDone: this.#onDone.bind(this),\n onError: this.#onError.bind(this),\n onProgress: null\n });\n }\n #onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._requestXhr?.responseURL);\n try {\n ensureResponseOrigin(responseOrigin, this._stream._responseOrigin);\n } catch (ex) {\n this._storedError = ex;\n this.#onError(0);\n }\n }\n #onDone(chunk) {\n if (this._requests.length > 0) {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n this.#endRequests();\n this.onClosed?.();\n }\n #onError(status) {\n this._storedError ??= createResponseError(status, this._stream.url);\n for (const capability of this._requests) {\n capability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this.#endRequests();\n this._stream._abortRequest(this._requestXhr);\n this.onClosed?.();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\n\n\nfunction getReadableStream(url, opts = null) {\n const fs = process.getBuiltinModule(\"fs\");\n const {\n Readable\n } = process.getBuiltinModule(\"stream\");\n const readStream = fs.createReadStream(url, opts);\n return Readable.toWeb(readStream);\n}\nclass PDFNodeStream extends BasePDFStream {\n constructor(source) {\n super(source, PDFNodeStreamReader, PDFNodeStreamRangeReader);\n const {\n url\n } = source;\n assert(url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n }\n}\nclass PDFNodeStreamReader extends BasePDFStreamReader {\n _reader = null;\n constructor(stream) {\n super(stream);\n const {\n disableRange,\n disableStream,\n rangeChunkSize,\n url\n } = stream._source;\n this._isStreamingSupported = !disableStream;\n const fs = process.getBuiltinModule(\"fs/promises\");\n fs.lstat(url).then(stat => {\n const readableStream = getReadableStream(url);\n this._reader = readableStream.getReader();\n const {\n size\n } = stat;\n this._contentLength = size;\n this._isRangeSupported = !disableRange && size > 2 * rangeChunkSize;\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n this._headersCapability.resolve();\n }).catch(error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, url);\n }\n this._headersCapability.reject(error);\n });\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this._callOnProgress();\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n }\n}\nclass PDFNodeStreamRangeReader extends BasePDFStreamRangeReader {\n _readCapability = Promise.withResolvers();\n _reader = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n const {\n url\n } = stream._source;\n try {\n const readableStream = getReadableStream(url, {\n start: begin,\n end: end - 1\n });\n this._reader = readableStream.getReader();\n this._readCapability.resolve();\n } catch (error) {\n this._readCapability.reject(error);\n }\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n }\n}\n\n;// ./src/display/network_stream.js\n\n\n\n\n\nfunction getNetworkStream(url) {\n return isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/display/metadata.js\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n get serializable() {\n return {\n userSet: this.#userSet,\n visible: this.#visible\n };\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n #rawData;\n creator = null;\n name = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY, groupState = null) {\n this.#rawData = data;\n this.renderingIntent = renderingIntent;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (groupState) {\n if (groupState.size !== this.#groups.size) {\n unreachable(\"Incorrect serialized groupState.\");\n }\n for (const [id, group] of groupState) {\n this.#groups.get(id)._setVisible(INTERNAL, group.visible, group.userSet);\n }\n } else {\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n [Symbol.iterator]() {\n return this.#groups.entries();\n }\n get serializable() {\n const groupState = new Map();\n for (const [id, group] of this.#groups) {\n groupState.set(id, group.serializable);\n }\n return {\n data: this.#rawData,\n renderingIntent: this.renderingIntent,\n groupState\n };\n }\n static fromSerializable({\n data,\n renderingIntent,\n groupState\n }) {\n return new OptionalContentConfig(data, renderingIntent, groupState);\n }\n}\n\n;// ./src/display/pages_mapper.js\n\n\nclass PagesMapper {\n #pageNumberToId = null;\n #prevPageNumbers = null;\n #pagesNumber = 0;\n #clipboard = null;\n #savedData = null;\n get pagesNumber() {\n return this.#pagesNumber;\n }\n set pagesNumber(n) {\n if (this.#pagesNumber === n) {\n return;\n }\n this.#pagesNumber = n;\n this.#pageNumberToId = null;\n this.#prevPageNumbers = null;\n }\n #ensureInit() {\n if (this.#pageNumberToId) {\n return;\n }\n const n = this.#pagesNumber;\n const pageNumberToId = this.#pageNumberToId = new Uint32Array(n);\n for (let i = 0; i < n; i++) {\n pageNumberToId[i] = i + 1;\n }\n this.#prevPageNumbers = new Int32Array(pageNumberToId);\n }\n #buildIdToPageNumber() {\n const idToPageNumber = new Map();\n const pageNumberToId = this.#pageNumberToId;\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n const id = pageNumberToId[i];\n const pageNumbers = idToPageNumber.get(id);\n if (pageNumbers) {\n pageNumbers.push(i + 1);\n } else {\n idToPageNumber.set(id, [i + 1]);\n }\n }\n return idToPageNumber;\n }\n movePages(selectedPages, pagesToMove, index) {\n this.#ensureInit();\n const pageNumberToId = this.#pageNumberToId;\n const movedCount = pagesToMove.length;\n const mappedPagesToMove = new Uint32Array(movedCount);\n let removedBeforeTarget = 0;\n for (let i = 0; i < movedCount; i++) {\n const pageIndex = pagesToMove[i] - 1;\n mappedPagesToMove[i] = pageNumberToId[pageIndex];\n if (pageIndex < index) {\n removedBeforeTarget++;\n }\n }\n const pagesNumber = this.#pagesNumber;\n const remainingLen = pagesNumber - movedCount;\n const prevPageNumbers = new Int32Array(pagesNumber);\n const adjustedTarget = MathClamp(index - removedBeforeTarget, 0, remainingLen);\n for (let i = 0, r = 0; i < pagesNumber; i++) {\n if (!selectedPages.has(i + 1)) {\n pageNumberToId[r] = pageNumberToId[i];\n prevPageNumbers[r++] = i + 1;\n }\n }\n pageNumberToId.copyWithin(adjustedTarget + movedCount, adjustedTarget, remainingLen);\n pageNumberToId.set(mappedPagesToMove, adjustedTarget);\n prevPageNumbers.copyWithin(adjustedTarget + movedCount, adjustedTarget, remainingLen);\n prevPageNumbers.set(pagesToMove, adjustedTarget);\n this.#prevPageNumbers = prevPageNumbers;\n if (pageNumberToId.every((id, i) => id === i + 1)) {\n this.#pageNumberToId = null;\n }\n }\n deletePages(pagesToDelete) {\n this.#ensureInit();\n const pageNumberToId = this.#pageNumberToId;\n const prevIdToPageNumber = this.#buildIdToPageNumber();\n this.#savedData = {\n pageNumberToId: pageNumberToId.slice(),\n pagesNumber: this.#pagesNumber,\n prevPageNumbers: this.#prevPageNumbers.slice()\n };\n const newN = this.#pagesNumber - pagesToDelete.length;\n this.#pagesNumber = newN;\n const newPageNumberToId = this.#pageNumberToId = new Uint32Array(newN);\n this.#prevPageNumbers = new Int32Array(newN);\n let sourceIndex = 0;\n let destIndex = 0;\n for (const pageNumber of pagesToDelete) {\n const pageIndex = pageNumber - 1;\n if (pageIndex !== sourceIndex) {\n newPageNumberToId.set(pageNumberToId.subarray(sourceIndex, pageIndex), destIndex);\n destIndex += pageIndex - sourceIndex;\n }\n sourceIndex = pageIndex + 1;\n }\n if (sourceIndex < pageNumberToId.length) {\n newPageNumberToId.set(pageNumberToId.subarray(sourceIndex), destIndex);\n }\n this.#updatePrevPageNumbers(prevIdToPageNumber, new Set(pagesToDelete));\n }\n cancelDelete() {\n if (this.#savedData) {\n this.#pageNumberToId = this.#savedData.pageNumberToId;\n this.#pagesNumber = this.#savedData.pagesNumber;\n this.#prevPageNumbers = this.#savedData.prevPageNumbers;\n this.#savedData = null;\n }\n }\n cleanSavedData() {\n this.#savedData = null;\n }\n copyPages(pagesToCopy) {\n this.#ensureInit();\n this.#clipboard = {\n pageNumbers: pagesToCopy,\n pageIds: pagesToCopy.map(n => this.#pageNumberToId[n - 1])\n };\n }\n cancelCopy() {\n this.#clipboard = null;\n }\n pastePages(index) {\n this.#ensureInit();\n const pageNumberToId = this.#pageNumberToId;\n const prevIdToPageNumber = this.#buildIdToPageNumber();\n const {\n pageNumbers: copiedPageNumbers,\n pageIds: copiedPageIds\n } = this.#clipboard;\n const newN = this.#pagesNumber + copiedPageNumbers.length;\n this.#pagesNumber = newN;\n const newPageNumberToId = this.#pageNumberToId = new Uint32Array(newN);\n this.#prevPageNumbers = new Int32Array(newN);\n newPageNumberToId.set(pageNumberToId.subarray(0, index), 0);\n newPageNumberToId.set(copiedPageIds, index);\n newPageNumberToId.set(pageNumberToId.subarray(index), index + copiedPageNumbers.length);\n this.#updatePrevPageNumbers(prevIdToPageNumber, null, index, copiedPageNumbers);\n this.#clipboard = null;\n }\n #updatePrevPageNumbers(prevIdToPageNumber, deletedPageNumbers = null, pasteIndex = -1, copiedPageNumbers = null) {\n const prevPageNumbers = this.#prevPageNumbers;\n const newPageNumberToId = this.#pageNumberToId;\n const pasteEnd = pasteIndex + (copiedPageNumbers?.length ?? 0);\n const idsIndices = new Map();\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n if (i >= pasteIndex && i < pasteEnd) {\n prevPageNumbers[i] = -copiedPageNumbers[i - pasteIndex];\n continue;\n }\n const id = newPageNumberToId[i];\n const oldPositions = prevIdToPageNumber.get(id);\n let j = idsIndices.get(id) || 0;\n if (deletedPageNumbers && oldPositions) {\n while (j < oldPositions.length && deletedPageNumbers.has(oldPositions[j])) {\n j++;\n }\n }\n prevPageNumbers[i] = oldPositions?.[j];\n idsIndices.set(id, j + 1);\n }\n }\n hasBeenAltered() {\n return this.#pageNumberToId !== null;\n }\n #buildCopyLevels(extractedPageNumbers = null) {\n if (!this.#pageNumberToId) {\n return null;\n }\n const copyLevels = new Int32Array(this.#pagesNumber).fill(-1);\n const counts = new Map();\n if (extractedPageNumbers) {\n for (const pageNumber of extractedPageNumbers) {\n const id = this.getPageId(pageNumber);\n const level = counts.get(id) ?? 0;\n counts.set(id, level + 1);\n copyLevels[pageNumber - 1] = level;\n }\n } else {\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n const id = this.#pageNumberToId[i];\n const level = counts.get(id) ?? 0;\n counts.set(id, level + 1);\n copyLevels[i] = level;\n }\n }\n return copyLevels;\n }\n getPageMappingForSaving(idToPageNumber = null, copyLevels = this.#buildCopyLevels()) {\n idToPageNumber ??= this.#buildIdToPageNumber();\n let nCopy = 0;\n for (const pageNumbers of idToPageNumber.values()) {\n nCopy = Math.max(nCopy, pageNumbers.length);\n }\n const extractParams = new Array(nCopy);\n for (let i = 0; i < nCopy; i++) {\n extractParams[i] = {\n document: null,\n pageIndices: [],\n includePages: []\n };\n }\n for (const [id, pageNumbers] of idToPageNumber) {\n for (let i = 0, ii = pageNumbers.length; i < ii; i++) {\n extractParams[i].includePages.push([id - 1, pageNumbers[i] - 1]);\n }\n }\n for (const {\n includePages,\n pageIndices\n } of extractParams) {\n includePages.sort((a, b) => a[0] - b[0]);\n for (let i = 0, ii = includePages.length; i < ii; i++) {\n pageIndices.push(includePages[i][1]);\n includePages[i] = includePages[i][0];\n }\n }\n return {\n pageInfos: extractParams,\n copyLevels\n };\n }\n extractPages(extractedPageNumbers) {\n extractedPageNumbers = Array.from(extractedPageNumbers).sort((a, b) => a - b);\n const usedIds = new Map();\n for (let i = 0, ii = extractedPageNumbers.length; i < ii; i++) {\n const id = this.getPageId(extractedPageNumbers[i]);\n const usedPageNumbers = usedIds.getOrInsertComputed(id, makeArr);\n usedPageNumbers.push(i + 1);\n }\n return this.getPageMappingForSaving(usedIds, this.#buildCopyLevels(extractedPageNumbers));\n }\n getPrevPageNumber(pageNumber) {\n return this.#prevPageNumbers?.[pageNumber - 1] ?? 0;\n }\n getPageNumber(id) {\n if (!this.#pageNumberToId) {\n return id;\n }\n const pageNumberToId = this.#pageNumberToId;\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n if (pageNumberToId[i] === id) {\n return i + 1;\n }\n }\n return 0;\n }\n getPageId(pageNumber) {\n return this.#pageNumberToId?.[pageNumber - 1] ?? pageNumber;\n }\n getMapping() {\n return this.#pageNumberToId?.subarray(0, this.pagesNumber);\n }\n}\n\n;// ./src/display/pdf_objects.js\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nconst dataObj = () => ({\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n});\nclass PDFObjects {\n #objs = new Map();\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#objs.getOrInsertComputed(objId, dataObj);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs.get(objId);\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs.get(objId);\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs.get(objId);\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n this.#objs.delete(objId);\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#objs.getOrInsertComputed(objId, dataObj);\n if (obj.data !== INITIAL_DATA) {\n throw new Error(`Object already resolved ${objId}.`);\n }\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const {\n data\n } of this.#objs.values()) {\n data?.bitmap?.close();\n }\n this.#objs.clear();\n }\n *[Symbol.iterator]() {\n for (const [objId, {\n data\n }] of this.#objs) {\n if (data !== INITIAL_DATA) {\n yield [objId, data];\n }\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #imagesHandler = null;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n images,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#imagesHandler = images;\n this.#scale = viewport.scale * OutputScale.pixelRatio;\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n container.style.setProperty(\"--min-font-size\", TextLayer.#minFontSize);\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n if (this.#imagesHandler) {\n this.#container.append(this.#imagesHandler.render());\n }\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * OutputScale.pixelRatio;\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id) {\n this.#container.setAttribute(\"id\", item.id);\n }\n if (item.tag === \"Artifact\") {\n this.#container.ariaHidden = true;\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const divStyle = textDiv.style;\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n divStyle.setProperty(\"--font-height\", `${fontHeight.toFixed(2)}px`);\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n style.setProperty(\"--scale-x\", canvasWidth * this.#scale / width);\n }\n }\n if (properties.angle !== 0) {\n style.setProperty(\"--rotate\", `${properties.angle}deg`);\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.style.cssText = \"position:absolute;top:0;left:0;width:0;height:0;display:none;\" + \"letter-spacing:normal;word-spacing:normal\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, style, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const BinaryDataFactory = src.BinaryDataFactory || (isNodeJS ? NodeBinaryDataFactory : DOMBinaryDataFactory);\n const enableHWA = src.enableHWA === true;\n const enableWebGPU = src.enableWebGPU === true;\n const gpuPromise = enableWebGPU ? initGPU() : Promise.resolve(false);\n const useWasm = src.useWasm !== false;\n const pagesMapper = src.pagesMapper || new PagesMapper();\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(BinaryDataFactory === DOMBinaryDataFactory && cMapUrl && cMapPacked && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n binaryDataFactory: useWorkerFetch ? null : new BinaryDataFactory({\n cMapUrl,\n standardFontDataUrl,\n wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"6.3.289\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n cMapPacked,\n iccUrl,\n standardFontDataUrl,\n wasmUrl,\n hasGPU: false\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n enableHWA,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n Promise.all([worker.promise, gpuPromise]).then(function ([, hasGPU]) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n docParams.evaluatorOptions.hasGPU = hasGPU;\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (data) {} else if (rangeTransport) {\n networkStream = new PDFDataTransportStream({\n pdfDataRangeTransport: rangeTransport,\n disableRange,\n disableStream\n });\n } else if (url) {\n const NetworkStream = getNetworkStream(url);\n networkStream = new NetworkStream({\n url,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n } else {\n throw new Error(\"getDocument - expected either `data`, `range`, or `url` parameter.\");\n }\n return workerIdPromise.then(workerId => {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory, pagesMapper);\n task._transport = transport;\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject).finally(task._setupCapability.resolve);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _setupCapability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n this._capability.promise.catch(() => {});\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._setupCapability.promise;\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #listener = null;\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n }\n onDataRange(begin, chunk) {\n this.#listener({\n type: \"range\",\n begin,\n chunk\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n this.#listener({\n type: \"progressiveRead\",\n chunk\n });\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n this.#listener({\n type: \"progressiveDone\"\n });\n });\n }\n transportReady(listener) {\n this.#listener = listener;\n this.#capability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get pagesMapper() {\n return this._transport.pagesMapper;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getAttachmentContent(id) {\n return this._transport.getAttachmentContent(id);\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n extractPages(pageInfos, copyLevels = null) {\n return this._transport.extractPages(pageInfos, copyLevels);\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n getSignatures() {\n return this._transport.getSignatures();\n }\n getSignatureData(id) {\n return this._transport.getSignatureData(id);\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #pendingCleanup = false;\n #pagesMapper = null;\n constructor(pageIndex, pageInfo, transport, pagesMapper, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._intentStates = new Map();\n this.destroyed = false;\n this.recordedBBoxes = null;\n this.#pagesMapper = pagesMapper;\n this.imageCoordinates = null;\n }\n clone(id) {\n const clone = new PDFPageProxy(id, this._pageInfo, this._transport, this.#pagesMapper, this._pdfBug);\n clone.clonedFromIndex = this.clonedFromIndex ?? this._pageIndex;\n this._transport.updatePage(clone);\n return clone;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n set pageNumber(value) {\n this._pageIndex = value - 1;\n this._transport.updatePage(this);\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n canvas = canvasContext.canvas,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false,\n recordImages = false,\n recordOperations = false,\n operationsFilter = null\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n const intentState = this._intentStates.getOrInsertComputed(cacheKey, makeObj);\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const recordForDebugger = !!(this._pdfBug && globalThis.StepperManager?.enabled);\n const shouldRecordOperations = !!canvas && !this.recordedBBoxes && (recordOperations || recordForDebugger);\n const shouldRecordImages = !!canvas && !this.imageCoordinates && recordImages;\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (shouldRecordOperations) {\n const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n if (recordedBBoxes) {\n internalRenderTask.stepper?.setOperatorBBoxes(recordedBBoxes, internalRenderTask.gfx.dependencyTracker.takeDebugMetadata());\n if (recordOperations) {\n this.recordedBBoxes = recordedBBoxes;\n }\n }\n }\n if (shouldRecordImages && !error) {\n this.imageCoordinates = internalRenderTask.gfx?.imagesTracker.take();\n }\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n let dependencyTracker = null;\n let bboxTracker = null;\n if (shouldRecordOperations || shouldRecordImages) {\n bboxTracker = new CanvasBBoxTracker(canvas, intentState.operatorList.length);\n }\n if (shouldRecordOperations) {\n dependencyTracker = new CanvasDependencyTracker(bboxTracker, recordForDebugger);\n }\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvas,\n canvasContext,\n dependencyTracker: dependencyTracker ?? bboxTracker,\n imagesTracker: shouldRecordImages ? new CanvasImagesTracker(canvas) : null,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n enableHWA: this._transport.enableHWA,\n operationsFilter\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n const intentState = this._intentStates.getOrInsertComputed(intentArgs.cacheKey, makeObj);\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageId: this.#pagesMapper.getPageId(this._pageIndex + 1) - 1,\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n async getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n for await (const value of readableStream) {\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n }\n return textContent;\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup();\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageId: this.#pagesMapper.getPageId(this._pageIndex + 1) - 1,\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, undefined, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup();\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass PDFWorker {\n #capability = Promise.withResolvers();\n #messageHandler = null;\n #port = null;\n #webWorker = null;\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts = new WeakMap();\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n if (port) {\n if (PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n PDFWorker.#workerPorts.set(port, this);\n this.#initializeFromPort(port);\n } else {\n this.#initialize();\n }\n }\n get promise() {\n return this.#capability.promise;\n }\n #resolve() {\n this.#capability.resolve();\n this.#messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this.#port;\n }\n get messageHandler() {\n return this.#messageHandler;\n }\n #initializeFromPort(port) {\n this.#port = port;\n this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this.#messageHandler.on(\"ready\", () => {});\n this.#resolve();\n }\n #initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this.#setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this.#setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this.#webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this.#messageHandler = messageHandler;\n this.#port = worker;\n this.#webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this.#setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this.#setupFakeWorker();\n }\n #setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this.#port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this.#capability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this.#webWorker?.terminate();\n this.#webWorker = null;\n PDFWorker.#workerPorts.delete(this.#port);\n this.#port = null;\n this.#messageHandler?.destroy();\n this.#messageHandler = null;\n }\n static create(params) {\n const cachedPort = this.#workerPorts.get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n downloadInfoCapability = Promise.withResolvers();\n #fullReader = null;\n #methodPromises = new Map();\n #networkStream = null;\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory, pagesMapper) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.#networkStream = networkStream;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.enableHWA = params.enableHWA;\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.binaryDataFactory = factory.binaryDataFactory;\n this.pagesMapper = pagesMapper;\n this.destroyed = false;\n this.destroyCapability = null;\n this.setupMessageHandler();\n }\n updatePage(page) {\n const {\n _pageIndex\n } = page;\n this.#pageCache.set(_pageIndex, page);\n this.#pagePromises.set(_pageIndex, Promise.resolve(page));\n }\n #cacheSimpleMethod(name, data = null) {\n return this.#methodPromises.getOrInsertComputed(name, () => this.messageHandler.sendWithPromise(name, data));\n }\n #onProgress({\n loaded,\n total\n }) {\n this.loadingTask.onProgress?.({\n loaded,\n total,\n percent: total ? MathClamp(Math.round(loaded / total * 100), 0, 100) : NaN\n });\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (Object.hasOwn(this, \"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this.#networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this.#networkStream, \"GetReader - no `BasePDFStream` instance available.\");\n this.#fullReader = this.#networkStream.getFullReader();\n this.#fullReader.onProgress = evt => this.#onProgress(evt);\n sink.onPull = () => {\n this.#fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this.#fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this.#fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this.#fullReader;\n if (isStreamingSupported && isRangeSupported) {\n this.#fullReader.onProgress = null;\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this.#networkStream, \"GetRangeReader - no `BasePDFStream` instance available.\");\n const rangeReader = this.#networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this.pagesMapper.pagesNumber = pdfInfo.numPages;\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n this.#onProgress({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const fontData = new FontInfo(exportedData);\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(fontData, inspectFont, exportedData.charProcOperatorList, exportedData.extra);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties) {\n font.clearData();\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n const copy = structuredClone(data);\n this.commonObjs.resolve(id, copy);\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n this.commonObjs.resolve(id, new FontPathInfo(exportedData));\n break;\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n case \"Pattern\":\n const pattern = new PatternInfo(exportedData);\n this.commonObjs.resolve(id, pattern.getIR());\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n this.#onProgress(data);\n });\n messageHandler.on(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.binaryDataFactory) {\n throw new Error(\"`BinaryDataFactory` not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.binaryDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this.#fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n extractPages(pageInfos, copyLevels = null) {\n const params = {\n pageInfos\n };\n let transfer;\n const ImageBitmapCtor = globalThis.ImageBitmap;\n if (typeof ImageBitmapCtor === \"function\") {\n const infos = Array.isArray(pageInfos) ? pageInfos : [pageInfos];\n for (const pageInfo of infos) {\n if (pageInfo?.image instanceof ImageBitmapCtor) {\n (transfer ||= []).push(pageInfo.image);\n }\n }\n }\n if (this.annotationStorage.size > 0) {\n const serialized = this.annotationStorage.serializable;\n let {\n map\n } = serialized;\n if (serialized.transfer?.length) {\n if (transfer) {\n transfer.push(...serialized.transfer);\n } else {\n transfer = serialized.transfer;\n }\n }\n const mapping = this.pagesMapper.getMapping();\n if (mapping) {\n const remapped = new Map();\n for (const [k, v] of map) {\n if (v?.pageIndex !== undefined && v.pageIndex >= 0 && v.pageIndex < mapping.length) {\n const copyLevel = copyLevels?.[v.pageIndex] ?? 0;\n const sourceIdx = mapping[v.pageIndex] - 1;\n if (sourceIdx !== v.pageIndex || copyLevel !== 0) {\n remapped.set(k, {\n ...v,\n pageIndex: sourceIdx,\n copyLevel\n });\n continue;\n }\n }\n remapped.set(k, v);\n }\n map = remapped;\n }\n params.annotationStorage = map;\n }\n return this.messageHandler.sendWithPromise(\"ExtractPages\", params, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this.pagesMapper.pagesNumber) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1;\n const newPageIndex = this.pagesMapper.getPageId(pageNumber) - 1;\n const cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex: newPageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, newPageIndex);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this.pagesMapper, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n async getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n throw new Error(\"Invalid pageIndex request.\");\n }\n const index = await this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n const pageNumber = this.pagesMapper.getPageNumber(index + 1);\n if (pageNumber === 0) {\n throw new Error(\"GetPageIndex: page has been removed.\");\n }\n return pageNumber - 1;\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n getSignatures() {\n return this.#cacheSimpleMethod(\"GetSignatures\");\n }\n getSignatureData(id) {\n return this.messageHandler.sendWithPromise(\"GetSignatureData\", id);\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getAttachmentContent(id) {\n return this.messageHandler.sendWithPromise(\"GetAttachmentContent\", id);\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n types,\n pageIndexesToSkip\n });\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\";\n return this.#methodPromises.getOrInsertComputed(name, () => this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this.#fullReader?.filename ?? null,\n contentLength: this.#fullReader?.contentLength ?? null,\n hasStructTree: results[2]\n })));\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n const pageIndex = this.#pageRefCache.get(refStr);\n if (pageIndex >= 0) {\n const pageNumber = this.pagesMapper.getPageNumber(pageIndex + 1);\n if (pageNumber !== 0) {\n return pageNumber;\n }\n }\n return null;\n }\n}\nclass RenderTask {\n _internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n }\n get promise() {\n return this._internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this._internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this._internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this._internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n get imageCoordinates() {\n return this._internalRenderTask.imageCoordinates || null;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null,\n enableHWA = false,\n operationsFilter = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvas;\n this._canvasContext = params.canvas ? null : params.canvasContext;\n this._enableHWA = enableHWA;\n this._dependencyTracker = params.dependencyTracker;\n this._imagesTracker = params.imagesTracker;\n this._operationsFilter = operationsFilter;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n viewport,\n transform,\n background,\n dependencyTracker,\n imagesTracker\n } = this.params;\n const canvasContext = this._canvasContext || this._canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: !this._enableHWA\n });\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors, dependencyTracker, imagesTracker);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length);\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper, this._operationsFilter);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"6.3.289\";\nconst build = \"1c8020a7d\";\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\"Space\"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color?.toUpperCase() || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.ariaHasPopup = \"true\";\n if (this.#editor) {\n button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n }\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.ariaHidden = \"true\";\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.ariaOrientation = \"horizontal\";\n dropdown.ariaLabelledBy = \"highlightColorPickerLabel\";\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.ariaMultiSelectable = \"false\";\n div.ariaOrientation = \"vertical\";\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n if (this.#editor) {\n div.id = `${this.#editor.id}_colorpicker_dropdown`;\n }\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.ariaSelected = color === this.#defaultColor;\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n value: color\n });\n this.update(color);\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstElementChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstElementChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstElementChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastElementChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n this.#button.ariaExpanded = \"true\";\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#button.ariaExpanded = \"false\";\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n update(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.ariaSelected = i.next().value === color.toUpperCase();\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\nclass BasicColorPicker {\n #input = null;\n #hasAlpha = false;\n #editor = null;\n #uiManager = null;\n static #l10nColor = null;\n constructor(editor) {\n this.#editor = editor;\n this.#uiManager = editor._uiManager;\n BasicColorPicker.#l10nColor ||= Object.freeze({\n freetext: \"pdfjs-editor-color-picker-free-text-input\",\n ink: \"pdfjs-editor-color-picker-ink-input\"\n });\n }\n renderButton() {\n if (this.#input) {\n return this.#input;\n }\n const {\n editorType,\n colorType,\n colorAndOpacityType,\n opacityType,\n color,\n opacity\n } = this.#editor;\n const hasAlpha = this.#hasAlpha = FeatureTest.isAlphaColorInputSupported && opacityType !== undefined;\n const input = this.#input = document.createElement(\"input\");\n input.type = \"color\";\n if (hasAlpha) {\n input.setAttribute(\"alpha\", \"\");\n const alphaHex = Util.hexNums[Math.round((opacity ?? 1) * 255)];\n input.value = (color || \"#000000\") + alphaHex;\n } else {\n input.value = color || \"#000000\";\n }\n input.className = \"basicColorPicker\";\n input.tabIndex = 0;\n input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n input.addEventListener(\"input\", () => {\n if (hasAlpha) {\n const rgba = getRGBA(input.value);\n if (!rgba) {\n return;\n }\n const [r, g, b, op] = rgba;\n const hex = Util.makeHexColor(r, g, b);\n if (colorAndOpacityType !== undefined) {\n this.#uiManager.updateParams(colorAndOpacityType, {\n color: hex,\n opacity: op\n });\n } else {\n this.#uiManager.updateParams(colorType, hex);\n this.#uiManager.updateParams(opacityType, op);\n }\n } else {\n this.#uiManager.updateParams(colorType, input.value);\n }\n }, {\n signal: this.#uiManager._signal\n });\n return input;\n }\n update(value) {\n if (!this.#input) {\n return;\n }\n if (this.#hasAlpha) {\n const alphaHex = Util.hexNums[Math.round(this.#editor.opacity * 255)];\n this.#input.value = value + alphaHex;\n } else {\n this.#input.value = value;\n }\n }\n updateOpacity(value) {\n if (!this.#input || !this.#hasAlpha) {\n return;\n }\n const alphaHex = Util.hexNums[Math.round(value * 255)];\n this.#input.value = this.#editor.color + alphaHex;\n }\n destroy() {\n this.#input?.remove();\n this.#input = null;\n }\n hideDropdown() {}\n}\n\n;// ./src/shared/scripting_utils.js\n\nfunction makeColorComp(n) {\n return Math.floor(MathClamp(n, 0, 1) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return MathClamp(x, 0, 1) * 255;\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nconst DateFormats = (/* unused pure expression or super */ null && ([\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"]));\nconst TimeFormats = (/* unused pure expression or super */ null && ([\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"]));\n\n;// ./src/display/svg_factory.js\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nconst TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000;\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n case AnnotationType.RICHMEDIA:\n case AnnotationType.SCREEN:\n case AnnotationType.SOUND:\n return new MediaAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableComment = parameters.enableComment;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n this.hasOwnCommentButton = false;\n if (isRenderable) {\n this.contentElement = this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n contentsObj,\n richText\n }) {\n return !!(contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data) || this.enableComment && !!this.commentText;\n }\n get commentData() {\n const {\n data\n } = this;\n const editor = this.annotationStorage?.getEditor(data.id);\n if (editor) {\n return editor.getData();\n }\n return data;\n }\n get hasCommentButton() {\n return this.enableComment && this.hasPopupElement;\n }\n get commentButtonPosition() {\n const editor = this.annotationStorage?.getEditor(this.data.id);\n if (editor) {\n return editor.commentButtonPositionInPage;\n }\n const {\n quadPoints,\n inkLists,\n rect\n } = this.data;\n let maxX = -Infinity;\n let maxY = -Infinity;\n if (quadPoints?.length >= 8) {\n for (let i = 0; i < quadPoints.length; i += 8) {\n if (quadPoints[i + 1] > maxY) {\n maxY = quadPoints[i + 1];\n maxX = quadPoints[i + 2];\n } else if (quadPoints[i + 1] === maxY) {\n maxX = Math.max(maxX, quadPoints[i + 2]);\n }\n }\n return [maxX, maxY];\n }\n if (inkLists?.length >= 1) {\n for (const inkList of inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n if (inkList[i + 1] > maxY) {\n maxY = inkList[i + 1];\n maxX = inkList[i];\n } else if (inkList[i + 1] === maxY) {\n maxX = Math.max(maxX, inkList[i]);\n }\n }\n }\n if (maxX !== Infinity) {\n return [maxX, maxY];\n }\n }\n if (rect) {\n return [rect[2], rect[3]];\n }\n return null;\n }\n _normalizePoint(point) {\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.parent;\n point[1] = view[3] - point[1] + view[1];\n point[0] = 100 * (point[0] - pageX) / pageWidth;\n point[1] = 100 * (point[1] - pageY) / pageHeight;\n return point;\n }\n get commentText() {\n const {\n data\n } = this;\n return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || \"\";\n }\n set commentText(text) {\n const {\n data\n } = this;\n const popup = {\n deleted: !text,\n contents: text || \"\"\n };\n if (!this.annotationStorage.updateEditor(data.id, {\n popup\n })) {\n this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n id: data.id,\n annotationType: data.annotationType,\n page: this.parent.page,\n popup,\n popupRef: data.popupRef,\n modificationDate: new Date()\n });\n }\n if (!text) {\n this.removePopup();\n }\n }\n removePopup() {\n (this.#popupElement?.popup || this.popup)?.remove();\n this.#popupElement = this.popup = null;\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n if (params.rect) {\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n }\n const {\n rect,\n popup: newPopup\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n let popup = this.#popupElement?.popup || this.popup;\n if (!popup && newPopup?.text) {\n this._createPopup(newPopup);\n popup = this.#popupElement.popup;\n }\n if (!popup) {\n return;\n }\n popup.updateEdited(params);\n if (newPopup?.deleted) {\n popup.remove();\n this.#popupElement = null;\n this.popup = null;\n }\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement) && !(this instanceof LinkAnnotationElement) && !(this instanceof MediaAnnotationElement)) {\n container.tabIndex = 0;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex;\n this.parent.zIndex += 2;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = this;\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(...borderColor);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(Math.fround);\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", ``, ``];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n svg.role = \"none\";\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(``);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup(popupData = null) {\n const {\n data\n } = this;\n let contentsObj, modificationDate;\n if (popupData) {\n contentsObj = {\n str: popupData.text\n };\n modificationDate = popupData.date;\n } else {\n contentsObj = data.contentsObj;\n modificationDate = data.modificationDate;\n }\n this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate,\n contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n noRotate: true\n },\n linkService: this.linkService,\n parent: this.parent,\n elements: [this]\n });\n }\n get hasPopupElement() {\n return !!(this.#popupElement || this.popup || this.data.popupRef);\n }\n get extraPopupElement() {\n return this.#popupElement;\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects.get(name) || [];\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n mustEnterInEditMode: true\n });\n });\n }\n updateOC(optionalContentConfig) {\n if (!this.data.oc || !optionalContentConfig) {\n return;\n }\n const isVisible = optionalContentConfig.isVisible(this.data.oc);\n if (isVisible) {\n this.show();\n } else {\n this.hide();\n }\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(...color);\n }\n}\nclass EditorAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.editor = parameters.editor;\n }\n render() {\n this.container.className = \"editorAnnotation\";\n return this.container;\n }\n createOrUpdatePopup() {\n const {\n editor\n } = this;\n if (!editor.hasComment) {\n return;\n }\n this._createPopup(editor.comment);\n }\n get hasCommentButton() {\n return this.enableComment && this.editor.hasComment;\n }\n get commentButtonPosition() {\n return this.editor.commentButtonPositionInPage;\n }\n get commentText() {\n return this.editor.comment.text;\n }\n set commentText(text) {\n this.editor.comment = text;\n if (!text) {\n this.removePopup();\n }\n }\n get commentData() {\n return this.editor.getData();\n }\n remove() {\n this.parent.removeAnnotation(this.data.id);\n this.container.remove();\n this.container = null;\n this.removePopup();\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action, data.overlaidText);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachmentId, data.attachment, data.overlaidText, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest, data.overlaidText);\n isBound = true;\n } else {\n if (data.actions && (data.actions.has(\"Action\") || data.actions.has(\"Mouse Up\") || data.actions.has(\"Mouse Down\")) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.contentElement = link;\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination, overlaidText = \"\") {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n if (overlaidText) {\n link.title = overlaidText;\n }\n }\n _bindNamedAction(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n #bindAttachment(link, attachmentId, attachment, overlaidText = \"\", dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n } else if (overlaidText) {\n link.title = overlaidText;\n }\n const openAttachment = async () => {\n const content = await this.linkService.getAttachmentContent(attachmentId);\n if (content) {\n this.downloadManager?.openOrDownloadData(content, attachment.filename, dest);\n }\n };\n link.onclick = () => {\n openAttachment();\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n _bindJSAction(link, {\n actions,\n id,\n overlaidText\n }) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of actions.keys()) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name\n }\n });\n return false;\n };\n }\n if (overlaidText) {\n link.title = overlaidText;\n }\n link.onclick ||= () => false;\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects.get(fieldName) || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of this._fieldObjects.values()) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of this._fieldObjects.values()) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n _getKeyModifier(event) {\n return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n const {\n actions\n } = this.data;\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || actions?.has(eventName)) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !actions?.has(\"Blur\")) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !actions?.has(\"Focus\")) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / ((/* inlined export .LINE_FACTOR */1.35) * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / (/* inlined export .LINE_FACTOR */1.35)));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / (/* inlined export .LINE_FACTOR */1.35)));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n style.color = Util.makeHexColor(...fontColor);\n if (this.data.textAlignment !== null && !this.data.comb) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = this.data.password ? \"password\" : \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n this.container.classList.add(\"hasOwnCanvas\");\n if (storage.has(id)) {\n this.container.classList.add(\"sandboxModified\");\n }\n }\n GetElementsByNameSet.add(element);\n this.contentElement = element;\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = 0;\n const {\n datetimeFormat,\n datetimeType,\n timeStep\n } = this.data;\n const hasDateOrTime = !!datetimeType && this.enableScripting;\n if (datetimeFormat) {\n element.title = datetimeFormat;\n }\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (hasDateOrTime) {\n target.type = datetimeType;\n if (timeStep) {\n target.step = timeStep;\n }\n }\n if (elementData.userValue) {\n const value = elementData.userValue;\n if (hasDateOrTime) {\n if (datetimeType === \"time\") {\n const date = new Date(value);\n const parts = [date.getHours(), date.getMinutes(), date.getSeconds()];\n target.value = parts.map(v => v.toString().padStart(2, \"0\")).join(\":\");\n } else {\n target.value = new Date(value - TIMEZONE_OFFSET).toISOString().split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n }\n } else {\n target.value = value;\n }\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.has(\"Focus\")) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.container.classList.add(\"sandboxModified\");\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n if (!hasDateOrTime) {\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n }\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n const data = {\n formattedValue\n };\n if (hasDateOrTime) {\n data.value = formattedValue;\n }\n storage.setValue(id, data);\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.has(\"Blur\")) {\n elementData.focused = false;\n }\n const {\n target\n } = event;\n let {\n value\n } = target;\n if (hasDateOrTime) {\n if (value && datetimeType === \"time\") {\n const parts = value.split(\":\").map(v => parseInt(v, 10));\n value = new Date(2000, 0, 1, parts[0], parts[1], parts[2] || 0).valueOf();\n target.step = \"\";\n } else {\n if (!value.includes(\"T\")) {\n value = `${value}T00:00`;\n }\n value = new Date(value).valueOf();\n }\n target.type = \"text\";\n }\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.has(\"Keystroke\")) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const wordCharPattern = /\\w/;\n while (selStart > 0 && !wordCharPattern.test(value[selStart - 1])) {\n selStart--;\n }\n while (selStart > 0 && wordCharPattern.test(value[selStart - 1])) {\n selStart--;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^\\W*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.setProperty(\"--comb-width\", `calc(${combWidth}px * var(--total-scale-factor))`);\n const alignment = this.data.textAlignment;\n if (alignment === 1 || alignment === 2) {\n const setCombOffset = () => {\n const free = maxLen - element.value.length;\n element.style.setProperty(\"--comb-offset\", `${alignment === 1 ? free >> 1 : free}`);\n };\n setCombOffset();\n for (const evt of [\"input\", \"blur\", \"resetform\", \"updatefromsandbox\"]) {\n element.addEventListener(evt, setCombOffset);\n }\n }\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.buttonValue !== null && data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = 0;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n const fixDisplayValue = (option, value) => {\n const newValue = value.replaceAll(\" \", \"\\u00A0\");\n option.textContent = newValue;\n if (newValue !== value) {\n option.setAttribute(\"display-value\", value);\n }\n };\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n fixDisplayValue(optionElement, option.displayValue);\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.getAttribute(\"display-value\") || option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n fixDisplayValue(optionElement, displayValue);\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n fixDisplayValue(optionElement, displayValue);\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements,\n parent\n } = parameters;\n const hasCommentManager = !!parent._commentManager;\n super(parameters, {\n isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n const popup = this.popup = this.#createPopup();\n for (const element of elements) {\n element.popup = popup;\n }\n } else {\n this.popup = null;\n }\n }\n #createPopup() {\n return new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate || this.data.creationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n commentManager: this.parent._commentManager\n });\n }\n render() {\n const {\n container\n } = this;\n container.classList.add(\"popupAnnotation\");\n container.role = \"comment\";\n const popup = this.popup = this.#createPopup();\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #commentManager = null;\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #popupAbortController = null;\n #position = null;\n #commentButton = null;\n #commentButtonPosition = null;\n #popupPosition = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n #firstElement = null;\n #commentText = null;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open,\n commentManager = null\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#commentManager = commentManager;\n this.#firstElement = elements[0];\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n if (!commentManager) {\n this.#addEventListeners();\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n }\n #addEventListeners() {\n if (this.#popupAbortController) {\n return;\n }\n this.#popupAbortController = new AbortController();\n const {\n signal\n } = this.#popupAbortController;\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle, {\n signal\n });\n element.addEventListener(\"pointerenter\", this.#boundShow, {\n signal\n });\n element.addEventListener(\"pointerleave\", this.#boundHide, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of this.#elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n }\n }\n #setCommentButtonPosition() {\n const element = this.#elements.find(e => e.hasCommentButton);\n if (!element) {\n return;\n }\n this.#commentButtonPosition = element._normalizePoint(element.commentButtonPosition);\n }\n renderCommentButton() {\n if (this.#commentButton) {\n if (!this.#commentButton.parentNode) {\n this.#firstElement.container.after(this.#commentButton);\n }\n return;\n }\n if (!this.#commentButtonPosition) {\n this.#setCommentButtonPosition();\n }\n if (!this.#commentButtonPosition) {\n return;\n }\n const {\n signal\n } = this.#popupAbortController = new AbortController();\n const hasOwnButton = this.#firstElement.hasOwnCommentButton;\n const togglePopup = () => {\n this.#commentManager.toggleCommentPopup(this, true, undefined, !hasOwnButton);\n };\n const showPopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, true, !hasOwnButton);\n };\n const hidePopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, false);\n };\n if (!hasOwnButton) {\n const button = this.#commentButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const parentContainer = this.#firstElement.container;\n button.style.zIndex = parseInt(parentContainer.style.zIndex, 10) + 1;\n button.tabIndex = 0;\n button.ariaHasPopup = \"dialog\";\n button.ariaControls = \"commentPopup\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n this.#updateColor();\n this.#updateCommentButtonPosition();\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n button.addEventListener(\"click\", togglePopup, {\n signal\n });\n button.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n button.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n parentContainer.after(button);\n } else {\n this.#commentButton = this.#firstElement.container;\n for (const element of this.trigger) {\n element.ariaHasPopup = \"dialog\";\n element.ariaControls = \"commentPopup\";\n element.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n element.addEventListener(\"click\", togglePopup, {\n signal\n });\n element.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n element.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n }\n }\n #updateCommentButtonPosition() {\n if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n const [x, y] = this.#commentButtonPosition;\n const {\n style\n } = this.#commentButton;\n style.left = `calc(${x}%)`;\n style.top = `calc(${y}% - var(--comment-button-dim))`;\n }\n #updateColor() {\n if (this.#firstElement.extraPopupElement) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n }\n get commentButtonColor() {\n const {\n color,\n opacity\n } = this.#firstElement.commentData;\n if (!color) {\n return null;\n }\n return this.#parent._commentManager.makeCommentColor(color, opacity);\n }\n focusCommentButton() {\n setTimeout(() => {\n this.#commentButton?.focus();\n }, 0);\n }\n getData() {\n const {\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n } = this.#firstElement.commentData;\n return {\n contentsObj: {\n str: this.comment\n },\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n };\n }\n get elementBeforePopup() {\n return this.#commentButton;\n }\n get comment() {\n this.#commentText ||= this.#firstElement.commentText;\n return this.#commentText;\n }\n set comment(text) {\n if (text === this.comment) {\n return;\n }\n this.#firstElement.commentText = this.#commentText = text;\n }\n focus() {\n this.#firstElement.container?.focus();\n }\n get parentBoundingClientRect() {\n return this.#firstElement.layer.getBoundingClientRect();\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentButton) {\n return;\n }\n this.#commentButton.classList.toggle(\"selected\", selected);\n this.#commentButton.ariaExpanded = hasPopup;\n }\n setSelectedCommentButton(selected) {\n this.#commentButton.classList.toggle(\"selected\", selected);\n }\n get commentPopupPosition() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n const {\n x,\n y,\n height\n } = this.#commentButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#firstElement.layer.getBoundingClientRect();\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPosition(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n get commentButtonPosition() {\n return this.#commentButtonPosition;\n }\n get commentButtonWidth() {\n return this.#commentButton.getBoundingClientRect().width / this.parentBoundingClientRect.width;\n }\n editComment(options) {\n const [posX, posY] = this.#popupPosition || this.commentButtonPosition.map(x => x / 100);\n const parentDimensions = this.parentBoundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#commentManager.showDialog(null, this, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n if (this.#titleObj?.str) {\n const title = document.createElement(\"span\");\n title.className = \"title\";\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n }\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"time\");\n modificationDate.className = \"popupDate\";\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n modificationDate.dateTime = this.#dateObj.toISOString();\n header.append(modificationDate);\n }\n renderRichText({\n html: this.#html || this.#contentsObj.str,\n dir: this.#contentsObj?.dir,\n className: \"popupContent\"\n }, popup);\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popup,\n deleted\n }) {\n if (this.#commentManager) {\n if (deleted) {\n this.remove();\n this.#commentText = null;\n } else if (popup) {\n if (popup.deleted) {\n this.remove();\n } else {\n this.#updateColor();\n this.#commentText = popup.text;\n }\n }\n if (rect) {\n this.#commentButtonPosition = null;\n this.#setCommentButtonPosition();\n this.#updateCommentButtonPosition();\n }\n return;\n }\n if (deleted || popup?.deleted) {\n this.remove();\n return;\n }\n this.#addEventListeners();\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popup && popup.text) {\n this.#richText = this.#makePopupContent(popup.text);\n this.#dateObj = PDFDateString.toDateObject(popup.date);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n remove() {\n this.#popupAbortController?.abort();\n this.#popupAbortController = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#wasVisible = false;\n this.#pinned = false;\n this.#commentButton?.remove();\n this.#commentButton = null;\n if (this.trigger) {\n for (const element of this.trigger) {\n element.classList.remove(\"popupTriggerArea\");\n }\n }\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n if (this.#commentManager) {\n this.#commentManager.toggleCommentPopup(this, false);\n return;\n }\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex, 10) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex, 10) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (this.#commentManager) {\n return;\n }\n this.#addEventListeners();\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return !this.#commentManager && this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = this.contentElement = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n },\n width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (const inkList of inkLists) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkList.join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n if (overlaidText) {\n const mark = document.createElement(\"mark\");\n mark.classList.add(\"overlaidText\");\n mark.textContent = overlaidText;\n this.container.append(mark);\n }\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n if (overlaidText) {\n const strikeout = document.createElement(\"s\");\n strikeout.classList.add(\"overlaidText\");\n strikeout.textContent = overlaidText;\n this.container.append(strikeout);\n }\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n fileId,\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.fileId = fileId;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n attachmentId: this.fileId,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n async #download() {\n const {\n fileId,\n filename,\n content: fallbackContent\n } = this;\n const content = (await this.linkService.getAttachmentContent(fileId)) || fallbackContent;\n if (content) {\n this.downloadManager?.openOrDownloadData(content, filename);\n }\n }\n}\nclass MediaAnnotationElement extends AnnotationElement {\n #abortController = new AbortController();\n #contentUrl = null;\n #media = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.richMedia\n });\n }\n render() {\n this.container.classList.add(\"mediaAnnotation\");\n const {\n filename\n } = this.data.richMedia;\n const button = document.createElement(\"button\");\n button.className = \"mediaPlayButton\";\n button.type = \"button\";\n button.title = button.ariaLabel = filename;\n button.addEventListener(\"click\", () => this.#load(button), {\n signal: this.#abortController.signal\n });\n this.container.append(button);\n return this.container;\n }\n async #load(button) {\n const {\n fileId,\n filename,\n contentType\n } = this.data.richMedia;\n button.disabled = true;\n let content;\n try {\n content = await this.linkService.getAttachmentContent(fileId);\n } catch {\n return;\n } finally {\n button.disabled = false;\n }\n if (!content || !button.isConnected) {\n return;\n }\n const {\n signal\n } = this.#abortController;\n const url = URL.createObjectURL(new Blob([content], {\n type: contentType\n }));\n this.#contentUrl = url;\n const isAudio = contentType.startsWith(\"audio/\");\n const media = document.createElement(isAudio ? \"audio\" : \"video\");\n this.#media = media;\n media.className = \"mediaContent\";\n this._setBackgroundColor(media);\n media.src = url;\n media.title = filename;\n media.controls = true;\n media.autoplay = true;\n media.tabIndex = 0;\n if (isAudio) {\n let hovered = false;\n let focused = false;\n const updateControls = () => {\n media.controls = hovered || focused;\n };\n this.container.addEventListener(\"pointerenter\", () => {\n hovered = true;\n updateControls();\n }, {\n signal\n });\n this.container.addEventListener(\"pointerleave\", () => {\n hovered = false;\n updateControls();\n }, {\n signal\n });\n this.container.addEventListener(\"focusin\", () => {\n focused = true;\n updateControls();\n }, {\n signal\n });\n this.container.addEventListener(\"focusout\", () => {\n focused = false;\n updateControls();\n }, {\n signal\n });\n }\n media.addEventListener(\"emptied\", () => this.#revokeContentUrl(url), {\n once: true,\n signal\n });\n button.replaceWith(media);\n media.play().catch(() => {});\n }\n #revokeContentUrl(url = this.#contentUrl) {\n if (url && url === this.#contentUrl) {\n URL.revokeObjectURL(url);\n this.#contentUrl = null;\n }\n }\n destroy() {\n this.#abortController.abort();\n if (this.#media) {\n this.#media.pause();\n this.#media.removeAttribute(\"src\");\n this.#media.load();\n this.#media = null;\n }\n this.#revokeContentUrl();\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #annotationStorage = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n #linkService = null;\n #elements = [];\n #hasAriaAttributesFromStructTree = false;\n zIndex = 0;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer,\n commentManager,\n linkService,\n annotationStorage\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.#linkService = linkService || null;\n this.#annotationStorage = annotationStorage || new AnnotationStorage();\n this.page = page;\n this.viewport = viewport;\n this._annotationEditorUIManager = annotationEditorUIManager;\n this._commentManager = commentManager || null;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async render(params) {\n const {\n annotations,\n optionalContentConfig\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const popupAnnotations = [];\n const elementParams = {\n data: null,\n layer,\n linkService: this.#linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: this.#annotationStorage,\n enableComment: params.enableComment === true,\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n if (!this._commentManager) {\n popupAnnotations.push(data);\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation) {\n this.#elements.push(element);\n if (data.popupRef) {\n popupToElements.getOrInsertComputed(data.popupRef, makeArr).push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n element.updateOC(optionalContentConfig);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n await this.#addElementsToDOM();\n for (const data of popupAnnotations) {\n const elements = elementParams.elements = popupToElements.get(data.id);\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n elements.at(-1).container.after(rendered);\n }\n this.#setAnnotationCanvasMap();\n }\n async #addElementsToDOM() {\n if (this.#elements.length === 0) {\n return;\n }\n this.div.replaceChildren();\n const promises = [];\n if (!this.#hasAriaAttributesFromStructTree) {\n this.#hasAriaAttributesFromStructTree = true;\n for (const {\n contentElement,\n data: {\n hidden,\n id,\n oc\n }\n } of this.#elements) {\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const enableLinkOwnership = contentElement.localName === \"a\" && !hidden && !oc;\n promises.push(this.#structTreeLayer?.getAriaAttributes(annotationId, {\n enableLinkOwnership\n }).then(ariaAttributes => {\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n }));\n }\n }\n this.#elements.sort(({\n data: {\n rect: [a0, a1, a2, a3]\n }\n }, {\n data: {\n rect: [b0, b1, b2, b3]\n }\n }) => {\n if (a0 === a2 && a1 === a3) {\n return +1;\n }\n if (b0 === b2 && b1 === b3) {\n return -1;\n }\n const top1 = a3;\n const bot1 = a1;\n const mid1 = (a1 + a3) / 2;\n const top2 = b3;\n const bot2 = b1;\n const mid2 = (b1 + b3) / 2;\n if (mid1 >= top2 && mid2 <= bot1) {\n return -1;\n }\n if (mid2 >= top1 && mid1 <= bot2) {\n return +1;\n }\n const centerX1 = (a0 + a2) / 2;\n const centerX2 = (b0 + b2) / 2;\n return centerX1 - centerX2;\n });\n const fragment = document.createDocumentFragment();\n for (const element of this.#elements) {\n fragment.append(element.container);\n if (this._commentManager) {\n (element.extraPopupElement?.popup || element.popup)?.renderCommentButton();\n } else if (element.extraPopupElement) {\n fragment.append(element.extraPopupElement.render());\n }\n }\n this.div.append(fragment);\n await Promise.all(promises);\n if (this.#accessibilityManager) {\n const annotationIds = await this.#structTreeLayer?.getAnnotationIds();\n for (const {\n contentElement\n } of this.#elements) {\n if (annotationIds?.has(contentElement.id)) {\n continue;\n }\n this.#accessibilityManager.addPointerInTextLayer(contentElement, false);\n }\n }\n }\n async addLinkAnnotations(annotations) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService: this.#linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n this.#elements.push(element);\n }\n await this.#addElementsToDOM();\n }\n update({\n viewport,\n optionalContentConfig\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n for (const element of this.#elements) {\n element.updateOC(optionalContentConfig);\n }\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n destroy() {\n for (const element of this.#elements) {\n element.destroy?.();\n this.#accessibilityManager?.removePointerInTextLayer(element.contentElement);\n }\n this.#elements.length = 0;\n this.#editableAnnotations.clear();\n this.div.replaceChildren();\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n if (Array.isArray(canvas)) {\n for (const cvs of canvas) {\n cvs.className = \"annotationContent\";\n cvs.ariaHidden = true;\n }\n } else {\n canvas.className = \"annotationContent\";\n canvas.ariaHidden = true;\n }\n const toRemove = [];\n for (const child of element.children) {\n if (child.nodeName === \"CANVAS\") {\n toRemove.push(child);\n }\n }\n for (const child of toRemove) {\n child.remove();\n }\n const firstCanvas = Array.isArray(canvas) ? canvas[0] : canvas;\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(firstCanvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(firstCanvas);\n } else {\n firstChild.after(firstCanvas);\n }\n if (Array.isArray(canvas)) {\n let lastCanvas = firstCanvas;\n for (let i = 1, ii = canvas.length; i < ii; i++) {\n lastCanvas.after(canvas[i]);\n lastCanvas = canvas[i];\n }\n }\n this.#annotationCanvasMap.delete(id);\n const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = canvas;\n }\n }\n }\n refreshCanvases() {\n this.#setAnnotationCanvasMap();\n }\n getEditableAnnotations() {\n return this.#editableAnnotations.values();\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n addFakeAnnotation(editor) {\n const {\n div\n } = this;\n const {\n id,\n rotation\n } = editor;\n const element = new EditorAnnotationElement({\n data: {\n id,\n rect: editor.getPDFRect(),\n rotation\n },\n editor,\n layer: div,\n parent: this,\n enableComment: !!this._commentManager,\n linkService: this.#linkService,\n annotationStorage: this.#annotationStorage\n });\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${id}`;\n element.createOrUpdatePopup();\n this.#elements.push(element);\n return element;\n }\n removeAnnotation(id) {\n const index = this.#elements.findIndex(el => el.data.id === id);\n if (index < 0) {\n return;\n }\n const [element] = this.#elements.splice(index, 1);\n this.#accessibilityManager?.removePointerInTextLayer(element.contentElement);\n }\n updateFakeAnnotations(editors) {\n if (editors.length === 0) {\n return;\n }\n for (const editor of editors) {\n editor.updateFakeAnnotationElement(this);\n }\n this.#addElementsToDOM();\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n _colorPicker = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\"], proto.commitOrRemove], [[\"Escape\"], proto.commitOrRemove], [[\"ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(AnnotationEditor._l10nAlert.freetext);\n }\n this.canAddComment = false;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.color]];\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.FREETEXT_COLOR;\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n onUpdatedColor() {\n this.editorDiv.style.color = this.color;\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (!super.enableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n return true;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n if (this._isCopy || this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this._moveAfterPaste(baseX, baseY);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n getPDFRect() {\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n return this.getRect(padding, padding);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent?.length) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n comment: contentsObj?.str || null,\n richText,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color);\n const serialized = Object.assign(super.serialize(isForCopying), {\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent()\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (!content) {\n return null;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this._uiManager.hasCommentManager() || this.hasEditedComment ? this.comment : {\n text: this.#content\n }\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #internalDiv = null;\n #mustBeCommitted;\n _clipPathId = null;\n _colorPicker = null;\n _drawId = null;\n _drawOutlines = null;\n _focusDrawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static #currentClipPathId = null;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n onUpdatedColor() {\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n onUpdatedOpacity() {\n this._colorPicker?.updateOpacity?.(this.opacity);\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions,\n clipPathId\n }) {\n this._drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(AnnotationEditor._l10nAlert[this.editorType]);\n }\n if (drawId >= 0) {\n this._drawId = drawId;\n this._clipPathId = clipPathId ?? null;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n this.#createFocusOutline(this.parent);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, this.constructor._hasClipPath);\n if (this.constructor._hasClipPath) {\n this._clipPathId = clipPathId;\n }\n this.#createFocusOutline(parent);\n return id;\n }\n #createFocusOutline(parent) {\n const properties = this._drawOutlines.getFocusSVGProperties(this.#rotationAngle);\n if (properties) {\n this._focusDrawId = parent.drawLayer.drawOutline(properties, this._drawOutlines.focusMustRemoveSelfIntersections);\n }\n }\n #updateFocusOutline(angle = this.#rotationAngle) {\n if (this._focusDrawId === null) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this._focusDrawId, this._drawOutlines.getFocusSVGProperties(angle));\n }\n #toggleFocusOutlineClass(rootClass) {\n if (this._focusDrawId !== null) {\n this.parent?.drawLayer.updateProperties(this._focusDrawId, {\n rootClass\n });\n }\n }\n #updateVisibility() {\n const {\n parent,\n _drawId,\n _focusDrawId,\n _isVisible\n } = this;\n if (!parent || _drawId === null) {\n return;\n }\n const rootClass = {\n hidden: !_isVisible\n };\n parent.drawLayer.updateProperties(_drawId, {\n rootClass\n });\n if (_focusDrawId !== null) {\n parent.drawLayer.updateProperties(_focusDrawId, {\n rootClass\n });\n }\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get _hasClipPath() {\n return false;\n }\n static get _hasDrawClass() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n get _drawRotation() {\n return this.rotation;\n }\n get _opacityName() {\n return this.constructor.typesMap.get(this.opacityType);\n }\n get #rotationAngle() {\n return (this.parentRotation - this._drawRotation + 360) % 360;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this._drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n if (type === this.colorType) {\n this.onUpdatedColor();\n } else if (type === this.opacityType) {\n this.onUpdatedOpacity();\n }\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _updateColorAndOpacity(color, opacity, type = this.colorAndOpacityType) {\n const colorName = this.constructor.typesMap.get(this.colorType);\n const opacityName = this._opacityName;\n const options = this._drawingOptions;\n const savedColor = options[colorName];\n const savedOpacity = options[opacityName];\n const setter = (c, op) => {\n options.updateProperty(colorName, c);\n options.updateProperty(opacityName, op);\n this._drawOutlines.updateProperty(colorName, c);\n this._drawOutlines.updateProperty(opacityName, op);\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n this.onUpdatedColor();\n this.onUpdatedOpacity();\n };\n this.addCommands({\n cmd: setter.bind(this, color, opacity),\n undo: setter.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this._drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this._drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n this.#updateFocusOutline();\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this._drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n get _mustBeDisabledOnCommit() {\n return true;\n }\n commit() {\n super.commit();\n if (this._mustBeDisabledOnCommit) {\n this.disableEditMode();\n this.disableEditing();\n }\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this._drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.#updateVisibility();\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n const {\n drawLayer\n } = this.parent;\n drawLayer.remove(this._drawId);\n this._drawId = null;\n if (this._focusDrawId !== null) {\n drawLayer.remove(this._focusDrawId);\n this._focusDrawId = null;\n }\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n const {\n drawLayer\n } = this.parent;\n drawLayer.updateParent(this._drawId, parent.drawLayer);\n if (this._focusDrawId !== null) {\n drawLayer.updateParent(this._focusDrawId, parent.drawLayer);\n }\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this._drawOutlines, parent);\n if (this._clipPathId && this.#internalDiv) {\n this.#internalDiv.style.clipPath = this._clipPathId;\n }\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n _drawRotation: rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n _drawRotation: rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n this.setDims();\n }\n this._onResized();\n }\n #rotateBox(parentRotation = this.parentRotation) {\n const {\n x,\n y,\n width,\n height,\n _drawRotation: rotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate(parentRotation = this.parentRotation) {\n if (!this.parent || this._drawId === null) {\n return;\n }\n const angle = (parentRotation - this._drawRotation + 360) % 360;\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox(parentRotation)\n }, this._drawOutlines.updateRotation(angle)));\n this.#updateFocusOutline(angle);\n }\n show(visible = this._isVisible) {\n super.show(visible);\n this.#updateVisibility();\n }\n select() {\n super.select();\n this.#toggleFocusOutlineClass({\n hovered: false,\n selected: true\n });\n }\n unselect() {\n super.unselect();\n this.#toggleFocusOutlineClass({\n selected: false\n });\n }\n pointerover() {\n if (!this.isSelected) {\n this.#toggleFocusOutlineClass({\n hovered: true\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.#toggleFocusOutlineClass({\n hovered: false\n });\n }\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n const bbox = this._drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n if (this.constructor._hasDrawClass) {\n div.classList.add(\"draw\");\n }\n const drawDiv = this.#internalDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n if (this._clipPathId) {\n drawDiv.style.clipPath = this._clipPathId;\n }\n bindEvents(this, drawDiv, [\"pointerover\", \"pointerleave\"]);\n this.setDims();\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_params) {\n unreachable(\"Not implemented\");\n }\n static _getDrawingTarget(_parent, {\n target\n }) {\n return target;\n }\n static _getPointerCoords({\n offsetX,\n offsetY,\n clientX,\n clientY\n }, referenceEvent = null) {\n if (!referenceEvent) {\n return [offsetX, offsetY];\n }\n let deltaX = clientX - referenceEvent.clientX;\n let deltaY = clientY - referenceEvent.clientY;\n switch (this._currentParent.viewport.rotation) {\n case 90:\n [deltaX, deltaY] = [deltaY, -deltaX];\n break;\n case 180:\n [deltaX, deltaY] = [-deltaX, -deltaY];\n break;\n case 270:\n [deltaX, deltaY] = [-deltaY, deltaX];\n break;\n }\n return [referenceEvent.offsetX + deltaX, referenceEvent.offsetY + deltaY];\n }\n static _addDrawingListeners(_target, _signal) {}\n static _endDrawingSession(isAborted = false) {\n return this._currentParent.endDrawingSession(isAborted);\n }\n static startDrawing(parent, uiManager, isLTR, event) {\n const {\n pointerId,\n pointerType\n } = event;\n if (CurrentPointers.isInitializedAndDifferentPointerType(pointerType)) {\n return;\n }\n const target = this._getDrawingTarget(parent, event);\n const [x, y] = this._getPointerCoords(event);\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n x: boxX,\n y: boxY,\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n CurrentPointers.setPointer(pointerType, pointerId);\n window.addEventListener(\"pointerup\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._endDraw(e);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._endDrawingSession();\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (!CurrentPointers.isSamePointerType(e.pointerType)) {\n return;\n }\n CurrentPointers.initializeAndAddPointerId(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (CurrentPointers.isSameTimeStamp(e.timeStamp)) {\n stopEvent(e);\n }\n }, {\n signal\n });\n this._addDrawingListeners(target, signal);\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance({\n x,\n y,\n box: [boxX, boxY, parentWidth, parentHeight],\n rotation,\n parent,\n isLTR\n });\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, this._hasClipPath);\n this._currentDrawId = id;\n DrawingEditor.#currentClipPathId = this._hasClipPath ? clipPathId : null;\n }\n static _drawMove(event) {\n CurrentPointers.isSameTimeStamp(event.timeStamp);\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n if (!CurrentPointers.isSamePointerId(event.pointerId)) {\n return;\n }\n if (CurrentPointers.isUsingMultiplePointers()) {\n this._endDraw(event);\n return;\n }\n let properties;\n const coalesced = event.getCoalescedEvents?.();\n if (coalesced?.length) {\n const points = [];\n for (const sample of coalesced) {\n points.push(...this._getPointerCoords(sample, event));\n }\n properties = DrawingEditor.#currentDraw.addPoints(points);\n } else {\n properties = DrawingEditor.#currentDraw.add(...this._getPointerCoords(event));\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, properties);\n CurrentPointers.setTimeStamp(event.timeStamp);\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n DrawingEditor.#currentClipPathId = null;\n CurrentPointers.clearTimeStamp();\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n CurrentPointers.clearPointerIds();\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n parent.drawLayer.updateProperties(this._currentDrawId, event?.target === parent.div ? DrawingEditor.#currentDraw.end(...this._getPointerCoords(event)) : DrawingEditor.#currentDraw.end());\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n clipPathId: DrawingEditor.#currentClipPathId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerMargin, _data, _uiManager) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data, uiManager);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this._drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getPDFRect()\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n static PRECISION = 1e-4;\n focusOutline = null;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n get defaultSVGProperties() {\n unreachable(\"Abstract getter `defaultSVGProperties` must be implemented.\");\n }\n get defaultProperties() {\n return this.defaultSVGProperties;\n }\n getFocusSVGProperties(_rotation) {\n return null;\n }\n get focusMustRemoveSelfIntersections() {\n return false;\n }\n updateProperty(_name, _value) {\n return null;\n }\n updateParentDimensions(_dimensions, _scale) {\n return null;\n }\n serializeQuadPoints(_pageTranslation, _pageDimensions) {\n return null;\n }\n updateRotation(_rotation) {\n return {};\n }\n getPathResizingSVGProperties(_bbox) {\n return {};\n }\n getPathResizedSVGProperties(_bbox) {\n return {};\n }\n getPathTranslatedSVGProperties(_bbox, _parentDimensions) {\n return {};\n }\n static _rotateBox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor(x, y, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n removeLastElement() {\n this.#last.fill(NaN);\n this.#top.length = this.#bottom.length = this.#points.length = 0;\n return {\n path: {\n d: \"\"\n }\n };\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add(x, y) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.firstPoint = [NaN, NaN];\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n const minMax = [lastX, lastY, lastX, lastY];\n let firstPointX = lastX;\n let firstPointY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n const bezierBbox = new Float32Array(4);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4],\n y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (firstPointY > y) {\n firstPointX = x;\n firstPointY = y;\n } else if (firstPointY === y) {\n firstPointX = ltrCallback(firstPointX, x);\n }\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n bezierBbox.set(BBOX_INIT, 0);\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bezierBbox);\n Util.rectBoundingBox(...bezierBbox, minMax);\n if (firstPointY > bezierBbox[1]) {\n firstPointX = bezierBbox[0];\n firstPointY = bezierBbox[1];\n } else if (firstPointY === bezierBbox[1]) {\n firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n }\n if (lastPointY < bezierBbox[3]) {\n lastPointX = bezierBbox[2];\n lastPointY = bezierBbox[3];\n } else if (lastPointY === bezierBbox[3]) {\n lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.firstPoint = [firstPointX, firstPointY];\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(x, y, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(x, y, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n updateThickness(thickness) {\n const outline = this.getNewOutline(thickness);\n this.#outline = outline.#outline;\n this.#points = outline.#points;\n this.#bbox.set(outline.#bbox);\n this.firstPoint = outline.firstPoint;\n this.lastPoint = outline.lastPoint;\n return this.#bbox;\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const points = this.#points;\n const outliner = this.newOutliner(points[0] * sx + tx, points[1] * sy + ty, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2, ii = points.length; i < ii; i += 2) {\n outliner.add(points[i] * sx + tx, points[i + 1] * sy + ty);\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\n\nfunction getHighlightSVGProperties(outline) {\n return {\n bbox: outline.box,\n root: {\n viewBox: \"0 0 1 1\"\n },\n rootClass: {\n highlight: true,\n free: outline.isFree\n },\n path: {\n d: outline.toSVGPath()\n }\n };\n}\nfunction getHighlightFocusSVGProperties(outline, rotation) {\n const {\n focusOutline\n } = outline;\n return {\n bbox: Outline._rotateBox(focusOutline.box, rotation),\n root: {\n \"data-main-rotation\": rotation\n },\n rootClass: {\n highlightOutline: true,\n free: outline.isFree\n },\n path: {\n d: focusOutline.toSVGPath()\n }\n };\n}\nclass HighlightOutliner {\n #box;\n #firstPoint;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = BBOX_INIT.slice();\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n let firstPointX = isLTR ? -Infinity : Infinity;\n let firstPointY = Infinity;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2, left] = edge;\n if (!left && isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.max(firstPointX, x);\n }\n } else if (left && !isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.min(firstPointX, x);\n }\n }\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#firstPoint = [firstPointX, firstPointY];\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#firstPoint, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #boxes = null;\n #outlines;\n constructor(outlines, box, firstPoint, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.firstPoint = firstPoint;\n this.lastPoint = lastPoint;\n }\n static build(boxes, isLTR) {\n const outline = new HighlightOutliner(boxes, 0.001).getOutlines();\n outline.#boxes = boxes;\n outline.focusOutline = new HighlightOutliner(boxes, 0.0025, 0.001, isLTR).getOutlines();\n return outline;\n }\n get isFree() {\n return false;\n }\n get defaultSVGProperties() {\n return getHighlightSVGProperties(this);\n }\n getFocusSVGProperties(rotation) {\n return getHighlightFocusSVGProperties(this, rotation);\n }\n updateRotation(rotation) {\n return {\n root: {\n \"data-main-rotation\": rotation\n }\n };\n }\n serializeQuadPoints([pageX, pageY], [pageWidth, pageHeight]) {\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightDrawer {\n #outliner;\n #thickness;\n constructor(x, y, box, scaleFactor, thickness, isLTR, innerMargin) {\n this.#outliner = new FreeHighlightOutliner(x, y, box, scaleFactor, thickness, isLTR, innerMargin);\n this.#thickness = thickness;\n }\n add(x, y) {\n return this.#outliner.add(x, y) ? {\n path: {\n d: this.#outliner.toSVGPath()\n }\n } : null;\n }\n addPoints(points) {\n let hasChanged = false;\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n hasChanged = this.#outliner.add(points[i], points[i + 1]) || hasChanged;\n }\n return hasChanged ? {\n path: {\n d: this.#outliner.toSVGPath()\n }\n } : null;\n }\n end(x, y) {\n return x === undefined ? null : this.add(x, y);\n }\n isEmpty() {\n return this.#outliner.isEmpty();\n }\n isCancellable() {\n return this.#outliner.isCancellable();\n }\n removeLastElement() {\n return this.#outliner.removeLastElement();\n }\n updateProperty(_name, _value) {\n return null;\n }\n getOutlines() {\n const outlines = this.#outliner.getOutlines();\n outlines.buildFocusOutline(2 * this.#thickness);\n return outlines;\n }\n get defaultSVGProperties() {\n return {\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\"\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this.#outliner.toSVGPath()\n }\n };\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n static #EXTRA_THICKNESS = 1.5;\n newOutliner(x, y, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(x, y, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n get isFree() {\n return true;\n }\n buildFocusOutline(thickness) {\n this.focusOutline = this.getNewOutline(thickness / 2 + FreeHighlightOutline.#EXTRA_THICKNESS, 0.0025);\n }\n get defaultSVGProperties() {\n return getHighlightSVGProperties(this);\n }\n getFocusSVGProperties(rotation) {\n return getHighlightFocusSVGProperties(this, rotation);\n }\n get focusMustRemoveSelfIntersections() {\n return true;\n }\n updateRotation(rotation) {\n return {\n root: {\n \"data-main-rotation\": rotation\n }\n };\n }\n updateProperty(name, value) {\n if (name !== \"thickness\") {\n return null;\n }\n const bbox = this.updateThickness(value / 2);\n this.buildFocusOutline(value);\n return bbox;\n }\n getPathResizedSVGProperties() {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\n\nclass HighlightDrawingOptions extends DrawingOptions {\n constructor(properties = null) {\n super();\n super.updateProperties(properties);\n }\n updateSVGProperty(name, value) {\n if (name !== \"thickness\") {\n super.updateSVGProperty(name, value);\n }\n }\n clone() {\n const clone = new HighlightDrawingOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass HighlightEditor extends DrawingEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #focusNode = null;\n #focusOffset = 0;\n #methodOfCreation = \"\";\n #text = \"\";\n static _DEFAULT_OPACITY = 1;\n static _DEFAULT_THICKNESS = 12;\n static _defaultDrawingOptions = null;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.#anchorNode = params.anchorNode || null;\n this.#anchorOffset = params.anchorOffset || 0;\n this.#focusNode = params.focusNode || null;\n this.#focusOffset = params.focusOffset || 0;\n this.#methodOfCreation = params.methodOfCreation || (this._drawOutlines?.isFree ? \"main_toolbar\" : \"\");\n this.#text = params.text || \"\";\n this._isDraggable = false;\n this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n this.rotate();\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions ||= new HighlightDrawingOptions({\n fill: uiManager.highlightColors?.values().next().value || \"#fff066\",\n \"fill-opacity\": HighlightEditor._DEFAULT_OPACITY,\n thickness: HighlightEditor._DEFAULT_THICKNESS\n });\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.HIGHLIGHT_COLOR, \"fill\"], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, \"thickness\"]]));\n }\n static get isDrawer() {\n return false;\n }\n static get _hasClipPath() {\n return true;\n }\n static get _hasDrawClass() {\n return false;\n }\n _addOutlines(params) {\n const {\n boxes,\n drawOutlines\n } = params;\n if (!boxes && !drawOutlines) {\n return;\n }\n this._drawingOptions ||= params.drawingOptions || HighlightEditor.getDefaultDrawingOptions();\n if (boxes) {\n params = {\n ...params,\n drawOutlines: HighlightOutline.build(boxes, this._uiManager.direction === \"ltr\")\n };\n }\n super._addOutlines(params);\n }\n get colorType() {\n return AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n }\n get color() {\n return this._drawingOptions.fill;\n }\n get opacity() {\n return this._drawingOptions[\"fill-opacity\"];\n }\n get _opacityName() {\n return \"fill-opacity\";\n }\n get _drawRotation() {\n return this._drawOutlines?.isFree ? this.rotation : 0;\n }\n get isResizable() {\n return false;\n }\n get _mustBeDisabledOnCommit() {\n return false;\n }\n get _mustFixPosition() {\n return !this._drawOutlines?.isFree;\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this._drawOutlines.isFree ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color),\n thickness: this._drawingOptions.thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#relativeToBox(this._drawOutlines.focusOutline.lastPoint);\n }\n get commentButtonPosition() {\n return this.#relativeToBox(this._drawOutlines.firstPoint);\n }\n #relativeToBox([pointX, pointY]) {\n const [x, y, width, height] = this._drawOutlines.box;\n return [(pointX - x) / width, (pointY - y) / height];\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this._updateColorAndOpacity(value, HighlightEditor._DEFAULT_OPACITY, type);\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.getNonHCMColorName(value)\n }, true);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n super.updateParams(type, value);\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness: value\n }, true);\n break;\n }\n }\n get propertiesToUpdate() {\n const properties = super.propertiesToUpdate;\n properties.push([AnnotationEditorParamsType.HIGHLIGHT_FREE, this._drawOutlines.isFree]);\n return properties;\n }\n get toolbarButtons() {\n if (this._uiManager.highlightColors) {\n this._colorPicker = new ColorPicker({\n editor: this\n });\n return [[\"colorPicker\", this._colorPicker]];\n }\n return super.toolbarButtons;\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this._drawRotation);\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this._drawRotation);\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this._drawOutlines.isFree) {\n div.classList.add(\"free\");\n } else {\n div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n this.enableEditing();\n return div;\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n unselect() {\n super.unselect();\n if (!this._drawOutlines.isFree) {\n this.#setCaret(false);\n }\n }\n static createDrawerInstance({\n x,\n y,\n box,\n parent,\n isLTR\n }) {\n return new FreeHighlightDrawer(x, y, box, parent.scale, this._defaultDrawingOptions.thickness / 2, isLTR, 0.001);\n }\n static _getDrawingTarget(parent, {\n target\n }) {\n return target.closest(\".textLayer\");\n }\n static _getPointerCoords({\n x,\n y\n }) {\n return [x, y];\n }\n static _addDrawingListeners(target, signal) {\n target.classList.add(\"free\");\n signal.addEventListener(\"abort\", () => target.classList.remove(\"free\"), {\n once: true\n });\n window.addEventListener(\"blur\", () => this._endDraw(null), {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n }\n static _endDrawingSession(isAborted = false) {\n return this.endDrawing(isAborted);\n }\n createDrawingOptions({\n color,\n opacity,\n thickness\n }) {\n const {\n _defaultDrawingOptions: defaults,\n _DEFAULT_OPACITY\n } = HighlightEditor;\n this._drawingOptions = HighlightEditor.getDefaultDrawingOptions({\n fill: Util.makeHexColor(...color),\n \"fill-opacity\": opacity || _DEFAULT_OPACITY,\n thickness: thickness || defaults.thickness\n });\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, _innerMargin, data, uiManager) {\n const {\n quadPoints\n } = data;\n if (quadPoints) {\n const boxes = [];\n for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n return HighlightOutline.build(boxes, uiManager.direction === \"ltr\");\n }\n const thickness = data.thickness || this._defaultDrawingOptions.thickness;\n const points = (data.inkLists || data.outlines.points)[0];\n const outliner = new FreeHighlightOutliner(points[0] - pageX, pageHeight - (points[1] - pageY), [0, 0, pageWidth, pageHeight], 1, thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n outliner.add(points[i] - pageX, pageHeight - (points[i + 1] - pageY));\n }\n const outlines = outliner.getOutlines();\n outlines.buildFocusOutline(thickness);\n return outlines;\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = super.serialize(isForCopying);\n Object.assign(serialized, {\n color: AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color)),\n opacity: this.opacity,\n thickness: this._drawingOptions.thickness,\n quadPoints: this._drawOutlines.serializeQuadPoints(this.pageTranslation, this.pageDimensions),\n outlines: this._drawOutlines.serialize(serialized.rect, this._drawRotation)\n });\n this.addComment(serialized);\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return this.hasEditedComment || serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #tip = new Float64Array(2);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n this.#tip.set([x, y], 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines?.length;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n if (this.#add(x, y)) {\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#toSVGPathWithTip()\n }\n };\n }\n addPoints(points) {\n let needsPathUpdate = false;\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n if (!this.#add(points[i], points[i + 1])) {\n continue;\n }\n needsPathUpdate = true;\n if (this.#points.length <= 6) {\n this.toSVGPath();\n needsPathUpdate = false;\n }\n }\n if (needsPathUpdate) {\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#toSVGPathWithTip()\n }\n };\n }\n #add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n this.#tip.set([x, y], 0);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return false;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return true;\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return true;\n }\n end(x, y) {\n if (x !== undefined && this.#add(x, y)) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#tip.set([x, y], 0);\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n #toSVGPathWithTip() {\n const tipX = Outline.svgRound(this.#tip[0]);\n const tipY = Outline.svgRound(this.#tip[1]);\n if (this.#points.length === 2) {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n return `${this.#lastSVGPath} M ${firstX} ${firstY} L ${tipX} ${tipY}`;\n }\n return `${this.#lastSVGPath} L ${tipX} ${tipY}`;\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = F32_BBOX_INIT.slice();\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n Util.pointBoundingBox(line[i], line[i + 1], bbox);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n return name === \"stroke-width\" ? this.#updateThickness(value) : null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance({\n x,\n y,\n box: [,, width, height],\n rotation\n }) {\n return new InkDrawOutliner(x, y, width, height, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.INK_COLOR;\n }\n get colorAndOpacityType() {\n return AnnotationEditorParamsType.INK_COLOR_AND_OPACITY;\n }\n get opacityType() {\n return AnnotationEditorParamsType.INK_OPACITY;\n }\n updateParams(type, value) {\n if (type === AnnotationEditorParamsType.INK_COLOR_AND_OPACITY) {\n this._updateColorAndOpacity(value.color, value.opacity);\n return;\n }\n super.updateParams(type, value);\n }\n static updateDefaultParams(type, value) {\n if (type === AnnotationEditorParamsType.INK_COLOR_AND_OPACITY) {\n super.updateDefaultParams(AnnotationEditorParamsType.INK_COLOR, value.color);\n super.updateDefaultParams(AnnotationEditorParamsType.INK_OPACITY, value.opacity);\n return;\n }\n super.updateDefaultParams(type, value);\n }\n get color() {\n return this._drawingOptions.stroke;\n }\n get opacity() {\n return this._drawingOptions[\"stroke-opacity\"];\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n }\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points,\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const pix = out[i] = buf[i << 2];\n max = Math.max(max, pix);\n min = Math.min(min, pix);\n }\n const ratio = 255 / (max - min);\n for (let i = 0, ii = out.length; i < ii; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, newWidth, newHeight);\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const bytes = await new Response(cs.readable).bytes();\n return bytes.toBase64();\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = Uint8Array.fromBase64(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: this.#description || \"\"\n }));\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n if (!this.div) {\n return;\n }\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n get toolbarButtons() {\n return this._uiManager.signatureManager ? [[\"editSignature\", this._uiManager.signatureManager]] : super.toolbarButtons;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.description = description;\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims();\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #missingCanvas = false;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this.addEditToolbar().then(() => {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n });\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get toolbarButtons() {\n return [[\"altText\", this.createAltText()]];\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.createAltText();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n this.setDims();\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(AnnotationEditor._l10nAlert.stamp);\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n maxDataDimension ||= 224;\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (ColorScheme.isDarkMode) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = Object.assign(super.serialize(isForCopying), {\n bitmapId: this.#bitmapId,\n isSvg: this.#isSvg\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = true;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n serialized.id = this.annotationElementId;\n delete serialized.bitmapId;\n return serialized;\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this.hasEditedComment && !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #textLayerDblClickAC = null;\n #lastPointerDownTimestamp = -1;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.div.classList.toggle(\"nonEditing\", true);\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n classList.toggle(\"nonEditing\", false);\n if (mode === AnnotationEditorType.POPUP) {\n classList.toggle(\"commentEditing\", true);\n } else {\n classList.toggle(\"commentEditing\", false);\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.togglePointerEvents(enabled);\n }\n get #allEditorsIterator() {\n return this.#editors.size !== 0 ? this.#editors.values() : this.#uiManager.getEditors(this.pageIndex);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n this.div.classList.toggle(\"nonEditing\", false);\n this.#textLayerDblClickAC?.abort();\n this.#textLayerDblClickAC = null;\n const annotationElementIds = new Set();\n for (const editor of this.#allEditorsIterator) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n for (const editable of annotationLayer.getEditableAnnotations()) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n this.#isEnabling = false;\n this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n source: this,\n pageNumber: this.pageIndex + 1\n });\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n this.div.classList.toggle(\"nonEditing\", true);\n if (this.#textLayer && !this.#textLayerDblClickAC) {\n this.#textLayerDblClickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", e => {\n const DBL_CLICK_THRESHOLD = 500;\n const {\n clientX,\n clientY,\n timeStamp\n } = e;\n const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n this.#lastPointerDownTimestamp = timeStamp;\n return;\n }\n this.#lastPointerDownTimestamp = -1;\n const {\n classList\n } = this.div;\n classList.toggle(\"getElements\", true);\n const elements = document.elementsFromPoint(clientX, clientY);\n classList.toggle(\"getElements\", false);\n if (!this.div.contains(elements[0])) {\n return;\n }\n let id;\n const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n for (const element of elements) {\n if (regex.test(element.id)) {\n id = element.id;\n break;\n }\n }\n if (!id) {\n return;\n }\n const editor = this.#editors.get(id);\n if (editor?.annotationElementId === null) {\n stopEvent(e);\n editor.dblclick(e);\n }\n }, {\n signal,\n capture: true\n });\n }\n const annotationLayer = this.#annotationLayer;\n const needFakeAnnotation = [];\n if (annotationLayer) {\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#allEditorsIterator) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n needFakeAnnotation.push(editor);\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n for (const editable of annotationLayer.getEditableAnnotations()) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n editable.updateEdited({\n deleted: true\n });\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n annotationLayer?.updateFakeAnnotations(needFakeAnnotation);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\") || target.classList.contains(\"textLayerImages\") || target.classList.contains(\"textLayerImagePlaceholder\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n HighlightEditor.startDrawing(this, this.#uiManager, this.#uiManager.direction === \"ltr\", event);\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getEditorByUID(uid) {\n for (const editor of this.#editors.values()) {\n if (editor.uid === uid) {\n return editor;\n }\n }\n return null;\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.#uiManager.getId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.#uiManager.getId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n get boundingClientRect() {\n return this.div.getBoundingClientRect();\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.boundingClientRect;\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.POPUP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n async render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n await this.#uiManager.findClonesForPage(this);\n this.div.hidden = this.isEmpty;\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nfunction compareTextLayers(a, b) {\n if (a === b) {\n return 0;\n }\n return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n}\nfunction getTextLayer(node) {\n if (!node) {\n return null;\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n return node.closest(\".textLayer\");\n }\n return node.parentElement?.closest(\".textLayer\") || null;\n}\nfunction isPointBefore(nodeA, offsetA, nodeB, offsetB) {\n if (nodeA === nodeB) {\n return offsetA <= offsetB;\n }\n const relation = nodeA.compareDocumentPosition(nodeB);\n if (relation & Node.DOCUMENT_POSITION_FOLLOWING) {\n return true;\n }\n if (relation & Node.DOCUMENT_POSITION_PRECEDING) {\n return false;\n }\n return null;\n}\nfunction normalizeEdgeBoundary(container, offset, textLayer) {\n if (container.nodeType !== Node.ELEMENT_NODE || !container.classList.contains(\"textLayer\") || offset !== container.childNodes.length) {\n return {\n container,\n offset\n };\n }\n let lastNode = container.lastChild;\n if (lastNode?.nodeType === Node.ELEMENT_NODE && lastNode.classList.contains(\"endOfContent\")) {\n lastNode = lastNode.previousSibling;\n }\n if (!lastNode || !textLayer.contains(lastNode)) {\n return null;\n }\n if (lastNode.nodeType === Node.TEXT_NODE) {\n return {\n container: lastNode,\n offset: lastNode.textContent.length\n };\n }\n return {\n container: lastNode,\n offset: lastNode.childNodes.length\n };\n}\nclass DrawLayer {\n #parent = null;\n #mapping = new Map();\n #textLayer = null;\n #filterFactory = null;\n #pageColors = null;\n #textLayerObserver = null;\n #toUpdate = new Map();\n static #id = 0;\n static #selectionId = 0;\n static #selectionChangeAC = null;\n static #selections = new Set();\n static #isSelecting = false;\n static #textLayerSet = new Set();\n static #textLayers = new WeakMap();\n constructor({\n filterFactory = null,\n pageColors = null,\n pageIndex,\n textLayer = null\n }) {\n this.pageIndex = pageIndex;\n this.#filterFactory = filterFactory;\n this.#pageColors = pageColors;\n if (textLayer) {\n const previousData = DrawLayer.#textLayers.get(textLayer);\n if (previousData?.selectionDiv) {\n previousData.selectionDiv.remove();\n DrawLayer.#selections.delete(previousData.selectionDiv);\n }\n DrawLayer.#textLayers.set(textLayer, {\n drawLayer: this\n });\n DrawLayer.#textLayerSet.add(textLayer);\n this.#textLayer = textLayer;\n this.#textLayerObserver = new MutationObserver(records => {\n if (!this.#parent || !this.#textLayer?.isConnected || !DrawLayer.#hasSelection()) {\n return;\n }\n for (const {\n addedNodes\n } of records) {\n for (const node of addedNodes) {\n if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains(\"endOfContent\")) {\n DrawLayer.#selectionChange();\n return;\n }\n }\n }\n });\n this.#textLayerObserver.observe(textLayer, {\n childList: true\n });\n if (DrawLayer.#selectionChangeAC === null) {\n DrawLayer.#selectionChangeAC = new AbortController();\n const {\n signal\n } = DrawLayer.#selectionChangeAC;\n document.addEventListener(\"selectionchange\", DrawLayer.#selectionChange.bind(DrawLayer), {\n signal\n });\n document.addEventListener(\"pointerdown\", () => {\n DrawLayer.#isSelecting = true;\n }, {\n signal\n });\n document.addEventListener(\"pointerup\", () => {\n DrawLayer.#isSelecting = false;\n }, {\n signal\n });\n window.addEventListener(\"blur\", () => {\n DrawLayer.#isSelecting = false;\n }, {\n signal\n });\n }\n }\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n if (this.#textLayer?.isConnected && DrawLayer.#hasSelection()) {\n DrawLayer.#selectionChange();\n }\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static #cleanupTextLayerSelection(textLayer) {\n const textLayerData = this.#textLayers.get(textLayer);\n if (!textLayerData?.selectionDiv) {\n return;\n }\n textLayerData.selectionDiv.remove();\n this.#selections.delete(textLayerData.selectionDiv);\n textLayerData.selectionDiv = null;\n textLayerData.path = null;\n }\n static #hasSelection() {\n const selection = document.getSelection();\n return !!selection && !selection.isCollapsed;\n }\n static #getOrderedTextLayers() {\n return this.#textLayerSet.keys().filter(textLayer => textLayer.isConnected).toArray().sort(compareTextLayers);\n }\n static #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n for (const root of this.#selections) {\n root.remove();\n }\n this.#selections.clear();\n return;\n }\n const rotators = new WeakMap();\n const orderedTextLayers = this.#getOrderedTextLayers();\n const ranges = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n let {\n startContainer,\n startOffset,\n endContainer,\n endOffset\n } = range;\n let startTextLayer = getTextLayer(startContainer);\n let endTextLayer = getTextLayer(endContainer);\n const startMissing = startTextLayer === null;\n const endMissing = endTextLayer === null;\n if (this.#isSelecting && startMissing !== endMissing) {\n return;\n }\n if (selection.rangeCount === 1) {\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const anchorLayer = getTextLayer(anchorNode);\n const focusLayer = getTextLayer(focusNode);\n const anchorBeforeFocus = isPointBefore(anchorNode, anchorOffset, focusNode, focusOffset);\n if (anchorLayer && focusLayer && anchorBeforeFocus !== null) {\n if (anchorBeforeFocus) {\n startContainer = anchorNode;\n startOffset = anchorOffset;\n startTextLayer = anchorLayer;\n endContainer = focusNode;\n endOffset = focusOffset;\n endTextLayer = focusLayer;\n } else {\n startContainer = focusNode;\n startOffset = focusOffset;\n startTextLayer = focusLayer;\n endContainer = anchorNode;\n endOffset = anchorOffset;\n endTextLayer = anchorLayer;\n }\n }\n }\n const activeTextLayers = orderedTextLayers.filter(textLayer => range.intersectsNode(textLayer));\n if (activeTextLayers.length === 0) {\n continue;\n }\n let boundarySubstituted = false;\n if (!startTextLayer) {\n startTextLayer = activeTextLayers[0];\n startContainer = startTextLayer;\n startOffset = 0;\n boundarySubstituted = true;\n }\n if (!endTextLayer) {\n endTextLayer = activeTextLayers.at(-1);\n endContainer = endTextLayer;\n endOffset = endTextLayer.childNodes.length;\n boundarySubstituted = true;\n }\n if (endContainer.nodeType === Node.ELEMENT_NODE) {\n if (endContainer.classList.contains(\"endOfContent\")) {\n const previousNode = endContainer.previousSibling;\n if (!previousNode) {\n continue;\n }\n endContainer = previousNode;\n endOffset = previousNode.nodeType === Node.TEXT_NODE ? previousNode.textContent.length : previousNode.childNodes.length;\n } else if (endContainer.classList.contains(\"textLayer\") && endContainer.childNodes.length === endOffset) {\n const normalizedEnd = normalizeEdgeBoundary(endContainer, endOffset, endTextLayer);\n if (!normalizedEnd) {\n continue;\n }\n endContainer = normalizedEnd.container;\n endOffset = normalizedEnd.offset;\n }\n }\n if (startContainer.nodeType === Node.ELEMENT_NODE) {\n const normalizedStart = normalizeEdgeBoundary(startContainer, startOffset, startTextLayer);\n if (!normalizedStart) {\n continue;\n }\n startContainer = normalizedStart.container;\n startOffset = normalizedStart.offset;\n }\n if (startTextLayer === endTextLayer && !boundarySubstituted && activeTextLayers.includes(startTextLayer)) {\n ranges.push([range, startTextLayer]);\n continue;\n }\n for (const textLayer of activeTextLayers) {\n const firstNode = textLayer.firstChild;\n if (!firstNode) {\n continue;\n }\n const subRange = document.createRange();\n if (textLayer === startTextLayer) {\n subRange.setStart(startContainer, startOffset);\n } else {\n subRange.setStartBefore(firstNode);\n }\n if (textLayer === endTextLayer) {\n subRange.setEnd(endContainer, endOffset);\n } else {\n const lastNode = textLayer.lastChild;\n if (!lastNode) {\n continue;\n }\n if (lastNode.nodeType === Node.ELEMENT_NODE && lastNode.classList.contains(\"endOfContent\")) {\n const lastTextNode = lastNode.previousSibling;\n if (!lastTextNode) {\n continue;\n }\n subRange.setEndAfter(lastTextNode);\n } else {\n subRange.setEndAfter(lastNode);\n }\n }\n if (!subRange.collapsed) {\n ranges.push([subRange, textLayer]);\n }\n }\n }\n const selectedTextLayers = new Set(ranges.map(range => range[1]));\n for (const textLayer of this.#textLayerSet) {\n if (!selectedTextLayers.has(textLayer)) {\n this.#cleanupTextLayerSelection(textLayer);\n }\n }\n for (const [range, textLayer] of ranges) {\n const textLayerData = DrawLayer.#textLayers.get(textLayer);\n if (!textLayerData) {\n continue;\n }\n let rotator = rotators.get(textLayer);\n if (!rotator) {\n const clientRect = textLayer.getBoundingClientRect();\n rotator = (x, y, w, h) => ({\n x: (x - clientRect.x) / clientRect.width,\n y: (y - clientRect.y) / clientRect.height,\n width: w / clientRect.width,\n height: h / clientRect.height\n });\n rotators.set(textLayer, rotator);\n }\n const boxes = [];\n for (let {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n ({\n x,\n y,\n width,\n height\n } = rotator(x, y, width, height));\n if (width === 1 && height === 1) {\n continue;\n }\n boxes.push(`M${x} ${y} h${width} v${height} h-${width} Z`);\n }\n if (boxes.length === 0) {\n continue;\n }\n const drawLayer = textLayerData.drawLayer;\n let div = textLayerData.selectionDiv;\n let path = textLayerData.path;\n if (!div) {\n const clipPathId = `clip_selection_${DrawLayer.#selectionId++}`;\n div = document.createElement(\"div\");\n div.className = \"selection\";\n div.style.clipPath = `url(#${clipPathId})`;\n const selectionStyle = drawLayer.#filterFactory?.createSelectionStyle(drawLayer.#pageColors);\n if (selectionStyle) {\n for (const [name, value] of Object.entries(selectionStyle)) {\n div.style.setProperty(name, value);\n }\n }\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n svg.setAttribute(\"aria-hidden\", \"true\");\n svg.setAttribute(\"width\", \"100%\");\n svg.setAttribute(\"height\", \"100%\");\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n path = DrawLayer._svgFactory.createElement(\"path\");\n clipPath.append(path);\n svg.append(clipPath);\n div.append(svg);\n textLayerData.path = path;\n textLayerData.selectionDiv = div;\n }\n if (drawLayer.#parent && div.parentNode !== drawLayer.#parent) {\n drawLayer.#parent.append(div);\n this.#selections.add(div);\n }\n path.setAttribute(\"d\", boxes.join(\" \"));\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", \"true\");\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstElementChild;\n const pathElement = defs.firstElementChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n this.#textLayerObserver?.disconnect();\n this.#textLayerObserver = null;\n if (this.#textLayer) {\n const data = DrawLayer.#textLayers.get(this.#textLayer);\n if (data?.drawLayer === this) {\n DrawLayer.#cleanupTextLayerSelection(this.#textLayer);\n DrawLayer.#textLayers.delete(this.#textLayer);\n DrawLayer.#textLayerSet.delete(this.#textLayer);\n if (DrawLayer.#textLayerSet.size === 0) {\n DrawLayer.#selectionChangeAC?.abort();\n DrawLayer.#selectionChangeAC = null;\n DrawLayer.#isSelecting = false;\n }\n }\n this.#textLayer = null;\n }\n }\n}\n\n;// ./src/display/text_layer_images.js\n\nfunction percentage(value) {\n return `${(value * 100).toFixed(2)}%`;\n}\nclass TextLayerImages {\n #coordinates = [];\n #coordinatesByElement = new Map();\n #getPageCanvas = null;\n #minSize = 0;\n #pageWidth = 0;\n #pageHeight = 0;\n static #activeImage = null;\n constructor(minSize, coordinates, viewport, getPageCanvas) {\n this.#minSize = minSize;\n this.#coordinates = coordinates;\n this.#pageWidth = viewport.rawDims.pageWidth;\n this.#pageHeight = viewport.rawDims.pageHeight;\n this.#getPageCanvas = getPageCanvas;\n }\n render() {\n const container = document.createElement(\"div\");\n container.className = \"textLayerImages\";\n for (let i = 0; i < this.#coordinates.length; i += 6) {\n const el = this.#createImagePlaceholder(this.#coordinates.subarray(i, i + 6));\n if (el) {\n container.append(el);\n }\n }\n container.addEventListener(\"contextmenu\", event => {\n if (!(event.target instanceof HTMLCanvasElement)) {\n return;\n }\n const imgElement = event.target;\n const coords = this.#coordinatesByElement.get(imgElement);\n if (!coords) {\n return;\n }\n const activeImage = TextLayerImages.#activeImage?.deref();\n if (activeImage === imgElement) {\n return;\n }\n if (activeImage) {\n activeImage.width = 0;\n activeImage.height = 0;\n }\n TextLayerImages.#activeImage = new WeakRef(imgElement);\n const {\n inverseTransform,\n x1,\n y1,\n width,\n height\n } = coords;\n const pageCanvas = this.#getPageCanvas();\n const imageX1 = Math.ceil(x1 * pageCanvas.width);\n const imageY1 = Math.ceil(y1 * pageCanvas.height);\n const imageX2 = Math.floor((x1 + width / this.#pageWidth) * pageCanvas.width);\n const imageY2 = Math.floor((y1 + height / this.#pageHeight) * pageCanvas.height);\n imgElement.width = imageX2 - imageX1;\n imgElement.height = imageY2 - imageY1;\n const ctx = imgElement.getContext(\"2d\");\n ctx.setTransform(...inverseTransform);\n ctx.translate(-imageX1, -imageY1);\n ctx.drawImage(pageCanvas, 0, 0);\n });\n return container;\n }\n #createImagePlaceholder([x1, y1, x2, y2, x3, y3]) {\n const width = Math.hypot((x3 - x1) * this.#pageWidth, (y3 - y1) * this.#pageHeight);\n const height = Math.hypot((x2 - x1) * this.#pageWidth, (y2 - y1) * this.#pageHeight);\n if (width < this.#minSize || height < this.#minSize) {\n return null;\n }\n const transform = [(x3 - x1) * this.#pageWidth / width, (y3 - y1) * this.#pageHeight / width, (x2 - x1) * this.#pageWidth / height, (y2 - y1) * this.#pageHeight / height, 0, 0];\n const inverseTransform = Util.inverseTransform(transform);\n const imgElement = document.createElement(\"canvas\");\n imgElement.className = \"textLayerImagePlaceholder\";\n imgElement.width = 0;\n imgElement.height = 0;\n Object.assign(imgElement.style, {\n opacity: 0,\n position: \"absolute\",\n left: percentage(x1),\n top: percentage(y1),\n width: percentage(width / this.#pageWidth),\n height: percentage(height / this.#pageHeight),\n transformOrigin: \"0% 0%\",\n transform: `matrix(${transform.join(\",\")})`\n });\n this.#coordinatesByElement.set(imgElement, {\n inverseTransform,\n width,\n height,\n x1,\n y1\n });\n return imgElement;\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException,\n AnnotationEditorLayer: AnnotationEditorLayer,\n AnnotationEditorParamsType: AnnotationEditorParamsType,\n AnnotationEditorType: AnnotationEditorType,\n AnnotationEditorUIManager: AnnotationEditorUIManager,\n AnnotationLayer: AnnotationLayer,\n AnnotationMode: AnnotationMode,\n AnnotationType: AnnotationType,\n applyOpacity: applyOpacity,\n build: build,\n ColorPicker: ColorPicker,\n createValidAbsoluteUrl: createValidAbsoluteUrl,\n CSSConstants: CSSConstants,\n DOMSVGFactory: DOMSVGFactory,\n DrawLayer: DrawLayer,\n FeatureTest: FeatureTest,\n fetchData: fetchData,\n findContrastColor: findContrastColor,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getRGB: getRGB,\n getRGBA: getRGBA,\n getUuid: getUuid,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n makeArr: makeArr,\n makeMap: makeMap,\n makeObj: makeObj,\n makeSet: makeSet,\n MathClamp: MathClamp,\n noContextMenu: noContextMenu,\n normalizeUnicode: normalizeUnicode,\n OPS: OPS,\n OutputScale: OutputScale,\n PasswordException: PasswordException,\n PasswordResponses: PasswordResponses,\n PDFDataRangeTransport: PDFDataRangeTransport,\n PDFDateString: PDFDateString,\n PDFWorker: PDFWorker,\n PermissionFlag: PermissionFlag,\n PixelsPerInch: PixelsPerInch,\n RenderingCancelledException: RenderingCancelledException,\n renderRichText: renderRichText,\n ResponseException: ResponseException,\n setLayerDimensions: setLayerDimensions,\n shadow: shadow,\n SignatureExtractor: SignatureExtractor,\n stopEvent: stopEvent,\n SupportedImageMimeTypes: SupportedImageMimeTypes,\n TextLayer: TextLayer,\n TextLayerImages: TextLayerImages,\n TouchManager: TouchManager,\n updateUrlHash: updateUrlHash,\n Util: Util,\n VerbosityLevel: VerbosityLevel,\n version: version,\n XfaLayer: XfaLayer\n};\n\nexport { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, CSSConstants, ColorPicker, DOMSVGFactory, DrawLayer, FeatureTest, GlobalWorkerOptions, ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordException, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TextLayerImages, TouchManager, Util, VerbosityLevel, XfaLayer, applyOpacity, build, createValidAbsoluteUrl, fetchData, findContrastColor, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getRGB, getRGBA, getUuid, isDataScheme, isPdfFile, isValidExplicitDest, makeArr, makeMap, makeObj, makeSet, noContextMenu, normalizeUnicode, renderRichText, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map","class StepScheduler {\n constructor(syncCallback, asyncCallback, params) {\n this._syncCallback = syncCallback;\n this._asyncCallback = asyncCallback;\n this._params = params;\n }\n\n start() {\n return new Promise((resolve) => {\n if (this._params.waitBeforeSync)\n setTimeout(() => this._scheduleCallbacks(resolve), this._params.waitBeforeSync);\n else\n this._scheduleCallbacks(resolve);\n });\n }\n}\n\nclass RAFStepScheduler extends StepScheduler {\n _scheduleCallbacks(resolve) {\n requestAnimationFrame(() => this._syncCallback());\n requestAnimationFrame(() => {\n setTimeout(() => {\n this._asyncCallback();\n setTimeout(resolve, 0);\n }, 0);\n });\n }\n}\n\nclass AsyncRAFStepScheduler extends StepScheduler {\n static mc = new MessageChannel();\n _scheduleCallbacks(resolve) {\n let gotTimer = false;\n let gotMessage = false;\n let gotPromise = false;\n\n const tryTriggerAsyncCallback = () => {\n if (!gotTimer || !gotMessage || !gotPromise)\n return;\n\n this._asyncCallback();\n setTimeout(resolve, 0);\n };\n\n requestAnimationFrame(async () => {\n await this._syncCallback();\n gotPromise = true;\n tryTriggerAsyncCallback();\n });\n\n requestAnimationFrame(() => {\n setTimeout(async () => {\n await Promise.resolve();\n gotTimer = true;\n tryTriggerAsyncCallback();\n });\n\n AsyncRAFStepScheduler.mc.port1.addEventListener(\n \"message\",\n async function () {\n await Promise.resolve();\n gotMessage = true;\n tryTriggerAsyncCallback();\n },\n { once: true }\n );\n AsyncRAFStepScheduler.mc.port1.start();\n AsyncRAFStepScheduler.mc.port2.postMessage(\"speedometer\");\n });\n }\n}\n\nexport const STEP_SCHEDULER_LOOKUP = {\n __proto__: null,\n raf: RAFStepScheduler,\n async: AsyncRAFStepScheduler,\n};\n","/**\n * Recursively queries the DOM for an element, traversing through shadow DOMs.\n *\n * @param {Element|ShadowRoot} lookupStartNode The node or shadow root to start the lookup from.\n * @param {string[]} path An array of CSS selectors representing the path to the target element.\n * @returns {Element|null} The target element if found, otherwise null.\n */\nexport function recursivelyQuerySelector(lookupStartNode, path) {\n lookupStartNode = lookupStartNode.shadowRoot ?? lookupStartNode;\n const target = path.reduce((root, selector) => {\n const node = root.querySelector(selector);\n return node.shadowRoot ?? node;\n }, lookupStartNode);\n\n return target;\n}\n\n/**\n * Retrieves a single DOM element, optionally traversing through shadow DOMs to a specified path before the final selection.\n *\n * @param {string} selector The CSS selector for the desired element.\n * @param {string[]} [path=[]] An optional array of CSS selectors to reach the desired shadowRoot or parent element.\n * @param {Element|ShadowRoot} [lookupStartNode=document] The starting node for the lookup.\n * @returns {Element|null} The found element, or null if not found.\n */\nexport function getElement(selector, path = [], lookupStartNode = document) {\n const element = recursivelyQuerySelector(lookupStartNode, path).querySelector(selector);\n return element;\n}\n\n/**\n * Retrieves all DOM elements matching a selector, optionally traversing through shadow DOMs to a specified path before the final selection.\n *\n * @param {string} selector The CSS selector for the desired elements.\n * @param {string[]} [path=[]] An optional array of CSS selectors to reach the desired shadowRoot or parent element.\n * @param {Element|ShadowRoot} [lookupStartNode=document] The starting node for the lookup.\n * @returns {Element[]} An array of found elements.\n */\nexport function getAllElements(selector, path = [], lookupStartNode = document) {\n const elements = Array.from(recursivelyQuerySelector(lookupStartNode, path).querySelectorAll(selector));\n return elements;\n}\n\nexport function forceLayout(body, layoutMode = \"getBoundingRectAndElementFromPoint\") {\n body ??= document.body;\n const rect = body.getBoundingClientRect();\n switch (layoutMode) {\n case \"getBoundingRectAndElementFromPoint\":\n return document.elementFromPoint((rect.width / 2) | 0, (rect.height / 2) | 0);\n case \"getBoundingClientRect\":\n return rect.height;\n default:\n throw Error(`Invalid layoutMode: ${layoutMode}`);\n }\n}\n\nexport function skipInShell(context) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\")\n // Skip in non-browser environments\n context.skip();\n}\n","import { STEP_SCHEDULER_LOOKUP } from \"./step-scheduler.mjs\";\nimport { forceLayout } from \"./helpers.mjs\";\n\nexport class StepRunner {\n #frame;\n #page;\n #params;\n #suite;\n #step;\n\n constructor(frame, page, params, suite, step) {\n this.#suite = suite;\n this.#step = step;\n this.#params = params;\n this.#page = page;\n this.#frame = frame;\n }\n\n get page() {\n return this.#page;\n }\n\n get step() {\n return this.#step;\n }\n\n get isAsync() {\n return false;\n }\n\n _runSyncStep(step, page) {\n step.run(page);\n }\n\n async runStep() {\n // Prepare all mark labels outside the measuring loop.\n const suiteName = this.#suite.name;\n const stepName = this.#step.name;\n const syncStartLabel = `${suiteName}.${stepName}-start`;\n const syncEndLabel = `${suiteName}.${stepName}-sync-end`;\n const asyncEndLabel = `${suiteName}.${stepName}-async-end`;\n\n let syncTime;\n let asyncStartTime;\n let asyncTime;\n\n const runSync = async () => {\n if (this.#params.warmupBeforeSync) {\n performance.mark(\"warmup-start\");\n const startTime = performance.now();\n // Infinite loop for the specified ms.\n while (performance.now() - startTime < this.#params.warmupBeforeSync)\n continue;\n performance.mark(\"warmup-end\");\n }\n performance.mark(syncStartLabel);\n const syncStartTime = performance.now();\n\n if (this.isAsync)\n await this._runSyncStep(this.step, this.page);\n else\n this._runSyncStep(this.step, this.page);\n\n const mark = performance.mark(syncEndLabel);\n const syncEndTime = mark.startTime;\n\n syncTime = syncEndTime - syncStartTime;\n asyncStartTime = syncEndTime;\n };\n const measureAsync = () => {\n // Some browsers don't immediately update the layout for paint.\n // Force the layout here to ensure we're measuring the layout time.\n //\n // Note: This matches the behavior of Page.layout() in benchmark-runner.mjs.\n // Since shared code cannot depend on Page, we duplicate the logic here,\n // falling back to document.body for remote workloads that don't have a frame.\n const body = this.#frame?.contentDocument?.body ?? document.body;\n const value = forceLayout(body, this.#params.layoutMode);\n body._leakedLayoutValue = value; // Prevent dead code elimination.\n\n const asyncEndTime = performance.now();\n performance.mark(asyncEndLabel);\n\n asyncTime = asyncEndTime - asyncStartTime;\n\n if (this.#params.warmupBeforeSync)\n performance.measure(\"warmup\", \"warmup-start\", \"warmup-end\");\n performance.measure(`${suiteName}.${stepName}-sync`, syncStartLabel, syncEndLabel);\n performance.measure(`${suiteName}.${stepName}-async`, syncEndLabel, asyncEndLabel);\n };\n\n const schedulerType = this.#suite.type === \"async\" || this.#params.useAsyncSteps ? \"async\" : this.#params.measurementMethod;\n const schedulerClass = STEP_SCHEDULER_LOOKUP[schedulerType];\n const scheduler = new schedulerClass(runSync, measureAsync, this.#params);\n await scheduler.start();\n return { syncTime, asyncTime };\n }\n}\n\nexport class AsyncStepRunner extends StepRunner {\n get isAsync() {\n return true;\n }\n\n async _runSyncStep(step, page) {\n await step.run(page);\n }\n}\n\nexport const STEP_RUNNER_LOOKUP = {\n __proto__: null,\n default: StepRunner,\n async: AsyncStepRunner,\n remote: StepRunner,\n};\n","export const LAYOUT_MODES = Object.freeze([\"getBoundingClientRect\", \"getBoundingRectAndElementFromPoint\"]);\n\nexport class Params {\n viewport = {\n width: 800,\n height: 600,\n };\n // Enable a detailed developer menu to change the current Params.\n developerMode = false;\n startAutomatically = false;\n iterationCount = 10;\n suites = [];\n // A list of tags to filter suites\n tags = [\"default\"];\n // Toggle running a dummy suite once before the normal test suites.\n useWarmupSuite = false;\n // toggle async type vs default raf type.\n useAsyncSteps = false;\n // Change how a test measurement is triggered and async time is measured:\n // \"timer\": The classic (as in Speedometer 2.x) way using setTimeout\n // \"raf\": Using rAF callbacks, both for triggering the sync part and for measuring async time.\n measurementMethod = \"raf\";\n // Wait time after suite preparation in ms.\n waitAfterSetup = 0;\n // Wait time before the sync step in ms.\n waitBeforeSync = 0;\n // Wait after running a suite.\n waitAfterSuite = 0;\n // Warmup time before the sync step in ms.\n warmupBeforeSync = 0;\n // Seed for shuffling the execution order of suites.\n // \"off\": do not shuffle\n // \"generate\": generate a random seed\n // : use the provided integer as a seed\n shuffleSeed = \"off\";\n // Param to tweak the relative complexity of all suites.\n // The default is 1.0, and for suites supporting this param, the duration\n // roughly scales with the complexity.\n complexity = 1.0;\n // Choices: \"getBoundingClientRect\" or \"getBoundingRectAndElementFromPoint\"\n layoutMode = LAYOUT_MODES[0];\n // Measure more workload prepare time.\n measurePrepare = false;\n // External config url to override internal tests.\n config = \"\";\n\n constructor(searchParams = undefined, warnUnused = false) {\n if (searchParams)\n this._copyFromSearchParams(searchParams, warnUnused);\n if (!this.developerMode) {\n Object.freeze(this.viewport);\n Object.freeze(this);\n }\n }\n\n _parseNumber(value, errorMessage, minValue = 0) {\n const number = Number(value);\n if (!Number.isFinite(number) && errorMessage)\n throw new Error(`Invalid ${errorMessage} param: '${value}', expected Number.`);\n if (number < minValue)\n throw new Error(`Invalid ${errorMessage} param: '${value}', value must be >= ${minValue}.`);\n return number;\n }\n\n _parseInt(value, errorMessage, minValue = 0) {\n const number = this._parseNumber(value, errorMessage, minValue);\n if (!Number.isInteger(number) && errorMessage)\n throw new Error(`Invalid ${errorMessage} param: '${value}', expected int.`);\n return parseInt(number);\n }\n\n _copyFromSearchParams(searchParams, warnUnused) {\n this.viewport = this._parseViewport(searchParams);\n this.startAutomatically = this._parseBooleanParam(searchParams, \"startAutomatically\");\n this.iterationCount = this._parseIntParam(searchParams, \"iterationCount\", 1);\n this.suites = this._parseSuites(searchParams);\n this.tags = this._parseTags(searchParams);\n this.developerMode = this._parseBooleanParam(searchParams, \"developerMode\");\n this.useWarmupSuite = this._parseBooleanParam(searchParams, \"useWarmupSuite\");\n this.useAsyncSteps = this._parseBooleanParam(searchParams, \"useAsyncSteps\");\n this.waitAfterSetup = this._parseIntParam(searchParams, \"waitAfterSetup\", 0);\n this.waitBeforeSync = this._parseIntParam(searchParams, \"waitBeforeSync\", 0);\n this.waitAfterSuite = this._parseIntParam(searchParams, \"waitAfterSuite\", 0);\n this.warmupBeforeSync = this._parseIntParam(searchParams, \"warmupBeforeSync\", 0);\n this.measurementMethod = this._parseEnumParam(searchParams, \"measurementMethod\", [\"raf\"]);\n this.shuffleSeed = this._parseShuffleSeed(searchParams);\n this.complexity = this._parserNumberParam(searchParams, \"complexity\", 0);\n this.layoutMode = this._parseEnumParam(searchParams, \"layoutMode\", LAYOUT_MODES);\n this.measurePrepare = this._parseBooleanParam(searchParams, \"measurePrepare\");\n this.config = this._parseConfig(searchParams);\n\n if (warnUnused) {\n const unused = Array.from(searchParams.keys());\n if (unused.length > 0)\n console.error(`Got unused search params: ${unused.join(\", \")}`);\n }\n }\n\n _parseBooleanParam(searchParams, paramKey) {\n if (!searchParams.has(paramKey))\n return false;\n searchParams.delete(paramKey);\n return true;\n }\n\n _parserNumberParam(searchParams, paramKey, minValue) {\n if (!searchParams.has(paramKey))\n return defaultParams[paramKey];\n const parsedValue = this._parseNumber(searchParams.get(paramKey), \"waitBeforeSync\", minValue);\n searchParams.delete(paramKey);\n return parsedValue;\n }\n\n _parseIntParam(searchParams, paramKey, minValue) {\n if (!searchParams.has(paramKey))\n return defaultParams[paramKey];\n const parsedValue = this._parseInt(searchParams.get(paramKey), \"waitBeforeSync\", minValue);\n searchParams.delete(paramKey);\n return parsedValue;\n }\n\n _parseViewport(searchParams) {\n if (!searchParams.has(\"viewport\"))\n return defaultParams.viewport;\n const viewportParam = searchParams.get(\"viewport\");\n const [width, height] = viewportParam.split(\"x\");\n const viewport = {\n width: this._parseInt(width, \"viewport.width\"),\n height: this._parseInt(height, \"viewport.height\"),\n };\n if (this.viewport.width < 800 || this.viewport.height < 600)\n throw new Error(`Invalid viewport param: ${viewportParam}`);\n searchParams.delete(\"viewport\");\n return viewport;\n }\n\n _parseSuites(searchParams) {\n if (searchParams.has(\"suite\") || searchParams.has(\"suites\")) {\n if (searchParams.has(\"suite\") && searchParams.has(\"suites\"))\n throw new Error(\"Params 'suite' and 'suites' can not be used together.\");\n const value = searchParams.get(\"suite\") || searchParams.get(\"suites\");\n const suites = value.split(\",\");\n if (suites.length === 0)\n throw new Error(\"No suites selected\");\n searchParams.delete(\"suite\");\n searchParams.delete(\"suites\");\n return suites;\n }\n return defaultParams.suites;\n }\n\n _parseTags(searchParams) {\n if (!searchParams.has(\"tags\"))\n return defaultParams.tags;\n if (this.suites.length)\n throw new Error(\"'suites' and 'tags' cannot be used together.\");\n const tags = searchParams.get(\"tags\").split(\",\");\n searchParams.delete(\"tags\");\n return tags;\n }\n\n _parseEnumParam(searchParams, paramKey, enumArray) {\n if (!searchParams.has(paramKey))\n return defaultParams[paramKey];\n const value = searchParams.get(paramKey);\n if (!enumArray.includes(value))\n throw new Error(`Got invalid ${paramKey}: '${value}', choices are ${enumArray}`);\n searchParams.delete(paramKey);\n return value;\n }\n\n _parseShuffleSeed(searchParams) {\n if (!searchParams.has(\"shuffleSeed\"))\n return defaultParams.shuffleSeed;\n let shuffleSeed = searchParams.get(\"shuffleSeed\");\n if (shuffleSeed !== \"off\") {\n if (shuffleSeed === \"generate\") {\n shuffleSeed = Math.floor((Math.random() * 1) << 16);\n console.log(`Generated a random suite order seed: ${shuffleSeed}`);\n } else {\n shuffleSeed = parseInt(shuffleSeed);\n }\n if (!Number.isInteger(shuffleSeed))\n throw new Error(`Invalid shuffle seed: '${shuffleSeed}', must be either 'off', 'generate' or an integer.`);\n }\n searchParams.delete(\"shuffleSeed\");\n return shuffleSeed;\n }\n\n _parseConfig(searchParams) {\n const config = searchParams.get(\"config\") ?? \"\";\n searchParams.delete(\"config\");\n if (config && !isValidJsonUrl(config))\n throw new Error(\"Invalid config url passed in.\");\n\n return config;\n }\n\n toCompleteSearchParamsObject() {\n return this.toSearchParamsObject(false);\n }\n\n toSearchParamsObject(filter = true) {\n const rawUrlParams = { __proto__: null };\n for (const [key, value] of Object.entries(this)) {\n // Handle composite values separately.\n if (key === \"viewport\" || key === \"suites\" || key === \"tags\")\n continue;\n // Skip over default values.\n if (filter && value === defaultParams[key])\n continue;\n rawUrlParams[key] = value;\n }\n\n if (this.viewport.width !== defaultParams.viewport.width || this.viewport.height !== defaultParams.viewport.height)\n rawUrlParams.viewport = `${this.viewport.width}x${this.viewport.height}`;\n\n if (this.suites.length) {\n rawUrlParams.suites = this.suites.join(\",\");\n } else if (this.tags.length) {\n if (!(this.tags.length === 1 && this.tags[0] === \"default\"))\n rawUrlParams.tags = this.tags.join(\",\");\n } else {\n rawUrlParams.suites = \"\";\n }\n\n return new URLSearchParams(rawUrlParams);\n }\n\n toSearchParams() {\n return this.toSearchParamsObject().toString();\n }\n\n isDefault() {\n return this === defaultParams;\n }\n}\n\nfunction isValidJsonUrl(url) {\n if (typeof url !== \"string\" || url.length === 0)\n return false;\n\n try {\n new URL(url, \"http://www.example.com\");\n return true;\n } catch (error) {\n return false;\n }\n}\n\nexport const defaultParams = new Params();\n\nexport let paramsError = null;\nlet maybeCustomParams = defaultParams;\nif (globalThis?.location?.search) {\n const searchParams = new URLSearchParams(globalThis.location.search);\n try {\n maybeCustomParams = new Params(searchParams, true);\n } catch (e) {\n paramsError = e;\n console.error(\"Invalid URL Param\", e, \"\\nUsing defaults as fallback:\", maybeCustomParams);\n }\n}\nexport const params = maybeCustomParams;\n","/* eslint-disable no-case-declarations */\nimport { StepRunner, AsyncStepRunner } from \"./step-runner.mjs\";\nimport { Params } from \"./params.mjs\";\n\n/**\n * BenchmarkStep\n *\n * A single test step, with a common interface to interact with.\n */\nexport class BenchmarkStep {\n constructor(name, run) {\n this.name = name;\n this.run = run;\n }\n\n async runAndRecordStep(params, suite, step) {\n const stepRunner = new StepRunner(null, null, params, suite, step);\n const result = await stepRunner.runStep();\n return result;\n }\n}\n\nexport class AsyncBenchmarkStep extends BenchmarkStep {\n async runAndRecordStep(params, suite, step) {\n const stepRunner = new AsyncStepRunner(null, null, params, suite, step);\n const result = await stepRunner.runStep();\n return result;\n }\n}\n\nexport const BENCHMARK_SUITE_TYPE = Object.freeze({\n __proto__: null,\n sync: \"sync\",\n async: \"async\",\n});\n\n/**\n * BenchmarkSuite\n *\n * A single test suite that contains one or more test steps.\n */\nexport class BenchmarkSuite {\n constructor(name, steps, type = BENCHMARK_SUITE_TYPE.sync) {\n this.name = name;\n this.steps = steps;\n this.type = type;\n console.assert(this.type in BENCHMARK_SUITE_TYPE, \"Invalid Type\", this.type);\n }\n\n async runAndRecordSuite(params, onProgress) {\n const measuredValues = {\n tests: {},\n prepare: 0,\n total: 0,\n };\n const suiteStartLabel = `suite-${this.name}-start`;\n const suiteEndLabel = `suite-${this.name}-end`;\n\n performance.mark(suiteStartLabel);\n\n for (const step of this.steps) {\n const rawResult = await step.runAndRecordStep(params, this, step);\n console.assert(rawResult, \"Missing test return value\", step);\n const { syncTime, asyncTime } = rawResult;\n const total = syncTime + asyncTime;\n const result = {\n tests: { Sync: syncTime, Async: asyncTime },\n total: total,\n };\n if (!step.ignoreResult) {\n measuredValues.tests[step.name] = result;\n measuredValues.total += total;\n }\n onProgress?.(step.name);\n }\n\n performance.mark(suiteEndLabel);\n performance.measure(`suite-${this.name}`, suiteStartLabel, suiteEndLabel);\n\n return {\n type: \"suite-tests-complete\",\n status: \"success\",\n result: measuredValues,\n suiteName: this.name,\n };\n }\n}\n\nexport class AsyncBenchmarkSuite extends BenchmarkSuite {\n constructor(name, steps) {\n super(name, steps, BENCHMARK_SUITE_TYPE.async);\n }\n}\n\nexport const MESSAGE_TYPE = Object.freeze({\n __proto__: null,\n appReady: \"app-ready\",\n suiteStart: \"suite-start\",\n stepComplete: \"step-complete\",\n suiteComplete: \"suite-complete\",\n});\n\nexport const MESSAGE_STATUS = Object.freeze({\n __proto__: null,\n success: \"success\",\n error: \"error\",\n});\n\n/** **********************************************************************\n * BenchmarkConnector\n *\n * postMessage is used to communicate between app and benchmark.\n * When the app is ready, an 'app-ready' message is sent to signal that the app can receive instructions.\n *\n * A prepare script within the apps appends window.name and window.version from the package.json file.\n * The appId is build by appending name-version\n * It's used as an additional safe-guard to ensure the correct app responds to a message.\n *************************************************************************/\nexport class BenchmarkConnector {\n constructor(suites, name, version) {\n this.suites = suites;\n this.name = name;\n this.version = version;\n\n if (!name || !version)\n console.warn(\"No name or version supplied, to create a unique appId\");\n\n this.appId = name && version ? `${name}-${version}` : -1;\n this.onMessage = this.onMessage.bind(this);\n }\n\n async onMessage(event) {\n const message = event.data;\n if (message.appId !== this.appId || message.key !== \"benchmark-connector\") {\n console.warn(\"Invalid message\", message);\n return;\n }\n\n switch (message.type) {\n case MESSAGE_TYPE.suiteStart:\n const params = new Params(new URLSearchParams(window.location.search));\n const { name } = message.payload;\n const suite = this.suites[name];\n if (!suite)\n console.error(`Suite with the name of \"${name}\" not found!`);\n const onProgress = (step) => this._sendMessage(MESSAGE_TYPE.stepComplete, { name: this.name, step });\n const { result } = await suite.runAndRecordSuite(params, onProgress);\n this._sendMessage(MESSAGE_TYPE.suiteComplete, { result });\n this.disconnect();\n break;\n default:\n console.error(`Message data type not supported: ${message.type}`);\n }\n }\n\n _sendMessage(type, payload, status = MESSAGE_STATUS.success) {\n const message = {\n appId: this.appId,\n type: type,\n payload: payload,\n status: status,\n };\n window.top.postMessage(message, \"*\");\n }\n\n connect() {\n window.addEventListener(\"message\", this.onMessage);\n this._sendMessage(MESSAGE_TYPE.appReady, { appId: this.appId });\n }\n\n disconnect() {\n window.removeEventListener(\"message\", this.onMessage);\n }\n}\n","// The chrome Firefox puts around an embedded pdf.js, rebuilt here rather than taken\n// from pdf.js' web/ viewer, which is a whole application and would drag in the render\n// queue and the scroll, scale and find debounces the workload avoids.\n//\n// The buttons are inert: wiring zoom would mean rebuilding canvases mid-step.\n\nconst TOOLBAR_GROUPS = [\n [\"views-manager\", \"separator\", \"page-number\"],\n [\"zoom-out\", \"zoom-level\", \"zoom-in\"],\n [\"search\", \"separator\", \"highlight\", \"free-text\", \"ink\", \"separator\", \"download\", \"print\", \"secondary\"],\n];\n\nconst SIDEBAR_TABS = [\"thumbnails\", \"outline\", \"attachments\", \"layers\"];\n\nfunction button(icon, label) {\n const element = document.createElement(\"button\");\n element.className = \"pdf-toolbar-button\";\n element.dataset.icon = icon;\n element.type = \"button\";\n element.title = label;\n element.setAttribute(\"aria-label\", label);\n return element;\n}\n\nfunction separator() {\n const element = document.createElement(\"span\");\n element.className = \"pdf-toolbar-separator\";\n return element;\n}\n\nfunction pageNumberField(pageCount) {\n const wrapper = document.createElement(\"span\");\n wrapper.className = \"pdf-page-field\";\n\n const input = document.createElement(\"input\");\n input.className = \"pdf-page-input\";\n input.type = \"text\";\n input.value = \"1\";\n input.readOnly = true;\n input.setAttribute(\"aria-label\", \"Page\");\n\n const total = document.createElement(\"span\");\n total.className = \"pdf-page-total\";\n total.textContent = `of ${pageCount}`;\n\n wrapper.append(input, total);\n return wrapper;\n}\n\nfunction zoomLevel(scale) {\n const element = document.createElement(\"span\");\n element.className = \"pdf-zoom-level\";\n element.textContent = `${Math.round(scale * 100)}%`;\n return element;\n}\n\nconst TOOLBAR_LABELS = {\n \"views-manager\": \"Toggle sidebar\",\n \"zoom-out\": \"Zoom out\",\n \"zoom-in\": \"Zoom in\",\n search: \"Find in document\",\n highlight: \"Highlight\",\n \"free-text\": \"Add text\",\n ink: \"Draw\",\n download: \"Save\",\n print: \"Print\",\n secondary: \"Tools\",\n};\n\nexport function buildToolbar(element, { pageCount, scale }) {\n const groups = TOOLBAR_GROUPS.map((items, index) => {\n const group = document.createElement(\"div\");\n group.className = index === TOOLBAR_GROUPS.length - 1 ? \"pdf-toolbar-group pdf-toolbar-group-end\" : \"pdf-toolbar-group\";\n for (const item of items) {\n if (item === \"separator\")\n group.append(separator());\n else if (item === \"page-number\")\n group.append(pageNumberField(pageCount));\n else if (item === \"zoom-level\")\n group.append(zoomLevel(scale));\n else\n group.append(button(item, TOOLBAR_LABELS[item]));\n }\n return group;\n });\n element.replaceChildren(...groups);\n}\n\n/**\n * Returns the panel the thumbnails go into. Only the active tab's panel is populated,\n * as in pdf.js' viewer, which builds the others the first time their tab is opened.\n */\nexport function buildSidebar(element) {\n const strip = document.createElement(\"div\");\n strip.className = \"pdf-sidebar-tabs\";\n for (const tab of SIDEBAR_TABS) {\n const control = button(`view-${tab}`, `Show ${tab}`);\n control.classList.add(\"pdf-sidebar-tab\");\n control.classList.toggle(\"pdf-sidebar-tab-active\", tab === \"thumbnails\");\n strip.append(control);\n }\n\n const panel = document.createElement(\"div\");\n panel.className = \"pdf-thumbnails\";\n\n element.replaceChildren(strip, panel);\n return panel;\n}\n","/**\n * A viewer on the pdf.js core API rather than pdf_viewer.mjs, whose render queue,\n * scroll and scale handlers and find controller all schedule work with setTimeout -\n * any of those timers firing inside a measured step would charge browser scheduling to\n * the score.\n */\nexport class PdfViewer {\n #pageContainer;\n #thumbnailContainer;\n #document;\n #scale;\n #outputScale;\n #thumbnailWidth;\n #pages = [];\n\n constructor({ pages, thumbnails }, pdfDocument, { scale, outputScale, thumbnailWidth }) {\n this.#pageContainer = pages;\n this.#thumbnailContainer = thumbnails;\n this.#document = pdfDocument;\n this.#scale = scale;\n this.#outputScale = outputScale;\n this.#thumbnailWidth = thumbnailWidth;\n }\n\n get pageCount() {\n return this.#pages.length;\n }\n\n /**\n * Nothing is rendered here on purpose: pdf.js caches the operator list on the\n * PDFPageProxy, so rendering a page ahead of the step - including as a thumbnail -\n * would hand that step a warm cache and measure almost nothing.\n */\n async layout() {\n const pageNumbers = Array.from({ length: this.#document.numPages }, (_, index) => index + 1);\n const proxies = await Promise.all(pageNumbers.map((pageNumber) => this.#document.getPage(pageNumber)));\n\n const pageFragment = document.createDocumentFragment();\n const thumbnailFragment = document.createDocumentFragment();\n\n this.#pages = proxies.map((proxy, index) => {\n const unscaled = proxy.getViewport({ scale: 1 });\n const viewport = proxy.getViewport({ scale: this.#scale });\n const element = document.createElement(\"div\");\n element.className = \"pdf-page\";\n element.style.width = `${Math.floor(viewport.width)}px`;\n element.style.height = `${Math.floor(viewport.height)}px`;\n pageFragment.append(element);\n\n const thumbnailViewport = proxy.getViewport({ scale: this.#thumbnailWidth / unscaled.width });\n const thumbnail = document.createElement(\"div\");\n thumbnail.className = \"pdf-thumbnail\";\n const thumbnailBox = document.createElement(\"div\");\n thumbnailBox.className = \"pdf-thumbnail-box\";\n thumbnailBox.style.width = `${Math.floor(thumbnailViewport.width)}px`;\n thumbnailBox.style.height = `${Math.floor(thumbnailViewport.height)}px`;\n const label = document.createElement(\"span\");\n label.className = \"pdf-thumbnail-label\";\n label.textContent = String(index + 1);\n thumbnail.append(thumbnailBox, label);\n thumbnailFragment.append(thumbnail);\n\n return { proxy, viewport, element, thumbnailViewport, thumbnailBox, canvas: null };\n });\n\n this.#pageContainer.replaceChildren(pageFragment);\n this.#thumbnailContainer.replaceChildren(thumbnailFragment);\n }\n\n /**\n * The pages overlap rather than running one after another: awaiting each in turn\n * would leave the step mostly idle, waiting on the worker to parse the next page's\n * operator list.\n */\n async renderPages(startIndex, count) {\n const end = Math.min(startIndex + count, this.#pages.length);\n const renders = [];\n for (let index = startIndex; index < end; index++)\n renders.push(this.#renderPage(this.#pages[index]));\n await Promise.all(renders);\n }\n\n #createCanvas(viewport, className) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = className;\n canvas.width = Math.floor(viewport.width * this.#outputScale);\n canvas.height = Math.floor(viewport.height * this.#outputScale);\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n return canvas;\n }\n\n async #renderPage(page) {\n const { proxy, viewport, element, thumbnailViewport, thumbnailBox } = page;\n const transform = this.#outputScale === 1 ? null : [this.#outputScale, 0, 0, this.#outputScale, 0, 0];\n\n const canvas = this.#createCanvas(viewport, \"pdf-page-canvas\");\n element.replaceChildren(canvas);\n page.canvas = canvas;\n\n const thumbnailCanvas = this.#createCanvas(thumbnailViewport, \"pdf-thumbnail-canvas\");\n thumbnailBox.replaceChildren(thumbnailCanvas);\n\n await proxy.render({ canvas, viewport, transform }).promise;\n await proxy.render({ canvas: thumbnailCanvas, viewport: thumbnailViewport, transform }).promise;\n }\n}\n","import { AsyncBenchmarkStep, AsyncBenchmarkSuite } from \"speedometer-utils/benchmark.mjs\";\nimport { params } from \"speedometer-utils/params.mjs\";\n\nexport const appName = \"pdf-viewer\";\nexport const appVersion = \"1.0.0\";\n\n// Six is the smallest run that reaches one page of each of the document's four\n// layouts, which start after the front page and the table of contents.\nconst DEFAULT_PAGES_TO_RENDER = 6;\n\nexport function getNumberOfPagesToRender(pageCount) {\n return Math.max(1, Math.min(pageCount, Math.round(DEFAULT_PAGES_TO_RENDER * params.complexity)));\n}\n\n/**\n * pdf.js chunks every display-intent render on requestAnimationFrame, capped at 15ms of\n * operator-list work per chunk, so without this a 60ms page waits for four real frames\n * and the suite scores differently on a 60Hz and a 120Hz display.\n *\n * Scoped to the step, not installed at page load: the step scheduler runs in this same\n * frame for a remote suite, and a global shim would rewrite its frame scheduling too.\n * It registers both of its frame callbacks before the step body runs, so this only ever\n * reaches pdf.js.\n */\nasync function withoutAnimationFrames(render) {\n const { requestAnimationFrame, cancelAnimationFrame } = window;\n window.requestAnimationFrame = (callback) => window.setTimeout(() => callback(performance.now()), 0);\n window.cancelAnimationFrame = (handle) => window.clearTimeout(handle);\n try {\n await render();\n } finally {\n window.requestAnimationFrame = requestAnimationFrame;\n window.cancelAnimationFrame = cancelAnimationFrame;\n }\n}\n\nexport default function createSuites(viewer) {\n return {\n default: new AsyncBenchmarkSuite(\"PDFViewer-PDFjs\", [new AsyncBenchmarkStep(\"RenderPages\", () => withoutAnimationFrames(() => viewer.renderPages(0, getNumberOfPagesToRender(viewer.pageCount))))]),\n };\n}\n","import { getDocument, GlobalWorkerOptions, VerbosityLevel } from \"pdfjs-dist/build/pdf.mjs\";\nimport PdfWorker from \"pdfjs-dist/build/pdf.worker.mjs?worker\";\nimport { BenchmarkConnector } from \"speedometer-utils/benchmark.mjs\";\nimport { buildSidebar, buildToolbar } from \"./chrome.js\";\nimport { PdfViewer } from \"./viewer.js\";\nimport createSuites, { appName, appVersion } from \"./workload-test.mjs\";\n\nconst DOCUMENT_URL = \"document.pdf\";\n\n// Pages wrap into a grid, so this constant alone decides how many fit per row. 0.67 is\n// the tallest a US Letter page can be in the area the toolbar and sidebar leave over.\nconst PAGE_SCALE = 0.67;\nconst THUMBNAIL_WIDTH = 130;\nconst DEFAULT_OUTPUT_SCALE = 2;\n\n/**\n * Pinned rather than read from devicePixelRatio, so the workload rasterises the same\n * number of pixels everywhere. The harness only forwards params it knows about, so\n * `pdfPixelRatio` has to be set on the suite's own url, not the harness url.\n */\nfunction readOutputScale() {\n const raw = new URLSearchParams(window.location.search).get(\"pdfPixelRatio\");\n if (raw === null)\n return DEFAULT_OUTPUT_SCALE;\n const value = Number(raw);\n if (!Number.isFinite(value) || value <= 0) {\n console.error(`Invalid pdfPixelRatio param: '${raw}', expected a positive number.`);\n return DEFAULT_OUTPUT_SCALE;\n }\n return value;\n}\n\n// Everything that is not rendering happens before the app-ready message, and so\n// outside every measured window: worker boot, the fetch, getDocument and every getPage.\nasync function main() {\n GlobalWorkerOptions.workerPort = new PdfWorker();\n\n const response = await fetch(new URL(DOCUMENT_URL, document.baseURI));\n if (!response.ok)\n throw new Error(`Could not load ${DOCUMENT_URL}: ${response.status} ${response.statusText}`);\n\n const pdfDocument = await getDocument({\n data: await response.arrayBuffer(),\n // Everything the document needs is embedded, so never substitute a local face.\n useSystemFonts: false,\n verbosity: VerbosityLevel.ERRORS,\n }).promise;\n\n buildToolbar(document.getElementById(\"toolbar\"), { pageCount: pdfDocument.numPages, scale: PAGE_SCALE });\n const thumbnails = buildSidebar(document.getElementById(\"sidebar\"));\n\n const viewer = new PdfViewer({ pages: document.getElementById(\"viewer\"), thumbnails }, pdfDocument, {\n scale: PAGE_SCALE,\n outputScale: readOutputScale(),\n thumbnailWidth: THUMBNAIL_WIDTH,\n });\n await viewer.layout();\n\n new BenchmarkConnector(createSuites(viewer), appName, appVersion).connect();\n}\n\nmain().catch((error) => {\n console.error(error);\n document.getElementById(\"viewer\").textContent = `Failed to load the document: ${error.message}`;\n});\n"],"names":["isNodeJS","BBOX_INIT","F32_BBOX_INIT","FONT_IDENTITY_MATRIX","SVG_NS","RenderingIntentFlag","AnnotationMode","AnnotationPrefix","AnnotationEditorPrefix","AnnotationEditorType","AnnotationEditorParamsType","PermissionFlag","TextRenderingMode","ImageKind","AnnotationType","AnnotationBorderStyleType","VerbosityLevel","OPS","DrawOPS","PasswordResponses","verbosity","setVerbosityLevel","level","getVerbosityLevel","info","msg","warn","unreachable","assert","cond","_isValidProtocol","url","createValidAbsoluteUrl","baseUrl","options","stringToUTF8String","absoluteUrl","updateUrlHash","hash","allowRel","res","stripPath","str","shadow","obj","prop","value","nonSerializable","BaseException","message","name","PasswordException","code","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","length","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","chunk","stringToBytes","i","FeatureTest","buffer8","view32","platform","userAgent","ctx","input","Util","_","n","r","g","b","m1","m2","m","md","p","pos","p0","p1","transform","m0","m3","m4","m5","pI","pI1","d","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","matrix","c","first","second","rect1","rect2","xLow","xHigh","yLow","yHigh","x","y","minMax","x0","y0","x1","y1","#getExtremumOnCurve","x2","x3","y2","y3","t","mt","tt","ttt","#getExtremum","a","delta","sqrtDelta","NormalizeRegex","NormalizationMap","normalizeUnicode","p2","getUuid","buf","_isValidExplicitDest","validRef","validName","dest","page","zoom","args","argsLen","allowNull","arg","makeArr","makeMap","makeObj","makeSet","separator","MathClamp","v","min","max","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","dims","XfaText","xfa","items","walk","node","child","disallowedRichTextStyleRegExp","disallowedEventHandlerAttrRegExp","XfaLayer","html","id","element","storage","intent","storedData","event","option","linkService","attributes","isHTMLAnchorElement","key","allowedStyles","styleName","styleValue","#createElement","xmlns","parameters","root","rootHtml","isNotForRichText","rootDiv","textDivs","stack","parent","childHtml","el","xfaPage","PixelsPerInch","fetchData","type","isValidFetchUrl","response","resolve","reject","request","RenderingCancelledException","extraDelay","isDataScheme","ii","isPdfFile","filename","getFilenameFromUrl","getPdfFilenameFromUrl","defaultFilename","newURL","urlString","decode","decoded","pdfRegex","getLast","iterator","extensionStart","index","filenameStart","StatTimer","#started","longest","noContextMenu","e","stopEvent","PDFDateString","#regex","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","getRGBA","color","hex","parts","getRGB","rgba","getColorValues","colors","span","computedColor","getCurrentTransform","f","getCurrentTransformInverse","setLayerDimensions","div","viewport","mustFlip","mustRotate","pageWidth","pageHeight","style","widthStr","heightStr","OutputScale","pixelRatio","maxPixels","maxDim","capAreaFactor","maxAreaScale","maxWidthScale","maxHeightScale","maxScale","winPixels","SupportedImageMimeTypes","ColorScheme","CSSConstants","applyOpacity","opacity","white","RGBToHSL","rgb","l","HSLToRGB","hsl","h","computeLuminance","contrastRatio","hsl1","hsl2","lum1","lum2","contrastCache","findContrastColor","baseColor","fixedColor","cachedValue","array","baseHSL","fixedHSL","isFixedColorDark","minContrast","start","end","PRECISION","mid","renderRichText","dir","className","container","fragment","lines","line","makePathFromDrawOPS","data","path","EditorToolbar","#toolbar","#colorPicker","#editor","#buttons","#altText","#comment","#commentButtonDivider","#signatureDescriptionButton","#l10nRemove","editor","editToolbar","signal","#pointerDown","buttons","position","#focusIn","#focusOut","#addListenersToElement","editorType","_uiManager","button","#divider","divider","altText","comment","beforeElement","colorPicker","signatureManager","tool","beforeSelector","description","FloatingToolbar","#uiManager","uiManager","#render","#makeButton","#getLastPoint","boxes","isLTR","lastY","lastX","box","buttonClass","l10nId","labelL10nId","clickHandler","INTERNAL_EVT","internalOpt","bindEvents","names","CurrentPointers","#pointerId","#pointerIds","#moveTimestamp","#pointerType","pointerId","pointerType","timeStamp","IdManager","#id","ImageManager","#baseId","#cache","svg","image","promise","#get","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","file","lastModified","size","blobPromise","blob","canvas","offscreen","bitmap","CommandManager","#commands","#locked","#maxSize","#position","maxSize","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","KeyboardManager","callbacks","isMac","keys","callback","hasMacOverride","k","shortcut","isMacKey","keyName","modifiers","#parseShortcut","keyPart","part","upper","modifier","#codeToKey","match","self","shortcuts","fallback","eventModifiers","bubbles","checker","ColorManager","RGB","AnnotationEditorUIManager","#abortController","#activeEditor","#allEditableAnnotations","#allEditors","#allLayers","#savedAllLayers","#savedEditorsByPage","#altTextManager","#annotationStorage","#changedExistingAnnotations","#commandManager","#commentManager","#copyPasteAC","#currentDrawingSession","#currentPageIndex","#deletedAnnotationsElementIds","#draggingEditors","#editorTypes","#editorsToRescale","#enableHighlightFloatingButton","#enableUpdatedAddImage","#enableNewAltTextWhenAddingImage","#filterFactory","#focusMainContainerTimeoutId","#focusManagerAC","#highlightColors","#highlightWhenShiftUp","#floatingToolbar","#idManager","#isEnabled","#isPointerDown","#isWaiting","#keyboardManagerAC","#lastActiveElement","#mainHighlightColorPicker","#missingCanvases","#mlManager","#mode","#selectedEditors","#selectedTextNode","#signatureManager","#pageColors","#showAllStates","#pdfDocument","#previousStates","#translation","#translationTimeoutId","#container","#viewer","#viewerAlert","#updateModeCapability","proto","arrowChecker","textInputChecker","_self","small","big","viewer","viewerAlert","altTextManager","commentManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","evtOpts","evt","#addSelectionListener","#addDragAndDropListeners","#addKeyboardManager","layer","ac","pair","_highlightColors","map","hasHCM","isNameForHCM","colorName","firstTime","posX","posY","pageIndex","uid","savedData","isSelected","visibility","pageNumber","onEditorsRendered","mode","layerX","layerY","pagesRotation","#getAnchorElementForSelection","anchorNode","#getLayerForTextLayer","textLayer","currentLayer","methodOfCreation","selection","anchorOffset","focusNode","focusOffset","text","isNoneMode","#displayFloatingToolbar","annotationId","storedValue","messageId","#selectionChange","#dispatchUpdateStates","activeLayer","pointerup","#onSelectEnd","#addFocusManager","#removeFocusManager","activeElement","lastEditor","lastActiveElement","#removeKeyboardManager","#addCopyPasteListeners","#removeCopyPasteListeners","item","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","#addEditorToLayer","#selectEditors","oldPageIndex","newPageIndex","savedEditorsByPage","saveEditor","promises","#dispatchUpdateUI","isEditing","#isEmpty","types","editId","isFromUser","isFromKeyboard","mustEnterInEditMode","editComment","#disableAll","#enableAll","editorClass","elementIds","allComments","annotationElementId","hasComment","deleted","annotation","popupRef","contentsObj","visible","updateButton","mustWait","#lastSelectedEditor","ed","params","drawingEditor","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","w","range","editorId","AltText","#altTextDecorative","#altTextButton","#altTextButtonLabel","#altTextTooltip","#altTextTooltipTimeout","#altTextWasFromKeyBoard","#badge","#guessedText","#textWithDisclaimer","#useNewAltTextFlow","#l10nNewButton","l10n","label","onClick","#label","#setState","guessedText","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","tooltip","DELAY_TO_SHOW_TOOLTIP","Comment","#commentStandaloneButton","#commentToolbarButton","#commentWasFromKeyBoard","#initialText","#richText","#text","#date","#deleted","#popupPosition","parentX","parentY","selected","hasPopup","isStandalone","parentDimensions","richText","date","preventDefault","MIN_TOUCH_SPAN","stopTouchEvent","TouchManager","#isPinching","#isPinchingStopped","#isPinchingDisabled","#onPinchStart","#onPinching","#onPinchEnd","#onPanning","#ownsGesture","#pointerDownAC","#signal","#touchIds","#touchInfo","#touchManagerAC","#touchMoveAC","#unconfirmedPinch","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","onPanning","#onTouchStart","#pruneTouchIds","touchIds","identifier","#armPointerDown","opt","#onTouchMove","onTouchEnd","#onTouchEnd","#setTouchInfo","pointerDownAC","opts","cancelPointerDown","previous","#getTrackedTouches","touches","touch","touch0","touch1","wasOwned","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","pPanX","pPanY","prevGapX","prevGapY","currGapX","currGapY","panX","panY","dx","dy","screenPanX","screenPanY","translation","distance","pDistance","minDistance","direction","unconfirmed","wasTracking","#endGesture","AnnotationEditor","#accessibilityData","#allResizerDivs","#disabled","#dragPointerId","#dragPointerType","#resizersDiv","#lastPointerCoords","#savedDimensions","#fakeAnnotation","#focusAC","#focusedResizerName","#hasBeenClicked","#initialRect","#isEditing","#isInEditMode","#isResizerEnabledForKeyboard","#moveInDOMTimeout","#prevDragX","#prevDragY","#telemetryTimeouts","#touchManager","#isDraggable","#zIndex","resize","pageX","pageY","fakeEditor","FakeEditor","_type","_value","mime","#stopResizing","baseX","baseY","#translate","bx","by","_borderLineWidth","#rotatePoint","angle","#getRotationMatrix","parentScale","#createResizers","classes","#resizerPointerdown","savedDraggable","#resizerPointermove","savedParentCursor","savedCursor","pointerUpCallback","#addResizeToUndoStack","#resize","savedWidth","savedHeight","newWidth","newHeight","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","screenX","screenY","lastScreenX","lastScreenY","oldDiag","toolbarButtons","editToolbarDiv","trY","blX","blY","trX","contents","#addFocusListeners","#addTouchManager","#touchPinchStartCallback","#touchPinchCallback","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","#touchPinchEndCallback","#setUpDragSession","#selectOnPointerEvent","hasDraggingStarted","cancelDrag","shiftX","shiftY","creationDate","modificationDate","focus","top","left","bottom","right","innerHeight","innerWidth","_angle","context","timeout","children","boundResizerKeydown","#resizerKeydown","boundResizerBlur","#resizerBlur","#resizerFocus","firstPosition","nextFirstPosition","#setResizerTabIndex","action","annotationLayer","content","firstElementChild","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","AnnotationStorage","#modified","#modifiedIds","#editorsMap","#storage","defaultValue","modified","entry","val","#setModified","PrintAnnotationStorage","transfer","hasBitmap","stats","typeToEditor","numberOfEditedComments","numberOfDeletedComments","editorStats","counters","ids","#serializable","serializable","clone","FORCED_DEPENDENCY_LABEL","floor","ceil","expandBBox","minX","minY","maxX","maxY","scaleCharBBox","scaleX","scaleY","bbox","temp","EMPTY_BBOX","BBoxReader","#bboxes","#coords","bboxes","coords","ensureDebugMetadata","CanvasBBoxTracker","#baseTransformStack","#clipBox","#pendingBBox","#canvasWidth","#canvasHeight","#bboxesCoords","operationsCount","#initializeBBoxes","oldBBoxes","buffer","opIdx","onSavePopped","lastSave","idx","clipBox","intersection","preserve","dependencyLists","dependencies","depIdx","depName","fallbackIdx","font","getMeasure","dependencyName","dependencyNames","CanvasDependencyTracker","#simple","#incremental","#namedDependencies","#pendingDependencies","#fontBBoxTrustworthy","#debugMetadata","#recordDebugMetadataDepenencyAfterRestore","#bboxTracker","bboxTracker","recordDebugMetadata","dep","fontBBox","isBBoxTrustworthy","computedBBox","measure","pendingDependencies","simple","incremental","metadata","needsCleanup","deps","CanvasNestedDependencyTracker","#dependencyTracker","#opIdx","#ignoreBBoxes","#nestingLevel","#savesLevel","dependencyTracker","ignoreBBoxes","Dependencies","CanvasImagesTracker","#capacity","#count","#CoordsArray","newCoords","finalBBox","rotationAngle","sin","cos","finalBBoxWidth","finalBBoxHeight","sin2","cos2","cosSin","denom","CONTROL_CHAR_REGEXP","isCSSString","quote","char","serializeFontFamily","fontFamily","FontLoader","#systemFonts","#styleSheet","ownerDocument","styleElement","nativeFontFace","rule","styleSheet","#getStyleSheet","StyleSheet","adoptedStyleSheets","disableFontFace","_inspectFont","loadedName","src","fontFace","hasFonts","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","string32","spliceString","s","remove","insert","chunk1","chunk2","called","isFontReady","loadTestFontId","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","FontFaceObject","#fontData","translatedData","inspectFont","charProcOperatorList","extra","css","objs","character","objId","cmds","CSS_FONT_INFO","SYSTEM_FONT_INFO","FONT_INFO","PATTERN_INFO","InfoUtils","CssFontInfo","#buffer","#view","#readString","decoder","SystemFontInfo","styleLength","weightLength","weight","FontInfo","#readBoolean","byteOffset","bitOffset","#readNumber","#readArray","arrLen","lookupName","increment","len","arr","#getDataOffsets","stringsLength","systemFontInfoLength","cssFontInfoLength","cssFontInfoData","systemFontInfoData","PatternInfo","dataView","kind","hasBBox","hasBackground","nCoord","nColor","nStop","stops","background","shadingType","bounds","FontPathInfo","getUrlProp","getDataProp","getFactoryUrlProp","isRefProxy","isNameProxy","isValidExplicitDest","LoopbackPort","#listeners","#deferred","listener","rmAbort","onAbort","CallbackKind","StreamKind","onFn","wrapReason","MessageHandler","#messageAC","sourceName","targetName","comObj","#onMessage","#processStreamMessage","callbackId","capability","result","reason","#createStreamSink","actionName","handler","ah","transfers","queueingStrategy","streamId","controller","startCapability","pullCapability","cancelCapability","streamSink","lastDesiredSize","streamController","#deleteStreamController","dataReason","BaseBinaryDataFactory","#errorStr","cMapUrl","standardFontDataUrl","wasmUrl","DOMBinaryDataFactory","BaseCanvasFactory","#enableHWA","enableHWA","canvasAndContext","DOMCanvasFactory","BaseFilterFactory","maps","fgColor","bgColor","alpha","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","#baseUrl","#_cache","#_defs","#docId","#document","#_hcmCache","docId","#hcmCache","#defs","#createTables","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","#createUrl","tableR","tableG","tableB","filter","#createFilter","#addTransferMapConversion","fgRGB","#getRGB","bgRGB","#resetDefsColor","#addGrayConversion","getSteps","tableA","#addTransferMapAlphaConversion","#addLuminosityConversion","slope","feComponentTransfer","feFuncA","fgGray","bgGray","newFgRGB","newBgRGB","#getOpaqueTextColor","fg","bg","step","newStart","newStep","prev","j","feColorMatrix","#appendFeFunc","func","feFunc","rTable","gTable","bTable","aTable","#getRGBA","canvasR","canvasG","canvasB","blend","node_utils_fetchData","NodeFilterFactory","NodeCanvasFactory","NodeBinaryDataFactory","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","xorMask","srcLength","destPos","elem","convertRGBToRGBA","len32","src32","alphaMask","s1","s2","s3","jj","MESH_WGSL","WebGPU","#initPromise","#device","#meshPipeline","#preferredFormat","#initGPU","adapter","shaderModule","posData","colData","vertexCount","backgroundColor","paddedWidth","paddedHeight","borderSize","device","posBuffer","colBuffer","uniformBuffer","bindGroup","gpuCtx","clearValue","commandEncoder","renderPass","_webGPU","initGPU","isGPUReady","loadMeshShader","drawMeshWithGPU","PathType","applyBoundingBox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","dist","grad","firstPoint","secondPoint","colorStop","reversedStops","owner","inverse","pathType","pattern","precision","n1","n2","ps","ownerBBox","tmpCanvas","tmpCtx","domMatrix","drawTriangle","p3","c1","c2","c3","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","MeshShadingPattern","combinedScale","canvasFactory","boundsWidth","boundsHeight","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","TilingPattern","canvasGraphicsFactory","baseTransform","absXStep","absYStep","nXFirst","nXLast","nYFirst","nYLast","clippedBBox","inv","dimx","dimy","graphics","useEOFill","bboxWidth","bboxHeight","combinedScaleX","combinedScaleY","xstep","ystep","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","realOutputSize","clip","paintType","current","fillStyle","strokeStyle","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","FULL_CHUNK_HEIGHT","XY","mirrorContextOperations","destCtx","originalMethods","original","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","CanvasExtraState","xStrokePad","yStrokePad","intersect","putBinaryImageData","imgData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","elemsInThisChunk","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","resetCtxToDefault","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","#SCALE_MATRIX","#knockoutGroupLevel","#knockoutElementDepth","#knockoutTempCanvasEntry","#knockoutSavedCtx","#knockoutSavedSMaskCtx","#knockoutSavedGCO","#knockoutElementAlpha","#knockoutFilterCache","#knockoutElementGroupMeta","#groupStackMeta","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","imagesTracker","transparency","savedFillStyle","transparentCanvas","operatorList","executionStartIdx","continueCallback","stepper","operationsFilter","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","fnArgs","depObjId","objsPool","#restoreInitialState","meta","#destroyKnockoutPools","cache","#drawFilter","hcmFilterId","savedFilter","img","inverseTransform","widthScale","heightScale","scaleSteps","ws","hs","pw","ph","nw","nh","readEntry","writeEntry","paintWidth","paintHeight","source","fillColor","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","scaledEntry","scaleResult","limit","dashArray","dashPhase","flatness","states","smask","inSMaskMode","subtype","backdrop","transferMap","hasFilter","filteredOOBAlpha","inputAlpha","SMASK_LAYER_TO_MASK_AREA_RATIO","layerW","layerH","maskArea","useLayerSize","filterSpec","bakedBackdrop","preparedEntry","drawX","drawY","srcEntry","sCtx","pCtx","filterApplied","scratchCanvas","#createKnockoutMaskCanvas","sourceCanvas","reuseEntry","maskEntry","maskCtx","needsAlphaScaling","knockoutFilter","sourceData","maskData","sourcePixels","maskPixels","alphaScale","#getOrCreatePooledEntry","#compositeKnockoutSurface","surfaceCanvas","backdropCanvas","destTransform","backdropOffset","reuseMaskEntry","poolMeta","sourceAlpha","sourceFilter","knockoutAlpha","knockoutMaskEntry","sourceCompositeOperation","backdropEntry","backdropCtx","#beginKnockoutElement","groupMeta","tempEntry","tempCtx","#endKnockoutElement","started","savedCtx","savedSMaskCtx","dirtyBox","suspendedCtx","applySMaskInPlace","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","clipX","clipY","clipW","clipH","oobAlpha","hasOOBAlpha","maskX0","maskY0","maskX1","maskY1","hasInnerCutout","maskOffsetX","maskOffsetY","old","op","outerExtraSize","tilingDims","consumePath","strokeColor","newPath","needRestore","tileIdx","paths","fontSize","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","#getScaledPath","patternFillTransform","patternStrokeTransform","textRenderingMode","fillStrokeMode","isAddToPathSet","patternFill","patternStroke","scaledPath","invPatternTransform","glyphs","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","needsFill","needsStroke","lineWidth","chars","glyph","joinedChars","restoreNeeded","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","fontMatrix","isTextInvisible","spacingLength","xWidth","yWidth","llx","lly","urx","ury","renderingOpIdx","group","currentCtx","canvasBounds","groupCtx","hasInnerBackdrop","savedKnockoutLevel","needsBackdropCopy","replaceBackdrop","#convertGroupToGray","currentMtx","parentGroupMeta","colorEntry","colorCtx","shapeMaskEntry","imageData","gray","hasOwnCanvas","canvasName","viewportScale","canvases","count","mask","skewX","skewY","positions","trans","images","imgToPaint","inlineImgCanvas","tag","isEmpty","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","SCALE_MATRIX","dashes","BasePDFStream","#PDFStreamReader","#PDFStreamRangeReader","PDFStreamReader","PDFStreamRangeReader","begin","reader","BasePDFStreamReader","stream","BasePDFStreamRangeReader","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","contentDispositionStr","iter","quot","quotindex","extvalue","encodingend","charset","createHeaders","isHttp","httpHeaders","headers","trimHeadersEnd","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","disableRange","rv","extractFilenameFromHeader","createResponseError","ensureResponseOrigin","rangeOrigin","origin","fetchUrl","withCredentials","abortController","ensureResponseStatus","getArrayBuffer","PDFFetchStream","PDFFetchStreamReader","PDFFetchStreamRangeReader","disableStream","contentLength","isRangeSupported","done","responseOrigin","transport_stream_getArrayBuffer","endRequests","PDFDataTransportStream","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","pdfDataRangeTransport","initialData","progressiveDone","#onReceiveData","rangeReader","#endRequests","contentDispositionFilename","loaded","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","PDFNetworkStream","#pendingRequests","PDFNetworkStreamReader","PDFNetworkStreamRangeReader","xhr","pendingRequest","#onStateChange","#onProgress","xhrStatus","rangeHeader","#onHeadersReceived","#onDone","#onError","fullRequestXhr","rawResponseHeaders","getReadableStream","fs","Readable","readStream","PDFNodeStream","PDFNodeStreamReader","PDFNodeStreamRangeReader","stat","readableStream","error","getNetworkStream","GlobalWorkerOptions","#port","#src","Metadata","#map","#data","parsedData","INTERNAL","OptionalContentGroup","#isDisplay","#isPrint","#userSet","#visible","renderingIntent","usage","rbGroups","print","view","internal","userSet","OptionalContentConfig","#cachedGetHash","#groups","#initialHash","#order","#rawData","groupState","on","off","#evaluateVisibilityExpression","operator","state","preserveRB","rbGroup","otherId","PagesMapper","#pageNumberToId","#prevPageNumbers","#pagesNumber","#clipboard","#savedData","#ensureInit","pageNumberToId","#buildIdToPageNumber","idToPageNumber","pageNumbers","selectedPages","pagesToMove","movedCount","mappedPagesToMove","removedBeforeTarget","pagesNumber","remainingLen","prevPageNumbers","adjustedTarget","pagesToDelete","prevIdToPageNumber","newN","newPageNumberToId","sourceIndex","destIndex","#updatePrevPageNumbers","pagesToCopy","copiedPageNumbers","copiedPageIds","deletedPageNumbers","pasteIndex","pasteEnd","idsIndices","oldPositions","#buildCopyLevels","extractedPageNumbers","copyLevels","counts","nCopy","extractParams","includePages","pageIndices","usedIds","INITIAL_DATA","dataObj","PDFObjects","#objs","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","TextLayer","#capability","#disableProcessItems","#fontInspectorEnabled","#imagesHandler","#lang","#layoutTextParams","#pageHeight","#pageWidth","#reader","#rootContainer","#rotation","#scale","#styleCache","#textContentItemsStr","#textContentSource","#textDivs","#textDivProperties","#transform","#ascentCache","#canvasContexts","#canvasCtxFonts","#minFontSize","#pendingTextLayers","textContentSource","#ensureMinFontSizeComputed","isWindows","isFirefox","pump","#processItems","onBefore","#getCtx","#layout","abortEx","textContentItemsStr","#appendText","geom","textDiv","textDivProperties","fontHeight","fontAscent","#getAscent","divStyle","shouldScaleText","absScaleX","absScaleY","br","#ensureCtxFont","lang","family","cached","cachedAscent","metrics","ascent","descent","ratio","RENDERING_CANCELLED_TIMEOUT","getDocument","task","PDFDocumentLoadingTask","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapPacked","iccUrl","ignoreErrors","maxImageSize","isOffscreenCanvasSupported","isImageDecoderSupported","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","BinaryDataFactory","gpuPromise","useWasm","pagesMapper","useSystemFonts","useWorkerFetch","transportFactory","docParams","transportParams","hasGPU","workerIdPromise","networkStream","NetworkStream","workerId","messageHandler","transport","WorkerTransport","#listener","PDFDocumentProxy","pdfInfo","ref","pageIndexesToSkip","pageInfos","keepLoadedFonts","PDFPageProxy","#pendingCleanup","#pagesMapper","pageInfo","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","recordImages","recordOperations","intentArgs","intentState","intentPrint","recordForDebugger","shouldRecordOperations","shouldRecordImages","complete","internalRenderTask","recordedBBoxes","#tryCleanup","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","renderTasks","operatorListChunk","annotationStorageSerializable","modifiedIds","force","delay","curCacheKey","curIntentState","_capability","_messageHandler","_port","_webWorker","_fakeWorkerId","_isWorkerDisabled","_workerPorts","_PDFWorker_instances","resolve_fn","initializeFromPort_fn","initialize_fn","setupFakeWorker_fn","_PDFWorker_static","mainThreadWorkerMessageHandler_get","_PDFWorker","port","__privateAdd","__privateGet","__privateMethod","__privateSet","cachedPort","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","__privateWrapper","workerHandler","otherUrl","base","other","wrapper","#fullReader","#methodPromises","#networkStream","#pageCache","#pagePromises","#pageRefCache","#passwordCapability","loadingTask","factory","_pageIndex","#cacheSimpleMethod","total","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","terminated","sink","readyReason","isStreamingSupported","updatePassword","err","exportedData","exportedError","fontData","imageRef","pageProxy","copy","ImageBitmapCtor","infos","mapping","remapped","copyLevel","sourceIdx","cachedPromise","results","refStr","RenderTask","separateAnnots","#rAF","#canvasInUse","useRequestAnimationFrame","version","build","ColorPicker","#button","#buttonSwatch","#defaultColor","#dropdown","#dropdownWasFromKeyboard","#isMainColorPicker","#eventBus","#openDropdownAC","#l10nColor","#openDropdown","#keyDown","swatch","dropdown","#getDropdownRoot","#colorSelect","#isDropdownVisible","BasicColorPicker","#input","#hasAlpha","colorType","colorAndOpacityType","opacityType","hasAlpha","alphaHex","makeColorComp","scaleAndClamp","ColorConverters","G","components","BaseSVGFactory","skipDimensions","DOMSVGFactory","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","TIMEZONE_OFFSET","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","MediaAnnotationElement","AnnotationElement","#updates","#hasBorder","#popupElement","isRenderable","ignoreBorder","createQuadrilaterals","quadPoints","inkLists","inkList","popup","newPopup","#setRectEdited","currentRect","horizontalRadius","verticalRadius","radius","borderColor","setColor","jsName","colorArray","display","hidden","actions","jsEvent","commonActions","detail","eventProxy","rectBlX","rectBlY","rectTrX","rectTrY","svgBuffer","borderWidth","svgFactory","defs","clipPath","rectWidth","rectHeight","popupData","skipId","fields","fieldObj","exportValues","exportValue","domElement","triggers","EditorAnnotationElement","link","isBound","#bindAttachment","#bindSetOCGState","#setInternalLink","destination","overlaidText","attachmentId","attachment","openAttachment","resetForm","otherClickAction","resetFormFields","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","elementData","baseName","eventName","valueGetter","getter","TEXT_ALIGNMENT","fontColor","computedFontSize","BORDER_SIZE","roundToOneDecimal","numberOfLines","lineHeight","isRequired","keyInStorage","maxLen","fieldFormattedValues","datetimeFormat","datetimeType","timeStep","hasDateOrTime","blurListener","formattedValue","target","charLimit","commitKey","_blurListener","selectionStart","selectionEnd","selStart","selEnd","wordCharPattern","combWidth","alignment","setCombOffset","free","checked","checkbox","curChecked","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","fixDisplayValue","newValue","optionElement","removeEmptyEntry","noneOptionElement","getValue","isExport","multiple","selectedValues","getItems","values","displayValue","selectChild","indices","change","elements","hasCommentManager","#createPopup","PopupElement","#boundKeyDown","#boundHide","#hide","#boundShow","#show","#boundToggle","#toggle","#color","#contentsObj","#dateObj","#elements","#parent","#parentRect","#pinned","#popup","#popupAbortController","#commentButton","#commentButtonPosition","#rect","#titleObj","#wasVisible","#firstElement","#commentText","titleObj","parentRect","open","#addEventListeners","#setCommentButtonPosition","hasOwnButton","togglePopup","showPopup","hidePopup","parentContainer","#updateColor","#updateCommentButtonPosition","header","title","#html","#fontSize","#fontColor","#makePopupContent","popupLines","popupContent","lineAttributes","#setPosition","useParentRect","normalizedRect","popupLeft","popupTop","lineSpan","#line","#square","square","#circle","circle","#polyline","vertices","borderStyle","points","polyline","#polylinesGroupElement","#polylines","#getTransform","thickness","mark","underline","strikeout","#trigger","fileId","trigger","#download","fallbackContent","#contentUrl","#media","#load","contentType","isAudio","media","hovered","focused","updateControls","#revokeContentUrl","AnnotationLayer","#accessibilityManager","#annotationCanvasMap","#editableAnnotations","#structTreeLayer","#linkService","#hasAriaAttributesFromStructTree","accessibilityManager","annotationEditorUIManager","structTreeLayer","annotations","popupToElements","popupAnnotations","elementParams","isPopupAnnotation","rendered","#addElementsToDOM","#setAnnotationCanvasMap","contentElement","oc","enableLinkOwnership","ariaAttributes","top1","bot1","mid1","top2","bot2","mid2","centerX1","centerX2","annotationIds","cvs","toRemove","firstCanvas","firstChild","lastCanvas","editableAnnotation","EOL_PATTERN","FreeTextEditor","#content","#editorDivId","#editModeAC","#updateFontSize","setFontsize","#setEditorDimensions","savedFontsize","col","savedColor","#extractText","prevChild","#getNodeContent","savedDisplay","savedVisibility","savedText","newText","setText","#setContent","paste","#deserializeContent","startContainer","startOffset","bufferBefore","bufferAfter","newRange","beforeLength","#serializeContent","padding","textPosition","#hasElementChanged","DrawingOptions","#svgProperties","DrawingEditor","#internalDiv","#mustBeCommitted","#currentDraw","#currentDrawingAC","#currentDrawingOptions","#currentClipPathId","#createDrawOutlines","#addToDrawLayer","drawOutlines","drawId","drawingOptions","clipPathId","#createFocusOutline","#createDrawing","#updateBbox","#rotationAngle","#updateFocusOutline","#toggleFocusOutlineClass","rootClass","#updateVisibility","_drawId","_focusDrawId","_isVisible","p1Keys","_options","propertyName","_drawingOptions","savedValue","setter","opacityName","savedOpacity","#convertToDrawSpace","#rotateBox","_x","_y","#cleanDrawLayer","mustBeSelected","drawLayer","#convertToParentSpace","pW","pH","parentRotation","drawDiv","_params","_parent","clientX","clientY","referenceEvent","_target","_signal","isAborted","boxX","boxY","coalesced","sample","all","draw","lastElement","_data","_pageX","_pageY","_pageWidth","_pageHeight","_innerMargin","Outline","_bbox","_rotation","_name","_dimensions","_scale","_pageTranslation","_pageDimensions","_parentDimensions","sx","sy","FreeDrawOutliner","#box","#bottom","#innerMargin","#isLTR","#top","#last","#lastX","#lastY","#min","#min_dist","#scaleFactor","#thickness","#points","#MIN_DIST","#MIN_DIFF","#MIN","scaleFactor","innerMargin","#getLastCoords","lastTop","lastBottom","diffX","diffY","diffD","K","nX","nY","thX","thY","#toSVGPathTwoPoints","#toSVGPathEnd","#toSVGPathStart","lastTopX","lastTopY","lastBottomX","lastBottomY","outline","FreeDrawOutline","last","#getOutlineTwoPoints","N","#getOutlineEnd","#getOutlineStart","#bbox","#outline","#computeMinMax","firstPointX","firstPointY","lastPointX","lastPointY","ltrCallback","bezierBbox","outliner","getHighlightSVGProperties","getHighlightFocusSVGProperties","focusOutline","HighlightOutliner","#firstPoint","#lastPoint","#verticalEdges","#intervals","EPSILON","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","#breakEdge","#insert","#remove","#getOutlines","edges","allEdges","edge1","edge2","outlines","HighlightOutline","#binarySearch","middle","y4","#boxes","#outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","FreeHighlightDrawer","#outliner","hasChanged","#EXTRA_THICKNESS","HighlightDrawingOptions","HighlightEditor","#anchorNode","#anchorOffset","#focusNode","#focusOffset","#methodOfCreation","#relativeToBox","pointX","pointY","#keydown","#setCaret","defaults","_DEFAULT_OPACITY","InkDrawOutliner","#tip","#lines","#lastSVGPath","#lastIndex","InkDrawOutline","#parentWidth","#parentHeight","#normalizePoint","#add","#toSVGPathWithTip","needsPathUpdate","tipX","tipY","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","#currentRotation","#parentScale","#computeBbox","serializedLines","serializedPoints","#getBBoxWithNoMargin","rescaleFn","newLines","#getMarginComponents","margin","marginX","marginY","#updateThickness","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","InkDrawingOptions","viewerParameters","InkEditor","stroke","ContourDrawOutline","BASE_HEADER_LENGTH","POINTS_PROPERTIES_NUMBER","SignatureExtractor","#PARAMETERS","#neighborIndexToId","i0","j0","#neighborIdToIndex","#clockwiseNonZero","kk","shiftI","shiftJ","#counterClockwiseNonZero","#findContours","threshold","nbd","lnbd","contours","ij","pix","i2","j2","isHole","contour","contour0","i1","j1","i3","j3","i4","j4","ij3","#douglasPeuckerHelper","ax","ay","abx","aby","nabx","naby","aa","invS","phi","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","#douglasPeucker","#bilateralFilter","sigmaS","sigmaR","kernelSize","kernel","sigmaS2","halfSize","rangeValues","sigmaR2","out","histogram","center","sum","norm","neighbour","#getHistogram","#toUint8","#guessThreshold","M","L","spos","#getGrayPixels","originalBitmap","prevWidth","prevHeight","isteps","grayImage","fontStyle","fontWeight","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","fontBoundingBoxAscent","fontBoundingBoxDescent","SCALE","uint8Buf","contourList","mustSmooth","areContours","curves","linesAndPoints","xScale","yScale","newCurves","reducedPoints","newPoints","minDiff","maxDiff","outlinesLength","bufferType","headerLength","cs","writer","BufferCtor","diffs","signatureData","readable","writable","numberOfDrawings","diffsOffset","SignatureOptions","DrawnSignatureOptions","SignatureEditor","#isExtracted","#description","#signatureData","#signatureUUID","hasDescriptionStats","_isCopy","uuid","heightInPage","toolbar","outlineData","fontInfo","StampEditor","#bitmap","#bitmapId","#bitmapPromise","#bitmapUrl","#bitmapFile","#bitmapFileName","#canvas","#missingCanvas","#resizeTimeoutId","#isSvg","#hasBeenAddedInUndoStack","hasAltTextStats","#getBitmapFetched","fromId","#createCanvas","#getBitmapDone","updateAltTextData","#getBitmap","bitmapId","#drawBitmap","MAX_RATIO","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","#scaleBitmap","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","#serializeBitmap","toUrl","missingCanvas","structParent","bitmapUrl","isSvg","accessibilityData","changes","area","prevData","isSamePageIndex","isSameAltText","AnnotationEditorLayer","#allowClick","#annotationLayer","#clickAC","#editorFocusTimeoutId","#editors","#hadPointerDown","#isDisabling","#isEnabling","#drawingAC","#focusedElement","#textLayer","#textSelectionAC","#textLayerDblClickAC","#lastPointerDownTimestamp","editorTypes","#cleanup","classList","#allEditorsIterator","annotationElementIds","editable","lastPointerDownTimestamp","regex","needFakeAnnotation","changedAnnotations","resetAnnotations","#textLayerPointerDown","#currentEditorType","#createNewEditor","#getCenterPoint","isCentered","currentMode","relatedTarget","oldRotation","compareTextLayers","getTextLayer","isPointBefore","nodeA","offsetA","nodeB","offsetB","relation","normalizeEdgeBoundary","lastNode","DrawLayer","#mapping","#textLayerObserver","#toUpdate","#selectionId","#selectionChangeAC","#selections","#isSelecting","#textLayerSet","#textLayers","previousData","records","#hasSelection","addedNodes","#cleanupTextLayerSelection","textLayerData","#getOrderedTextLayers","rotators","orderedTextLayers","ranges","endContainer","endOffset","startTextLayer","endTextLayer","startMissing","endMissing","anchorLayer","focusLayer","anchorBeforeFocus","activeTextLayers","boundarySubstituted","previousNode","normalizedEnd","normalizedStart","firstNode","subRange","lastTextNode","selectedTextLayers","clientRect","selectionStyle","#setBox","#createSVG","#createClipPath","pathId","clipPathUse","#updateProperties","isPathUpdatable","hasClip","use","mustRemoveSelfIntersections","maskId","use1","use2","elementOrId","pathElement","percentage","TextLayerImages","#coordinates","#coordinatesByElement","#getPageCanvas","#minSize","#activeImage","minSize","coordinates","getPageCanvas","#createImagePlaceholder","imgElement","activeImage","pageCanvas","imageX1","imageY1","imageX2","imageY2","StepScheduler","syncCallback","asyncCallback","RAFStepScheduler","AsyncRAFStepScheduler","gotTimer","gotMessage","gotPromise","tryTriggerAsyncCallback","STEP_SCHEDULER_LOOKUP","forceLayout","body","layoutMode","StepRunner","#frame","#page","#params","#suite","#step","frame","suite","suiteName","stepName","syncStartLabel","syncEndLabel","asyncEndLabel","syncTime","asyncStartTime","asyncTime","runSync","startTime","syncStartTime","syncEndTime","measureAsync","asyncEndTime","schedulerType","schedulerClass","AsyncStepRunner","LAYOUT_MODES","Params","searchParams","warnUnused","errorMessage","minValue","number","unused","paramKey","defaultParams","parsedValue","viewportParam","suites","tags","enumArray","shuffleSeed","config","isValidJsonUrl","rawUrlParams","maybeCustomParams","BenchmarkStep","run","AsyncBenchmarkStep","BENCHMARK_SUITE_TYPE","BenchmarkSuite","onProgress","measuredValues","suiteStartLabel","suiteEndLabel","rawResult","AsyncBenchmarkSuite","MESSAGE_TYPE","MESSAGE_STATUS","BenchmarkConnector","payload","TOOLBAR_GROUPS","SIDEBAR_TABS","icon","pageNumberField","pageCount","zoomLevel","TOOLBAR_LABELS","buildToolbar","groups","buildSidebar","strip","tab","control","panel","PdfViewer","#pageContainer","#thumbnailContainer","#outputScale","#thumbnailWidth","#pages","pages","thumbnails","thumbnailWidth","proxies","pageFragment","thumbnailFragment","proxy","unscaled","thumbnailViewport","thumbnail","thumbnailBox","startIndex","renders","#renderPage","thumbnailCanvas","appName","appVersion","DEFAULT_PAGES_TO_RENDER","getNumberOfPagesToRender","withoutAnimationFrames","render","requestAnimationFrame","cancelAnimationFrame","handle","createSuites","DOCUMENT_URL","PAGE_SCALE","THUMBNAIL_WIDTH","DEFAULT_OUTPUT_SCALE","readOutputScale","raw","main","PdfWorker"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js b/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js new file mode 100644 index 000000000..5608ce747 --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js @@ -0,0 +1,54 @@ +const Eu=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),ca=[1/0,1/0,-1/0,-1/0],w0=new Float32Array(ca),Ea=[.001,0,0,.001,0,0],Mu=1.35,Du=.35,ol=Du/Mu,Ma="http://www.w3.org/2000/svg",an={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},_u="pdfjs_internal_id_",Mc="pdfjs_internal_editor_",js={FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,SIGNATURE:101},Pu={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},ls={TRIANGLES:1,LATTICE:2,PATCH:3},Dc={FILL:0,ADD_TO_PATH_FLAG:4},sn={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},_c={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26,RICHMEDIA:27},_o={GROUP:"Group",REPLY:"R"},fl={PLAY_OR_RESUME:0,PLAY:4},Kt={INVISIBLE:1,HIDDEN:2,PRINT:4,NOROTATE:16,NOVIEW:32,LOCKED:128,LOCKEDCONTENTS:512},ms={READONLY:1,REQUIRED:2,MULTILINE:4096,PASSWORD:8192,RADIO:32768,PUSHBUTTON:65536,COMBO:131072,FILESELECT:1048576,MULTISELECT:2097152,DONOTSCROLL:8388608,COMB:16777216},Ja={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},Pc={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"},Nu={WC:"WillClose",WS:"WillSave",DS:"DidSave",WP:"WillPrint",DP:"DidPrint"},Ou={O:"PageOpen",C:"PageClose"},hr={WARNINGS:1,INFOS:5},C={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93,rawFillPath:94},At={moveTo:0,lineTo:1,curveTo:2,quadraticCurveTo:3,closePath:4},f0={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let P0=hr.WARNINGS;function Lu(t){Number.isInteger(t)&&(P0=t)}function zu(){return P0}function ut(t){P0>=hr.INFOS&&console.info(`Info: ${t}`)}function H(t){P0>=hr.WARNINGS&&console.warn(`Warning: ${t}`)}function st(t){throw new Error(t)}function Ct(t,e){t||st(e)}function Uu(t){switch(t?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function x0(t,e=null,n=null){if(!t)return null;if(n&&typeof t=="string"&&(n.addDefaultProtocol&&t.startsWith("www.")&&t.match(/\./g)?.length>=2&&(t=`http://${t}`),n.tryConvertEncoding))try{t=bi(t)}catch{}const s=e?URL.parse(t,e):URL.parse(t);return Uu(s)?s:null}function Gu(t){return t.substring(t.lastIndexOf("/")+1)}function ue(t,e,n,s=!1){return Object.defineProperty(t,e,{value:n,enumerable:!s,configurable:!0,writable:!1}),n}const Bn=(function(){function e(n,s){this.message=n,this.name=s}return e.prototype=new Error,e.constructor=e,e})();class Os extends Bn{constructor(e,n){super(e,"PasswordException"),this.code=n}}class so extends Bn{constructor(e,n){super(e,"UnknownErrorException"),this.details=n}}class ur extends Bn{constructor(e){super(e,"InvalidPDFException")}}class ll extends Bn{constructor(e,n,s){super(e,"ResponseException"),this.status=n,this.missing=s}}class Y extends Bn{constructor(e){super(e,"FormatError")}}class fn extends Bn{constructor(e){super(e,"AbortException")}}function An(t){(typeof t!="object"||t?.length===void 0)&&st("Invalid argument for bytesToString");const e=t.length,n=8192;if(en.toString(16).padStart(2,"0")))}static makeHexColor(e,n,s){return`#${this.hexNums[e]}${this.hexNums[n]}${this.hexNums[s]}`}static transform(e,n){return[e[0]*n[0]+e[2]*n[1],e[1]*n[0]+e[3]*n[1],e[0]*n[2]+e[2]*n[3],e[1]*n[2]+e[3]*n[3],e[0]*n[4]+e[2]*n[5]+e[4],e[1]*n[4]+e[3]*n[5]+e[5]]}static multiplyByDOMMatrix(e,n){return[e[0]*n.a+e[2]*n.b,e[1]*n.a+e[3]*n.b,e[0]*n.c+e[2]*n.d,e[1]*n.c+e[3]*n.d,e[0]*n.e+e[2]*n.f+e[4],e[1]*n.e+e[3]*n.f+e[5]]}static applyTransform(e,n,s=0){const a=e[s],i=e[s+1];e[s]=a*n[0]+i*n[2]+n[4],e[s+1]=a*n[1]+i*n[3]+n[5]}static applyTransformToBezier(e,n,s=0){const a=n[0],i=n[1],r=n[2],o=n[3],f=n[4],l=n[5];for(let c=0;c<6;c+=2){const h=e[s+c],u=e[s+c+1];e[s+c]=h*a+u*r+f,e[s+c+1]=h*i+u*o+l}}static applyInverseTransform(e,n){const s=e[0],a=e[1],i=n[0]*n[3]-n[1]*n[2];e[0]=(s*n[3]-a*n[2]+n[2]*n[5]-n[4]*n[3])/i,e[1]=(-s*n[1]+a*n[0]+n[4]*n[1]-n[5]*n[0])/i}static axialAlignedBoundingBox(e,n,s){const a=n[0],i=n[1],r=n[2],o=n[3],f=n[4],l=n[5],c=e[0],h=e[1],u=e[2],d=e[3];let p=a*c+f,m=p,b=a*u+f,w=b,x=o*h+l,j=x,k=o*d+l,y=k;if(i!==0||r!==0){const q=i*c,v=i*u,A=r*h,S=r*d;p+=A,w+=A,b+=S,m+=S,x+=q,y+=q,k+=v,j+=v}s[0]=Math.min(s[0],p,b,m,w),s[1]=Math.min(s[1],x,k,j,y),s[2]=Math.max(s[2],p,b,m,w),s[3]=Math.max(s[3],x,k,j,y)}static inverseTransform(e){const n=e[0]*e[3]-e[1]*e[2];return[e[3]/n,-e[1]/n,-e[2]/n,e[0]/n,(e[2]*e[5]-e[4]*e[3])/n,(e[4]*e[1]-e[5]*e[0])/n]}static singularValueDecompose2dScale(e,n){const s=e[0],a=e[1],i=e[2],r=e[3],o=s**2+a**2,f=s*i+a*r,l=i**2+r**2,c=(o+l)/2,h=Math.sqrt(c**2-(o*l-f**2));n[0]=Math.sqrt(c+h||1),n[1]=Math.sqrt(c-h||1)}static normalizeRect(e){const n=e.slice(0);return e[0]>e[2]&&(n[0]=e[2],n[2]=e[0]),e[1]>e[3]&&(n[1]=e[3],n[3]=e[1]),n}static intersect(e,n){const s=Math.max(Math.min(e[0],e[2]),Math.min(n[0],n[2])),a=Math.min(Math.max(e[0],e[2]),Math.max(n[0],n[2]));if(s>a)return null;const i=Math.max(Math.min(e[1],e[3]),Math.min(n[1],n[3])),r=Math.min(Math.max(e[1],e[3]),Math.max(n[1],n[3]));return i>r?null:[s,i,a,r]}static pointBoundingBox(e,n,s){s[0]=Math.min(s[0],e),s[1]=Math.min(s[1],n),s[2]=Math.max(s[2],e),s[3]=Math.max(s[3],n)}static rectBoundingBox(e,n,s,a,i){i[0]=Math.min(i[0],e,s),i[1]=Math.min(i[1],n,a),i[2]=Math.max(i[2],e,s),i[3]=Math.max(i[3],n,a)}static#e(e,n,s,a,i,r,o,f,l,c){if(l<=0||l>=1)return;const h=1-l,u=l*l,d=u*l,p=h*(h*(h*e+3*l*n)+3*u*s)+d*a,m=h*(h*(h*i+3*l*r)+3*u*o)+d*f;c[0]=Math.min(c[0],p),c[1]=Math.min(c[1],m),c[2]=Math.max(c[2],p),c[3]=Math.max(c[3],m)}static#t(e,n,s,a,i,r,o,f,l,c,h,u){if(Math.abs(l)<1e-12){Math.abs(c)>=1e-12&&this.#e(e,n,s,a,i,r,o,f,-h/c,u);return}const d=c**2-4*h*l;if(d<0)return;const p=Math.sqrt(d),m=2*l;this.#e(e,n,s,a,i,r,o,f,(-c+p)/m,u),this.#e(e,n,s,a,i,r,o,f,(-c-p)/m,u)}static bezierBoundingBox(e,n,s,a,i,r,o,f,l){l[0]=Math.min(l[0],e,o),l[1]=Math.min(l[1],n,f),l[2]=Math.max(l[2],e,o),l[3]=Math.max(l[3],n,f),this.#t(e,s,i,o,n,a,r,f,3*(-e+3*(s-i)+o),6*(e-2*s+i),3*(s-e),l),this.#t(e,s,i,o,n,a,r,f,3*(-n+3*(a-r)+f),6*(n-2*a+r),3*(a-n),l)}}function bi(t){return decodeURIComponent(escape(t))}function Po(t){return unescape(encodeURIComponent(t))}function za(t,e){if(t.length!==e.length)return!1;for(let n=0,s=t.length;nn?n.normalize("NFKC"):cl.get(s))}function Ku(t,e,n){if(!Array.isArray(n)||n.length<2)return!1;const[s,a,...i]=n;if(!t(s)&&!Number.isInteger(s)||!e(a))return!1;const r=i.length;let o=!0;switch(a.name){case"XYZ":if(r<2||r>3)return!1;break;case"Fit":case"FitB":return r===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(r>1)return!1;break;case"FitR":if(r!==4)return!1;o=!1;break;default:return!1}for(const f of i)if(!(typeof f=="number"||o&&f===null))return!1;return!0}const ha=()=>[],Vu=()=>new Map,$u=()=>Object.create(null),Nc=()=>new Set;typeof Iterator.prototype.join!="function"&&(Iterator.prototype.join=function(t){return[...this].join(t)});const Xu=Symbol("CIRCULAR_REF"),ln=Symbol("EOF");let Oc=Object.create(null),Lc=Object.create(null),l0=Object.create(null);function Yu(){Oc=Object.create(null),Lc=Object.create(null),l0=Object.create(null)}class J{constructor(e){this.name=e}static get(e){return Lc[e]||=new J(e)}}class Ut{constructor(e){this.cmd=e}static get(e){return Oc[e]||=new Ut(e)}}const zc=()=>zc;class B{__nonSerializable__=zc;#e=new Map;objId=null;suppressEncryption=!1;xref;constructor(e=null){this.xref=e}assignXref(e){this.xref=e}get size(){return this.#e.size}#t(e,n,s){let a=this.#e.get(n);return a===void 0&&s!==void 0&&(a=this.#e.get(s)),a instanceof Q&&this.xref?e?this.xref.fetchAsync(a,this.suppressEncryption):this.xref.fetch(a,this.suppressEncryption):a}get(e,n){return this.#t(!1,e,n)}async getAsync(e,n){return this.#t(!0,e,n)}getArray(e,n){let s=this.#t(!1,e,n);if(Array.isArray(s)){s=s.slice();for(let a=0,i=s.length;a{st("Should not call `set` on the empty dictionary.")},ue(this,"empty",e)}static merge({xref:e,dictArray:n,mergeSubDicts:s=!1}){const a=new B(e),i=new Map;for(const r of n)if(r instanceof B)for(const[o,f]of r.getRawEntries()){const l=i.getOrInsertComputed(o,ha);l.length&&!(s&&f instanceof B)||l.push(f)}for(const[r,o]of i){if(o.length===1||!(o[0]instanceof B)){a.set(r,o[0]);continue}const f=new B(e);for(const l of o)for(const[c,h]of l.getRawEntries())f.setIfNotExists(c,h);f.size>0&&a.set(r,f)}return i.clear(),a.size>0?a:B.empty}clone(){const e=new B(this.xref);for(const[n,s]of this.#e)e.set(n,s);return e}delete(e){this.#e.delete(e)}}class Q{#e;constructor(e,n,s){this.#e=e,this.num=n,this.gen=s}toString(){return this.#e}static fromString(e){const n=l0[e];if(n)return n;const s=/^(\d+)R(\d*)$/.exec(e);if(!s||s[1]==="0")return null;const a=parseInt(s[1],10),i=s[2]?parseInt(s[2],10):0;return l0[e]=new Q(e,a,i)}static get(e,n){const s=n===0?`${e}R`:`${e}R${n}`;return l0[s]||=new Q(s,e,n)}}class bt{#e=new Set;constructor(e=null){if(e)for(const n of e)this.#e.add(n)}has(e){return this.#e.has(e.toString())}put(e){this.#e.add(e.toString())}remove(e){this.#e.delete(e.toString())}[Symbol.iterator](){return this.#e.keys()}clear(){this.#e.clear()}}class $t{#e=new Map;get size(){return this.#e.size}get(e){return this.#e.get(e.toString())}has(e){return this.#e.has(e.toString())}put(e,n){this.#e.set(e.toString(),n)}putAlias(e,n){this.#e.set(e.toString(),this.get(n))}getOrPutComputed(e,n){const s=this.#e,a=e.toString();return s.has(a)||s.set(a,n(e)),s.get(a)}[Symbol.iterator](){return this.#e.values()}clear(){this.#e.clear()}*values(){yield*this.#e.values()}*items(){for(const[e,n]of this.#e)yield[Q.fromString(e),n]}*keys(){for(const e of this.#e.keys())yield Q.fromString(e)}}function ze(t,e){return t instanceof J&&(e===void 0||t.name===e)}function Qt(t,e){return t instanceof Ut&&(e===void 0||t.cmd===e)}function wi(t,e){return t instanceof B&&(e===void 0||ze(t.get("Type"),e))}function xi(t,e){return t.num===e.num&&t.gen===e.gen}class Pe{get length(){st("Abstract getter `length` accessed")}get isEmpty(){st("Abstract getter `isEmpty` accessed")}get isDataLoaded(){return ue(this,"isDataLoaded",!0)}getByte(){st("Abstract method `getByte` called")}getBytes(e){st("Abstract method `getBytes` called")}async getImageData(e,n){return this.getBytes(e,n)}async asyncGetBytes(){st("Abstract method `asyncGetBytes` called")}get isAsync(){return!1}get isAsyncDecoder(){return!1}get isImageStream(){return!1}get canAsyncDecodeImageFromBuffer(){return!1}async getTransferableImage(e,n){return null}peekByte(){const e=this.getByte();return e!==-1&&this.pos--,e}peekBytes(e){const n=this.getBytes(e);return this.pos-=n.length,n}getUint16(){const e=this.getByte(),n=this.getByte();return e===-1||n===-1?-1:(e<<8)+n}getInt32(){const e=this.getByte(),n=this.getByte(),s=this.getByte(),a=this.getByte();return(e<<24)+(n<<16)+(s<<8)+a}getByteRange(e,n){st("Abstract method `getByteRange` called")}getString(e){return An(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){st("Abstract method `reset` called")}moveStart(){st("Abstract method `moveStart` called")}makeSubStream(e,n,s=null){st("Abstract method `makeSubStream` called")}clone(){st("Abstract method `clone` called")}getBaseStreams(){return null}getOriginalStream(){return this.stream?.getOriginalStream()||this}}const No=new RegExp("\\p{Cc}","u");function Ju(t){const e=t[0];if(t.length<2||e!=='"'&&e!=="'"||t.at(-1)!==e)return!1;const n=t.length-1;for(let s=1;s=n||No.test(t[s])))return!1}return!0}function hl(t){return Ju(t)?t:`"${t.replaceAll(/["\\\p{Cc}]/gu,n=>n==='"'||n==="\\"?`\\${n}`:`\\${n.codePointAt(0).toString(16)} `)}"`}function Qu(t){return typeof t=="string"&&(!t||/^[\x00-\x7F]*$/.test(t))}function Zt(t){return t==null||Qu(t)?t:Uc(t,!0)}function Zu(t){const e=[];for(let n=0,s=t.length;n>8&255],ft.hexNums[a&255])}return e.join("")}function Uc(t,e=!1){const n=[];e&&n.push("þÿ");for(let s=0,a=t.length;s>8&255),String.fromCharCode(i&255))}return n.join("")}const e1=[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],t1=Object.create(null);function Xe(t,e=!1){if(t[0]>="ï"){let s;if(t[0]==="þ"&&t[1]==="ÿ"?(s="utf-16be",t.length%2===1&&(t=t.slice(0,-1))):t[0]==="ÿ"&&t[1]==="þ"?(s="utf-16le",t.length%2===1&&(t=t.slice(0,-1))):t[0]==="ï"&&t[1]==="»"&&t[2]==="¿"&&(s="utf-8"),s)try{const a=t1[s]??=new TextDecoder(s,{fatal:!0}),i=Bt(t),r=a.decode(i);return e||!r.includes("\x1B")?r:r.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g,"")}catch(a){H(`stringToPDFString: "${a}".`)}}const n=[];for(let s=0,a=t.length;s0,"The number should be a positive integer.");const n="M".repeat(t/1e3|0)+io[t%1e3/100|0]+io[10+(t%100/10|0)]+io[20+t%10];return e?n.toLowerCase():n}function es(t){return t===32||t===9||t===13||t===10}function a1(t,e){return Array.isArray(t)&&t.length===e&&t.every(n=>typeof n=="boolean")}function Rt(t,e){return Array.isArray(t)?(e===null||t.length===e)&&t.every(n=>typeof n=="number"):ArrayBuffer.isView(t)&&!(t instanceof BigInt64Array||t instanceof BigUint64Array)&&(e===null||t.length===e)}function Ps(t,e){return Rt(t,6)?t:e}function dr(t,e){return Rt(t,4)?t:e}function Cs(t,e){return Rt(t,4)?ft.normalizeRect(t):e}function Kc(t){const e=/^(.+)\[(\d+)\]$/;return t.split(".").map(n=>{const s=n.match(e);return s?{name:s[1],pos:parseInt(s[2],10)}:{name:n,pos:0}})}function jf(t){const e=[];let n=0;for(let s=0,a=t.length;s126||i===35||i===40||i===41||i===60||i===62||i===91||i===93||i===123||i===125||i===47||i===37)&&(ne===` +`?"\\n":e==="\r"?"\\r":`\\${e}`)}function j0(t,e,n,s){if(!t)return;let a=null;if(t instanceof Q){if(s.has(t))return;a=t,s.put(a),t=e.fetch(t)}if(Array.isArray(t))for(const i of t)j0(i,e,n,s);else if(t instanceof B){if(ze(t.get("S"),"JavaScript")){const i=t.get("JS");let r;i instanceof Pe?r=i.getString():typeof i=="string"&&(r=i),r&&=Xe(r,!0).replaceAll("\0",""),r&&n.push(r.trim())}j0(t.getRaw("Next"),e,n,s)}a&&s.remove(a)}function N0(t,e,n){const s=new Map,a=rn({dict:e,key:"AA",stopWhenFound:!1});if(a)for(let i=a.length-1;i>=0;i--){const r=a[i];if(r instanceof B)for(const[o,f]of r.getRawEntries()){const l=n[o];if(!l)continue;const c=new bt,h=[];j0(f,t,h,c),h.length>0&&s.set(l,h)}}if(e.has("A")){const i=e.get("A"),r=new bt,o=[];j0(i,t,o,r),o.length>0&&s.set("Action",o)}return s.size?s:null}const i1={60:"<",62:">",38:"&",34:""",39:"'"};function*r1(t){for(let e=0,n=t.length;e55295&&(s<57344||s>65533)&&e++,yield s}}function mi(t){const e=[];let n=0;for(let s=0,a=t.length;s65535&&s++,n=s+1}return e.length===0?t:(n: ${t}.`),!1;return!0}function o1(t){return t.replaceAll(/( +)(\d)?/g,(e,n,s)=>s??" ")}function f1(t){const s=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:a,fontWeight:i,italicAngle:r}=t;if(!Wo(a,!0))return!1;const o=i?i.toString():"";t.fontWeight=s.has(o)?o:"400";const f=parseFloat(r);return t.italicAngle=isNaN(f)||f<-90||f>90?"14":r.toString(),!0}function Vc(t){const e=["app.launchURL","window.open","xfa.host.gotoURL"],s=new RegExp("^\\s*("+e.join("|").replaceAll(".","\\.")+`)\\((?:'|")([^'"]*)(?:'|")(?:,\\s*(\\w+)\\)|\\))`,"i").exec(t);return s?.[2]?{url:s[2],newWindow:s[1]==="app.launchURL"&&s[3]==="true"}:null}function jt(t){if(Number.isInteger(t))return t.toString();const e=Math.round(t*100);return e%100===0?(e/100).toString():e%10===0?t.toFixed(1):t.toFixed(2)}function kf(t){if(!t)return null;const e=new Map;for(const[n,s]of t)n.startsWith(Mc)&&e.getOrInsertComputed(s.pageIndex,ha).push(s);return e.size>0?e:null}function ua(t=new Date){return t instanceof Date||(t=new Date(t)),[t.getUTCFullYear().toString(),(t.getUTCMonth()+1).toString().padStart(2,"0"),t.getUTCDate().toString().padStart(2,"0"),t.getUTCHours().toString().padStart(2,"0"),t.getUTCMinutes().toString().padStart(2,"0"),t.getUTCSeconds().toString().padStart(2,"0")].join("")}function k0(t,e,n){switch(t){case 90:return[0,1,-1,0,e,0];case 180:return[-1,0,0,-1,e,n];case 270:return[0,-1,1,0,0,n];default:throw new Error("Invalid rotation")}}function dl(t){return Math.ceil(Math.ceil(Math.log2(1+t))/8)}const $c=new Uint8Array(new Uint32Array([1]).buffer)[0]===1?4278190080:255,l1=~$c;class is{static#e=null;static _memory=null;static _destBuffer=null;static _destOffset=0;static _keepAlpha=!1;static get _memoryArray(){const e=this.#e;return e?.byteLength?e:this.#e=new Uint8Array(this._memory.buffer)}}function c1(t,e){const{_destBuffer:n,_destOffset:s,_keepAlpha:a,_memoryArray:i}=is;if(!a){n.set(i.subarray(t,t+e),s);return}const r=e>>2,o=n.byteOffset+s;if(((o|t)&3)===0){const f=new Uint32Array(n.buffer,o,r),l=new Uint32Array(is._memory.buffer,t,r);for(let c=0;c>>0}function d1(t,e){return In.qcms_convert_one(t,e)>>>0}function m1(t,e,n,s){return In.qcms_convert_three(t,e,n,s)>>>0}function p1(t){In.qcms_drop_transformer(t)}function g1(t,e,n){const s=Yc(t,In.__wbindgen_malloc),a=yf;return In.qcms_transformer_from_memory(s,a,e,n)>>>0}function b1(){return{__proto__:null,"./qcms_bg.js":{__proto__:null,__wbg___wbindgen_throw_344f42d3211c4765:function(e,n){throw new Error(w1(e,n))},__wbg_copy_result_0d15f3bf9d9012ae:function(e,n){c1(e>>>0,n>>>0)},__wbindgen_init_externref_table:function(){const e=In.__wbindgen_externrefs,n=e.grow(4);e.set(0,void 0),e.set(n+0,void 0),e.set(n+1,null),e.set(n+2,!0),e.set(n+3,!1)}}}}function w1(t,e){return j1(t>>>0,e)}let Ji=null;function Xc(){return(Ji===null||Ji.byteLength===0)&&(Ji=new Uint8Array(In.memory.buffer)),Ji}function Yc(t,e){const n=e(t.length*1,1)>>>0;return Xc().set(t,n/1),yf=t.length,n}let c0=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});c0.decode();const x1=2146435072;let oo=0;function j1(t,e){return oo+=e,oo>=x1&&(c0=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),c0.decode(),oo=e),c0.decode(Xc().subarray(t,t+e))}let yf=0,In;function k1(t,e){return In=t.exports,Ji=null,In.__wbindgen_start(),In}function y1(t){if(In!==void 0)return In;t!==void 0&&(Object.getPrototypeOf(t)===Object.prototype?{module:t}=t:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const e=b1();t instanceof WebAssembly.Module||(t=new WebAssembly.Module(t));const n=new WebAssembly.Instance(t,e);return k1(n)}function Tt(t,e,n){return Math.min(Math.max(t,e),n)}function q1(t,e,n,s,a,i,r){r=r!==1?0:r;const f=n/a,l=s/i;let c=0,h;const u=new Uint16Array(a),d=n*3;for(let p=0;pe&&(ut("Truncating too long decode map."),t.length=e),!1)}class on{static#e=new Uint8ClampedArray(3);constructor(e,n){this.name=e,this.numComps=n}getRgb(e,n,s=new Uint8ClampedArray(3)){return this.getRgbItem(e,n,s,0),s}getRgbHex(e,n){const s=this.getRgb(e,n,on.#e);return ft.makeHexColor(s[0],s[1],s[2])}getRgbItem(e,n,s,a){st("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,n,s,a,i,r,o){st("Should not call ColorSpace.getRgbBuffer")}getRgbItems(e,n,s,a,i){const{numComps:r}=this;for(let o=0,f=0;ou&&this.name!=="DeviceGray"&&this.name!=="DeviceRGB"){const p=o<=8?new Uint8Array(u):new Uint16Array(u);for(let b=0;b=.99554525?1:Tt((1+.055)*e**(1/2.4)-.055,0,1)}#h(e){return e<0?-this.#h(-e):e>8?((e+16)/116)**3:e*pn.#f}#d(e,n,s){if(e[0]===0&&e[1]===0&&e[2]===0){s[0]=n[0],s[1]=n[1],s[2]=n[2];return}const a=this.#h(0),i=a,r=this.#h(e[0]),o=a,f=this.#h(e[1]),l=a,c=this.#h(e[2]),h=(1-i)/(1-r),u=1-h,d=(1-o)/(1-f),p=1-d,m=(1-l)/(1-c),b=1-m;s[0]=n[0]*h+u,s[1]=n[1]*d+p,s[2]=n[2]*m+b}#m(e,n,s){if(e[0]===1&&e[2]===1){s[0]=n[0],s[1]=n[1],s[2]=n[2];return}const a=s;this.#o(pn.#e,n,a);const i=pn.#n;this.#l(e,a,i),this.#o(pn.#t,i,s)}#p(e,n,s){const a=s;this.#o(pn.#e,n,a);const i=pn.#n;this.#u(e,a,i),this.#o(pn.#t,i,s)}#b(e,n,s,a,i){const r=Tt(e[n]*i,0,1),o=Tt(e[n+1]*i,0,1),f=Tt(e[n+2]*i,0,1),l=r===1?1:r**this.GR,c=o===1?1:o**this.GG,h=f===1?1:f**this.GB,u=this.MXA*l+this.MXB*c+this.MXC*h,d=this.MYA*l+this.MYB*c+this.MYC*h,p=this.MZA*l+this.MZB*c+this.MZC*h,m=pn.#i;m[0]=u,m[1]=d,m[2]=p;const b=pn.#r;this.#m(this.whitePoint,m,b);const w=pn.#i;this.#d(this.blackPoint,b,w);const x=pn.#r;this.#p(pn.#a,w,x);const j=pn.#i;this.#o(pn.#s,x,j),s[a]=this.#c(j[0])*255,s[a+1]=this.#c(j[1])*255,s[a+2]=this.#c(j[2])*255}getRgbItem(e,n,s,a){this.#b(e,n,s,a,1)}getRgbBuffer(e,n,s,a,i,r,o){const f=1/((1<this.amax||this.bmin>this.bmax)&&(ut("Invalid Range, falling back to defaults"),this.amin=-100,this.amax=100,this.bmin=-100,this.bmax=100)}#e(e){return e>=6/29?e**3:108/841*(e-4/29)}#t(e,n,s,a){return s+e*(a-s)/n}#s(e,n,s,a,i){let r=e[n],o=e[n+1],f=e[n+2];s!==!1&&(r=this.#t(r,s,0,100),o=this.#t(o,s,this.amin,this.amax),f=this.#t(f,s,this.bmin,this.bmax)),o>this.amax?o=this.amax:othis.bmax?f=this.bmax:fd1(this.#e,i[r]*255);break;case 3:a=ro.RGB8,this.#t=(i,r)=>m1(this.#e,i[r]*255,i[r+1]*255,i[r+2]*255);break;case 4:a=ro.CMYK,this.#t=(i,r)=>u1(this.#e,i[r]*255,i[r+1]*255,i[r+2]*255,i[r+3]*255);break;default:throw new Error(`Unsupported number of components: ${s}`)}if(this.#e=g1(e,a,h1.Perceptual),!this.#e)throw new Error("Failed to create ICC color space");Ls.#n||=new FinalizationRegistry(i=>{p1(i)}),Ls.#n.register(this,this.#e)}getRgbHex(e,n){const s=this.#t(e,n);return ft.makeHexColor(s>>16,s>>8&255,s&255)}getRgbItem(e,n,s,a){const i=this.#t(e,n);s[a]=i>>16,s[a+1]=i>>8&255,s[a+2]=i&255}getRgbItems(e,n,s,a,i){const{numComps:r}=this,o=n*r,f=new Uint8Array(o);for(let l=0;l=this.end?-1:this.bytes[this.pos++]}getBytes(e){const n=this.pos,s=e?Math.min(n+e,this.end):this.end;return this.pos=s,this.bytes.subarray(n,s)}getByteRange(e,n){return e<0&&(e=0),n>this.end&&(n=this.end),this.bytes.subarray(e,n)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,n,s=null){return new yt(this.bytes.buffer,e,n,s)}clone(){return new yt(this.bytes.buffer,this.start,this.length,this.dict?.clone())}}class hn extends yt{constructor(e,n=null){super(Bt(e),NaN,NaN,n)}}class Ko extends yt{constructor(){super(new Uint8Array(0))}}class H1 extends yt{progressiveDataLength=0;_lastSuccessfulEnsureByteChunk=-1;_loadedChunks=new Set;constructor(e,n,s){super(new Uint8Array(e),0,e,null),this.chunkSize=n,this.numChunks=Math.ceil(e/n),this.manager=s}getMissingChunks(){const e=[];for(let n=0,s=this.numChunks;n=this.end?this.numChunks:Math.floor(n/this.chunkSize);for(let i=s;ithis.numChunks)&&n!==this._lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(n))throw new kt(e,e+1);this._lastSuccessfulEnsureByteChunk=n}}ensureRange(e,n){if(e>=n||n<=this.progressiveDataLength)return;const s=Math.floor(e/this.chunkSize);if(s>this.numChunks)return;const a=Math.min(Math.floor((n-1)/this.chunkSize)+1,this.numChunks);for(let i=s;i=this.end?-1:(e>=this.progressiveDataLength&&this.ensureByte(e),this.bytes[this.pos++])}getBytes(e){const n=this.pos,s=e?Math.min(n+e,this.end):this.end;return s>this.progressiveDataLength&&this.ensureRange(n,s),this.pos=s,this.bytes.subarray(n,s)}getByteRange(e,n){return e<0&&(e=0),n>this.end&&(n=this.end),n>this.progressiveDataLength&&this.ensureRange(e,n),this.bytes.subarray(e,n)}makeSubStream(e,n,s=null){n?e+n>this.progressiveDataLength&&this.ensureRange(e,e+n):e>=this.progressiveDataLength&&this.ensureByte(e);function a(){}a.prototype=Object.create(this),a.prototype.getMissingChunks=function(){const r=this.chunkSize,o=Math.floor(this.start/r),f=Math.floor((this.end-1)/r)+1,l=[];for(let c=o;c(i.push(r),[])).push(n);if(i.length>0){const r=this.groupChunks(i);for(const o of r){const f=o.beginChunk*this.chunkSize,l=Math.min(o.endChunk*this.chunkSize,this.length);this.sendRequest(f,l).catch(a.reject)}}return a.promise.catch(r=>{if(!this.#e)throw r})}getStream(){return this.stream}requestRange(e,n){n=Math.min(n,this.length);const s=this.getBeginChunk(e),a=this.getEndChunk(n),i=[];for(let r=s;rs-a),this._requestChunks(n)}groupChunks(e){const n=[];let s=-1,a=-1;for(let i=0,r=e.length;i=0&&a+1!==o&&(n.push({beginChunk:s,endChunk:a+1}),s=o),i+1===e.length&&n.push({beginChunk:s,endChunk:o+1}),a=o}return n}onReceiveData(e){const{chunkSize:n,length:s,stream:a}=this,i=e.chunk,r=e.begin===void 0,o=r?a.progressiveDataLength:e.begin,f=o+i.byteLength,l=Math.floor(o/n),c=f0)&&h.push(p)}}}if(!this.disableAutoFetch&&this._requestsByChunk.size===0){let u;if(a.numChunksLoaded===1){const d=a.numChunks-1;a.hasChunk(d)||(u=d)}else u=a.nextEmptyChunk(c);Number.isInteger(u)&&this._requestChunks([u])}for(const u of h){const d=this._promisesByRequest.get(u);this._promisesByRequest.delete(u),d.resolve()}this.msgHandler.send("DocProgress",{loaded:Tt(a.numChunksLoaded*n,a.progressiveDataLength,s),total:s})}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.#e=!0,this.pdfStream?.cancelAllRequests(e);for(const n of this._promisesByRequest.values())n.reject(e);this.#t.reject(e)}}function eh(t){switch(t.kind){case sn.GRAYSCALE_1BPP:return Vo(t);case sn.RGB_24BPP:return M1(t)}return null}function Vo({src:t,srcPos:e=0,dest:n,width:s,height:a,nonBlackColor:i=4294967295,inverseDecode:r=!1}){const o=Tn.isLittleEndian?4278190080:255,[f,l]=r?[i,o]:[o,i],c=s>>3,h=s&7,u=f^l,d=t.length;n=new Uint32Array(n.buffer);let p=0;for(let m=0;m>7&1)&u,n[p+1]=f^-(x>>6&1)&u,n[p+2]=f^-(x>>5&1)&u,n[p+3]=f^-(x>>4&1)&u,n[p+4]=f^-(x>>3&1)&u,n[p+5]=f^-(x>>2&1)&u,n[p+6]=f^-(x>>1&1)&u,n[p+7]=f^-(x&1)&u}if(h===0)continue;const b=e>7-w&1)&u}return{srcPos:e,destPos:p}}function M1({src:t,srcPos:e=0,dest:n,destPos:s=0,width:a,height:i}){let r=0;const o=a*i*3,f=o>>2,l=new Uint32Array(t.buffer,e,f),c=Tn.isLittleEndian?4278190080:255;if(Tn.isLittleEndian){for(;r>>24|u<<8|c,n[s+2]=u>>>16|d<<16|c,n[s+3]=d>>>8|c}for(let h=r*4,u=e+o;h>>8|c,n[s+2]=u<<16|d>>>16|c,n[s+3]=d<<8|c}for(let h=r*4,u=e+o;hs||n>s)return!0;const a=e*n;if(this._hasMaxArea)return a>this.MAX_AREA;if(ai}static getReducePower(e,n,s=1/0){if(!Number.isInteger(e)||e<=0||!Number.isInteger(n)||n<=0)return 0;const a=e*n;if(!this.needsToBeResized(e,n))return a>s?Math.ceil(Math.log2(a/s)):0;const{MAX_DIM:i,MAX_AREA:r}=this,o=Math.max(e/i,n/i,Math.sqrt(a/Math.min(s,r)));return Math.max(0,Math.ceil(Math.log2(o)))}static getReducePowerForJPX(e,n,s){return this.getReducePower(e,n,2**30/(s*4))}static get MAX_DIM(){return ue(this,"MAX_DIM",this._guessMax(gl,_1,0,1))}static get MAX_AREA(){return this._hasMaxArea=!0,ue(this,"MAX_AREA",this._guessMax(this.#e,this.MAX_DIM,bl,0)**2)}static set MAX_AREA(e){e>=0&&(this._hasMaxArea=!0,ue(this,"MAX_AREA",e))}static setOptions({canvasMaxAreaInBytes:e=-1,isImageDecoderSupported:n=!1}){this._hasMaxArea||(this.MAX_AREA=e>>2),this.#t=n}static _areGoodDims(e,n){try{const s=new OffscreenCanvas(e,n),a=s.getContext("2d");a.fillRect(0,0,1,1);const i=a.getImageData(0,0,1,1).data[3];return s.width=s.height=1,i!==0}catch{return!1}}static _guessMax(e,n,s,a){for(;e+s+1ul){const x=this.#s();if(x)return x}const a=this._encodeBMP();let i,r;await vn.canUseImageDecoder?(i=new ImageDecoder({data:a,type:"image/bmp",preferAnimation:!1,transfer:[a.buffer]}),r=i.decode().catch(x=>(H(`BMP image decoding failed: ${x}`),createImageBitmap(new Blob([this._encodeBMP().buffer],{type:"image/bmp"})))).finally(()=>{i.close()})):r=createImageBitmap(new Blob([a.buffer],{type:"image/bmp"}));const{MAX_AREA:o,MAX_DIM:f}=vn,l=Math.max(n/f,s/f,Math.sqrt(n*s/o)),c=Math.max(l,2),h=Math.round(10*(l+1.25))/10/c,u=Math.floor(Math.log2(h)),d=new Array(u+2).fill(2);d[0]=c,d.splice(-1,1,h/(1<>o,l=a>>o;let c,h=a;try{c=new Uint8Array(r)}catch{let k=Math.floor(Math.log2(r+1));for(;;)try{c=new Uint8Array(2**k-1);break}catch{k-=1}h=Math.floor((2**k-1)/(s*4));const y=s*h*4;y>o;q>3,b=m+3&-4;if(m!==b){const w=new Uint8Array(b*n);let x=0;for(let j=0,k=n*m;ji&&(a=i)}else{for(;!this.eof;)this.readBlock(n);a=this.bufferLength}return this.pos=a,this.buffer.subarray(s,a)}async getImageData(e,n){if(!this.canAsyncDecodeImageFromBuffer)return this.isAsyncDecoder?this.decodeImage(null,e,n):this.getBytes(e,n);const s=await this.stream.asyncGetBytes();return this.decodeImage(s,e,n)}async asyncGetBytesFromDecompressionStream(e){this.stream.reset();const n=this.stream.isAsync?await this.stream.asyncGetBytes():this.stream.getBytes();try{const{readable:s,writable:a}=new DecompressionStream(e),i=a.getWriter();await i.ready,i.write(n).then(async()=>{await i.ready,await i.close()}).catch(()=>{});const r=[];let o=0;for await(const c of s)r.push(c),o+=c.byteLength;const f=new Uint8Array(o);let l=0;for(const c of r)f.set(c,l),l+=c.byteLength;return{decompressed:f,compressed:n}}catch{return{decompressed:null,compressed:n}}}reset(){this.pos=0}makeSubStream(e,n,s=null){if(n===void 0)for(;!this.eof;)this.readBlock();else{const a=e+n;for(;this.bufferLength<=a&&!this.eof;)this.readBlock()}return new yt(this.buffer,e,n,s)}clone(){for(;!this.eof;)this.readBlock();return new yt(this.buffer,0,this.bufferLength,this.dict?.clone())}getBaseStreams(){return this.stream?this.stream.getBaseStreams():null}}class N1 extends jn{constructor(e,n=null){e=e.filter(a=>a instanceof Pe&&!a.isImageStream);let s=0;for(const a of e)s+=a instanceof jn?a._rawMinBufferLength:a.length;super(s),this.streams=e,this._onError=n}readBlock(){const e=this.streams;if(e.length===0){this.eof=!0;return}const n=e.shift();let s;try{s=n.getBytes()}catch(o){if(this._onError){this._onError(o,n.dict?.objId);return}throw o}const a=this.bufferLength,i=a+s.length;this.ensureBuffer(i).set(s,a),this.bufferLength=i}getBaseStreams(){const e=[];for(const n of this.streams){const s=n.getBaseStreams();s&&e.push(...s)}return e.length>0?e:null}}class ht{static parse({cs:e,xref:n,resources:s=null,pdfFunctionFactory:a,globalColorSpaceCache:i,localColorSpaceCache:r,asyncIfNotCached:o=!1}){const f={xref:n,resources:s,pdfFunctionFactory:a,globalColorSpaceCache:i,localColorSpaceCache:r};let l,c,h;if(e instanceof Q){c=e;const u=i.getByRef(c)||r.getByRef(c);if(u)return u;e=n.fetch(e)}if(e instanceof J){l=e.name;const u=r.getByName(l);if(u)return u}try{h=this.#t(e,f)}catch(u){if(o&&!(u instanceof kt))return Promise.reject(u);throw u}return(l||c)&&(r.set(l,c,h),c&&i.set(null,c,h)),o?Promise.resolve(h):h}static#e(e,n){const{globalColorSpaceCache:s}=n;let a;if(e instanceof Q){a=e;const r=s.getByRef(a);if(r)return r}const i=this.#t(e,n);return a&&s.set(null,a,i),i}static#t(e,n){const{xref:s,resources:a,pdfFunctionFactory:i,globalColorSpaceCache:r}=n;if(e=s.fetchIfRef(e),e instanceof J)switch(e.name){case"G":case"DeviceGray":return this.gray;case"RGB":case"DeviceRGB":return this.rgb;case"DeviceRGBA":return this.rgba;case"CMYK":case"DeviceCMYK":return this.cmyk;case"Pattern":return new pl(null);default:if(a instanceof B){const o=a.get("ColorSpace");if(o instanceof B){const f=o.get(e.name);if(f){if(f instanceof J)return this.#t(f,n);e=f;break}}}return H(`Unrecognized ColorSpace: ${e.name}`),this.gray}if(Array.isArray(e)){const o=s.fetchIfRef(e[0]).name;let f,l,c,h,u,d;switch(o){case"G":case"DeviceGray":return this.gray;case"RGB":case"DeviceRGB":return this.rgb;case"CMYK":case"DeviceCMYK":return this.cmyk;case"CalGray":return f=s.fetchIfRef(e[1]),h=f.getArray("WhitePoint"),u=f.getArray("BlackPoint"),d=f.get("Gamma"),new F1(h,u,d);case"CalRGB":f=s.fetchIfRef(e[1]),h=f.getArray("WhitePoint"),u=f.getArray("BlackPoint"),d=f.getArray("Gamma");const p=f.getArray("Matrix");return new pn(h,u,d,p);case"ICCBased":const m=e[1]instanceof Q;if(m){const A=r.getByRef(e[1]);if(A)return A}const b=s.fetchIfRef(e[1]),w=b.dict;if(l=w.get("N"),Ls.isUsable)try{const A=new Ls(b.getBytes(),"ICCBased",l);return m&&r.set(null,e[1],A),A}catch(A){if(A instanceof kt)throw A;H(`ICCBased color space (${e[1]}): "${A}".`)}const x=w.getRaw("Alternate");if(x){const A=this.#e(x,n);if(A.numComps===l)return A;H("ICCBased color space: Ignoring incorrect /Alternate entry.")}if(l===1)return this.gray;if(l===3)return this.rgb;if(l===4)return this.cmyk;break;case"Pattern":return c=e[1]||null,c&&=this.#e(c,n),new pl(c);case"I":case"Indexed":c=this.#e(e[1],n);const j=Tt(s.fetchIfRef(e[2]),0,255),k=s.fetchIfRef(e[3]);return new I1(c,j,k);case"Separation":case"DeviceN":const y=s.fetchIfRef(e[1]);l=Array.isArray(y)?y.length:1,c=this.#e(e[2],n);const q=i.create(e[3]);return new A1(l,c,q);case"Lab":f=s.fetchIfRef(e[1]),h=f.getArray("WhitePoint"),u=f.getArray("BlackPoint");const v=f.getArray("Range");return new R1(h,u,v);default:return H(`Unimplemented ColorSpace object: ${o}`),this.gray}}return H(`Unrecognized ColorSpace object: ${e}`),this.gray}static get gray(){return ue(this,"gray",new C1)}static get rgb(){return ue(this,"rgb",new T1)}static get rgba(){return ue(this,"rgba",new B1)}static get cmyk(){if(mr.isUsable)try{return ue(this,"cmyk",new mr)}catch{H("CMYK fallback: DeviceCMYK")}return ue(this,"cmyk",new Qc)}}class Xn extends Bn{constructor(e){super(e,"JpegError")}}class $o extends Bn{constructor(e,n){super(e,"DNLMarkerError"),this.scanLines=n}}class th extends Bn{constructor(e){super(e,"EOIMarkerError")}}const nr=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]),Pr=4017,Nr=799,Or=3406,Lr=2276,zr=1567,Ur=3784,Qa=5793,Gr=2896;function O1(t,e){let n=0,s,a,i=16;for(;i>0&&!t[i-1];)i--;const r=[{children:[],index:0}];let o=r[0],f;for(s=0;s0;)o=r.pop();for(o.index++,r.push(o);r.length<=s;)r.push(f={children:[],index:0}),o.children[o.index]=f.children,o=f;n++}s+10)return m--,p>>m&1;if(p=t[n++],p===255){const L=t[n++];if(L){if(L===220&&c){n+=2;const z=e.getUint16(n);if(n+=2,z>0&&z!==s.scanLines)throw new $o("Found DNL marker (0xFFDC) while parsing scan data",z)}else if(L===217){if(c){const z=N*(s.precision===8?8:0);if(z>0&&Math.round(s.scanLines/z)>=5)throw new $o("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",z)}throw new th("Found EOI marker (0xFFD9) while parsing scan data")}throw new Xn(`unexpected marker ${(p<<8|L).toString(16)}`)}}return m=7,p>>>7}function w(L){let z=L;for(;;){switch(z=z[b()],typeof z){case"number":return z;case"object":continue}throw new Xn("invalid huffman sequence")}}function x(L){let z=0;for(;L>0;)z=z<<1|b(),L--;return z}function j(L){if(L===1)return b()===1?1:-1;const z=x(L);return z>=1<>4;if(Fe===0){if(Ee<15)break;he+=16;continue}he+=Ee;const _e=nr[he];L.blockData[z+_e]=j(Fe),he++}}function y(L,z){const te=w(L.huffmanTableDC),je=te===0?0:j(te)<0){v--;return}let te=r;const je=o;for(;te<=je;){const he=w(L.huffmanTableAC),ie=he&15,Fe=he>>4;if(ie===0){if(Fe<15){v=x(Fe)+(1<>4,ie===0)he<15?(v=x(he)+(1<0){for(me=0;me0?"unexpected":"excessive";H(`decodeScan - ${z} MCU data, current marker is: ${$e.invalid}`),n=$e.offset}if($e.marker>=65488&&$e.marker<=65495)n+=2;else break}return n-d}function z1(t,e,n){const s=t.quantizationTable,a=t.blockData;let i,r,o,f,l,c,h,u,d,p,m,b,w,x,j,k,y;if(!s)throw new Xn("missing required Quantization Table.");for(let q=0;q<64;q+=8){if(d=a[e+q],p=a[e+q+1],m=a[e+q+2],b=a[e+q+3],w=a[e+q+4],x=a[e+q+5],j=a[e+q+6],k=a[e+q+7],d*=s[q],(p|m|b|w|x|j|k)===0){y=Qa*d+512>>10,n[q]=y,n[q+1]=y,n[q+2]=y,n[q+3]=y,n[q+4]=y,n[q+5]=y,n[q+6]=y,n[q+7]=y;continue}p*=s[q+1],m*=s[q+2],b*=s[q+3],w*=s[q+4],x*=s[q+5],j*=s[q+6],k*=s[q+7],i=Qa*d+128>>8,r=Qa*w+128>>8,o=m,f=j,l=Gr*(p-k)+128>>8,u=Gr*(p+k)+128>>8,c=b<<4,h=x<<4,i=i+r+1>>1,r=i-r,y=o*Ur+f*zr+128>>8,o=o*zr-f*Ur+128>>8,f=y,l=l+h+1>>1,h=l-h,u=u+c+1>>1,c=u-c,i=i+f+1>>1,f=i-f,r=r+o+1>>1,o=r-o,y=l*Lr+u*Or+2048>>12,l=l*Or-u*Lr+2048>>12,u=y,y=c*Nr+h*Pr+2048>>12,c=c*Pr-h*Nr+2048>>12,h=y,n[q]=i+u,n[q+7]=i-u,n[q+1]=r+h,n[q+6]=r-h,n[q+2]=o+c,n[q+5]=o-c,n[q+3]=f+l,n[q+4]=f-l}for(let q=0;q<8;++q){if(d=n[q],p=n[q+8],m=n[q+16],b=n[q+24],w=n[q+32],x=n[q+40],j=n[q+48],k=n[q+56],(p|m|b|w|x|j|k)===0){y=Qa*d+8192>>14,y<-2040?y=0:y>=2024?y=255:y=y+2056>>4,a[e+q]=y,a[e+q+8]=y,a[e+q+16]=y,a[e+q+24]=y,a[e+q+32]=y,a[e+q+40]=y,a[e+q+48]=y,a[e+q+56]=y;continue}i=Qa*d+2048>>12,r=Qa*w+2048>>12,o=m,f=j,l=Gr*(p-k)+2048>>12,u=Gr*(p+k)+2048>>12,c=b,h=x,i=(i+r+1>>1)+4112,r=i-r,y=o*Ur+f*zr+2048>>12,o=o*zr-f*Ur+2048>>12,f=y,l=l+h+1>>1,h=l-h,u=u+c+1>>1,c=u-c,i=i+f+1>>1,f=i-f,r=r+o+1>>1,o=r-o,y=l*Lr+u*Or+2048>>12,l=l*Or-u*Lr+2048>>12,u=y,y=c*Nr+h*Pr+2048>>12,c=c*Pr-h*Nr+2048>>12,h=y,d=i+u,k=i-u,p=r+h,j=r-h,m=o+c,x=o-c,b=f+l,w=f-l,d<16?d=0:d>=4080?d=255:d>>=4,p<16?p=0:p>=4080?p=255:p>>=4,m<16?m=0:m>=4080?m=255:m>>=4,b<16?b=0:b>=4080?b=255:b>>=4,w<16?w=0:w>=4080?w=255:w>>=4,x<16?x=0:x>=4080?x=255:x>>=4,j<16?j=0:j>=4080?j=255:j>>=4,k<16?k=0:k>=4080?k=255:k>>=4,a[e+q]=d,a[e+q+8]=p,a[e+q+16]=m,a[e+q+24]=b,a[e+q+32]=w,a[e+q+40]=x,a[e+q+48]=j,a[e+q+56]=k}}function U1(t,e){const n=e.blocksPerLine,s=e.blocksPerColumn,a=new Int16Array(64);for(let i=0;i=a)return null;const r=e.getUint16(n);if(r>=65472&&r<=65534)return{invalid:null,marker:r,offset:n};let o=e.getUint16(i);for(;!(o>=65472&&o<=65534);){if(++i>=a)return null;o=e.getUint16(i)}return{invalid:r.toString(16),marker:o,offset:i}}function G1(t){const e=Math.ceil(t.samplesPerLine/8/t.maxH),n=Math.ceil(t.scanLines/8/t.maxV);for(const s of t.components){const a=Math.ceil(Math.ceil(t.samplesPerLine/8)*s.h/t.maxH),i=Math.ceil(Math.ceil(t.scanLines/8)*s.v/t.maxV),r=e*s.h,f=64*(n*s.v)*(r+1);s.blockData=new Int16Array(f),s.blocksPerLine=a,s.blocksPerColumn=i}t.mcusPerLine=e,t.mcusPerColumn=n}function wl(t,e,n){const s=e.getUint16(n);n+=2;let a=n+s-2;const i=O0(t,e,a,n);i?.invalid&&(H("readDataBlock - incorrect length, current marker is: "+i.invalid),a=i.offset);const r=t.subarray(n,a);return{appData:r,oldOffset:n,newOffset:n+r.length}}function W1(t,e,n){const s=e.getUint16(n);n+=2;const a=n+s-2,i=O0(t,e,a,n);return i?.invalid?i.offset:a}class xl{constructor(e){this._colorTransform=e?.colorTransform??-1}static canUseImageDecoder(e,n=-1){const s=new DataView(e.buffer,e.byteOffset,e.byteLength),a={width:0,height:0,exifStart:0,exifEnd:0};let i=0,r=null,o=s.getUint16(i);if(i+=2,o!==65496)throw new Xn("SOI not found");o=s.getUint16(i),i+=2;e:for(;o!==65497;){switch(o){case 65505:const{appData:f,oldOffset:l,newOffset:c}=wl(e,s,i);if(i=c,f[0]===69&&f[1]===120&&f[2]===105&&f[3]===102&&f[4]===0&&f[5]===0){if(a.exifStart)throw new Xn("Duplicate EXIF-blocks found.");a.exifStart=l+6,a.exifEnd=c}o=s.getUint16(i),i+=2;continue;case 65472:case 65473:case 65474:a.height=s.getUint16(i+3),a.width=s.getUint16(i+5),r=e[i+7];break e;case 65535:e[i]!==255&&i--;break}i=W1(e,s,i),o=s.getUint16(i),i+=2}return r===4||r===3&&n===0?null:a}parse(e,{dnlScanLines:n=null}={}){const s=new DataView(e.buffer,e.byteOffset,e.byteLength),a=e.length-1;let i=0,r=null,o=null,f,l,c=0;const h=[],u=[],d=[];let p=s.getUint16(i);if(i+=2,p!==65496)throw new Xn("SOI not found");p=s.getUint16(i),i+=2;e:for(;p!==65497;){let m,b,w;switch(p){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{appData:x,newOffset:j}=wl(e,s,i);i=j,p===65504&&x[0]===74&&x[1]===70&&x[2]===73&&x[3]===70&&x[4]===0&&(r={version:{major:x[5],minor:x[6]},densityUnits:x[7],xDensity:x[8]<<8|x[9],yDensity:x[10]<<8|x[11],thumbWidth:x[12],thumbHeight:x[13],thumbData:x.subarray(14,14+3*x[12]*x[13])}),p===65518&&x[0]===65&&x[1]===100&&x[2]===111&&x[3]===98&&x[4]===101&&(o={version:x[5]<<8|x[6],flags0:x[7]<<8|x[8],flags1:x[9]<<8|x[10],transformCode:x[11]});break;case 65499:const k=s.getUint16(i);i+=2;const y=k+i-2;let q;for(;i>4===0)for(b=0;b<64;b++)q=nr[b],ye[q]=e[i++];else if(ee>>4===1)for(b=0;b<64;b++)q=nr[b],ye[q]=s.getUint16(i),i+=2;else throw new Xn("DQT - invalid table spec");h[ee&15]=ye}break;case 65472:case 65473:case 65474:if(f)throw new Xn("Only single frame JPEGs supported");i+=2,f={},f.extended=p===65473,f.progressive=p===65474,f.precision=e[i++];const v=s.getUint16(i);i+=2,f.scanLines=n||v,f.samplesPerLine=s.getUint16(i),i+=2,f.components=[],f.componentIds={};const A=e[i++];let S=0,F=0;for(m=0;m>4,Be=e[i+1]&15;S>4===0?d:u)[ee&15]=O1(ye,ae)}break;case 65501:i+=2,l=s.getUint16(i),i+=2;break;case 65498:const N=++c===1&&!n;i+=2;const D=e[i++],$=[];for(m=0;m>4],Be.huffmanTableAC=u[ae&15],$.push(Be)}const K=e[i++],oe=e[i++],me=e[i++];try{const ee=L1(e,s,i,f,$,l,K,oe,me>>4,me&15,N);i+=ee}catch(ee){if(ee instanceof $o)return H(`${ee.message} -- attempting to re-parse the JPEG image.`),this.parse(e,{dnlScanLines:ee.scanLines});if(ee instanceof th){H(`${ee.message} -- ignoring the rest of the image data.`);break e}throw ee}break;case 65500:i+=4;break;case 65535:e[i]!==255&&i--;break;default:const X=O0(e,s,i-2,i-3);if(X?.invalid){H("JpegImage.parse - unexpected data, current marker is: "+X.invalid),i=X.offset;break}if(!X||i>=a){H("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new Xn("JpegImage.parse - unknown marker: "+p.toString(16))}i4)throw new Xn("Unsupported color mode");const i=this.#e(e,n);if(this.numComponents===1&&(s||a)){const r=i.length*(s?4:3),o=new Uint8ClampedArray(r);let f=0;if(s)D1(i,new Uint32Array(o.buffer));else for(const l of i)o[f++]=l,o[f++]=l,o[f++]=l;return o}else if(this.numComponents===3&&this._isColorConversionNeeded){if(s){const r=new Uint8ClampedArray(i.length/3*4);return this._convertYccToRgba(i,r)}return this._convertYccToRgb(i)}else if(this.numComponents===4){if(this._isColorConversionNeeded)return s?this._convertYcckToRgba(i):a?this._convertYcckToRgb(i):this._convertYcckToCmyk(i);if(s)return this._convertCmykToRgba(i);if(a)return this._convertCmykToRgb(i)}return i}}class Ci extends jn{static#e=Tn.isImageDecoderSupported;constructor(e,n,s){super(n),this.stream=e,this.dict=e.dict,this.maybeLength=n,this.params=s}static get canUseImageDecoder(){return ue(this,"canUseImageDecoder",this.#e?ImageDecoder.isTypeSupported("image/jpeg"):Promise.resolve(!1))}static setOptions({isImageDecoderSupported:e=!1}){this.#e=e}get bytes(){return ue(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){this.decodeImage()}get jpegOptions(){const e={colorTransform:void 0};if(this.params instanceof B){const n=this.params.get("ColorTransform");Number.isInteger(n)&&(e.colorTransform=n)}return ue(this,"jpegOptions",e)}#t(e){for(let n=0,s=e.length-1;n0&&(e=e.subarray(n));break}return e}decodeImage(e){if(this.eof)return this.buffer;e=this.#t(e||this.bytes);const n=new xl(this.jpegOptions);n.parse(e);const s=n.getData({width:this.drawWidth,height:this.drawHeight,forceRGBA:this.forceRGBA,forceRGB:this.forceRGB});return this.buffer=s,this.bufferLength=s.length,this.eof=!0,this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}async getTransferableImage(e,n){if(!await Ci.canUseImageDecoder)return null;const s=this.jpegOptions;let a;try{const i=this.canAsyncDecodeImageFromBuffer&&await this.stream.asyncGetBytes()||this.bytes;if(!i)return null;let r=this.#t(i);const o=xl.canUseImageDecoder(r,s.colorTransform);if(!o)return null;const{width:f,height:l}=o,c=vn.getReducePower(f,l);if((f!==e||l!==n)&&(c||!l))return null;o.exifStart&&(r=r.slice(),r.fill(0,o.exifStart,o.exifEnd));const h={data:r,type:"image/jpeg",preferAnimation:!1};if(c){const u=2**c;h.desiredWidth=Math.ceil(f/u),h.desiredHeight=Math.ceil(l/u)}return a=new ImageDecoder(h),(await a.decode()).image}catch(i){return H(`getTransferableImage - failed: "${i}".`),null}finally{a?.close()}}get isImageStream(){return!0}}function Br(t,e,n,s,a){let i=t;for(let r=0,o=e.length-1;r1e3&&(p=Math.max(p,w),x+=b+2,w=0,b=0),m.push({transform:S,x:w,y:x,w:F.width,h:F.height}),w+=F.width+2,b=Math.max(b,F.height)}const j=Math.max(p,w)+1,k=x+b+1,y=new Uint8Array(j*k*4),q=j<<2;for(let A=0;A=0;)S[N-4]=S[N],S[N-3]=S[N+1],S[N-2]=S[N+2],S[N-1]=S[N+3],S[N+F]=S[N+F-4],S[N+F+1]=S[N+F-3],S[N+F+2]=S[N+F-2],S[N+F+3]=S[N+F-1],N-=q}const v={width:j,height:k};if(e.isOffscreenCanvasSupported){const A=new OffscreenCanvas(j,k);A.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(y.buffer),j,k),0,0),v.bitmap=A.transferToImageBitmap(),v.data=null}else v.kind=sn.RGBA_32BPP,v.data=y;return o.splice(c,d*4,C.paintInlineImageXObjectGroup),f.splice(c,d*4,[v,m]),c+1});Br(Ua,[C.save,C.transform,C.paintImageMaskXObject,C.restore],null,function(e,n){const s=e.fnArray,a=e.iCurr-3,i=(n-a)%4;switch(i){case 0:return s[n]===C.save;case 1:return s[n]===C.transform;case 2:return s[n]===C.paintImageMaskXObject;case 3:return s[n]===C.restore}throw new Error(`iterateImageMaskGroup - invalid pos: ${i}`)},function(e,n){const r=e.fnArray,o=e.argsArray,f=e.iCurr,l=f-3,c=f-2,h=f-1;let u=Math.floor((n-l)/4);if(u<10)return n-(n-l)%4;let d=!1,p,m;const b=o[h][0],w=o[c][0],x=o[c][1],j=o[c][2],k=o[c][3];if(x===j){d=!0,p=c+4;let y=h+4;for(let q=1;q=4&&a[o-4]===a[f]&&a[o-3]===a[l]&&a[o-2]===a[c]&&a[o-1]===a[h]&&i[o-4][0]===u&&i[o-4][1]===d&&(p++,m-=5);let b=m+4;for(let w=1;w{const e=t.argsArray,n=t.iCurr-1,s=e[n][0];if(s!==C.stroke&&s!==C.closeStroke&&s!==C.fillStroke&&s!==C.eoFillStroke&&s!==C.closeFillStroke&&s!==C.closeEOFillStroke)return!0;const a=t.iCurr-2,i=e[a];return i[0]===1&&i[1]===0&&i[2]===0&&i[3]===1},()=>!1,(t,e)=>{const{fnArray:n,argsArray:s}=t,a=t.iCurr,i=a-3,r=a-2,o=a-1,f=s[o],l=s[r],[,[c],h]=f;if(h){const u=w0.slice();ft.axialAlignedBoundingBox(h,l,u),h.set(u);for(let d=0,p=c.length;d=s)break}if(a=(a||Ua)[e[n]],!a||Array.isArray(a)){n++;continue}if(r.iCurr=n,n++,a.checkFn&&!(0,a.checkFn)(r)){a=null;continue}i=a,a=null}this.state=a,this.match=i,this.lastProcessed=n}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 Cn{static CHUNK_SIZE=1e3;static CHUNK_SIZE_ABOUT=this.CHUNK_SIZE-5;static isOffscreenCanvasSupported=!1;constructor(e=0,n){this._streamSink=n,this.fnArray=[],this.argsArray=[],this.optimizer=n&&!(e&an.OPLIST)?new K1(this):new nh(this),this.dependencies=new Set,this._totalLength=0,this.weight=0,this._resolved=n?null:Promise.resolve()}static setOptions({isOffscreenCanvasSupported:e}){this.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,n){this.optimizer.push(e,n),this.weight++,this._streamSink&&(this.weight>=Cn.CHUNK_SIZE?this.flush():this.weight>=Cn.CHUNK_SIZE_ABOUT&&(e===C.restore||e===C.endText)&&this.flush())}addImageOps(e,n,s,a=!1){a&&(this.addOp(C.save),this.addOp(C.setGState,[[["SMask",!1]]])),s!==void 0&&this.addOp(C.beginMarkedContentProps,["OC",s]),this.addOp(e,n),s!==void 0&&this.addOp(C.endMarkedContent,[]),a&&this.addOp(C.restore)}addDependency(e){this.dependencies.has(e)||(this.dependencies.add(e),this.addOp(C.dependency,[e]))}addDependencies(e){for(const n of e)this.addDependency(n)}addOpList(e){if(!(e instanceof Cn)){H('addOpList - ignoring invalid "opList" parameter.');return}for(const n of e.dependencies)this.dependencies.add(n);for(let n=0,s=e.length;n=c||x<=0){ut("Bad shading domain.");return}const{numComps:k}=f,y=new Float32Array(1),q=sh(w,k),v=new Float32Array(q*k),A=new Uint8ClampedArray(w*3);for(let tt=0;tto?o:e,n=n>f?f:n,s=s{a[r++]=t[l*2],a[r++]=t[l*2+1],i[o++]=e[c*4],i[o++]=e[c*4+1],i[o++]=e[c*4+2],o++};for(const l of n){const c=l.coords,h=l.colors;if(l.type===ls.TRIANGLES)for(let u=0,d=c.length;u0&&o.getRgbItems(F,me,q,X,1);const ee=new Uint32Array(k);for(let ye=0;ye0)return!0;const e=this.stream.getByte();return e<0?!1:(this.buffer=e,this.bufferLength=8,!0)}readBits(e){const{stream:n}=this;let{buffer:s,bufferLength:a}=this;if(e===32){if(a===0)return n.getInt32()>>>0;s=s<<24|n.getByte()<<16|n.getByte()<<8|n.getByte();const i=n.getByte();return this.buffer=i&(1<>a)>>>0}if(e===8&&a===0)return n.getByte();for(;a>a}align(){this.buffer=0,this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const{bitsPerCoordinate:e,decode:n}=this.context,s=this.readBits(e),a=this.readBits(e),i=e<32?1/((1<Array.from({length:t+1},(e,n)=>{const s=n/t,a=1-s;return new Float32Array([a**3,3*s*a**2,3*s**2*a,s**3])}))}function Q1(){rh?.clear()}class Qs extends pi{static MIN_SPLIT_PATCH_CHUNKS_AMOUNT=3;static MAX_SPLIT_PATCH_CHUNKS_AMOUNT=20;static TRIANGLE_DENSITY=20;constructor(e,n,s,a,i,r){if(super(),!(e instanceof Pe))throw new Y("Mesh data is not a stream");const o=e.dict;this.shadingType=o.get("ShadingType"),this.bbox=Cs(o.getArray("BBox"),null);const f=ht.parse({cs:o.getRaw("CS")||o.getRaw("ColorSpace"),xref:n,resources:s,pdfFunctionFactory:a,globalColorSpaceCache:i,localColorSpaceCache:r});this.background=o.has("Background")?f.getRgb(o.get("Background"),0):null;const l=o.getRaw("Function"),c=l?a.create(l,!0):null;this.coords=[],this.colors=[],this.figures=[];const h={bitsPerCoordinate:o.get("BitsPerCoordinate"),bitsPerComponent:o.get("BitsPerComponent"),bitsPerFlag:o.get("BitsPerFlag"),decode:o.getArray("Decode"),colorFn:c,colorSpace:f,numComps:c?1:f.numComps},u=new J1(e,h);let d=!1;switch(this.shadingType){case wn.FREE_FORM_MESH:this._decodeType4Shading(u);break;case wn.LATTICE_FORM_MESH:const p=o.get("VerticesPerRow")|0;if(p<2)throw new Y("Invalid VerticesPerRow");this._decodeType5Shading(u,p);break;case wn.COONS_PATCH_MESH:this._decodeType6Shading(u),d=!0;break;case wn.TENSOR_PATCH_MESH:this._decodeType7Shading(u),d=!0;break;default:st("Unsupported mesh type.");break}if(d){this._updateBounds();for(let p=0,m=this.figures.length;p>>0}function Wr(t,e){return e===1?String.fromCharCode(t[0],t[1]):e===3?String.fromCharCode(t[0],t[1],t[2],t[3]):String.fromCharCode(...t.subarray(0,e+1))}function kn(t,e,n){let s=0;for(let a=n;a>=0;a--)s+=t[a]+e[a],t[a]=s&255,s>>=8}function ya(t,e){let n=1;for(let s=e;s>=0&&n>0;s--)n+=t[s],t[s]=n&255,n>>=8}const Za=16,ed=19;class td extends yt{tmpBuf=new Uint8Array(ed);constructor(e){super(e,0,e.length,null)}readNumber(){let e=0,n;do{const s=this.getByte();if(s<0)throw new Y("unexpected EOF in bcmap");n=!(s&128),e=e<<7|s&127}while(!n);return e}readSigned(){const e=this.readNumber();return e&1?~(e>>>1):e>>>1}readHex(e,n){e.set(this.getBytes(n+1))}readHexNumber(e,n){let s;const a=this.tmpBuf;let i=0;do{const l=this.getByte();if(l<0)throw new Y("unexpected EOF in bcmap");s=!(l&128),a[i++]=l&127}while(!s);let r=n,o=0,f=0;for(;r>=0;){for(;f<8&&a.length>0;)o|=a[--i]<>=8,f-=8}}readHexSigned(e,n){this.readHexNumber(e,n);const s=e[n]&1?255:0;let a=0;for(let i=0;i<=n;i++)a=(a&1)<<8|e[i],e[i]=a>>1^s}readString(){const e=this.readNumber(),n=new Array(e);for(let s=0;s=0;){const p=d>>5;if(p===7){switch(d&31){case 0:a.readString();break;case 1:r=a.readString();break}continue}const m=!!(d&16),b=d&15;if(b+1>Za)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const w=1,x=a.readNumber();switch(p){case 0:a.readHex(o,b),a.readHexNumber(f,b),kn(f,o,b),n.addCodespaceRange(b+1,dn(o,b),dn(f,b));for(let j=1;j=0;--f)o[r+f]=c&255,c>>=8}}}class ad extends jn{constructor(e,n){n&&(n*=.5),super(n),this.stream=e,this.dict=e.dict,this.firstDigit=-1}readBlock(){const n=this.stream.getBytes(8e3);if(!n.length){this.eof=!0;return}const s=n.length+1>>1,a=this.ensureBuffer(this.bufferLength+s);let i=this.bufferLength,r=this.firstDigit;for(const o of n){let f;if(o>=48&&o<=57)f=o&15;else if(o>=65&&o<=70||o>=97&&o<=102)f=(o&15)+9;else if(o===62){this.eof=!0;break}else continue;r<0?r=f:(a[i++]=r<<4|f,r=-1)}r>=0&&this.eof&&(a[i++]=r<<4,r=-1),this.firstDigit=r,this.bufferLength=i}}let id=()=>{const t=Int32Array.from([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]),e=Int32Array.from([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),n=Int32Array.from([0,3,2,1,0,0,0,0,0,0,3,3,3,3,3,3]),s=Int32Array.from([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),a=Int32Array.from([131072,131076,131075,196610,131072,131076,131075,262145,131072,131076,131075,196610,131072,131076,131075,262149]),i=Int32Array.from([1,5,9,13,17,25,33,41,49,65,81,97,113,145,177,209,241,305,369,497,753,1265,2289,4337,8433,16625]),r=Int32Array.from([2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,7,8,9,10,11,12,13,24]),o=Int16Array.from([0,0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9,10,12,14,24]),f=Int16Array.from([0,0,0,0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9,10,24]),l=new Int16Array(2816);d(l);function c(g){let T=-1,R=16,P=g;for(;R>0;){let O=P>>R;O!==0&&(T+=R,P=O),R=R>>1}return T+P}function h(g,T,R){return 16+T+2*(R<>R)+4,ne=c(O)-1;return((ne-1<<1|O>>ne&1)-1<>6,ne=-4;O>=2&&(O-=2,ne=0);const xe=(170064>>O*2&3)<<3|P>>3&7,ve=(156228>>O*2&3)<<3|P&7,Ge=R[ve],Ze=ne+Math.min(Ge,5)-2,We=P*4;g[We]=o[xe]|f[ve]<<8,g[We+1]=T[xe],g[We+2]=R[ve],g[We+3]=Ze}}function p(g){const T=g.isLargeWindow;if(g.isLargeWindow=0,g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),ce(g,1)===0)return 16;let R=ce(g,3);return R!==0?17+R:(R=ce(g,3),R!==0?R===1?T===0||(g.isLargeWindow=1,ce(g,1)===1)||(R=ce(g,6),R<10||R>30)?-1:R:8+R:17)}function m(g,T){return g.runningState!==1?Ie(g,-24):(g.cdNumChunks===0&&(g.cdChunks=new Array(16),g.cdChunkOffsets=new Int32Array(16),g.cdBlockBits=-1),g.cdNumChunks===15?Ie(g,-27):(g.cdChunks[g.cdNumChunks]=T,g.cdNumChunks++,g.cdTotalSize+=T.length,g.cdChunkOffsets[g.cdNumChunks]=g.cdTotalSize,0))}function b(g){if(g.runningState!==0)return Ie(g,-26);g.blockTrees=new Int32Array(3091),g.blockTrees[0]=7,g.distRbIdx=3;let T=u(g,2147483644,3,120);if(T<0)return T;const R=T;return g.distExtraBits=new Int8Array(R),g.distOffset=new Int32Array(R),T=qe(g),T<0?T:(g.runningState=1,0)}function w(g){return g.runningState===0?Ie(g,-25):(g.runningState>0&&(g.runningState=11),0)}function x(g){if(g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),ce(g,1)!==0){const T=ce(g,3);return T===0?1:ce(g,T)+(1<=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),g.inputEnd=ce(g,1),g.metaBlockLength=0,g.isUncompressed=0,g.isMetadata=0,g.inputEnd!==0&&ce(g,1)!==0)return 0;const T=ce(g,2)+4;if(T===7){if(g.isMetadata=1,ce(g,1)!==0)return Ie(g,-6);const R=ce(g,2);if(R===0)return 0;for(let P=0;P=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const O=ce(g,8);if(O===0&&P+1===R&&R>1)return Ie(g,-8);g.metaBlockLength+=O<=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const P=ce(g,4);if(P===0&&R+1===T&&T>4)return Ie(g,-8);g.metaBlockLength+=P<>>R.bitOffset;P+=O&255;const ne=g[P]>>16,xe=g[P]&65535;if(ne<=8)return R.bitOffset+=ne,xe;P+=xe;const ve=(1<>>8,R.bitOffset+=(g[P]>>16)+8,g[P]&65535}function y(g,T,R){R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16);const P=k(g,T,R),O=r[P];return R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16),i[P]+(O<=16?ce(R,O):Me(R,O))}function q(g,T){let R=T;const P=g[R];for(;R>0;)g[R]=g[R-1],R--;g[0]=P}function v(g,T){const R=new Int32Array(256);for(let P=0;P<256;++P)R[P]=P;for(let P=0;P0;){if(P.halfOffset>2030){const mt=Z(P);if(mt<0)return mt}P.bitOffset>=16&&(P.accumulator32=P.shortBuffer[P.halfOffset++]<<16|P.accumulator32>>>16,P.bitOffset-=16);const at=P.accumulator32>>>P.bitOffset&31;P.bitOffset+=Ze[at]>>16;const ct=Ze[at]&65535;if(ct<16)xe=0,R[O++]=ct,ct!==0&&(ne=ct,Ge-=32768>>ct);else{const mt=ct-14;let Dt=0;ct===16&&(Dt=ne),ve!==Dt&&(xe=0,ve=Dt);const as=xe;xe>0&&(xe-=2,xe=xe<=16&&(P.accumulator32=P.shortBuffer[P.halfOffset++]<<16|P.accumulator32>>>16,P.bitOffset-=16),xe+=ce(P,mt)+3;const On=xe-as;if(O+On>T)return Ie(P,-2);for(let tn=0;tn=16&&(O.accumulator32=O.shortBuffer[O.halfOffset++]<<16|O.accumulator32>>>16,O.bitOffset-=16);const ct=ce(O,ve);if(ct>=T)return Ie(O,-15);xe[at]=ct}const Ze=S(O,xe,Ge);if(Ze<0)return Ze;let We=Ge;switch(Ge===4&&(We+=ce(O,1)),We){case 1:ne[xe[0]]=1;break;case 2:ne[xe[0]]=1,ne[xe[1]]=1;break;case 3:ne[xe[0]]=1,ne[xe[1]]=2,ne[xe[2]]=2;break;case 4:ne[xe[0]]=2,ne[xe[1]]=2,ne[xe[2]]=2,ne[xe[3]]=2;break;case 5:ne[xe[0]]=1,ne[xe[1]]=2,ne[xe[2]]=3,ne[xe[3]]=3;break}return de(R,P,8,ne,T)}function M(g,T,R,P,O){const ne=new Int32Array(g),xe=new Int32Array(18);let ve=32,Ge=0;for(let We=T;We<18;++We){const at=e[We];O.bitOffset>=16&&(O.accumulator32=O.shortBuffer[O.halfOffset++]<<16|O.accumulator32>>>16,O.bitOffset-=16);const ct=O.accumulator32>>>O.bitOffset&15;O.bitOffset+=a[ct]>>16;const mt=a[ct]&65535;if(xe[at]=mt,mt!==0&&(ve-=32>>mt,Ge++,ve<=0))break}if(ve!==0&&Ge!==1)return Ie(O,-4);const Ze=A(xe,g,ne,O);return Ze<0?Ze:de(R,P,8,ne,g)}function N(g,T,R,P,O){if(O.halfOffset>2030){const xe=Z(O);if(xe<0)return xe}O.bitOffset>=16&&(O.accumulator32=O.shortBuffer[O.halfOffset++]<<16|O.accumulator32>>>16,O.bitOffset-=16);const ne=ce(O,2);return ne===1?F(g,T,R,P,O):M(T,ne,R,P,O)}function D(g,T,R){let P;if(R.halfOffset>2030&&(P=Z(R),P<0))return P;const O=x(R)+1;if(O===1)return T.fill(0,0,g),O;R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16);const ne=ce(R,1);let xe=0;ne!==0&&(xe=ce(R,4)+1);const ve=O+xe,Ge=t[ve+31>>5],Ze=new Int32Array(Ge+1),We=Ze.length-1;if(P=N(ve,ve,Ze,We,R),P<0)return P;let at=0;for(;at2030&&(P=Z(R),P<0))return P;R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16);const ct=k(Ze,We,R);if(ct===0)T[at]=0,at++;else if(ct<=xe){R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16);let mt=(1<=g)return Ie(R,-3);T[at]=0,at++,mt--}}else T[at]=ct-xe,at++}return R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16),ce(R,1)===1&&v(T,g),O}function $(g,T,R){const P=g.rings,O=4+T*2;g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);let ne=k(g.blockTrees,2*T,g);const xe=y(g.blockTrees,2*T+1,g);return ne===1?ne=P[O+1]+1:ne===0?ne=P[O]:ne-=2,ne>=R&&(ne-=R),P[O]=P[O+1],P[O+1]=ne,xe}function K(g){g.literalBlockLength=$(g,0,g.numLiteralBlockTypes);const T=g.rings[5];g.contextMapSlice=T<<6,g.literalTreeIdx=g.contextMap[g.contextMapSlice]&255;const R=g.contextModes[T];g.contextLookupOffset1=R<<9,g.contextLookupOffset2=g.contextLookupOffset1+256}function oe(g){g.commandBlockLength=$(g,1,g.numCommandBlockTypes),g.commandTreeIdx=g.rings[7]}function me(g){g.distanceBlockLength=$(g,2,g.numDistanceBlockTypes),g.distContextMapSlice=g.rings[9]<<2}function X(g){let T=g.maxRingBufferSize;if(T>g.expectedTotalSize){const ne=g.expectedTotalSize;for(;T>>1>ne;)T=T>>1;g.inputEnd===0&&T<16384&&g.maxRingBufferSize>=16384&&(T=16384)}if(T<=g.ringBufferSize)return;const R=T+37,P=new Int8Array(R),O=g.ringBuffer;O.length!==0&&P.set(O.subarray(0,g.ringBufferSize),0),g.ringBuffer=P,g.ringBufferSize=T}function ee(g){if(g.inputEnd!==0)return g.nextRunningState=10,g.runningState=12,0;g.literalTreeGroup=new Int32Array(0),g.commandTreeGroup=new Int32Array(0),g.distanceTreeGroup=new Int32Array(0);let T;if(g.halfOffset>2030&&(T=Z(g),T<0)||(T=j(g),T<0))return T;if(g.metaBlockLength===0&&g.isMetadata===0)return 0;if(g.isUncompressed!==0||g.isMetadata!==0){if(T=Je(g),T<0)return T;g.isMetadata===0?g.runningState=6:g.runningState=5}else g.runningState=3;return g.isMetadata!==0||(g.expectedTotalSize+=g.metaBlockLength,g.expectedTotalSize>1<<30&&(g.expectedTotalSize=1<<30),g.ringBufferSize2030&&(T=Z(g),T<0)))return T;g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),g.distancePostfixBits=ce(g,2),g.numDirectDistanceCodes=ce(g,4)<=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),g.contextModes[R]=ce(g,2),R++;if(g.halfOffset>2030&&(T=Z(g),T<0))return T}const P=g.numLiteralBlockTypes<<6;if(g.contextMap=new Int8Array(P),T=D(P,g.contextMap,g),T<0)return T;const O=T;g.trivialLiteralContext=1;for(let Ge=0;Ge>6){g.trivialLiteralContext=0;break}if(g.distContextMap=new Int8Array(g.numDistanceBlockTypes<<2),T=D(g.numDistanceBlockTypes<<2,g.distContextMap,g),T<0)return T;const ne=T;if(g.literalTreeGroup=new Int32Array(G(256,O)),T=_(256,256,O,g,g.literalTreeGroup),T<0||(g.commandTreeGroup=new Int32Array(G(704,g.numCommandBlockTypes)),T=_(704,704,g.numCommandBlockTypes,g,g.commandTreeGroup),T<0))return T;let xe=h(g.distancePostfixBits,g.numDirectDistanceCodes,24),ve=xe;if(g.isLargeWindow===1){if(xe=h(g.distancePostfixBits,g.numDirectDistanceCodes,62),T=u(g,2147483644,g.distancePostfixBits,g.numDirectDistanceCodes),T<0)return T;ve=T}return g.distanceTreeGroup=new Int32Array(G(ve,ne)),T=_(xe,ve,ne,g,g.distanceTreeGroup),T<0?T:(Be(g,ve),g.contextMapSlice=0,g.distContextMapSlice=0,g.contextLookupOffset1=g.contextModes[0]*512,g.contextLookupOffset2=g.contextLookupOffset1+256,g.literalTreeIdx=0,g.commandTreeIdx=0,g.rings[4]=1,g.rings[5]=0,g.rings[6]=1,g.rings[7]=0,g.rings[8]=1,g.rings[9]=0,0)}function $e(g){const T=g.ringBuffer;let R;if(g.metaBlockLength<=0)return R=Ce(g),R<0?R:(g.runningState=2,0);const P=Math.min(g.ringBufferSize-g.pos,g.metaBlockLength);return R=lt(g,T,g.pos,P),R<0?R:(g.metaBlockLength-=P,g.pos+=P,g.pos===g.ringBufferSize?(g.nextRunningState=6,g.runningState=12,0):(R=Ce(g),R<0?R:(g.runningState=2,0)))}function tt(g){const T=Math.min(g.outputLength-g.outputUsed,g.ringBufferBytesReady-g.ringBufferBytesWritten);return T!==0&&(g.output.set(g.ringBuffer.subarray(g.ringBufferBytesWritten,g.ringBufferBytesWritten+T),g.outputOffset+g.outputUsed),g.outputUsed+=T,g.ringBufferBytesWritten+=T),g.outputUsed>5];return T+T*R}function _(g,T,R,P,O){let ne=R;for(let xe=0;xe2147483644)return Ie(g,-9);const R=g.distance-g.maxDistance-1-g.cdTotalSize;if(R<0){const P=je(g,-R-1,g.copyLength);if(P<0)return P;g.runningState=14}else{const P=Rn,O=g.copyLength;if(O>31)return Ie(g,-9);const ne=$a[O];if(ne===0)return Ie(g,-9);let xe=ss[O];const ve=(1<>ne;xe+=Ge*O;const We=Ee;if(Ze>=We.numTransforms)return Ie(g,-9);const at=Ue(g.ringBuffer,g.pos,P,xe,O,We,Ze);if(g.pos+=at,g.metaBlockLength-=at,g.pos>=T)return g.nextRunningState=4,g.runningState=12,0;g.runningState=4}return 0}function te(g){g.cdBlockMap=new Int8Array(256);let T=8;for(;g.cdTotalSize-1>>T!==0;)T++;T-=8,g.cdBlockBits=T;let R=0,P=0;for(;R>T]=P,R+=1<>g.cdBlockBits];for(;T>=g.cdChunkOffsets[P+1];)P++;return g.cdTotalSize>T+R?Ie(g,-9):(g.distRbIdx=g.distRbIdx+1&3,g.rings[g.distRbIdx]=g.distance,g.metaBlockLength-=R,g.cdBrIndex=P,g.cdBrOffset=T-g.cdChunkOffsets[P],g.cdBrLength=R,g.cdBrCopied=0,0)}function he(g,T){let R=g.pos;const P=R;for(;g.cdBrLength!==g.cdBrCopied;){const O=T-R,xe=g.cdChunkOffsets[g.cdBrIndex+1]-g.cdChunkOffsets[g.cdBrIndex]-g.cdBrOffset;let ve=g.cdBrLength-g.cdBrCopied;if(ve>xe&&(ve=xe),ve>O&&(ve=O),g.ringBuffer.set(g.cdChunks[g.cdBrIndex].subarray(g.cdBrOffset,g.cdBrOffset+ve),R),R+=ve,g.cdBrOffset+=ve,g.cdBrCopied+=ve,ve===xe&&(g.cdBrIndex++,g.cdBrOffset=0),R>=T)break}return R-P}function ie(g){let T;if(g.runningState===0)return Ie(g,-25);if(g.runningState<0)return Ie(g,-28);if(g.runningState===11)return Ie(g,-22);if(g.runningState===1){const ne=p(g);if(ne===-1)return Ie(g,-11);g.maxRingBufferSize=1<2030&&(T=Z(g),T<0))return T;g.commandBlockLength===0&&oe(g),g.commandBlockLength--,g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const ne=k(g.commandTreeGroup,g.commandTreeIdx,g)<<2,xe=l[ne],ve=l[ne+1],Ge=l[ne+2];g.distanceCode=l[ne+3],g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const Ze=xe&255;g.insertLength=ve+(Ze<=16?ce(g,Ze):Me(g,Ze)),g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const We=xe>>8;g.copyLength=Ge+(We<=16?ce(g,We):Me(g,We)),g.j=0,g.runningState=7;continue;case 7:if(g.trivialLiteralContext!==0)for(;g.j2030&&(T=Z(g),T<0))return T;if(g.literalBlockLength===0&&K(g),g.literalBlockLength--,g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),O[g.pos]=k(g.literalTreeGroup,g.literalTreeIdx,g),g.pos++,g.j++,g.pos>=R){g.nextRunningState=7,g.runningState=12;break}}else{let tn=O[g.pos-1&P]&255,et=O[g.pos-2&P]&255;for(;g.j2030&&(T=Z(g),T<0))return T;g.literalBlockLength===0&&K(g);const Ln=Qe[g.contextLookupOffset1+tn]|Qe[g.contextLookupOffset2+et],Ya=g.contextMap[g.contextMapSlice+Ln]&255;if(g.literalBlockLength--,et=tn,g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),tn=k(g.literalTreeGroup,Ya,g),O[g.pos]=tn,g.pos++,g.j++,g.pos>=R){g.nextRunningState=7,g.runningState=12;break}}}if(g.runningState!==7)continue;if(g.metaBlockLength-=g.insertLength,g.metaBlockLength<=0){g.runningState=4;continue}let at=g.distanceCode;if(at<0)g.distance=g.rings[g.distRbIdx];else{if(g.halfOffset>2030&&(T=Z(g),T<0))return T;g.distanceBlockLength===0&&me(g),g.distanceBlockLength--,g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const tn=g.distContextMap[g.distContextMapSlice+at]&255;if(at=k(g.distanceTreeGroup,tn,g),at<16){const et=g.distRbIdx+n[at]&3;if(g.distance=g.rings[et]+s[at],g.distance<0)return Ie(g,-12)}else{const et=g.distExtraBits[at];let Ln;g.bitOffset+et<=32?Ln=ce(g,et):(g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),Ln=et<=16?ce(g,et):Me(g,et)),g.distance=g.distOffset[at]+(Ln<g.maxDistance){g.runningState=9;continue}if(at>0&&(g.distRbIdx=g.distRbIdx+1&3,g.rings[g.distRbIdx]=g.distance),g.copyLength>g.metaBlockLength)return Ie(g,-9);g.j=0,g.runningState=8;continue;case 8:let ct=g.pos-g.distance&P,mt=g.pos;const Dt=g.copyLength-g.j,as=ct+Dt,On=mt+Dt;if(asmt&&On>ct){const tn=Dt+3>>2;for(let et=0;et=R){g.nextRunningState=8,g.runningState=12;break}g.runningState===8&&(g.runningState=4);continue;case 9:if(T=z(g,R),T<0)return T;continue;case 14:if(g.pos+=he(g,R),g.pos>=R)return g.nextRunningState=14,g.runningState=12,2;g.runningState=4;continue;case 5:for(;g.metaBlockLength>0;){if(g.halfOffset>2030&&(T=Z(g),T<0))return T;g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),ce(g,8),g.metaBlockLength--}g.runningState=2;continue;case 6:if(T=$e(g),T<0)return T;continue;case 12:g.ringBufferBytesReady=Math.min(g.pos,g.ringBufferSize),g.runningState=13;continue;case 13:if(T=tt(g),T!==0)return T;g.pos>=g.maxBackwardDistance&&(g.maxDistance=g.maxBackwardDistance),g.pos>=g.ringBufferSize&&(g.pos>g.ringBufferSize&&O.copyWithin(0,g.ringBufferSize,g.pos),g.pos=g.pos&P,g.ringBufferBytesWritten=0),g.runningState=g.nextRunningState;continue;default:return Ie(g,-28)}return g.runningState!==10?Ie(g,-29):g.metaBlockLength<0?Ie(g,-10):(T=Je(g),T!==0||(T=we(g,1),T!==0)?T:1)}function Fe(g,T,R){this.numTransforms=0,this.triplets=new Int32Array(0),this.prefixSuffixStorage=new Int8Array(0),this.prefixSuffixHeads=new Int32Array(0),this.params=new Int16Array(0),this.numTransforms=g,this.triplets=new Int32Array(g*3),this.params=new Int16Array(g),this.prefixSuffixStorage=new Int8Array(T),this.prefixSuffixHeads=new Int32Array(R+1)}const Ee=new Fe(121,167,50);function _e(g,T,R,P,O){const ne=Ae(P),xe=ne.length;let ve=1,Ge=0;for(let Ze=0;Ze# +#]# for # a # that #. # with #'# from # by #. The # on # as # is #ing # + #:#ed #(# at #ly #="# of the #. This #,# not #er #al #='#ful #ive #less #est #ize #ous #`,` !! ! , *! &! " ! ) * * - ! # ! #!*! + ,$ ! - % . / # 0 1 . " 2 3!* 4% ! # / 5 6 7 8 0 1 & $ 9 + : ; < ' != > ?! 4 @ 4 2 & A *# ( B C& ) % ) !*# *-% A +! *. D! %' & E *6 F G% ! *A *% H! D I!+! J!+ K +- *4! A L!*4 M N +6 O!*% +.! K *G P +%( ! G *D +D Q +# *K!*G!+D!+# +G +A +4!+% +K!+4!*D!+K!*K`);function Ue(g,T,R,P,O,ne,xe){let ve=T;const Ge=ne.triplets,Ze=ne.prefixSuffixStorage,We=ne.prefixSuffixHeads,at=3*xe,ct=Ge[at],mt=Ge[at+1],Dt=Ge[at+2];let as=We[ct];const On=We[ct+1];let tn=We[Dt];const et=We[Dt+1];let Ln=mt-11,Ya=mt;for((Ln<1||Ln>9)&&(Ln=0),(Ya<1||Ya>9)&&(Ya=0);as!==On;)g[ve++]=Ze[as++];let zt=O;Ln>zt&&(Ln=zt);let Hu=P+Ln;zt-=Ln,zt-=Ya;let il=zt;for(;il>0;)g[ve++]=R[Hu++],il--;if(mt===10||mt===11){let St=ve-zt;for(mt===10&&(zt=1);zt>0;){const ka=g[St]&255;ka<192?(ka>=97&&ka<=122&&(g[St]=g[St]^32),St+=1,zt-=1):ka<224?(g[St+1]=g[St+1]^32,St+=2,zt-=2):(g[St+2]=g[St+2]^5,St+=3,zt-=3)}}else if(mt===21||mt===22){let St=ve-zt;const ka=ne.params[xe];let Hn=(ka&32767)+(16777216-(ka&32768));for(;zt>0;){let Vs=1;const Rs=g[St]&255;if(Rs<128)Hn+=Rs,g[St]=Hn&127;else if(!(Rs<192)){if(Rs<224)if(zt>=2){const $s=g[St+1];Hn+=$s&63|(Rs&31)<<6,g[St]=192|Hn>>6&31,g[St+1]=$s&192|Hn&63,Vs=2}else Vs=zt;else if(Rs<240)if(zt>=3){const $s=g[St+1],Ri=g[St+2];Hn+=Ri&63|($s&63)<<6|(Rs&15)<<12,g[St]=224|Hn>>12&15,g[St+1]=$s&192|Hn>>6&63,g[St+2]=Ri&192|Hn&63,Vs=3}else Vs=zt;else if(Rs<248)if(zt>=4){const $s=g[St+1],Ri=g[St+2],rl=g[St+3];Hn+=rl&63|(Ri&63)<<6|($s&63)<<12|(Rs&7)<<18,g[St]=240|Hn>>18&7,g[St+1]=$s&192|Hn>>12&63,g[St+2]=Ri&192|Hn>>6&63,g[St+3]=rl&192|Hn&63,Vs=4}else Vs=zt}St+=Vs,zt-=Vs,mt===21&&(zt=0)}}for(;tn!==et;)g[ve++]=Ze[tn++];return ve-T}function Ne(g,T){let R=1<>1;return(g&R-1)+R}function He(g,T,R,P,O){let ne=P;for(;ne>0;)ne-=R,g[T+ne]=O}function W(g,T,R){let P=T,O=1<0;)He(g,ne+ct,Dt,We,et<<16|xe[mt++]),ct=Ne(ct,et),ve[et]--;const as=at-1;let On=-1,tn=ne;Dt=1;for(let et=R+1;et<=15;++et)for(Dt=Dt<<1;ve[et]>0;)(ct&as)!==On&&(tn+=We,Ze=W(ve,et,R),We=1<>R),Dt,We,et-R<<16|xe[mt++]),ct=Ne(ct,et),ve[et]--;return at}function Z(g){if(g.endOfStreamReached!==0)return ot(g)>=-2?0:Ie(g,-16);const T=g.halfOffset<<1;let R=4096-T;for(g.byteBuffer.copyWithin(0,T,4096),g.halfOffset=0;R<4096;){const P=4096-R,O=Ks(g,g.byteBuffer,R,P);if(O<-1)return O;if(O<=0){g.endOfStreamReached=1,g.tailBytes=R,R+=1;break}R+=O}return Ft(g,R),0}function we(g,T){if(g.endOfStreamReached===0)return 0;const R=(g.halfOffset<<1)+(g.bitOffset+7>>3)-4;return R>g.tailBytes?Ie(g,-13):T!==0&&R!==g.tailBytes?Ie(g,-17):0}function ce(g,T){const R=g.accumulator32>>>g.bitOffset&(1<>>16,g.bitOffset-=16,R|ce(g,T-16)<<16}function qe(g){return g.byteBuffer=new Int8Array(4160),g.accumulator32=0,g.shortBuffer=new Int16Array(2080),g.bitOffset=32,g.halfOffset=2048,g.endOfStreamReached=0,Le(g)}function Le(g){if(g.halfOffset>2030){const R=Z(g);if(R!==0)return R}let T=we(g,0);return T!==0?T:(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16,g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16,0)}function Ce(g){return g.bitOffset===32?Le(g):0}function Je(g){const T=32-g.bitOffset&7;return T!==0&&ce(g,T)!==0?Ie(g,-5):0}function ot(g){let T=2048;return g.endOfStreamReached!==0&&(T=g.tailBytes+1>>1),T-g.halfOffset}function lt(g,T,R,P){let O=R,ne=P;if((g.bitOffset&7)!==0)return Ie(g,-30);for(;g.bitOffset!==32&&ne!==0;)T[O++]=g.accumulator32>>>g.bitOffset,g.bitOffset+=8,ne--;if(ne===0)return 0;const xe=Math.min(ot(g),ne>>1);if(xe>0){const ve=g.halfOffset<<1,Ge=xe<<1;T.set(g.byteBuffer.subarray(ve,ve+Ge),O),O+=Ge,ne-=Ge,g.halfOffset+=xe}if(ne===0)return 0;if(ot(g)>0){for(g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);ne!==0;)T[O++]=g.accumulator32>>>g.bitOffset,g.bitOffset+=8,ne--;return we(g,0)}for(;ne>0;){const ve=Ks(g,T,O,ne);if(ve<-1)return ve;if(ve<=0)return Ie(g,-16);O+=ve,ne-=ve}return 0}function Ft(g,T){const R=g.byteBuffer,P=T>>1,O=g.shortBuffer;for(let ne=0;ne>2,g[1792+O]=2+(O>>6);for(let O=0;O<128;++O)g[1024+O]=4*(T.charCodeAt(O)-32);for(let O=0;O<64;++O)g[1152+O]=O&1,g[1216+O]=2+(O&1);let P=1280;for(let O=0;O<19;++O){const ne=O&3,xe=R.charCodeAt(O)-32;for(let ve=0;ve>1;for(let We=0;We!pfwp6s{8-ip<73s{je#+pllmpfbwmlmfwvafyfqlpfmwqffgeb`wjmwldjewkbqn2;s{`bnfkjooalogyllnuljgfbpzqjmdejoosfbhjmjw`lpw0s{8ib`hwbdpajwpqloofgjwhmftmfbq?"..dqltIPLMgvwzMbnfpbofzlv#olwpsbjmibyy`logfzfpejpkttt-qjphwbapsqfu23s{qjpf16s{Aovfgjmd033/abooelqgfbqmtjogal{-ebjqob`hufqpsbjqivmfwf`kje+"sj`hfujo\'+! tbqnolqgglfpsvoo/333jgfbgqbtkvdfpslwevmgavqmkqfe`foohfzpwj`hklvqolppevfo21s{pvjwgfboQPP!bdfgdqfzDFW!fbpfbjnpdjqobjgp;s{8mbuzdqjgwjsp :::tbqpobgz`bqp*8#~sksolpfmvooubpwtjmgQPP#tfbqqfozaffmpbnfgvhfmbpb`bsftjpkdvoeW109kjwppolwdbwfhj`haovqwkfz26s{$$*8*8!=npjftjmpajqgplqwafwbpffhW2;9lqgpwqffnboo53s{ebqnlupalzpX3^-$*8!SLPWafbqhjgp*8~~nbqzwfmg+VH*rvbgyk9\n.pjy....sqls$*8ojewW2:9uj`fbmgzgfaw=QPPsllomf`haoltW259gllqfuboW249ofwpebjolqbosloomlub`lopdfmf#lxplewqlnfwjooqlpp?k0=slvqebgfsjmh?wq=njmj*"+njmfyk9abqpkfbq33*8njoh#..=jqlmeqfggjphtfmwpljosvwp,ip,klozW119JPAMW139bgbnpffp?k1=iplm$/#$`lmwW129#QPPollsbpjbnllm?,s=plvoOJMFelqw`bqwW279?k2=;3s{"..?:s{8W379njhf975Ymj`fjm`kZlqhqj`fyk9\b$**8svqfnbdfsbqbwlmfalmg904Y\\le\\$^*8333/yk9\vwbmhzbqgaltoavpk965YIbub03s{ ~ &@0&907YifeeF[SJ`bpkujpbdloepmltyk9rvfq-`pppj`hnfbwnjm-ajmggfookjqfsj`pqfmw905YKWWS.132elwltloeFMG#{al{967YALGZgj`h8 ~ f{jw906Yubqpafbw$~*8gjfw:::8bmmf~~?,Xj^-Obmdhn.^tjqfwlzpbggppfbobof{8 \n~f`klmjmf-lqd336*wlmziftppbmgofdpqlle333*#133tjmfdfbqgldpallwdbqz`vwpwzofwfnswjlm-{no`l`hdbmd\'+$-63s{Sk-Gnjp`bobmolbmgfphnjofqzbmvmj{gjp`*8~ gvpw`ojs*- 43s{.133GUGp4^=?wbsfgfnlj((*tbdffvqlskjolswpklofEBRpbpjm.15WobapsfwpVQO#avoh`llh8~ KFBGX3^*baaqivbm+2:;ofpkwtjm?,j=plmzdvzpev`hsjsf. "331*mgltX2^8X^8 Old#pbow \n\nabmdwqjnabwk*x 33s{ ~*8hl9\0effpbg=p9,,#X^8wloosovd+*x x #-ip$133sgvboalbw-ISD*8 ~rvlw*8 $*8  ~1327132613251324132;132:13131312131113101317131613151314131;131:130313021301130013071306130513041320132113221323133:133;133413351336133713301331133213332:::2::;2::42::52::62::72::02::12::22::32:;:2:;;2:;42:;52:;62:;72:;02:;12:;22:;32:4:2:4;2:442:452:462:472:402:412:422:432:5:2:5;2:542:552:562:572:502:512:522:532:6:2:6;2:642:652:662:672:602:612:622:632333231720:73333::::`lnln/Mpfpwffpwbsfqlwlglkb`f`bgbb/]lajfmg/Abbp/Aujgb`bpllwqlelqlplollwqb`vbogjilpjgldqbmwjslwfnbgfafbodlrv/Efpwlmbgbwqfpsl`l`bpbabilwlgbpjmlbdvbsvfpvmlpbmwfgj`fovjpfoobnbzlylmbbnlqsjpllaqb`oj`foolgjlpklqb`bpj<[<\\!sbqhpnlvpfNlpw#---?,bnlmdaqbjmalgz#mlmf8abpfg`bqqzgqbewqfefqsbdf\\klnf-nfwfqgfobzgqfbnsqlufiljmw?,wq=gqvdp?"..#bsqjojgfboboofmf{b`welqwk`lgfpoldj`Ujft#pffnpaobmhslqwp#+133pbufg\\ojmhdlbopdqbmwdqffhklnfpqjmdpqbwfg03s{8tklpfsbqpf+*8!#Aol`hojmv{ilmfpsj{fo$*8!=*8je+.ofewgbujgklqpfEl`vpqbjpfal{fpWqb`hfnfmw?,fn=abq!=-pq`>wltfqbow>!`baofkfmqz17s{8pfwvsjwbozpkbqsnjmlqwbpwftbmwpwkjp-qfpfwtkffodjqop,`pp,233&8`ovappwveeajaofulwfp#2333hlqfb~*8 abmgprvfvf>#x~8;3s{8`hjmdx \n\nbkfbg`ol`hjqjpkojhf#qbwjlpwbwpElqn!zbkll*X3^8Balvwejmgp?,k2=gfavdwbphpVQO#>`foop~*+*821s{8sqjnfwfoopwvqmp3{533-isd!psbjmafb`kwb{fpnj`qlbmdfo..=?,djewppwfuf.ojmhalgz-~*8 \nnlvmw#+2::EBR?,qldfqeqbmh@obpp1;s{8effgp?k2=?p`lwwwfpwp11s{8gqjmh*##oftjppkboo 30:8#elq#olufgtbpwf33s{8ib9npjnlm?elmwqfsoznffwpvmwfq`kfbswjdkwAqbmg*#">#gqfpp`ojspqllnplmhfznlajonbjm-Mbnf#sobwfevmmzwqffp`ln,!2-isdtnlgfsbqbnPWBQWofew#jggfm/#132*8 ~ elqn-ujqvp`kbjqwqbmptlqpwSbdfpjwjlmsbw`k?".. l.`b`ejqnpwlvqp/333#bpjbmj((*xbglaf$*X3^jg>23alwk8nfmv#-1-nj-smd!hfujm`lb`k@kjogaqv`f1-isdVQO*(-isdpvjwfpoj`fkbqqz213!#ptffwwq= mbnf>gjfdlsbdf#ptjpp..= eee8!=Old-`ln!wqfbwpkffw*#%%#27s{8poffsmwfmwejofgib9ojg>!`Mbnf!tlqpfpklwp.al{.gfowb %ow8afbqp97;Y?gbwb.qvqbo?,b=#psfmgabhfqpklsp>#!!8sks!=`wjlm20s{8aqjbmkfoolpjyf>l>&1E#iljmnbzaf?jnd#jnd!=/#eipjnd!#!*X3^NWlsAWzsf!mftozGbmph`yf`kwqbjohmltp?,k6=ebr!=yk.`m23*8 .2!*8wzsf>aovfpwqvozgbujp-ip$8= ?"pwffo#zlv#k1= elqn#ifpvp233&#nfmv- \n tbofpqjphpvnfmwggjmda.ojhwfb`kdje!#ufdbpgbmphffpwjpkrjspvlnjplaqfgfpgffmwqfwlglpsvfgfb/]lpfpw/Mwjfmfkbpwblwqlpsbqwfglmgfmvfulkb`fqelqnbnjpnlnfilqnvmglbrv/Ag/Abpp/_olbzvgbef`kbwlgbpwbmwlnfmlpgbwlplwqbppjwjlnv`klbklqbovdbqnbzlqfpwlpklqbpwfmfqbmwfpelwlpfpwbpsb/Apmvfubpbovgelqlpnfgjlrvjfmnfpfpslgfq`kjofpfq/Muf`fpgf`jqilp/Efpwbqufmwbdqvslkf`klfoolpwfmdlbnjdl`lpbpmjufodfmwfnjpnbbjqfpivojlwfnbpkb`jbebulqivmjlojaqfsvmwlavfmlbvwlqbaqjoavfmbwf{wlnbqylpbafqojpwbovfdl`/_nlfmfqlivfdlsfq/Vkbafqfpwlzmvm`bnvifqubolqevfqbojaqldvpwbjdvboulwlp`bplpdv/Absvfglplnlpbujplvpwfggfafmml`kfavp`bebowbfvqlppfqjfgj`kl`vqpl`obuf`bpbpof/_msobylobqdllaqbpujpwbbslzlivmwlwqbwbujpwl`qfbq`bnslkfnlp`jm`l`bqdlsjplplqgfmkb`fm/Mqfbgjp`lsfgql`fq`bsvfgbsbsfonfmlq/Vwjo`obqlilqdf`boofslmfqwbqgfmbgjfnbq`bpjdvffoobppjdol`l`kfnlwlpnbgqf`obpfqfpwlmj/]lrvfgbsbpbqabm`lkjilpujbifsbaol/Epwfujfmfqfjmlgfibqelmgl`bmbomlqwfofwqb`bvpbwlnbqnbmlpovmfpbvwlpujoobufmglsfpbqwjslpwfmdbnbq`loofubsbgqfvmjglubnlpylmbpbnalpabmgbnbqjbbavplnv`kbpvajqqjlibujujqdqbgl`kj`bboo/Ailufmgj`kbfpwbmwbofppbojqpvfolsfplpejmfpoobnbavp`l/Epwboofdbmfdqlsobybkvnlqsbdbqivmwbglaofjpobpalopbab/]lkbaobov`kb/mqfbgj`fmivdbqmlwbpuboofboo/M`bqdbglolqbabilfpw/Edvpwlnfmwfnbqjlejqnb`lpwlej`kbsobwbkldbqbqwfpofzfpbrvfonvpflabpfpsl`lpnjwbg`jfol`kj`lnjfgldbmbqpbmwlfwbsbgfafpsobzbqfgfppjfwf`lqwf`lqfbgvgbpgfpflujfilgfpfbbdvbp%rvlw8glnbjm`lnnlmpwbwvpfufmwpnbpwfqpzpwfnb`wjlmabmmfqqfnlufp`qloovsgbwfdolabonfgjvnejowfqmvnafq`kbmdfqfpvowsvaoj`p`qffm`kllpfmlqnbowqbufojppvfpplvq`fwbqdfwpsqjmdnlgvofnlajofptjw`ksklwlpalqgfqqfdjlmjwpfoepl`jbob`wjuf`lovnmqf`lqgelooltwjwof=fjwkfqofmdwkebnjozeqjfmgobzlvwbvwklq`qfbwfqfujftpvnnfqpfqufqsobzfgsobzfqf{sbmgsloj`zelqnbwglvaofsljmwppfqjfpsfqplmojujmdgfpjdmnlmwkpelq`fpvmjrvftfjdkwsflsoffmfqdzmbwvqfpfbq`kejdvqfkbujmd`vpwlnleepfwofwwfqtjmgltpvanjwqfmgfqdqlvspvsolbgkfbowknfwklgujgflpp`klloevwvqfpkbgltgfabwfubovfpLaif`wlwkfqpqjdkwpofbdvf`kqlnfpjnsofmlwj`fpkbqfgfmgjmdpfbplmqfslqwlmojmfprvbqfavwwlmjnbdfpfmbaofnlujmdobwfpwtjmwfqEqbm`fsfqjlgpwqlmdqfsfbwOlmglmgfwbjoelqnfggfnbmgpf`vqfsbppfgwlddofsob`fpgfuj`fpwbwj``jwjfppwqfbnzfooltbwwb`hpwqffweojdkwkjggfmjmel!=lsfmfgvpfevouboofz`bvpfpofbgfqpf`qfwpf`lmggbnbdfpslqwpf{`fswqbwjmdpjdmfgwkjmdpfeef`wejfogppwbwfpleej`fujpvbofgjwlqulovnfQfslqwnvpfvnnlujfpsbqfmwb``fppnlpwoznlwkfq!#jg>!nbqhfwdqlvmg`kbm`fpvqufzafelqfpznalonlnfmwpsff`knlwjlmjmpjgfnbwwfq@fmwfqlaif`wf{jpwpnjggofFvqlsfdqltwkofdb`znbmmfqfmlvdk`bqffqbmptfqlqjdjmslqwbo`ojfmwpfof`wqbmgln`olpfgwlsj`p`lnjmdebwkfqlswjlmpjnsozqbjpfgfp`bsf`klpfm`kvq`kgfejmfqfbplm`lqmfqlvwsvwnfnlqzjeqbnfsloj`fnlgfopMvnafqgvqjmdleefqppwzofphjoofgojpwfg`boofgpjoufqnbqdjmgfofwfafwwfqaqltpfojnjwpDolabopjmdoftjgdfw`fmwfqavgdfwmltqbs`qfgjw`objnpfmdjmfpbefwz`klj`fpsjqjw.pwzofpsqfbgnbhjmdmffgfgqvppjbsofbpff{wfmwP`qjswaqlhfmbooltp`kbqdfgjujgfeb`wlqnfnafq.abpfgwkflqz`lmejdbqlvmgtlqhfgkfosfg@kvq`kjnsb`wpklvogbotbzpoldl!#alwwlnojpw!=*xubq#sqfej{lqbmdfKfbgfq-svpk+`lvsofdbqgfmaqjgdfobvm`kQfujftwbhjmdujpjlmojwwofgbwjmdAvwwlmafbvwzwkfnfpelqdlwPfbq`kbm`klqbonlpwolbgfg@kbmdfqfwvqmpwqjmdqfolbgNlajofjm`lnfpvssozPlvq`flqgfqpujftfg%maps8`lvqpfBalvw#jpobmg?kwno#`llhjfmbnf>!bnbylmnlgfqmbguj`fjm?,b=9#Wkf#gjboldklvpfpAFDJM#Nf{j`lpwbqwp`fmwqfkfjdkwbggjmdJpobmgbppfwpFnsjqfP`kllofeelqwgjqf`wmfbqoznbmvboPfof`w- Lmfiljmfgnfmv!=SkjojsbtbqgpkbmgofjnslqwLeej`fqfdbqgphjoopmbwjlmPslqwpgfdqfftffhoz#+f-d-afkjmggl`wlqolddfgvmjwfg?,a=?,afdjmpsobmwpbppjpwbqwjpwjppvfg033s{`bmbgbbdfm`zp`kfnfqfnbjmAqbyjopbnsofoldl!=afzlmg.p`bofb``fswpfqufgnbqjmfEllwfq`bnfqb?,k2= \\elqn!ofbufppwqfpp!#,= -dje!#lmolbgolbgfqL{elqgpjpwfqpvqujuojpwfmefnbofGfpjdmpjyf>!bssfbowf{w!=ofufopwkbmhpkjdkfqelq`fgbmjnbobmzlmfBeqj`bbdqffgqf`fmwSflsof?aq#,=tlmgfqsqj`fpwvqmfg#x~8nbjm!=jmojmfpvmgbztqbs!=ebjofg`fmpvpnjmvwfafb`lmrvlwfp263s{fpwbwfqfnlwffnbjo!ojmhfgqjdkw8pjdmboelqnbo2-kwnopjdmvssqjm`feolbw9-smd!#elqvn-B``fppsbsfqpplvmgpf{wfmgKfjdkwpojgfqVWE.;!%bns8#Afelqf-#TjwkpwvgjlltmfqpnbmbdfsqlejwiRvfqzbmmvbosbqbnpalvdkwebnlvpdlldofolmdfqj((*#xjpqbfopbzjmdgf`jgfklnf!=kfbgfqfmpvqfaqbm`ksjf`fpaol`h8pwbwfgwls!=?qb`jmdqfpjyf..%dw8sb`jwzpf{vboavqfbv-isd!#23/333lawbjmwjwofpbnlvmw/#Jm`-`lnfgznfmv!#ozqj`pwlgbz-jmgffg`lvmwz\\oldl-EbnjozollhfgNbqhfwopf#jeSobzfqwvqhfz*8ubq#elqfpwdjujmdfqqlqpGlnbjm~fopfxjmpfqwAold?,ellwfqoldjm-ebpwfqbdfmwp?algz#23s{#3sqbdnbeqjgbzivmjlqgloobqsob`fg`lufqpsovdjm6/333#sbdf!=alpwlm-wfpw+bubwbqwfpwfg\\`lvmwelqvnpp`kfnbjmgf{/ejoofgpkbqfpqfbgfqbofqw+bssfbqPvanjwojmf!=algz!= )#WkfWklvdkpffjmdifqpfzMftp?,ufqjezf{sfqwjmivqztjgwk>@llhjfPWBQW#b`qlpp\\jnbdfwkqfbgmbwjufsl`hfwal{!= Pzpwfn#Gbujg`bm`fqwbaofpsqlufgBsqjo#qfboozgqjufqjwfn!=nlqf!=albqgp`lolqp`bnsvpejqpw##X^8nfgjb-dvjwbqejmjpktjgwk9pkltfgLwkfq#-sks!#bppvnfobzfqptjoplmpwlqfpqfojfeptfgfm@vpwlnfbpjoz#zlvq#Pwqjmd Tkjowbzolq`ofbq9qfplqweqfm`kwklvdk!*#(#!?algz=avzjmdaqbmgpNfnafqmbnf!=lssjmdpf`wlq6s{8!=upsb`fslpwfqnbilq#`leeffnbqwjmnbwvqfkbssfm?,mbu=hbmpbpojmh!=Jnbdfp>ebopftkjof#kpsb`f3%bns8# Jm##sltfqSlophj.`lolqilqgbmAlwwlnPwbqw#.`lvmw1-kwnomftp!=32-isdLmojmf.qjdkwnjoofqpfmjlqJPAM#33/333#dvjgfpubovf*f`wjlmqfsbjq-{no!##qjdkwp-kwno.aol`hqfdF{s9klufqtjwkjmujqdjmsklmfp?,wq=vpjmd# \nubq#=$*8 \n?,wg= ?,wq= abkbpbaqbpjodbofdlnbdzbqslophjpqsphj4]4C5d\bTA\nzk\vBl\bQ\vUmGx\bSM\nmC\bTA wQ\nd}\bW@\bTl\bTF i@ cT\vBM\v|jBV qw cC\bWI\npa fM\n{Z{X\bTF\bVV\bVK mkF []\bPm\bTv\nsI\vpg [I\bQpmx\v_W\n^M\npe\vQ}\vGu\nel\npeChBV\bTA So\nzk\vGL\vxD\nd[JzMY\bQpli\nfl\npC{BNt\vwT i_\bTgQQ\n|p\vXN\bQS\vxDQC\bWZ pD\vVS\bTWNtYh\nzuKjN} wr Ha\n_D j`\vQ}\vWp\nxZ{c ji BU\nbDa| Tn pV\nZd\nmC\vEV{X c} To\bWl\bUd IQ cg\vxs\nXW wR\vek c} ]y Jn\nrp\neg\npV\nz\\{W\npl\nz\\\nzU Pc `{\bV@\nc|\bRw i_\bVb\nwX HvSu\bTF\v_W\vWs\vsIm\nTT\ndc US }f iZ\bWz c}MD Be iD\v@@\bTl\bPv }tSwM`\vnU kW\ved\nqo\vxY A|\bTz\vy`BRBM iaXU\nyun^ fL iI\nXW fD\bWz\bW@ yj m av BN\vb\\ pD\bTf\nY[ Jn\bQy [^\vWc\vyuDlCJ\vWj\vHR `V\vuW Qy\np@\vGuplJm\bW[\nLP\nxC\n`m wQuiR\nbI wQ BZ WVBR\npg cgtiCW\n_y Rg\bQa\vQB\vWc\nYble\ngESu\nL[ Q ea dj\v]W\nb~M` wL\bTV\bVH\nt\npl |bs_\bU|\bTaoQlvSkM`\bTv\vK}\nfl cCoQBR Hk |d\bQp HK BZ\vHR\bPv\vLx\vEZ\bT\bTv iDoDMU\vwBSuk`St\ntC Pl Kg\noi jY\vxYh}\nzk\bWZ m\ve` TB fE\nzk `zYh\nV| HK AJ AJ\bUL p\\ ql\nYcKd\nfyYh [I\vDgJm\n]n\nlb\bUd\n{Z lu fsoQ\bTWJm\vwB eaYhBC sb Tn\nzU\n_y\vxY Q]\ngwmt O\\\ntb\bWW\bQy mI V[\ny\\\naB\vRb wQ\n]QQJ\bWg\vWa\bQj\ntC\bVH\nYm\vxs\bVK\nel\bWI\vxYCq\ntR\vHV\bTl\bVw ay\bQa\bVV }t dj\nr| p\\ wR\n{i\nTT [I i[ AJ\vxs\v_W d{\vQ} cg Tz A| Cj\vLmN}m\nbK dZ p\\ `V sV\np@ iD wQ\vQ}\bTfkaJm\v@@\bV` zp\n@NSw iI cg\noiSu\bVwloCy c}\vb\\ sUBA\bWI\bTf\nxS Vp\nd|\bTV\vbC NoJu\nTC |`\n{Z D]\bU| c}lm\bTl Bv Pl c}\bQp m\nLk kj\n@NSbKO j_ p\\\nzU\bTl\bTg\bWI cfXO\bWW\ndzli BN\nd[\bWOMD\vKC dj I_\bVV\ny\\\vLmxl xB kV\vb\\\vJW\vVS Vx\vxD d{MD\bTa |`\vPzR}\vWsBM\nsICN\bTaJm\npe i_\npV\nrh Rd Hv\n~A\nxR\vWh\vWk\nxS\vAz\vwX\nbIoQ fw\nqI\nV|\nunz\vpg d\\\voA{D i_xB\bT `Vqr TTg]CA\vuR VJ T`\npw\vRb I_\nCxRo\vsICjKh Bv WVBBoD{D\nhcKm\v^R QE\n{I\np@\nc|Gt c}Dl\nzUqN sVk} Hh\v|j\nqou| Q]\vekZM`St\npe dj\bVG\veE m\vWc|I\n[W fL\bT BZSu\vKaCqNtY[\nqI\bTv fM i@ }fB\\ Qy\vBl\bWgXDkc\vx[\bVV Q] a Py\vxD\nfI }foD dj SGls ~DCN\n{Z \\v\n_D\nhc\vx_C[ AJ\nLM VxCI bj c^ cF\ntCSx wrXA\bU\\ |a\vK\\\bTV\bVj\nd| fsCX\ntb\bRw Vx AE A|\bTNt\vDg Vc\bTld@\npo M cF\npe iZ Bo\bSq\nfHl`\bTx\bWf HE\vF{ cO fD\nlm\vfZ\nlm\veU dGBH\bTV SiMW\nwX\nz\\ \\cCX\nd} l}\bQp\bTV F~\bQ `i\ng@nO\bUd\bTl\nL[ wQ ji\ntC |J\nLU\naB\vxYKj AJuN i[\npeSk\vDg\vx]\bVb\bVV\nea kV\nqI\bTaSk\nAO pD\ntb\nts\nyi\bVg i_\v_W\nLkNt yj fMR iI\bTl\vwX sV\vMl\nyu AJ\bVjKO WV\vA}\vW\nrp iD\v|olv\vsIBM d~ CU\bVbeV\npC\vwT j` c}\vxs\vps\vvh WV\vGg\vAe\vVK\v]W rg\vWcF` Br\vb\\ dZ\bQp\nqIkF\nLk\vAR\bWI\bTg bs dw\n{L\n_y iZ\bTA lg\bVV\bTl dk\n`k a{ i_{Awj wN\v@@\bTe i_\n_D wL\nAH\viK\vek\n[] p_ yj\bTv US [r\n{I\npsGt\vVK\nplS}\vWP |dMD\vHV\bTR}M`\bTV\bVHlvCh\bW[Ke R{\v^R ab BZ VA B`\nd|\nhsKe BeOi R{ d\\nB\bWZ dZ VJOs muQ\vhZQ@QQ\nfI\bW[B\\li\nzU\nMdM`\nxS\bVV\n\\}\vxD m\bTpIS\nc| kVi~ V{\vhZ |b\bWt\n@R\voA\vnU\bWI ea B` iD c} TzBR\vQBNj CP [I\bTv `WuN\vpg\vpg\vWc iT bs wL U_ c\\ |h\vKa Nr fL\nq|\nzu\nz\\ Nr\bUg |bm`\bTv\nyd\nrp\bWf UXBV\nzk\nd} wQ }fCe\ved\bTW\bSB\nxU cn\bTb\ne a\\ SG\bU|\npV\nN\\Kn\vnU At pD\v^R\vIrb[ R{ dE\vxD\vWK\vWA\bQL\bW@Su\bUd\nDM PcCADloQ Hswiub\na\bQpOb\nLP\bTlY[\vK} AJ\bQn^\vsA\bSM\nqM\bWZ\n^W\vz{S| fD\bVK\bTv\bPvBB CPdF id\vxsmx\vws cC\ntC ycM`\vW\nrh\bQp\vxD\\o\nsI_k\nzukF fDXsXO jp\bTvBS{B Br\nzQ\nbI c{BDBVnO\bTF caJd fL PV I_\nlK`o wX\npa gu\bP}{^\bWf\n{I BN\npaKl\vpg cn fL\vvhCq\bTl\vnU\bSqCm wR\bUJ\npe\nyd\nYgCy\vKW fD\neaoQ j_ BvnM\vID\bTa\nzApl\n]n\bTa R{ fr\n_y\bUg{Xkk\vxD|Ixl\nfyCe\vwB\nLk\vd]\noi\n}h Q]\npe\bVwHkOQ\nzk AJ\npV\bPv\ny\\ A{Oi\bSBXA\veE jp\nq} iDqN\v^R m iZ Br\bVg\noi\n\\X U_\nc|\vHV\bTf Tn\\N\\N\nuBlv\nyu Td\bTf\bPL\v]W dG\nA`\nw^\ngI\npe dw\nz\\ia\bWZ cFJm\n{Z\bWO_kDfRR d\\\bVV\vxsBNtilm Td ]y\vHV So\v|jXX A|\vZ^\vGu\bTWM`kF\vhZ\vVK dG\vBl ay\nxUqEnO\bVw\nqICX\ne Pl\bWO\vLm dLuHCm dTfn\vwBka\vnU\n@M\nyT Hv \\}Kh d~Yhk}\neR d\\\bWI |b HK iD\bTWMY\npl\bQ_ wr\vAx HE\bTg\bSqvp\vb\\\bWO\nOl\nsI\nfy\vID \\c\n{Z\n^~\npe\nAO TT\vxvk_\bWO\v|j\vwB Qy i@ Pl Ha dZk}ra UT\vJc\ved\np@ QN\nd| kj HkM`\noi wr d\\\nlq\no_\nlb\nL[ acBBBHCm\npl IQ\bVK\vxs\n`e\viK\npaOi US\bTp fD\nPGkkXA\nz\\\neg\vWh wRqN\nqS cnlo\nxS\n^W BU\nt HE p\\ fF fw\bVV\bW@ ak\vVKls VJ\bVV\veE\\o\nyX\nYmM`lL\nd|\nzk A{sE wQXT\nt Pl ]y\vwT{pMD\vb\\ Q]Kj Jn\nAH\vRb BU HK \\c\nfIm\nqM\n@R So\noiBT Hv\n_yKh BZ ]i\bUJ V{Sr\nbI\vGg a_\bTR\nfI\nfl [K IIS|\vuW iI\bWI\nqI\v|jBV\bVg\bWZkF\vx]\bTA ab fr i@ Jd Jd\vps\nAO\bTaxu iD\nzk |d |`\bW[ lP dG\bVV\vw}\vqO i[\bQ\bTz\vVF wNts dw\bTv\neS\ngi NryS\npe\bVV\bSq\n`m yj BZ\vWX\bSB c\\\nUR [J c_nM\bWQ\vAx\nMd Brui\vxY\bSM\vWc\v|j\vxs }Q BO\bPL\bWW fM\nAO Pc\veUe^\bTg\nqI ac\bPv cFoQ Q\vhZka\nz\\ iK BU\n`k CPS|M`\n{I S{_O BZZiSk ps p\\\nYu\n]s\nxC\bWt\nbD kV\vGuyS\nqA [r\neKM` dZlL\bUg\bTl\nbD US\vb\\ pV\nccS\\ ct `z\bPL\vWs\nA`\neg\bSquECR\vDg `W\vz{\vWcSkSk bW\bUg ea\nxZ iI UX VJ\nqn S{\vRb\bTQ\nplGt\vuWuj\npF\nqI fL [I iaXO\nyu\vDg\ved q{VG\bQka Vj kV xB\nd|\np@ QN Pc ps]j kV oU\bTp\nzUnB\vB] a{\bV@\n]nm` cz R{m`\bQa\vwT\bSMMYqN dj~s\vQ}MY\vMB Bv wR\bRg\vQ} ql\vKC\nrmxuCC\vwB\vvh BqXq\npV i_ObuE\nbd\nqo\v{i\nC~ BL\veEuH\bVjEyGz\vzR\v{i cf\n{Z\n]nXA\vGu\vnU hS\vGI\nCc HE\bTA HBBHCj\nCc\bTF HE\nXI A{\bQ c\\\vmO\vWX\nfH\np@MY\bTF\nlK Bt\nzU TTKm\vwT\npV\ndt\vyI Vx Q Rg Td\nzU\bRS\nLM wAnM Tn\ndS ]g\nLc\vwB }t [I CPkX\vFm\vhZm i[\np@\vQ}\vW |d\nMO\nMd f_ fD cJ Hz\vRb io PyY[\nxU ct\v@@ ww\bPvBMFF\ntbv|\vKm Bq BqKh`o\nZdXU i] |` StB\\\bQ\v_W TJ\nqI |a A{\vuPMD Pl\nxR fL\vws c{ d\\\bV`\neg HKkc\nd|\bVV\ny\\kc i]\bVG `V ss I_ AE bs du\nel pD\vW\nqslv\bSMZi\vVKia\vQB Q\n{Z\bPt\vKl\nlK\nhs\ndS\bVKmf\nd^ kV cO\nc|\bVH \\]\bTv\bSq mI\vDg VJ cn\ny\\\bVg\bTv\nyX\bTF ]]\bTp\noi\nhs\veU\nBf djMr\n|p \\g ]r\bVb{D\nd[XN fM O\\s_ cf iZXN\vWc qv\n`m U^oD\nd|\vGg dE\vwflou}\nd|oQ `iOi\vxD\ndZ\nCxYw\nzk\ntb\ngw yj B`\nyX\vps\ntC\vpP\vqw\bPu\bPX Dm\npwNj ss aG\vxs\bPt\noLGz Ok i@ i]eC IQ ii dj\v@J |duh\bWZ\veU\vnU\bTa cCg]\nzkYh\bVK\nLU\np@\ntb\ntR Cj\vNP i@\bP{\n\\}\n{c\nwX fL\bVG c{ |` AJ |C fDln |d bs\nqI{B\vAx\np@\nzk\vRbOs\vWSe^\vD_ Bv\vWd\bVb\vxs\veE\bRw\n]n\n|p\vg| fwkc\bTIka\n\\TSp ju\vps\npeu|\vGr\bVe CU]MXU\vxD\bTa IQ\vWq CU am dj\bSoSw\vnUCh Q]s_\bPt fS\bTa \\}\n@OYc UZ\bTx\npe\vnU\nzU |} iD\nz\\\bSM\vxDBR\nzQ QN]MYh\nLP\vFm\vLXvc\vqlka HK\bVb\ntC\nCy\bTv\nuVoQ `z [I B`\vRb yj sb\vWs\bTl kV\ved\nelL\vxN m\nJn jY\vxD\bVb\bSq\vyu wL\vXL\bTA pg At nDXX wR\npl\nhwyS\nps cO\bW[\v|jXN sV p\\ Be\nb~\nAJ\n]ek`qN dw WV HE\vEVJz id B` zhE] fD\bTgqN\bTa jaCv\bSM\nhc\bUet_ ieg] wQ\nPn\bVB jw\bVg\vbE BZ\vRH\bP{ jp\n\\} a_ cC |a\vD] BZ i[ fD\vxW\no_ d\\\n_D\ntb \\c AJ\nlKoQlo\vLx\vM@\bWZKn\vpg\nTi\nIv\n|r\v@}JzLmWhk}ln\vxD\n]sgc\vps Br\bTW\vBMtZ\nBYDW jf\vSWC}\nqo dE mv IQ\bPP\bUblvBC\nzQ [I\vgl\nig\bUsBT\vbC\bSq sU iW\nJn SY HK rg\npV\vID\v|jKO `S |a`vbmglfmujbqnbgqjgavp`bqjmj`jlwjfnslslqrvf`vfmwbfpwbglsvfgfmivfdlp`lmwqbfpw/Mmmlnaqfwjfmfmsfqejonbmfqbbnjdlp`jvgbg`fmwqlbvmrvfsvfgfpgfmwqlsqjnfqsqf`jlpfd/Vmavfmlpuloufqsvmwlppfnbmbkba/Abbdlpwlmvfulpvmjglp`bqolpfrvjslmj/]lpnv`klpbodvmb`lqqfljnbdfmsbqwjqbqqjabnbq/Abklnaqffnsoflufqgbg`bnajlnv`kbpevfqlmsbpbglo/Amfbsbqf`fmvfubp`vqplpfpwbabrvjfqlojaqlp`vbmwlb``fplnjdvfoubqjlp`vbwqlwjfmfpdqvslppfq/Mmfvqlsbnfgjlpeqfmwfb`fq`bgfn/Mplefqwb`l`kfpnlgfoljwbojbofwqbpbod/Vm`lnsqb`vbofpf{jpwf`vfqslpjfmglsqfmpboofdbqujbifpgjmfqlnvq`jbslgq/Msvfpwlgjbqjlsvfaolrvjfqfnbmvfosqlsjl`qjpjp`jfqwlpfdvqlnvfqwfevfmwf`fqqbqdqbmgffef`wlsbqwfpnfgjgbsqlsjbleqf`fwjfqqbf.nbjoubqjbpelqnbpevwvqllaifwlpfdvjqqjfpdlmlqnbpnjpnlp/Vmj`l`bnjmlpjwjlpqby/_mgfajglsqvfabwlofglwfm/Abifp/Vpfpsfql`l`jmblqjdfmwjfmgb`jfmwl`/Mgjykbaobqpfq/Abobwjmbevfqybfpwjoldvfqqbfmwqbq/E{jwlo/_sfybdfmgbu/Agflfujwbqsbdjmbnfwqlpibujfqsbgqfpe/M`jo`bafyb/Mqfbppbojgbfmu/Alibs/_mbavplpajfmfpwf{wlpoofubqsvfgbmevfqwf`ln/Vm`obpfpkvnbmlwfmjglajoablvmjgbgfpw/Mpfgjwbq`qfbgl2%bns8Kjpwlqz#>#mft#@fmwqbovsgbwfgPsf`jboMfwtlqhqfrvjqf`lnnfmwtbqmjmd@loofdfwlloabqqfnbjmpaf`bvpffof`wfgGfvwp`kejmbm`ftlqhfqprvj`hozafwtffmf{b`wozpfwwjmdgjpfbpfPl`jfwztfbslmpf{kjajw%ow8"..@lmwqlo`obppfp`lufqfglvwojmfbwwb`hpgfuj`fp+tjmgltsvqslpfwjwof>!Nlajof#hjoojmdpkltjmdJwbojbmgqlssfgkfbujozfeef`wp.2$^*8 `lmejqn@vqqfmwbgubm`fpkbqjmdlsfmjmdgqbtjmdajoojlmlqgfqfgDfqnbmzqfobwfg?,elqn=jm`ovgftkfwkfqgfejmfgP`jfm`f`bwboldBqwj`ofavwwlmpobqdfpwvmjelqnilvqmfzpjgfabq@kj`bdlklojgbzDfmfqbosbppbdf/%rvlw8bmjnbwfeffojmdbqqjufgsbppjmdmbwvqboqlvdkoz- Wkf#avw#mlwgfmpjwzAqjwbjm@kjmfpfob`h#lewqjavwfJqfobmg!#gbwb.eb`wlqpqf`fjufwkbw#jpOjaqbqzkvpabmgjm#eb`wbeebjqp@kbqofpqbgj`boaqlvdkwejmgjmdobmgjmd9obmd>!qfwvqm#ofbgfqpsobmmfgsqfnjvnsb`hbdfBnfqj`bFgjwjlm^%rvlw8Nfppbdfmffg#wlubovf>!`lnsof{ollhjmdpwbwjlmafojfufpnboofq.nlajofqf`lqgptbmw#wlhjmg#leEjqfel{zlv#bqfpjnjobqpwvgjfgnb{jnvnkfbgjmdqbsjgoz`ojnbwfhjmdglnfnfqdfgbnlvmwpelvmgfgsjlmffqelqnvobgzmbpwzklt#wl#Pvsslqwqfufmvff`lmlnzQfpvowpaqlwkfqplogjfqobqdfoz`boojmd-%rvlw8B``lvmwFgtbqg#pfdnfmwQlafqw#feelqwpSb`jej`ofbqmfgvs#tjwkkfjdkw9tf#kbufBmdfofpmbwjlmp\\pfbq`kbssojfgb`rvjqfnbppjufdqbmwfg9#ebopfwqfbwfgajddfpwafmfejwgqjujmdPwvgjfpnjmjnvnsfqkbspnlqmjmdpfoojmdjp#vpfgqfufqpfubqjbmw#qlof>!njppjmdb`kjfufsqlnlwfpwvgfmwplnflmff{wqfnfqfpwlqfalwwln9fuloufgboo#wkfpjwfnbsfmdojpktbz#wl##Bvdvpwpznalop@lnsbmznbwwfqpnvpj`bobdbjmpwpfqujmd~*+*8 sbznfmwwqlvaof`lm`fsw`lnsbqfsbqfmwpsobzfqpqfdjlmpnlmjwlq#$$Wkf#tjmmjmdf{solqfbgbswfgDboofqzsqlgv`fbajojwzfmkbm`f`bqffqp*-#Wkf#`loof`wPfbq`k#bm`jfmwf{jpwfgellwfq#kbmgofqsqjmwfg`lmplofFbpwfqmf{slqwptjmgltp@kbmmfojoofdbomfvwqbopvddfpw\\kfbgfqpjdmjmd-kwno!=pfwwofgtfpwfqm`bvpjmd.tfahjw`objnfgIvpwj`f`kbswfquj`wjnpWklnbp#nlyjoobsqlnjpfsbqwjfpfgjwjlmlvwpjgf9ebopf/kvmgqfgLoznsj`\\avwwlmbvwklqpqfb`kfg`kqlmj`gfnbmgppf`lmgpsqlwf`wbglswfgsqfsbqfmfjwkfqdqfbwozdqfbwfqlufqboojnsqluf`lnnbmgpsf`jbopfbq`k-tlqpkjsevmgjmdwklvdkwkjdkfpwjmpwfbgvwjojwzrvbqwfq@vowvqfwfpwjmd`ofbqozf{slpfgAqltpfqojafqbo~#`bw`kSqlif`wf{bnsofkjgf+*8EolqjgbbmptfqpbooltfgFnsfqlqgfefmpfpfqjlvpeqffglnPfufqbo.avwwlmEvqwkfqlvw#le#">#mvoowqbjmfgGfmnbqhuljg+3*,boo-ipsqfufmwQfrvfpwPwfskfm Tkfm#lapfquf?,k1= Nlgfqm#sqlujgf!#bow>!alqgfqp- Elq# Nbmz#bqwjpwpsltfqfgsfqelqnej`wjlmwzsf#lenfgj`bowj`hfwplsslpfg@lvm`jotjwmfppivpwj`fDflqdf#Afodjvn---?,b=wtjwwfqmlwbaoztbjwjmdtbqebqf#Lwkfq#qbmhjmdskqbpfpnfmwjlmpvqujufp`klobq?,s= #@lvmwqzjdmlqfgolpp#leivpw#bpDflqdjbpwqbmdf?kfbg=?pwlssfg2$^*8 jpobmgpmlwbaofalqgfq9ojpw#le`bqqjfg233/333?,k0= #pfufqboaf`lnfppfof`w#tfggjmd33-kwnonlmbq`klee#wkfwfb`kfqkjdkoz#ajloldzojef#lelq#fufmqjpf#le%qbrvl8sovplmfkvmwjmd+wklvdkGlvdobpiljmjmd`jq`ofpElq#wkfBm`jfmwUjfwmbnufkj`ofpv`k#bp`qzpwboubovf#>Tjmgltpfmilzfgb#pnboobppvnfg?b#jg>!elqfjdm#Boo#qjklt#wkfGjpsobzqfwjqfgkltfufqkjggfm8abwwofppffhjmd`bajmfwtbp#mlwollh#bw`lmgv`wdfw#wkfIbmvbqzkbssfmpwvqmjmdb9klufqLmojmf#Eqfm`k#ob`hjmdwzsj`bof{wqb`wfmfnjfpfufm#jedfmfqbwgf`jgfgbqf#mlw,pfbq`kafojfep.jnbdf9ol`bwfgpwbwj`-oldjm!=`lmufqwujlofmwfmwfqfgejqpw!=`jq`vjwEjmobmg`kfnjpwpkf#tbp23s{8!=bp#pv`kgjujgfg?,psbm=tjoo#afojmf#leb#dqfbwnzpwfqz,jmgf{-eboojmdgvf#wl#qbjotbz`loofdfnlmpwfqgfp`fmwjw#tjwkmv`ofbqIftjpk#sqlwfpwAqjwjpkeoltfqpsqfgj`wqfelqnpavwwlm#tkl#tbpof`wvqfjmpwbmwpvj`jgfdfmfqj`sfqjlgpnbqhfwpPl`jbo#ejpkjmd`lnajmfdqbskj`tjmmfqp?aq#,=?az#wkf#MbwvqboSqjub`z`llhjfplvw`lnfqfploufPtfgjpkaqjfeozSfqpjbmpl#nv`k@fmwvqzgfsj`wp`lovnmpklvpjmdp`qjswpmf{w#wlafbqjmdnbssjmdqfujpfgiRvfqz+.tjgwk9wjwof!=wllowjsPf`wjlmgfpjdmpWvqhjpkzlvmdfq-nbw`k+~*+*8 avqmjmdlsfqbwfgfdqffpplvq`f>Qj`kbqg`olpfozsobpwj`fmwqjfp?,wq= `lolq9 vo#jg>!slppfppqloojmdskzpj`pebjojmdf{f`vwf`lmwfpwojmh#wlGfebvow?aq#,= 9#wqvf/`kbqwfqwlvqjpn`obppj`sql`ffgf{sobjm?,k2= lmojmf-<{no#ufkfosjmdgjbnlmgvpf#wkfbjqojmffmg#..=*-bwwq+qfbgfqpklpwjmd eeeeeeqfbojyfUjm`fmwpjdmbop#pq`>!,Sqlgv`wgfpsjwfgjufqpfwfoojmdSvaoj`#kfog#jmIlpfsk#wkfbwqfbeef`wp?pwzof=b#obqdfglfpm$wobwfq/#Fofnfmwebuj`lm`qfbwlqKvmdbqzBjqslqwpff#wkfpl#wkbwNj`kbfoPzpwfnpSqldqbnp/#bmg##tjgwk>f%rvlw8wqbgjmdofew!= sfqplmpDlogfm#Beebjqpdqbnnbqelqnjmdgfpwqlzjgfb#le`bpf#lelogfpw#wkjp#jp-pq`#>#`bqwllmqfdjpwq@lnnlmpNvpojnpTkbw#jpjm#nbmznbqhjmdqfufbopJmgffg/frvbooz,pklt\\blvwgllqfp`bsf+Bvpwqjbdfmfwj`pzpwfn/Jm#wkf#pjwwjmdKf#boplJpobmgpB`bgfnz \n\n?"..Gbmjfo#ajmgjmdaol`h!=jnslpfgvwjojyfBaqbkbn+f{`fswxtjgwk9svwwjmd*-kwno+#X^8 GBWBX#)hjw`kfmnlvmwfgb`wvbo#gjbof`wnbjmoz#\\aobmh$jmpwboof{sfqwpje+wzsfJw#bopl%`lsz8#!=Wfqnpalqm#jmLswjlmpfbpwfqmwbohjmd`lm`fqmdbjmfg#lmdljmdivpwjez`qjwj`peb`wlqzjwp#ltmbppbvowjmujwfgobpwjmdkjp#ltmkqfe>!,!#qfo>!gfufols`lm`fqwgjbdqbngloobqp`ovpwfqsksbo`lklo*8~*+*8vpjmd#b=?psbm=ufppfopqfujuboBggqfppbnbwfvqbmgqljgboofdfgjoomfpptbohjmd`fmwfqprvbojeznbw`kfpvmjejfgf{wjm`wGfefmpfgjfg#jm \n?"..#`vpwlnpojmhjmdOjwwof#Allh#lefufmjmdnjm-iptfbqjmdBoo#Qjd8 ~*+*8qbjpjmd#Bopl/#`qv`jbobalvw!=gf`obqf..= ?p`ejqfel{bp#nv`kbssojfpjmgf{/#p/#avw#wzsf#>#  ?"..wltbqgpQf`lqgpSqjubwfElqfjdmSqfnjfq`klj`fpUjqwvboqfwvqmp@lnnfmwSltfqfgjmojmf8slufqwz`kbnafqOjujmd#ulovnfpBmwklmzoldjm!#QfobwfgF`lmlnzqfb`kfp`vwwjmddqbujwzojef#jm@kbswfq.pkbgltMlwbaof?,wg= #qfwvqmpwbgjvntjgdfwpubqzjmdwqbufopkfog#aztkl#bqftlqh#jmeb`vowzbmdvobqtkl#kbgbjqslqwwltm#le Plnf#$`oj`h$`kbqdfphfztlqgjw#tjoo`jwz#le+wkjp*8Bmgqft#vmjrvf#`kf`hfglq#nlqf033s{8#qfwvqm8qpjlm>!sovdjmptjwkjm#kfqpfoePwbwjlmEfgfqboufmwvqfsvaojpkpfmw#wlwfmpjlmb`wqfpp`lnf#wlejmdfqpGvhf#lesflsof/f{soljwtkbw#jpkbqnlmzb#nbilq!9!kwwsjm#kjp#nfmv!= nlmwkozleej`fq`lvm`jodbjmjmdfufm#jmPvnnbqzgbwf#leolzbowzejwmfppbmg#tbpfnsfqlqpvsqfnfPf`lmg#kfbqjmdQvppjbmolmdfpwBoafqwbobwfqbopfw#le#pnboo!=-bssfmggl#tjwkefgfqboabmh#leafmfbwkGfpsjwf@bsjwbodqlvmgp*/#bmg#sfq`fmwjw#eqln`olpjmd`lmwbjmJmpwfbgejewffmbp#tfoo-zbkll-qfpslmgejdkwfqlap`vqfqfeof`wlqdbmj`>#Nbwk-fgjwjmdlmojmf#sbggjmdb#tkloflmfqqlqzfbq#lefmg#le#abqqjfqtkfm#jwkfbgfq#klnf#leqfpvnfgqfmbnfgpwqlmd=kfbwjmdqfwbjmp`olvgeqtbz#le#Nbq`k#2hmltjmdjm#sbqwAfwtffmofpplmp`olpfpwujqwvboojmhp!=`qlppfgFMG#..=ebnlvp#btbqgfgOj`fmpfKfbowk#ebjqoz#tfbowkznjmjnboBeqj`bm`lnsfwfobafo!=pjmdjmdebqnfqpAqbpjo*gjp`vppqfsob`fDqfdlqzelmw#`lsvqpvfgbssfbqpnbhf#vsqlvmgfgalwk#leaol`hfgpbt#wkfleej`fp`lolvqpje+gl`vtkfm#kffmelq`fsvpk+evBvdvpw#VWE.;!=Ebmwbpzjm#nlpwjmivqfgVpvboozebqnjmd`olpvqflaif`w#gfefm`fvpf#le#Nfgj`bo?algz= fujgfmwaf#vpfghfz@lgfpj{wffmJpobnj` 333333fmwjqf#tjgfoz#b`wjuf#+wzsflelmf#`bm`lolq#>psfbhfqf{wfmgpSkzpj`pwfqqbjm?walgz=evmfqboujftjmdnjggof#`qj`hfwsqlskfwpkjewfggl`wlqpQvppfoo#wbqdfw`lnsb`wbodfaqbpl`jbo.avoh#lenbm#bmg?,wg= #kf#ofew*-ubo+*ebopf*8oldj`boabmhjmdklnf#wlmbnjmd#Bqjylmb`qfgjwp*8 ~*8 elvmgfqjm#wvqm@loojmpafelqf#Avw#wkf`kbqdfgWjwof!=@bswbjmpsfoofgdlggfppWbd#..=Bggjmd9avw#tbpQf`fmw#sbwjfmwab`h#jm>ebopf%Ojm`lomtf#hmlt@lvmwfqIvgbjpnp`qjsw#bowfqfg$^*8 ##kbp#wkfvm`ofbqFufmw$/alwk#jmmlw#boo ?"..#sob`jmdkbqg#wl#`fmwfqplqw#le`ojfmwppwqffwpAfqmbqgbppfqwpwfmg#wlebmwbpzgltm#jmkbqalvqEqffglniftfoqz,balvw--pfbq`kofdfmgpjp#nbgfnlgfqm#lmoz#lmlmoz#wljnbdf!#ojmfbq#sbjmwfqbmg#mlwqbqfoz#b`qlmzngfojufqpklqwfq33%bns8bp#nbmztjgwk>!,)#?"X@wjwof#>le#wkf#oltfpw#sj`hfg#fp`bsfgvpfp#lesflsofp#Svaoj`Nbwwkftwb`wj`pgbnbdfgtbz#elqobtp#lefbpz#wl#tjmgltpwqlmd##pjnsof~`bw`k+pfufmwkjmelal{tfmw#wlsbjmwfg`jwjyfmJ#glm$wqfwqfbw-#Plnf#tt-!*8 alnajmdnbjowl9nbgf#jm-#Nbmz#`bqqjfpx~8tjtlqh#lepzmlmzngfefbwpebulqfglswj`bosbdfWqbvmofpp#pfmgjmdofew!=?`lnP`lqBoo#wkfiRvfqz-wlvqjpw@obppj`ebopf!#Tjokfonpvavqapdfmvjmfajpklsp-psojw+dolabo#elooltpalgz#lemlnjmbo@lmwb`wpf`vobqofew#wl`kjfeoz.kjggfm.abmmfq?,oj= -#Tkfm#jm#alwkgjpnjppF{solqfbotbzp#ujb#wkfpsb/]lotfoebqfqvojmd#bqqbmdf`bswbjmkjp#plmqvof#lekf#wllhjwpfoe/>3%bns8+`boofgpbnsofpwl#nbhf`ln,sbdNbqwjm#Hfmmfgzb``fswpevoo#lekbmgofgAfpjgfp,,..=?,baof#wlwbqdfwpfppfm`fkjn#wl#jwp#az#`lnnlm-njmfqbowl#wbhftbzp#wlp-lqd,obgujpfgsfmbowzpjnsof9je#wkfzOfwwfqpb#pklqwKfqafqwpwqjhfp#dqlvsp-ofmdwkeojdkwplufqobspoltoz#ofppfq#pl`jbo#?,s= \n\njw#jmwlqbmhfg#qbwf#levo= ##bwwfnswsbjq#lenbhf#jwHlmwbhwBmwlmjlkbujmd#qbwjmdp#b`wjufpwqfbnpwqbssfg!*-`pp+klpwjofofbg#wlojwwof#dqlvsp/Sj`wvqf..=  #qltp>!#laif`wjmufqpf?ellwfq@vpwlnU=?_,p`qploujmd@kbnafqpobufqztlvmgfgtkfqfbp">#$vmgelq#boosbqwoz#.qjdkw9Bqbajbmab`hfg#`fmwvqzvmjw#lenlajof.Fvqlsf/jp#klnfqjph#legfpjqfg@ojmwlm`lpw#lebdf#le#af`lnf#mlmf#les%rvlw8Njggof#fbg$*X3@qjwj`ppwvgjlp=%`lsz8dqlvs!=bppfnaonbhjmd#sqfppfgtjgdfw-sp9!#<#qfavjowaz#plnfElqnfq#fgjwlqpgfobzfg@bmlmj`kbg#wkfsvpkjmd`obpp>!avw#bqfsbqwjboAbazolmalwwln#`bqqjfq@lnnbmgjwp#vpfBp#tjwk`lvqpfpb#wkjqggfmlwfpbopl#jmKlvpwlm13s{8!=b``vpfgglvaof#dlbo#leEbnlvp#*-ajmg+sqjfpwp#Lmojmfjm#Ivozpw#(#!d`lmpvowgf`jnbokfosevoqfujufgjp#ufqzq$($jswolpjmd#efnbofpjp#boplpwqjmdpgbzp#lebqqjuboevwvqf#?laif`welq`jmdPwqjmd+!#,= \n\nkfqf#jpfm`lgfg-##Wkf#aboollmglmf#az,`lnnlmad`lolqobt#le#Jmgjbmbbuljgfgavw#wkf1s{#0s{irvfqz-bewfq#bsloj`z-nfm#bmgellwfq.>#wqvf8elq#vpfp`qffm-Jmgjbm#jnbdf#>ebnjoz/kwws9,,#%maps8gqjufqpfwfqmbopbnf#bpmlwj`fgujftfqp~*+*8 #jp#nlqfpfbplmpelqnfq#wkf#mftjp#ivpw`lmpfmw#Pfbq`ktbp#wkftkz#wkfpkjssfgaq=?aq=tjgwk9#kfjdkw>nbgf#le`vjpjmfjp#wkbwb#ufqz#Bgnjqbo#ej{fg8mlqnbo#NjppjlmSqfpp/#lmwbqjl`kbqpfwwqz#wl#jmubgfg>!wqvf!psb`jmdjp#nlpwb#nlqf#wlwboozeboo#le~*8 ##jnnfmpfwjnf#jmpfw#lvwpbwjpezwl#ejmggltm#wlolw#le#Sobzfqpjm#Ivmfrvbmwvnmlw#wkfwjnf#wlgjpwbmwEjmmjpkpq`#>#+pjmdof#kfos#leDfqnbm#obt#bmgobafofgelqfpwp`llhjmdpsb`f!=kfbgfq.tfoo#bpPwbmofzaqjgdfp,dolabo@qlbwjb#Balvw#X3^8 ##jw/#bmgdqlvsfgafjmd#b*xwkqltkf#nbgfojdkwfqfwkj`boEEEEEE!alwwln!ojhf#b#fnsolzpojuf#jmbp#pffmsqjmwfqnlpw#leva.ojmhqfif`wpbmg#vpfjnbdf!=pv``ffgeffgjmdMv`ofbqjmelqnbwl#kfosTlnfm$pMfjwkfqNf{j`bmsqlwfjm?wbaof#az#nbmzkfbowkzobtpvjwgfujpfg-svpk+xpfoofqppjnsoz#Wkqlvdk-`llhjf#Jnbdf+logfq!=vp-ip!=#Pjm`f#vmjufqpobqdfq#lsfm#wl"..#fmgojfp#jm$^*8 ##nbqhfwtkl#jp#+!GLN@lnbmbdfglmf#elqwzsfle#Hjmdglnsqlejwpsqlslpfwl#pklt`fmwfq8nbgf#jwgqfppfgtfqf#jmnj{wvqfsqf`jpfbqjpjmdpq`#>#$nbhf#b#pf`vqfgAbswjpwulwjmd# \n\nubq#Nbq`k#1dqft#vs@ojnbwf-qfnlufphjoofgtbz#wkf?,kfbg=eb`f#leb`wjmd#qjdkw!=wl#tlqhqfgv`fpkbp#kbgfqf`wfgpklt+*8b`wjlm>allh#lebm#bqfb>>#!kww?kfbgfq ?kwno=`lmelqneb`jmd#`llhjf-qfoz#lmklpwfg#-`vpwlnkf#tfmwavw#elqpsqfbg#Ebnjoz#b#nfbmplvw#wkfelqvnp-ellwbdf!=Nlajo@ofnfmwp!#jg>!bp#kjdkjmwfmpf..=?"..efnbof#jp#pffmjnsojfgpfw#wkfb#pwbwfbmg#kjpebpwfpwafpjgfpavwwlm\\alvmgfg!=?jnd#Jmelal{fufmwp/b#zlvmdbmg#bqfMbwjuf#`kfbsfqWjnflvwbmg#kbpfmdjmfptlm#wkf+nlpwozqjdkw9#ejmg#b#.alwwlnSqjm`f#bqfb#lenlqf#lepfbq`k\\mbwvqf/ofdboozsfqjlg/obmg#lelq#tjwkjmgv`fgsqlujmdnjppjofol`boozBdbjmpwwkf#tbzh%rvlw8s{8!= svpkfg#babmglmmvnfqbo@fqwbjmJm#wkjpnlqf#jmlq#plnfmbnf#jpbmg/#jm`qltmfgJPAM#3.`qfbwfpL`wlafqnbz#mlw`fmwfq#obwf#jmGfefm`ffmb`wfgtjpk#wlaqlbgoz`llojmdlmolbg>jw-#Wkfqf`lufqNfnafqpkfjdkw#bppvnfp?kwno= sflsof-jm#lmf#>tjmgltellwfq\\b#dllg#qfhobnblwkfqp/wl#wkjp\\`llhjfsbmfo!=Olmglm/gfejmfp`qvpkfgabswjpn`lbpwbopwbwvp#wjwof!#nluf#wlolpw#jmafwwfq#jnsojfpqjuboqzpfqufqp#PzpwfnSfqkbspfp#bmg#`lmwfmgeoltjmdobpwfg#qjpf#jmDfmfpjpujft#leqjpjmd#pffn#wlavw#jm#ab`hjmdkf#tjoodjufm#bdjujmd#`jwjfp-eolt#le#Obwfq#boo#avwKjdktbzlmoz#azpjdm#lekf#glfpgjeefqpabwwfqz%bns8obpjmdofpwkqfbwpjmwfdfqwbhf#lmqfevpfg`boofg#>VP%bnsPff#wkfmbwjufpaz#wkjppzpwfn-kfbg#le9klufq/ofpajbmpvqmbnfbmg#boo`lnnlm,kfbgfq\\\\sbqbnpKbqubqg,sj{fo-qfnlubopl#olmdqlof#leiljmwozphzp`qbVmj`lgfaq#,= Bwobmwbmv`ofvp@lvmwz/svqfoz#`lvmw!=fbpjoz#avjog#blm`oj`hb#djufmsljmwfqk%rvlw8fufmwp#fopf#x gjwjlmpmlt#wkf/#tjwk#nbm#tkllqd,Tfalmf#bmg`buboqzKf#gjfgpfbwwof33/333#xtjmgltkbuf#wlje+tjmgbmg#jwpplofoz#n%rvlw8qfmftfgGfwqljwbnlmdpwfjwkfq#wkfn#jmPfmbwlqVp?,b=?Hjmd#leEqbm`jp.sqlgv`kf#vpfgbqw#bmgkjn#bmgvpfg#azp`lqjmdbw#klnfwl#kbufqfobwfpjajojwzeb`wjlmAveebolojmh!=?tkbw#kfeqff#wl@jwz#le`lnf#jmpf`wlqp`lvmwfglmf#gbzmfqulvpprvbqf#~8je+dljm#tkbwjnd!#bojp#lmozpfbq`k,wvfpgbzollpfozPlolnlmpf{vbo#.#?b#kqnfgjvn!GL#MLW#Eqbm`f/tjwk#b#tbq#bmgpf`lmg#wbhf#b#=   nbqhfw-kjdktbzglmf#jm`wjujwz!obpw!=laojdfgqjpf#wl!vmgfejnbgf#wl#Fbqoz#sqbjpfgjm#jwp#elq#kjpbwkofwfIvsjwfqZbkll"#wfqnfg#pl#nbmzqfbooz#p-#Wkf#b#tlnbmgjqf`w#qjdkw!#aj`z`ofb`jmd>!gbz#bmgpwbwjmdQbwkfq/kjdkfq#Leej`f#bqf#mltwjnfp/#tkfm#b#sbz#elqlm#wkjp.ojmh!=8alqgfqbqlvmg#bmmvbo#wkf#Mftsvw#wkf-`ln!#wbhjm#wlb#aqjfe+jm#wkfdqlvsp-8#tjgwkfmyznfppjnsof#jm#obwfxqfwvqmwkfqbszb#sljmwabmmjmdjmhp!= +*8!#qfb#sob`f_v330@bbalvw#bwq= \n\n``lvmw#djufp#b?P@QJSWQbjotbzwkfnfp,wlloal{AzJg+!{kvnbmp/tbw`kfpjm#plnf#je#+tj`lnjmd#elqnbwp#Vmgfq#avw#kbpkbmgfg#nbgf#azwkbm#jmefbq#legfmlwfg,jeqbnfofew#jmulowbdfjm#fb`kb%rvlw8abpf#leJm#nbmzvmgfqdlqfdjnfpb`wjlm#?,s= ?vpwlnUb8%dw8?,jnslqwplq#wkbwnlpwoz#%bns8qf#pjyf>!?,b=?,kb#`obppsbppjufKlpw#>#TkfwkfqefqwjofUbqjlvp>X^8+ev`bnfqbp,=?,wg=b`wp#bpJm#plnf=  ?"lqdbmjp#?aq#,=Afjijmd`bwbo/Lgfvwp`kfvqlsfvfvphbqbdbfjodfpufmphbfpsb/]bnfmpbifvpvbqjlwqbabiln/E{j`ls/Mdjmbpjfnsqfpjpwfnbl`wvaqfgvqbmwfb/]bgjqfnsqfpbnlnfmwlmvfpwqlsqjnfqbwqbu/Epdqb`jbpmvfpwqbsql`fplfpwbglp`bojgbgsfqplmbm/Vnfqlb`vfqgln/Vpj`bnjfnaqllefqwbpbodvmlpsb/Apfpfifnsolgfqf`klbgfn/Mpsqjubglbdqfdbqfmob`fpslpjaofklwfofppfujoobsqjnfql/Vowjnlfufmwlpbq`kjul`vowvqbnvifqfpfmwqbgbbmvm`jlfnabqdlnfq`bgldqbmgfpfpwvgjlnfilqfpefaqfqlgjpf/]lwvqjpnl`/_gjdlslqwbgbfpsb`jlebnjojbbmwlmjlsfqnjwfdvbqgbqbodvmbpsqf`jlpbodvjfmpfmwjglujpjwbpw/Awvol`lml`fqpfdvmgl`lmpfileqbm`jbnjmvwlppfdvmgbwfmfnlpfef`wlpn/Mobdbpfpj/_mqfujpwbdqbmbgb`lnsqbqjmdqfpldbq`/Abb``j/_mf`vbglqrvjfmfpjm`ovplgfafq/Mnbwfqjbklnaqfpnvfpwqbslgq/Abnb/]bmb/Vowjnbfpwbnlplej`jbowbnajfmmjmd/Vmpbovglpslgfnlpnfilqbqslpjwjlmavpjmfppklnfsbdfpf`vqjwzobmdvbdfpwbmgbqg`bnsbjdmefbwvqfp`bwfdlqzf{wfqmbo`kjogqfmqfpfqufgqfpfbq`kf{`kbmdfebulqjwfwfnsobwfnjojwbqzjmgvpwqzpfquj`fpnbwfqjbosqlgv`wpy.jmgf{9`lnnfmwpplewtbqf`lnsofwf`bofmgbqsobwelqnbqwj`ofpqfrvjqfgnlufnfmwrvfpwjlmavjogjmdslojwj`pslppjaofqfojdjlmskzpj`boeffgab`hqfdjpwfqsj`wvqfpgjpbaofgsqlwl`lobvgjfm`fpfwwjmdpb`wjujwzfofnfmwpofbqmjmdbmzwkjmdbapwqb`wsqldqfpplufqujftnbdbyjmff`lmlnj`wqbjmjmdsqfppvqfubqjlvp#?pwqlmd=sqlsfqwzpklssjmdwldfwkfqbgubm`fgafkbujlqgltmolbgefbwvqfgellwaboopfof`wfgObmdvbdfgjpwbm`fqfnfnafqwqb`hjmdsbpptlqgnlgjejfgpwvgfmwpgjqf`wozejdkwjmdmlqwkfqmgbwbabpfefpwjuboaqfbhjmdol`bwjlmjmwfqmfwgqlsgltmsqb`wj`ffujgfm`fevm`wjlmnbqqjbdfqfpslmpfsqlaofnpmfdbwjufsqldqbnpbmbozpjpqfofbpfgabmmfq!=svq`kbpfsloj`jfpqfdjlmbo`qfbwjufbqdvnfmwallhnbqhqfefqqfq`kfnj`bogjujpjlm`booab`hpfsbqbwfsqlif`wp`lmeoj`wkbqgtbqfjmwfqfpwgfojufqznlvmwbjmlawbjmfg>#ebopf8elq+ubq#b``fswfg`bsb`jwz`lnsvwfqjgfmwjwzbjq`qbewfnsolzfgsqlslpfgglnfpwj`jm`ovgfpsqlujgfgklpsjwboufqwj`bo`loobspfbssqlb`ksbqwmfqpoldl!=?bgbvdkwfqbvwklq!#`vowvqboebnjojfp,jnbdfp,bppfnaozsltfqevowfb`kjmdejmjpkfggjpwqj`w`qjwj`bo`dj.ajm,svqslpfpqfrvjqfpfof`wjlmaf`lnjmdsqlujgfpb`bgfnj`f{fq`jpfb`wvbooznfgj`jmf`lmpwbmwb``jgfmwNbdbyjmfgl`vnfmwpwbqwjmdalwwln!=lapfqufg9#%rvlw8f{wfmgfgsqfujlvpPlewtbqf`vpwlnfqgf`jpjlmpwqfmdwkgfwbjofgpojdkwozsobmmjmdwf{wbqfb`vqqfm`zfufqzlmfpwqbjdkwwqbmpefqslpjwjufsqlgv`fgkfqjwbdfpkjssjmdbaplovwfqf`fjufgqfofubmwavwwlm!#ujlofm`fbmztkfqfafmfejwpobvm`kfgqf`fmwozboojbm`felooltfgnvowjsofavoofwjmjm`ovgfgl``vqqfgjmwfqmbo\'+wkjp*-qfsvaoj`=?wq=?wg`lmdqfppqf`lqgfgvowjnbwfplovwjlm?vo#jg>!gjp`lufqKlnf?,b=tfapjwfpmfwtlqhpbowklvdkfmwjqfoznfnlqjbonfppbdfp`lmwjmvfb`wjuf!=plnftkbwuj`wlqjbTfpwfqm##wjwof>!Ol`bwjlm`lmwqb`wujpjwlqpGltmolbgtjwklvw#qjdkw!= nfbpvqfptjgwk#>#ubqjbaofjmuloufgujqdjmjbmlqnboozkbssfmfgb``lvmwppwbmgjmdmbwjlmboQfdjpwfqsqfsbqfg`lmwqlopb``vqbwfajqwkgbzpwqbwfdzleej`jbodqbskj`p`qjnjmboslppjaoz`lmpvnfqSfqplmbopsfbhjmdubojgbwfb`kjfufg-isd!#,=nb`kjmfp?,k1= ##hfztlqgpeqjfmgozaqlwkfqp`lnajmfglqjdjmbo`lnslpfgf{sf`wfgbgfrvbwfsbhjpwbmeloolt!#ubovbaof?,obafo=qfobwjufaqjmdjmdjm`qfbpfdlufqmlqsovdjmp,Ojpw#le#Kfbgfq!=!#mbnf>!#+%rvlw8dqbgvbwf?,kfbg= `lnnfq`fnbobzpjbgjqf`wlqnbjmwbjm8kfjdkw9p`kfgvof`kbmdjmdab`h#wl#`bwkloj`sbwwfqmp`lolq9# dqfbwfpwpvssojfpqfojbaof?,vo= \n\n?pfof`w#`jwjyfmp`olwkjmdtbw`kjmd?oj#jg>!psf`jej``bqqzjmdpfmwfm`f?`fmwfq=`lmwqbpwwkjmhjmd`bw`k+f*plvwkfqmNj`kbfo#nfq`kbmw`bqlvpfosbggjmd9jmwfqjlq-psojw+!ojybwjlmL`wlafq#*xqfwvqmjnsqlufg..%dw8 `lufqbdf`kbjqnbm-smd!#,=pvaif`wpQj`kbqg#tkbwfufqsqlabaozqf`lufqzabpfabooivgdnfmw`lmmf`w--`pp!#,=#tfapjwfqfslqwfggfebvow!,=?,b= fof`wqj`p`lwobmg`qfbwjlmrvbmwjwz-#JPAM#3gjg#mlw#jmpwbm`f.pfbq`k.!#obmd>!psfbhfqp@lnsvwfq`lmwbjmpbq`kjufpnjmjpwfqqfb`wjlmgjp`lvmwJwbojbml`qjwfqjbpwqlmdoz9#$kwws9$p`qjsw$`lufqjmdleefqjmdbssfbqfgAqjwjpk#jgfmwjezEb`fallhmvnfqlvpufkj`ofp`lm`fqmpBnfqj`bmkbmgojmdgju#jg>!Tjoojbn#sqlujgfq\\`lmwfmwb``vqb`zpf`wjlm#bmgfqplmeof{jaof@bwfdlqzobtqfm`f?p`qjsw=obzlvw>!bssqlufg#nb{jnvnkfbgfq!=?,wbaof=Pfquj`fpkbnjowlm`vqqfmw#`bmbgjbm`kbmmfop,wkfnfp,,bqwj`oflswjlmboslqwvdboubovf>!!jmwfqubotjqfofppfmwjwofgbdfm`jfpPfbq`k!#nfbpvqfgwklvpbmgpsfmgjmd%kfoojs8mft#Gbwf!#pjyf>!sbdfMbnfnjggof!#!#,=?,b=kjggfm!=pfrvfm`fsfqplmbolufqeoltlsjmjlmpjoojmljpojmhp!= \n?wjwof=ufqpjlmppbwvqgbzwfqnjmbojwfnsqlsfmdjmffqpf`wjlmpgfpjdmfqsqlslpbo>!ebopf!Fpsb/]loqfofbpfppvanjw!#fq%rvlw8bggjwjlmpznswlnplqjfmwfgqfplvq`fqjdkw!=?sofbpvqfpwbwjlmpkjpwlqz-ofbujmd##alqgfq>`lmwfmwp`fmwfq!=- Plnf#gjqf`wfgpvjwbaofavodbqjb-pklt+*8gfpjdmfgDfmfqbo#`lm`fswpF{bnsofptjoojbnpLqjdjmbo!=?psbm=pfbq`k!=lsfqbwlqqfrvfpwpb#%rvlw8booltjmdGl`vnfmwqfujpjlm-# Wkf#zlvqpfoe@lmwb`w#nj`kjdbmFmdojpk#`lovnajbsqjlqjwzsqjmwjmdgqjmhjmdeb`jojwzqfwvqmfg@lmwfmw#leej`fqpQvppjbm#dfmfqbwf.;;6:.2!jmgj`bwfebnjojbq#rvbojwznbqdjm93#`lmwfmwujftslqw`lmwb`wp.wjwof!=slqwbaof-ofmdwk#fojdjaofjmuloufpbwobmwj`lmolbg>!gfebvow-pvssojfgsbznfmwpdolppbqz Bewfq#dvjgbm`f?,wg=?wgfm`lgjmdnjggof!=`bnf#wl#gjpsobzpp`lwwjpkilmbwkbmnbilqjwztjgdfwp-`ojmj`bowkbjobmgwfb`kfqp?kfbg= \nbeef`wfgpvsslqwpsljmwfq8wlPwqjmd?,pnboo=lhobklnbtjoo#af#jmufpwlq3!#bow>!klojgbzpQfplvq`foj`fmpfg#+tkj`k#-#Bewfq#`lmpjgfqujpjwjmdf{solqfqsqjnbqz#pfbq`k!#bmgqljg!rvj`hoz#nffwjmdpfpwjnbwf8qfwvqm#8`lolq9 #kfjdkw>bssqlubo/#%rvlw8#`kf`hfg-njm-ip!nbdmfwj`=?,b=?,kelqf`bpw-#Tkjof#wkvqpgbzgufqwjpf%fb`vwf8kbp@obppfubovbwflqgfqjmdf{jpwjmdsbwjfmwp#Lmojmf#`lolqbglLswjlmp!`bnsafoo?"..#fmg?,psbm=??aq#,= \\slsvspp`jfm`fp/%rvlw8#rvbojwz#Tjmgltp#bppjdmfgkfjdkw9#?a#`obppof%rvlw8#ubovf>!#@lnsbmzf{bnsofp?jeqbnf#afojfufpsqfpfmwpnbqpkboosbqw#le#sqlsfqoz*- Wkf#wb{lmlnznv`k#le#?,psbm= !#gbwb.pqwvdv/Fpp`qlooWl#sqlif`w?kfbg= bwwlqmfzfnskbpjppslmplqpebm`zal{tlqog$p#tjogojef`kf`hfg>pfppjlmpsqldqbnns{8elmw.#Sqlif`wilvqmbopafojfufgub`bwjlmwklnsplmojdkwjmdbmg#wkf#psf`jbo#alqgfq>3`kf`hjmd?,walgz=?avwwlm#@lnsofwf`ofbqej{ ?kfbg= bqwj`of#?pf`wjlmejmgjmdpqlof#jm#slsvobq##L`wlafqtfapjwf#f{slpvqfvpfg#wl##`kbmdfplsfqbwfg`oj`hjmdfmwfqjmd`lnnbmgpjmelqnfg#mvnafqp##?,gju=`qfbwjmdlmPvanjwnbqzobmg`loofdfpbmbozwj`ojpwjmdp`lmwb`w-olddfgJmbgujplqzpjaojmdp`lmwfmw!p%rvlw8*p-#Wkjp#sb`hbdfp`kf`hal{pvddfpwpsqfdmbmwwlnlqqltpsb`jmd>j`lm-smdibsbmfpf`lgfabpfavwwlm!=dbnaojmdpv`k#bp#/#tkjof#?,psbm=#njpplvqjpslqwjmdwls92s{#-?,psbm=wfmpjlmptjgwk>!1obyzolbgmlufnafqvpfg#jm#kfjdkw>!`qjsw!= %maps8?,?wq=?wg#kfjdkw91,sqlgv`w`lvmwqz#jm`ovgf#ellwfq!#%ow8"..#wjwof!=?,irvfqz-?,elqn= +\vBl\bQ*+\vUmGx*kqubwphjjwbojbmlqln/Nm(ow/Pqh/Kf4K4]4C5dwbnaj/Emmlwj`jbpnfmpbifpsfqplmbpgfqf`klpmb`jlmbopfquj`jl`lmwb`wlvpvbqjlpsqldqbnbdlajfqmlfnsqfpbpbmvm`jlpubofm`jb`lolnajbgfpsv/Epgfslqwfpsqlzf`wlsqlgv`wls/Vaoj`lmlplwqlpkjpwlqjbsqfpfmwfnjoolmfpnfgjbmwfsqfdvmwbbmwfqjlqqf`vqplpsqlaofnbpbmwjbdlmvfpwqlplsjmj/_mjnsqjnjqnjfmwqbpbn/Eqj`bufmgfglqpl`jfgbgqfpsf`wlqfbojybqqfdjpwqlsbobaqbpjmwfq/Epfmwlm`fpfpsf`jbonjfnaqlpqfbojgbg`/_qglabybqbdlybs/Mdjmbppl`jbofpaolrvfbqdfpwj/_mborvjofqpjpwfnbp`jfm`jbp`lnsofwlufqpj/_m`lnsofwbfpwvgjlps/Vaoj`blaifwjulboj`bmwfavp`bglq`bmwjgbgfmwqbgbpb``jlmfpbq`kjulppvsfqjlqnbzlq/Abbofnbmjbevm`j/_m/Vowjnlpkb`jfmglbrvfoolpfgj`j/_mefqmbmglbnajfmwfeb`fallhmvfpwqbp`ojfmwfpsql`fplpabpwbmwfsqfpfmwbqfslqwbq`lmdqfplsvaoj`bq`lnfq`jl`lmwqbwli/_ufmfpgjpwqjwlw/E`mj`b`lmivmwlfmfqd/Abwqbabibqbpwvqjbpqf`jfmwfvwjojybqalofw/Ampboubglq`lqqf`wbwqbabilpsqjnfqlpmfdl`jlpojafqwbggfwboofpsbmwboobsq/_{jnlbonfq/Abbmjnbofprvj/Emfp`lqby/_mpf``j/_mavp`bmglls`jlmfpf{wfqjlq`lm`fswlwlgbu/Abdbofq/Abfp`qjajqnfgj`jmboj`fm`jb`lmpvowbbpsf`wlp`q/Awj`bg/_obqfpivpwj`jbgfafq/Mmsfq/Alglmf`fpjwbnbmwfmfqsfrvf/]lqf`jajgbwqjavmbowfmfqjef`bm`j/_m`bmbqjbpgfp`bqdbgjufqplpnboolq`bqfrvjfqfw/E`mj`lgfafq/Abujujfmgbejmbmybpbgfobmwfevm`jlmb`lmpfilpgje/A`jo`jvgbgfpbmwjdvbpbubmybgbw/Eqnjmlvmjgbgfpp/Mm`kfy`bnsb/]bplewlmj`qfujpwbp`lmwjfmfpf`wlqfpnlnfmwlpeb`vowbg`q/Egjwlgjufqpbppvsvfpwleb`wlqfppfdvmglpsfrvf/]b<_!?,pfof`w=Bvpwqbojb!#`obpp>!pjwvbwjlmbvwklqjwzelooltjmdsqjnbqjozlsfqbwjlm`kboofmdfgfufolsfgbmlmznlvpevm`wjlm#evm`wjlmp`lnsbmjfppwqv`wvqfbdqffnfmw!#wjwof>!slwfmwjbofgv`bwjlmbqdvnfmwppf`lmgbqz`lszqjdkwobmdvbdfpf{`ovpjuf`lmgjwjlm?,elqn= pwbwfnfmwbwwfmwjlmAjldqbskz~#fopf#x plovwjlmptkfm#wkf#Bmbozwj`pwfnsobwfpgbmdfqlvppbwfoojwfgl`vnfmwpsvaojpkfqjnslqwbmwsqlwlwzsfjmeovfm`f%qbrvl8?,feef`wjufdfmfqboozwqbmpelqnafbvwjevowqbmpslqwlqdbmjyfgsvaojpkfgsqlnjmfmwvmwjo#wkfwkvnambjoMbwjlmbo#-el`vp+*8lufq#wkf#njdqbwjlmbmmlvm`fgellwfq!= f{`fswjlmofpp#wkbmf{sfmpjufelqnbwjlmeqbnftlqhwfqqjwlqzmgj`bwjlm`vqqfmwoz`obppMbnf`qjwj`jpnwqbgjwjlmfopftkfqfBof{bmgfqbssljmwfgnbwfqjbopaqlbg`bpwnfmwjlmfgbeejojbwf?,lswjlm=wqfbwnfmwgjeefqfmw,gfebvow-Sqfpjgfmwlm`oj`h>!ajldqbskzlwkfqtjpfsfqnbmfmwEqbm/KbjpKlooztllgf{sbmpjlmpwbmgbqgp?,pwzof= qfgv`wjlmGf`fnafq#sqfefqqfg@bnaqjgdflsslmfmwpAvpjmfpp#`lmevpjlm= ?wjwof=sqfpfmwfgf{sobjmfgglfp#mlw#tlqogtjgfjmwfqeb`fslpjwjlmpmftpsbsfq?,wbaof= nlvmwbjmpojhf#wkf#fppfmwjboejmbm`jbopfof`wjlmb`wjlm>!,babmglmfgFgv`bwjlmsbqpfJmw+pwbajojwzvmbaof#wl?,wjwof= qfobwjlmpMlwf#wkbwfeej`jfmwsfqelqnfgwtl#zfbqpPjm`f#wkfwkfqfelqftqbssfq!=bowfqmbwfjm`qfbpfgAbwwof#lesfq`fjufgwqzjmd#wlmf`fppbqzslqwqbzfgfof`wjlmpFojybafwk?,jeqbnf=gjp`lufqzjmpvqbm`fp-ofmdwk8ofdfmgbqzDfldqbskz`bmgjgbwf`lqslqbwfplnfwjnfppfquj`fp-jmkfqjwfg?,pwqlmd=@lnnvmjwzqfojdjlvpol`bwjlmp@lnnjwwffavjogjmdpwkf#tlqogml#olmdfqafdjmmjmdqfefqfm`f`bmmlw#afeqfrvfm`zwzsj`boozjmwl#wkf#qfobwjuf8qf`lqgjmdsqfpjgfmwjmjwjboozwf`kmjrvfwkf#lwkfqjw#`bm#aff{jpwfm`fvmgfqojmfwkjp#wjnfwfofsklmfjwfnp`lsfsqb`wj`fpbgubmwbdf*8qfwvqm#Elq#lwkfqsqlujgjmdgfnl`qb`zalwk#wkf#f{wfmpjufpveefqjmdpvsslqwfg`lnsvwfqp#evm`wjlmsqb`wj`bopbjg#wkbwjw#nbz#afFmdojpk?,eqln#wkf#p`kfgvofggltmolbgp?,obafo= pvpsf`wfgnbqdjm9#3psjqjwvbo?,kfbg= nj`qlplewdqbgvboozgjp`vppfgkf#af`bnff{f`vwjufirvfqz-ipklvpfklog`lmejqnfgsvq`kbpfgojwfqboozgfpwqlzfgvs#wl#wkfubqjbwjlmqfnbjmjmdjw#jp#mlw`fmwvqjfpIbsbmfpf#bnlmd#wkf`lnsofwfgbodlqjwknjmwfqfpwpqfafoojlmvmgfejmfgfm`lvqbdfqfpjybaofjmuloujmdpfmpjwjufvmjufqpbosqlujpjlm+bowklvdkefbwvqjmd`lmgv`wfg*/#tkj`k#`lmwjmvfg.kfbgfq!=Efaqvbqz#mvnfqlvp#lufqeolt9`lnslmfmweqbdnfmwpf{`foofmw`lopsbm>!wf`kmj`bomfbq#wkf#Bgubm`fg#plvq`f#lef{sqfppfgKlmd#Hlmd#Eb`fallhnvowjsof#nf`kbmjpnfofubwjlmleefmpjuf?,elqn= \npslmplqfggl`vnfmw-lq#%rvlw8wkfqf#bqfwklpf#tklnlufnfmwpsql`fppfpgjeej`vowpvanjwwfgqf`lnnfmg`lmujm`fgsqlnlwjmd!#tjgwk>!-qfsob`f+`obppj`bo`lbojwjlmkjp#ejqpwgf`jpjlmpbppjpwbmwjmgj`bwfgfulovwjlm.tqbssfq!fmlvdk#wlbolmd#wkfgfojufqfg..= ?"..Bnfqj`bm#sqlwf`wfgMlufnafq#?,pwzof=?evqmjwvqfJmwfqmfw##lmaovq>!pvpsfmgfgqf`jsjfmwabpfg#lm#Nlqflufq/balojpkfg`loof`wfgtfqf#nbgffnlwjlmbofnfqdfm`zmbqqbwjufbgul`bwfps{8alqgfq`lnnjwwfggjq>!owq!fnsolzffpqfpfbq`k-#pfof`wfgpv``fpplq`vpwlnfqpgjpsobzfgPfswfnafqbgg@obpp+Eb`fallh#pvddfpwfgbmg#obwfqlsfqbwjmdfobalqbwfPlnfwjnfpJmpwjwvwf`fqwbjmozjmpwboofgelooltfqpIfqvpbofnwkfz#kbuf`lnsvwjmddfmfqbwfgsqlujm`fpdvbqbmwffbqajwqbqzqf`ldmjyftbmwfg#wls{8tjgwk9wkflqz#leafkbujlvqTkjof#wkffpwjnbwfgafdbm#wl#jw#af`bnfnbdmjwvgfnvpw#kbufnlqf#wkbmGjqf`wlqzf{wfmpjlmpf`qfwbqzmbwvqboozl``vqqjmdubqjbaofpdjufm#wkfsobwelqn-?,obafo=?ebjofg#wl`lnslvmgphjmgp#le#pl`jfwjfpbolmdpjgf#..%dw8 plvwktfpwwkf#qjdkwqbgjbwjlmnbz#kbuf#vmfp`bsf+pslhfm#jm!#kqfe>!,sqldqbnnflmoz#wkf#`lnf#eqlngjqf`wlqzavqjfg#jmb#pjnjobqwkfz#tfqf?,elmw=?,Mlqtfdjbmpsf`jejfgsqlgv`jmdsbppfmdfq+mft#Gbwfwfnslqbqzej`wjlmboBewfq#wkffrvbwjlmpgltmolbg-qfdvobqozgfufolsfqbaluf#wkfojmhfg#wlskfmlnfmbsfqjlg#lewllowjs!=pvapwbm`fbvwlnbwj`bpsf`w#leBnlmd#wkf`lmmf`wfgfpwjnbwfpBjq#Elq`fpzpwfn#lelaif`wjufjnnfgjbwfnbhjmd#jwsbjmwjmdp`lmrvfqfgbqf#pwjoosql`fgvqfdqltwk#lekfbgfg#azFvqlsfbm#gjujpjlmpnlof`vofpeqbm`kjpfjmwfmwjlmbwwqb`wfg`kjogkllgbopl#vpfggfgj`bwfgpjmdbslqfgfdqff#leebwkfq#le`lmeoj`wp?,b=?,s= `bnf#eqlntfqf#vpfgmlwf#wkbwqf`fjujmdF{f`vwjuffufm#nlqfb``fpp#wl`lnnbmgfqSlojwj`bonvpj`jbmpgfoj`jlvpsqjplmfqpbgufmw#leVWE.;!#,=?"X@GBWBX!=@lmwb`wPlvwkfqm#ad`lolq>!pfqjfp#le-#Jw#tbp#jm#Fvqlsfsfqnjwwfgubojgbwf-bssfbqjmdleej`jboppfqjlvpoz.obmdvbdfjmjwjbwfgf{wfmgjmdolmd.wfqnjmeobwjlmpv`k#wkbwdfw@llhjfnbqhfg#az?,avwwlm=jnsofnfmwavw#jw#jpjm`qfbpfpgltm#wkf#qfrvjqjmdgfsfmgfmw..= ?"..#jmwfqujftTjwk#wkf#`lsjfp#le`lmpfmpvptbp#avjowUfmfyvfob+elqnfqozwkf#pwbwfsfqplmmfopwqbwfdj`ebulvq#lejmufmwjlmTjhjsfgjb`lmwjmfmwujqwvbooztkj`k#tbpsqjm`jsof@lnsofwf#jgfmwj`bopklt#wkbwsqjnjwjufbtbz#eqlnnlof`vobqsqf`jpfozgjpploufgVmgfq#wkfufqpjlm>!=%maps8?,Jw#jp#wkf#Wkjp#jp#tjoo#kbuflqdbmjpnpplnf#wjnfEqjfgqj`ktbp#ejqpwwkf#lmoz#eb`w#wkbwelqn#jg>!sqf`fgjmdWf`kmj`boskzpj`jpwl``vqp#jmmbujdbwlqpf`wjlm!=psbm#jg>!plvdkw#wlafolt#wkfpvqujujmd~?,pwzof=kjp#gfbwkbp#jm#wkf`bvpfg#azsbqwjboozf{jpwjmd#vpjmd#wkftbp#djufmb#ojpw#leofufop#lemlwjlm#leLeej`jbo#gjpnjppfgp`jfmwjpwqfpfnaofpgvsoj`bwff{solpjufqf`lufqfgboo#lwkfqdboofqjfpxsbggjmd9sflsof#leqfdjlm#lebggqfppfpbppl`jbwfjnd#bow>!jm#nlgfqmpklvog#afnfwklg#leqfslqwjmdwjnfpwbnsmffgfg#wlwkf#Dqfbwqfdbqgjmdpffnfg#wlujftfg#bpjnsb`w#lmjgfb#wkbwwkf#Tlqogkfjdkw#lef{sbmgjmdWkfpf#bqf`vqqfmw!=`bqfevooznbjmwbjmp`kbqdf#le@obppj`bobggqfppfgsqfgj`wfgltmfqpkjs?gju#jg>!qjdkw!= qfpjgfm`fofbuf#wkf`lmwfmw!=bqf#lewfm##~*+*8 sqlabaoz#Sqlefpplq.avwwlm!#qfpslmgfgpbzp#wkbwkbg#wl#afsob`fg#jmKvmdbqjbmpwbwvp#lepfqufp#bpVmjufqpbof{f`vwjlmbddqfdbwfelq#tkj`kjmef`wjlmbdqffg#wlkltfufq/#slsvobq!=sob`fg#lm`lmpwqv`wfof`wlqbopznalo#lejm`ovgjmdqfwvqm#wlbq`kjwf`w@kqjpwjbmsqfujlvp#ojujmd#jmfbpjfq#wlsqlefpplq %ow8"..#feef`w#lebmbozwj`ptbp#wbhfmtkfqf#wkfwllh#lufqafojfe#jmBeqjhbbmpbp#ebq#bpsqfufmwfgtlqh#tjwkb#psf`jbo?ejfogpfw@kqjpwnbpQfwqjfufg Jm#wkf#ab`h#jmwlmlqwkfbpwnbdbyjmfp=?pwqlmd=`lnnjwwffdlufqmjmddqlvsp#lepwlqfg#jmfpwbaojpkb#dfmfqbojwp#ejqpwwkfjq#ltmslsvobwfgbm#laif`w@bqjaafbmboolt#wkfgjpwqj`wptjp`lmpjmol`bwjlm-8#tjgwk9#jmkbajwfgPl`jbojpwIbmvbqz#2?,ellwfq=pjnjobqoz`klj`f#lewkf#pbnf#psf`jej`#avpjmfpp#Wkf#ejqpw-ofmdwk8#gfpjqf#wlgfbo#tjwkpjm`f#wkfvpfqBdfmw`lm`fjufgjmgf{-sksbp#%rvlw8fmdbdf#jmqf`fmwoz/eft#zfbqptfqf#bopl ?kfbg= ?fgjwfg#azbqf#hmltm`jwjfp#jmb``fpphfz`lmgfnmfgbopl#kbufpfquj`fp/ebnjoz#leP`kllo#le`lmufqwfgmbwvqf#le#obmdvbdfnjmjpwfqp?,laif`w=wkfqf#jp#b#slsvobqpfrvfm`fpbgul`bwfgWkfz#tfqfbmz#lwkfqol`bwjlm>fmwfq#wkfnv`k#nlqfqfeof`wfgtbp#mbnfglqjdjmbo#b#wzsj`botkfm#wkfzfmdjmffqp`lvog#mlwqfpjgfmwptfgmfpgbzwkf#wkjqg#sqlgv`wpIbmvbqz#1tkbw#wkfzb#`fqwbjmqfb`wjlmpsql`fpplqbewfq#kjpwkf#obpw#`lmwbjmfg!=?,gju= ?,b=?,wg=gfsfmg#lmpfbq`k!= sjf`fp#le`lnsfwjmdQfefqfm`fwfmmfppfftkj`k#kbp#ufqpjlm>?,psbm=#??,kfbgfq=djufp#wkfkjpwlqjbmubovf>!!=sbggjmd93ujft#wkbwwldfwkfq/wkf#nlpw#tbp#elvmgpvapfw#lebwwb`h#lm`kjogqfm/sljmwp#lesfqplmbo#slpjwjlm9boofdfgoz@ofufobmgtbp#obwfqbmg#bewfqbqf#djufmtbp#pwjoop`qloojmdgfpjdm#lenbhfp#wkfnv`k#ofppBnfqj`bmp- Bewfq#/#avw#wkfNvpfvn#leolvjpjbmb+eqln#wkfnjmmfplwbsbqwj`ofpb#sql`fppGlnjmj`bmulovnf#leqfwvqmjmdgfefmpjuf33s{qjdknbgf#eqlnnlvpflufq!#pwzof>!pwbwfp#le+tkj`k#jp`lmwjmvfpEqbm`jp`lavjogjmd#tjwklvw#btjwk#plnftkl#tlvogb#elqn#leb#sbqw#leafelqf#jwhmltm#bp##Pfquj`fpol`bwjlm#bmg#lewfmnfbpvqjmdbmg#jw#jpsbsfqab`hubovfp#le ?wjwof=>#tjmglt-gfwfqnjmffq%rvlw8#sobzfg#azbmg#fbqoz?,`fmwfq=eqln#wkjpwkf#wkqffsltfq#bmgle#%rvlw8jmmfqKWNO?b#kqfe>!z9jmojmf8@kvq`k#lewkf#fufmwufqz#kjdkleej`jbo#.kfjdkw9#`lmwfmw>!,`dj.ajm,wl#`qfbwfbeqjhbbmpfpsfqbmwleqbm/Kbjpobwujf)Mvojfwvuj)_(`f)Mwjmb(af)Mwjmb\fUh\fT{\fTN\n{I\np@Fr\vBl\bQ A{\vUmGx A{ypYA\0zX\bTV\bWl\bUdBM\vB{\npV\v@xB\\\np@DbGz al\npa fM uD\bV~mx\vQ}\ndS p\\\bVK\bS]\bU|oD kV\ved\vHR\nb~M`\nJpoD|Q\nLPSw\bTl\nAI\nxC\bWt BqF`Cm\vLm Kx }t\bPv\ny\\\naB V\nZdXUli fr i@ BHBDBV `V\n[] p_ Tn\n~A\nxR uD `{\bV@ Tn HK AJ\vxsZf\nqIZf\vBM\v|j }t\bSM\nmC\vQ}pfquj`jlpbqw/A`volbqdfmwjmbabq`folmb`vborvjfqsvaoj`bglsqlgv`wlpslo/Awj`bqfpsvfpwbtjhjsfgjbpjdvjfmwfa/Vprvfgb`lnvmjgbgpfdvqjgbgsqjm`jsbosqfdvmwbp`lmwfmjglqfpslmgfqufmfyvfobsqlaofnbpgj`jfnaqfqfob`j/_mmlujfnaqfpjnjobqfpsqlzf`wlpsqldqbnbpjmpwjwvwlb`wjujgbgfm`vfmwqbf`lmln/Abjn/Mdfmfp`lmwb`wbqgfp`bqdbqmf`fpbqjlbwfm`j/_mwfo/Eelml`lnjpj/_m`bm`jlmfp`bsb`jgbgfm`lmwqbqbm/Mojpjpebulqjwlpw/Eqnjmlpsqlujm`jbfwjrvfwbpfofnfmwlpevm`jlmfpqfpvowbgl`bq/M`wfqsqlsjfgbgsqjm`jsjlmf`fpjgbgnvmj`jsbo`qfb`j/_mgfp`bqdbpsqfpfm`jb`lnfq`jbolsjmjlmfpfifq`j`jlfgjwlqjbopbobnbm`bdlmy/Mofygl`vnfmwlsfo/A`vobqf`jfmwfpdfmfqbofpwbqqbdlmbsq/M`wj`bmlufgbgfpsqlsvfpwbsb`jfmwfpw/E`mj`bplaifwjulp`lmwb`wlp\fHB\fIk\fHn\fH^\fHS\fHc\fHU\fId\fHn\fH{\fHC\fHR\fHT\fHR\fHI\fHc\fHY\fHn\fH\\\fHU\fIk\fHy\fIg\fHd\fHy\fIm\fHw\fH\\\fHU\fHR\fH@\fHR\fHJ\fHy\fHU\fHR\fHT\fHA\fIl\fHU\fIm\fHc\fH\\\fHU\fIl\fHB\fId\fHn\fHJ\fHS\fHD\fH@\fHR\fHHgjsolgl`p\fHT\fHB\fHC\fH\\\fIn\fHF\fHD\fHR\fHB\fHF\fHH\fHR\fHG\fHS\fH\\\fHx\fHT\fHH\fHH\fH\\\fHU\fH^\fIg\fH{\fHU\fIm\fHj\fH@\fHR\fH\\\fHJ\fIk\fHZ\fHU\fIm\fHd\fHz\fIk\fH^\fHC\fHJ\fHS\fHy\fHR\fHB\fHY\fIk\fH@\fHH\fIl\fHD\fH@\fIl\fHv\fHB\fI`\fHH\fHT\fHR\fH^\fH^\fIk\fHz\fHp\fIe\fH@\fHB\fHJ\fHJ\fHH\fHI\fHR\fHD\fHU\fIl\fHZ\fHU\fH\\\fHi\fH^\fH{\fHy\fHA\fIl\fHD\fH{\fH\\\fHF\fHR\fHT\fH\\\fHR\fHH\fHy\fHS\fHc\fHe\fHT\fIk\fH{\fHC\fIl\fHU\fIn\fHm\fHj\fH{\fIk\fHs\fIl\fHB\fHz\fIg\fHp\fHy\fHR\fH\\\fHi\fHA\fIl\fH{\fHC\fIk\fHH\fIm\fHB\fHY\fIg\fHs\fHJ\fIk\fHn\fHi\fH{\fH\\\fH|\fHT\fIk\fHB\fIk\fH^\fH^\fH{\fHR\fHU\fHR\fH^\fHf\fHF\fH\\\fHv\fHR\fH\\\fH|\fHT\fHR\fHJ\fIk\fH\\\fHp\fHS\fHT\fHJ\fHS\fH^\fH@\fHn\fHJ\fH@\fHD\fHR\fHU\fIn\fHn\fH^\fHR\fHz\fHp\fIl\fHH\fH@\fHs\fHD\fHB\fHS\fH^\fHk\fHT\fIk\fHj\fHD\fIk\fHD\fHC\fHR\fHy\fIm\fH^\fH^\fIe\fH{\fHA\fHR\fH{\fH\\\fIk\fH^\fHp\fH{\fHU\fH\\\fHR\fHB\fH^\fH{\fIk\fHF\fIk\fHp\fHU\fHR\fHI\fHk\fHT\fIl\fHT\fHU\fIl\fHy\fH^\fHR\fHL\fIl\fHy\fHU\fHR\fHm\fHJ\fIn\fH\\\fHH\fHU\fHH\fHT\fHR\fHH\fHC\fHR\fHJ\fHj\fHC\fHR\fHF\fHR\fHy\fHy\fI`\fHD\fHZ\fHR\fHB\fHJ\fIk\fHz\fHC\fHU\fIl\fH\\\fHR\fHC\fHz\fIm\fHJ\fH^\fH{\fIl`bwfdlqjfpf{sfqjfm`f?,wjwof= @lszqjdkw#ibubp`qjsw`lmgjwjlmpfufqzwkjmd?s#`obpp>!wf`kmloldzab`hdqlvmg?b#`obpp>!nbmbdfnfmw%`lsz8#132ibubP`qjsw`kbqb`wfqpaqfbg`qvnawkfnpfoufpklqjylmwbodlufqmnfmw@bojelqmjbb`wjujwjfpgjp`lufqfgMbujdbwjlmwqbmpjwjlm`lmmf`wjlmmbujdbwjlmbssfbqbm`f?,wjwof=?n`kf`hal{!#wf`kmjrvfpsqlwf`wjlmbssbqfmwozbp#tfoo#bpvmw$/#$VB.qfplovwjlmlsfqbwjlmpwfofujpjlmwqbmpobwfgTbpkjmdwlmmbujdbwlq-#>#tjmglt-jnsqfppjlm%ow8aq%dw8ojwfqbwvqfslsvobwjlmad`lolq>! fpsf`jbooz#`lmwfmw>!sqlgv`wjlmmftpofwwfqsqlsfqwjfpgfejmjwjlmofbgfqpkjsWf`kmloldzSbqojbnfmw`lnsbqjplmvo#`obpp>!-jmgf{Le+!`lm`ovpjlmgjp`vppjlm`lnslmfmwpajloldj`boQfulovwjlm\\`lmwbjmfqvmgfqpwllgmlp`qjsw=?sfqnjppjlmfb`k#lwkfqbwnlpskfqf#lmel`vp>!?elqn#jg>!sql`fppjmdwkjp-ubovfdfmfqbwjlm@lmefqfm`fpvapfrvfmwtfoo.hmltmubqjbwjlmpqfsvwbwjlmskfmlnfmlmgjp`jsojmfoldl-smd!#+gl`vnfmw/alvmgbqjfpf{sqfppjlmpfwwofnfmwAb`hdqlvmglvw#le#wkffmwfqsqjpf+!kwwsp9!#vmfp`bsf+!sbpptlqg!#gfnl`qbwj`?b#kqfe>!,tqbssfq!= nfnafqpkjsojmdvjpwj`s{8sbggjmdskjolplskzbppjpwbm`fvmjufqpjwzeb`jojwjfpqf`ldmjyfgsqfefqfm`fje#+wzsflenbjmwbjmfgul`bavobqzkzslwkfpjp-pvanjw+*8%bns8maps8bmmlwbwjlmafkjmg#wkfElvmgbwjlmsvaojpkfq!bppvnswjlmjmwqlgv`fg`lqqvswjlmp`jfmwjpwpf{soj`jwozjmpwfbg#legjnfmpjlmp#lm@oj`h>!`lmpjgfqfggfsbqwnfmwl``vsbwjlmpllm#bewfqjmufpwnfmwsqlmlvm`fgjgfmwjejfgf{sfqjnfmwNbmbdfnfmwdfldqbskj`!#kfjdkw>!ojmh#qfo>!-qfsob`f+,gfsqfppjlm`lmefqfm`fsvmjpknfmwfojnjmbwfgqfpjpwbm`fbgbswbwjlmlsslpjwjlmtfoo#hmltmpvssofnfmwgfwfqnjmfgk2#`obpp>!3s{8nbqdjmnf`kbmj`bopwbwjpwj`p`fofaqbwfgDlufqmnfmw Gvqjmd#wgfufolsfqpbqwjej`jbofrvjubofmwlqjdjmbwfg@lnnjppjlmbwwb`knfmw?psbm#jg>!wkfqf#tfqfMfgfqobmgpafzlmg#wkfqfdjpwfqfgilvqmbojpweqfrvfmwozboo#le#wkfobmd>!fm!#?,pwzof= baplovwf8#pvsslqwjmdf{wqfnfoz#nbjmpwqfbn?,pwqlmd=#slsvobqjwzfnsolznfmw?,wbaof= #`lopsbm>!?,elqn= ##`lmufqpjlmbalvw#wkf#?,s=?,gju=jmwfdqbwfg!#obmd>!fmSlqwvdvfpfpvapwjwvwfjmgjujgvbojnslppjaofnvowjnfgjbbonlpw#boos{#plojg# bsbqw#eqlnpvaif`w#wljm#Fmdojpk`qjwj`jyfgf{`fsw#elqdvjgfojmfplqjdjmboozqfnbqhbaofwkf#pf`lmgk1#`obpp>!?b#wjwof>!+jm`ovgjmdsbqbnfwfqpsqlkjajwfg>#!kwws9,,gj`wjlmbqzsfq`fswjlmqfulovwjlmelvmgbwjlms{8kfjdkw9pv``fppevopvsslqwfqpnjoofmmjvnkjp#ebwkfqwkf#%rvlw8ml.qfsfbw8`lnnfq`jbojmgvpwqjbofm`lvqbdfgbnlvmw#le#vmleej`jbofeej`jfm`zQfefqfm`fp`llqgjmbwfgjp`objnfqf{sfgjwjlmgfufolsjmd`bo`vobwfgpjnsojejfgofdjwjnbwfpvapwqjmd+3!#`obpp>!`lnsofwfozjoovpwqbwfejuf#zfbqpjmpwqvnfmwSvaojpkjmd2!#`obpp>!spz`kloldz`lmejgfm`fmvnafq#le#bapfm`f#leel`vpfg#lmiljmfg#wkfpwqv`wvqfpsqfujlvpoz=?,jeqbnf=lm`f#bdbjmavw#qbwkfqjnnjdqbmwple#`lvqpf/b#dqlvs#leOjwfqbwvqfVmojhf#wkf?,b=%maps8 evm`wjlm#jw#tbp#wkf@lmufmwjlmbvwlnlajofSqlwfpwbmwbddqfppjufbewfq#wkf#Pjnjobqoz/!#,=?,gju=`loof`wjlm evm`wjlmujpjajojwzwkf#vpf#leulovmwffqpbwwqb`wjlmvmgfq#wkf#wkqfbwfmfg)?"X@GBWBXjnslqwbm`fjm#dfmfqbowkf#obwwfq?,elqn= ?,-jmgf{Le+$j#>#38#j#?gjeefqfm`fgfulwfg#wlwqbgjwjlmppfbq`k#elqvowjnbwfozwlvqmbnfmwbwwqjavwfppl.`boofg#~ ?,pwzof=fubovbwjlmfnskbpjyfgb``fppjaof?,pf`wjlm=pv``fppjlmbolmd#tjwkNfbmtkjof/jmgvpwqjfp?,b=?aq#,=kbp#af`lnfbpsf`wp#leWfofujpjlmpveej`jfmwabphfwabooalwk#pjgfp`lmwjmvjmdbm#bqwj`of?jnd#bow>!bgufmwvqfpkjp#nlwkfqnbm`kfpwfqsqjm`jsofpsbqwj`vobq`lnnfmwbqzfeef`wp#legf`jgfg#wl!=?pwqlmd=svaojpkfqpIlvqmbo#legjeej`vowzeb`jojwbwfb``fswbaofpwzof-`pp!\nevm`wjlm#jmmlubwjlm=@lszqjdkwpjwvbwjlmptlvog#kbufavpjmfppfpGj`wjlmbqzpwbwfnfmwplewfm#vpfgsfqpjpwfmwjm#Ibmvbqz`lnsqjpjmd?,wjwof= \ngjsolnbwj``lmwbjmjmdsfqelqnjmdf{wfmpjlmpnbz#mlw#af`lm`fsw#le#lm`oj`h>!Jw#jp#boplejmbm`jbo#nbhjmd#wkfOv{fnalvqdbggjwjlmbobqf#`boofgfmdbdfg#jm!p`qjsw!*8avw#jw#tbpfof`wqlmj`lmpvanjw>! ?"..#Fmg#fof`wqj`boleej`jboozpvddfpwjlmwls#le#wkfvmojhf#wkfBvpwqbojbmLqjdjmboozqfefqfm`fp ?,kfbg= qf`ldmjpfgjmjwjbojyfojnjwfg#wlBof{bmgqjbqfwjqfnfmwBgufmwvqfpelvq#zfbqp %ow8"..#jm`qfbpjmdgf`lqbwjlmk0#`obpp>!lqjdjmp#lelaojdbwjlmqfdvobwjlm`obppjejfg+evm`wjlm+bgubmwbdfpafjmd#wkf#kjpwlqjbmp?abpf#kqfeqfsfbwfgoztjoojmd#wl`lnsbqbaofgfpjdmbwfgmlnjmbwjlmevm`wjlmbojmpjgf#wkfqfufobwjlmfmg#le#wkfp#elq#wkf#bvwklqjyfgqfevpfg#wlwbhf#sob`fbvwlmlnlvp`lnsqlnjpfslojwj`bo#qfpwbvqbmwwtl#le#wkfEfaqvbqz#1rvbojwz#leptelaif`w-vmgfqpwbmgmfbqoz#bootqjwwfm#azjmwfqujftp!#tjgwk>!2tjwkgqbtboeolbw9ofewjp#vpvbooz`bmgjgbwfpmftpsbsfqpnzpwfqjlvpGfsbqwnfmwafpw#hmltmsbqojbnfmwpvssqfppfg`lmufmjfmwqfnfnafqfggjeefqfmw#pzpwfnbwj`kbp#ofg#wlsqlsbdbmgb`lmwqloofgjmeovfm`fp`fqfnlmjbosql`objnfgSqlwf`wjlmoj#`obpp>!P`jfmwjej``obpp>!ml.wqbgfnbqhpnlqf#wkbm#tjgfpsqfbgOjafqbwjlmwllh#sob`fgbz#le#wkfbp#olmd#bpjnsqjplmfgBggjwjlmbo ?kfbg= ?nObalqbwlqzMlufnafq#1f{`fswjlmpJmgvpwqjboubqjfwz#leeolbw9#ofeGvqjmd#wkfbppfppnfmwkbuf#affm#gfbop#tjwkPwbwjpwj`pl``vqqfm`f,vo=?,gju=`ofbqej{!=wkf#svaoj`nbmz#zfbqptkj`k#tfqflufq#wjnf/pzmlmznlvp`lmwfmw!= sqfpvnbaozkjp#ebnjozvpfqBdfmw-vmf{sf`wfgjm`ovgjmd#`kboofmdfgb#njmlqjwzvmgfejmfg!afolmdp#wlwbhfm#eqlnjm#L`wlafqslpjwjlm9#pbjg#wl#afqfojdjlvp#Efgfqbwjlm#qltpsbm>!lmoz#b#eftnfbmw#wkbwofg#wl#wkf..= ?gju#?ejfogpfw=Bq`kajpkls#`obpp>!mlafjmd#vpfgbssqlb`kfpsqjujofdfpmlp`qjsw= qfpvowp#jmnbz#af#wkfFbpwfq#fddnf`kbmjpnpqfbplmbaofSlsvobwjlm@loof`wjlmpfof`wfg!=mlp`qjsw=,jmgf{-sksbqqjubo#le.ippgh$**8nbmbdfg#wljm`lnsofwf`bpvbowjfp`lnsofwjlm@kqjpwjbmpPfswfnafq#bqjwknfwj`sql`fgvqfpnjdkw#kbufSqlgv`wjlmjw#bssfbqpSkjolplskzeqjfmgpkjsofbgjmd#wldjujmd#wkfwltbqg#wkfdvbqbmwffggl`vnfmwfg`lolq9 333ujgfl#dbnf`lnnjppjlmqfeof`wjmd`kbmdf#wkfbppl`jbwfgpbmp.pfqjelmhfzsqfpp8#sbggjmd9Kf#tbp#wkfvmgfqozjmdwzsj`booz#/#bmg#wkf#pq`Fofnfmwpv``fppjufpjm`f#wkf#pklvog#af#mfwtlqhjmdb``lvmwjmdvpf#le#wkfoltfq#wkbmpkltp#wkbw?,psbm= \n\n`lnsobjmwp`lmwjmvlvprvbmwjwjfpbpwqlmlnfqkf#gjg#mlwgvf#wl#jwpbssojfg#wlbm#bufqbdffeelqwp#wlwkf#evwvqfbwwfnsw#wlWkfqfelqf/`bsbajojwzQfsvaoj`bmtbp#elqnfgFof`wqlmj`hjolnfwfqp`kboofmdfpsvaojpkjmdwkf#elqnfqjmgjdfmlvpgjqf`wjlmppvapjgjbqz`lmpsjqb`zgfwbjop#lebmg#jm#wkfbeelqgbaofpvapwbm`fpqfbplm#elq`lmufmwjlmjwfnwzsf>!baplovwfozpvsslpfgozqfnbjmfg#bbwwqb`wjufwqbufoojmdpfsbqbwfozel`vpfp#lmfofnfmwbqzbssoj`baofelvmg#wkbwpwzofpkffwnbmvp`qjswpwbmgp#elq#ml.qfsfbw+plnfwjnfp@lnnfq`jbojm#Bnfqj`bvmgfqwbhfmrvbqwfq#lebm#f{bnsofsfqplmboozjmgf{-sks!owqOjfvwfmbmw ?gju#jg>!wkfz#tlvogbajojwz#lenbgf#vs#lemlwfg#wkbw`ofbq#wkbwbqdvf#wkbwwl#bmlwkfq`kjogqfm$psvqslpf#leelqnvobwfgabpfg#vslmwkf#qfdjlmpvaif`w#lesbppfmdfqpslppfppjlm- Jm#wkf#Afelqf#wkfbewfqtbqgp`vqqfmwoz#b`qlpp#wkfp`jfmwjej``lnnvmjwz-`bsjwbojpnjm#Dfqnbmzqjdkw.tjmdwkf#pzpwfnPl`jfwz#leslojwj`jbmgjqf`wjlm9tfmw#lm#wlqfnlubo#le#Mft#Zlqh#bsbqwnfmwpjmgj`bwjlmgvqjmd#wkfvmofpp#wkfkjpwlqj`bokbg#affm#bgfejmjwjufjmdqfgjfmwbwwfmgbm`f@fmwfq#elqsqlnjmfm`fqfbgzPwbwfpwqbwfdjfpavw#jm#wkfbp#sbqw#le`lmpwjwvwf`objn#wkbwobalqbwlqz`lnsbwjaofebjovqf#le/#pv`k#bp#afdbm#tjwkvpjmd#wkf#wl#sqlujgfefbwvqf#leeqln#tkj`k,!#`obpp>!dfloldj`bopfufqbo#legfojafqbwfjnslqwbmw#klogp#wkbwjmd%rvlw8#ubojdm>wlswkf#Dfqnbmlvwpjgf#lemfdlwjbwfgkjp#`bqffqpfsbqbwjlmjg>!pfbq`ktbp#`boofgwkf#elvqwkqf`qfbwjlmlwkfq#wkbmsqfufmwjlmtkjof#wkf#fgv`bwjlm/`lmmf`wjmdb``vqbwfoztfqf#avjowtbp#hjoofgbdqffnfmwpnv`k#nlqf#Gvf#wl#wkftjgwk9#233plnf#lwkfqHjmdgln#lewkf#fmwjqfebnlvp#elqwl#`lmmf`wlaif`wjufpwkf#Eqfm`ksflsof#bmgefbwvqfg!=jp#pbjg#wlpwqv`wvqboqfefqfmgvnnlpw#lewfmb#pfsbqbwf.= ?gju#jg#Leej`jbo#tlqogtjgf-bqjb.obafowkf#sobmfwbmg#jw#tbpg!#ubovf>!ollhjmd#bwafmfej`jbobqf#jm#wkfnlmjwlqjmdqfslqwfgozwkf#nlgfqmtlqhjmd#lmbooltfg#wltkfqf#wkf#jmmlubwjuf?,b=?,gju=plvmgwqb`hpfbq`kElqnwfmg#wl#afjmsvw#jg>!lsfmjmd#leqfpwqj`wfgbglswfg#azbggqfppjmdwkfloldjbmnfwklgp#leubqjbmw#le@kqjpwjbm#ufqz#obqdfbvwlnlwjufaz#ebq#wkfqbmdf#eqlnsvqpvjw#leeloolt#wkfaqlvdkw#wljm#Fmdobmgbdqff#wkbwb``vpfg#le`lnfp#eqlnsqfufmwjmdgju#pwzof>kjp#lq#kfqwqfnfmglvpeqffgln#le`lm`fqmjmd3#2fn#2fn8Abphfwaboo,pwzof-`ppbm#fbqojfqfufm#bewfq,!#wjwof>!-`ln,jmgf{wbhjmd#wkfsjwwpavqdk`lmwfmw!=?p`qjsw=+ewvqmfg#lvwkbujmd#wkf?,psbm= #l``bpjlmboaf`bvpf#jwpwbqwfg#wlskzpj`booz=?,gju= ##`qfbwfg#az@vqqfmwoz/#ad`lolq>!wbajmgf{>!gjpbpwqlvpBmbozwj`p#bopl#kbp#b=?gju#jg>!?,pwzof= ?`boofg#elqpjmdfq#bmg-pq`#>#!,,ujlobwjlmpwkjp#sljmw`lmpwbmwozjp#ol`bwfgqf`lqgjmdpg#eqln#wkfmfgfqobmgpslqwvdv/Fp;N;};D;u;F5m4K4]4_7`gfpbqqlool`lnfmwbqjlfgv`b`j/_mpfswjfnaqfqfdjpwqbglgjqf``j/_mvaj`b`j/_msvaoj`jgbgqfpsvfpwbpqfpvowbglpjnslqwbmwfqfpfqubglpbqw/A`volpgjefqfmwfppjdvjfmwfpqfs/Vaoj`bpjwvb`j/_mnjmjpwfqjlsqjub`jgbggjqf`wlqjlelqnb`j/_mslaob`j/_msqfpjgfmwf`lmw','fmjglpb``fplqjlpwf`kmlqbwjsfqplmbofp`bwfdlq/Abfpsf`jbofpgjpslmjaofb`wvbojgbgqfefqfm`jbuboobglojgajaojlwf`bqfob`jlmfp`bofmgbqjlslo/Awj`bpbmwfqjlqfpgl`vnfmwlpmbwvqbofybnbwfqjbofpgjefqfm`jbf`lm/_nj`bwqbmpslqwfqlgq/Advfysbqwj`jsbqfm`vfmwqbmgjp`vpj/_mfpwqv`wvqbevmgb`j/_meqf`vfmwfpsfqnbmfmwfwlwbonfmwf!2s{#plojg# -dje!#bow>!wqbmpsbqfmwjmelqnbwjlmbssoj`bwjlm!#lm`oj`h>!fpwbaojpkfgbgufqwjpjmd-smd!#bow>!fmujqlmnfmwsfqelqnbm`fbssqlsqjbwf%bns8ngbpk8jnnfgjbwfoz?,pwqlmd=?,qbwkfq#wkbmwfnsfqbwvqfgfufolsnfmw`lnsfwjwjlmsob`fklogfqujpjajojwz9`lszqjdkw!=3!#kfjdkw>!fufm#wklvdkqfsob`fnfmwgfpwjmbwjlm@lqslqbwjlm?vo#`obpp>!Bppl`jbwjlmjmgjujgvbopsfqpsf`wjufpfwWjnflvw+vqo+kwws9,,nbwkfnbwj`pnbqdjm.wls9fufmwvbooz#gfp`qjswjlm*#ml.qfsfbw`loof`wjlmp-ISDwkvnasbqwj`jsbwf,kfbg=?algzeolbw9ofew8?oj#`obpp>!kvmgqfgp#le Kltfufq/#`lnslpjwjlm`ofbq9alwk8`llsfqbwjlmtjwkjm#wkf#obafo#elq>!alqgfq.wls9Mft#Yfbobmgqf`lnnfmgfgsklwldqbskzjmwfqfpwjmd%ow8pvs%dw8`lmwqlufqpzMfwkfqobmgpbowfqmbwjufnb{ofmdwk>!ptjwyfqobmgGfufolsnfmwfppfmwjbooz Bowklvdk#?,wf{wbqfb=wkvmgfqajqgqfsqfpfmwfg%bns8mgbpk8psf`vobwjlm`lnnvmjwjfpofdjpobwjlmfof`wqlmj`p \n?gju#jg>!joovpwqbwfgfmdjmffqjmdwfqqjwlqjfpbvwklqjwjfpgjpwqjavwfg5!#kfjdkw>!pbmp.pfqje8`bsbaof#le#gjpbssfbqfgjmwfqb`wjufollhjmd#elqjw#tlvog#afBedkbmjpwbmtbp#`qfbwfgNbwk-eollq+pvqqlvmgjmd`bm#bopl#aflapfqubwjlmnbjmwfmbm`ffm`lvmwfqfg?k1#`obpp>!nlqf#qf`fmwjw#kbp#affmjmubpjlm#le*-dfwWjnf+*evmgbnfmwboGfpsjwf#wkf!=?gju#jg>!jmpsjqbwjlmf{bnjmbwjlmsqfsbqbwjlmf{sobmbwjlm?jmsvw#jg>!?,b=?,psbm=ufqpjlmp#lejmpwqvnfmwpafelqf#wkf##>#$kwws9,,Gfp`qjswjlmqfobwjufoz#-pvapwqjmd+fb`k#le#wkff{sfqjnfmwpjmeovfmwjbojmwfdqbwjlmnbmz#sflsofgvf#wl#wkf#`lnajmbwjlmgl#mlw#kbufNjggof#Fbpw?mlp`qjsw=?`lszqjdkw!#sfqkbsp#wkfjmpwjwvwjlmjm#Gf`fnafqbqqbmdfnfmwnlpw#ebnlvpsfqplmbojwz`qfbwjlm#leojnjwbwjlmpf{`ovpjufozplufqfjdmwz.`lmwfmw!= ?wg#`obpp>!vmgfqdqlvmgsbqboofo#wlgl`wqjmf#lel``vsjfg#azwfqnjmloldzQfmbjppbm`fb#mvnafq#lepvsslqw#elqf{solqbwjlmqf`ldmjwjlmsqfgf`fpplq?jnd#pq`>!,?k2#`obpp>!svaoj`bwjlmnbz#bopl#afpsf`jbojyfg?,ejfogpfw=sqldqfppjufnjoojlmp#lepwbwfp#wkbwfmelq`fnfmwbqlvmg#wkf#lmf#bmlwkfq-sbqfmwMlgfbdqj`vowvqfBowfqmbwjufqfpfbq`kfqpwltbqgp#wkfNlpw#le#wkfnbmz#lwkfq#+fpsf`jbooz?wg#tjgwk>!8tjgwk9233&jmgfsfmgfmw?k0#`obpp>!#lm`kbmdf>!*-bgg@obpp+jmwfqb`wjlmLmf#le#wkf#gbvdkwfq#leb``fpplqjfpaqbm`kfp#le ?gju#jg>!wkf#obqdfpwgf`obqbwjlmqfdvobwjlmpJmelqnbwjlmwqbmpobwjlmgl`vnfmwbqzjm#lqgfq#wl!= ?kfbg= ?!#kfjdkw>!2b`qlpp#wkf#lqjfmwbwjlm*8?,p`qjsw=jnsofnfmwfg`bm#af#pffmwkfqf#tbp#bgfnlmpwqbwf`lmwbjmfq!=`lmmf`wjlmpwkf#Aqjwjpktbp#tqjwwfm"jnslqwbmw8s{8#nbqdjm.elooltfg#azbajojwz#wl#`lnsoj`bwfggvqjmd#wkf#jnnjdqbwjlmbopl#`boofg?k7#`obpp>!gjpwjm`wjlmqfsob`fg#azdlufqmnfmwpol`bwjlm#lejm#Mlufnafqtkfwkfq#wkf?,s= ?,gju=b`rvjpjwjlm`boofg#wkf#sfqpf`vwjlmgfpjdmbwjlmxelmw.pjyf9bssfbqfg#jmjmufpwjdbwff{sfqjfm`fgnlpw#ojhfoztjgfoz#vpfggjp`vppjlmpsqfpfm`f#le#+gl`vnfmw-f{wfmpjufozJw#kbp#affmjw#glfp#mlw`lmwqbqz#wljmkbajwbmwpjnsqlufnfmwp`klobqpkjs`lmpvnswjlmjmpwqv`wjlmelq#f{bnsoflmf#lq#nlqfs{8#sbggjmdwkf#`vqqfmwb#pfqjfp#lebqf#vpvboozqlof#jm#wkfsqfujlvpoz#gfqjubwjufpfujgfm`f#lef{sfqjfm`fp`lolqp`kfnfpwbwfg#wkbw`fqwjej`bwf?,b=?,gju= #pfof`wfg>!kjdk#p`klloqfpslmpf#wl`lnelqwbaofbglswjlm#lewkqff#zfbqpwkf#`lvmwqzjm#Efaqvbqzpl#wkbw#wkfsflsof#tkl#sqlujgfg#az?sbqbn#mbnfbeef`wfg#azjm#wfqnp#lebssljmwnfmwJPL.;;6:.2!tbp#alqm#jmkjpwlqj`bo#qfdbqgfg#bpnfbpvqfnfmwjp#abpfg#lm#bmg#lwkfq#9#evm`wjlm+pjdmjej`bmw`fofaqbwjlmwqbmpnjwwfg,ip,irvfqz-jp#hmltm#bpwkflqfwj`bo#wbajmgf{>!jw#`lvog#af?mlp`qjsw= kbujmd#affm ?kfbg= ?#%rvlw8Wkf#`lnsjobwjlmkf#kbg#affmsqlgv`fg#azskjolplskfq`lmpwqv`wfgjmwfmgfg#wlbnlmd#lwkfq`lnsbqfg#wlwl#pbz#wkbwFmdjmffqjmdb#gjeefqfmwqfefqqfg#wlgjeefqfm`fpafojfe#wkbwsklwldqbskpjgfmwjezjmdKjpwlqz#le#Qfsvaoj`#lemf`fppbqjozsqlabajojwzwf`kmj`boozofbujmd#wkfpsf`wb`vobqeqb`wjlm#lefof`wqj`jwzkfbg#le#wkfqfpwbvqbmwpsbqwmfqpkjsfnskbpjp#lmnlpw#qf`fmwpkbqf#tjwk#pbzjmd#wkbwejoofg#tjwkgfpjdmfg#wljw#jp#lewfm!=?,jeqbnf=bp#elooltp9nfqdfg#tjwkwkqlvdk#wkf`lnnfq`jbo#sljmwfg#lvwlsslqwvmjwzujft#le#wkfqfrvjqfnfmwgjujpjlm#lesqldqbnnjmdkf#qf`fjufgpfwJmwfqubo!=?,psbm=?,jm#Mft#Zlqhbggjwjlmbo#`lnsqfppjlm ?gju#jg>!jm`lqslqbwf8?,p`qjsw=?bwwb`kFufmwaf`bnf#wkf#!#wbqdfw>!\\`bqqjfg#lvwPlnf#le#wkfp`jfm`f#bmgwkf#wjnf#le@lmwbjmfq!=nbjmwbjmjmd@kqjpwlskfqNv`k#le#wkftqjwjmdp#le!#kfjdkw>!1pjyf#le#wkfufqpjlm#le#nj{wvqf#le#afwtffm#wkfF{bnsofp#lefgv`bwjlmbo`lnsfwjwjuf#lmpvanjw>!gjqf`wlq#legjpwjm`wjuf,GWG#[KWNO#qfobwjmd#wlwfmgfm`z#wlsqlujm`f#letkj`k#tlvoggfpsjwf#wkfp`jfmwjej`#ofdjpobwvqf-jmmfqKWNO#boofdbwjlmpBdqj`vowvqftbp#vpfg#jmbssqlb`k#wljmwfoojdfmwzfbqp#obwfq/pbmp.pfqjegfwfqnjmjmdSfqelqnbm`fbssfbqbm`fp/#tkj`k#jp#elvmgbwjlmpbaaqfujbwfgkjdkfq#wkbmp#eqln#wkf#jmgjujgvbo#`lnslpfg#lepvsslpfg#wl`objnp#wkbwbwwqjavwjlmelmw.pjyf92fofnfmwp#leKjpwlqj`bo#kjp#aqlwkfqbw#wkf#wjnfbmmjufqpbqzdlufqmfg#azqfobwfg#wl#vowjnbwfoz#jmmlubwjlmpjw#jp#pwjoo`bm#lmoz#afgfejmjwjlmpwlDNWPwqjmdB#mvnafq#lejnd#`obpp>!Fufmwvbooz/tbp#`kbmdfgl``vqqfg#jmmfjdkalqjmdgjpwjmdvjpktkfm#kf#tbpjmwqlgv`jmdwfqqfpwqjboNbmz#le#wkfbqdvfp#wkbwbm#Bnfqj`bm`lmrvfpw#letjgfpsqfbg#tfqf#hjoofgp`qffm#bmg#Jm#lqgfq#wlf{sf`wfg#wlgfp`fmgbmwpbqf#ol`bwfgofdjpobwjufdfmfqbwjlmp#ab`hdqlvmgnlpw#sflsofzfbqp#bewfqwkfqf#jp#mlwkf#kjdkfpweqfrvfmwoz#wkfz#gl#mlwbqdvfg#wkbwpkltfg#wkbwsqfglnjmbmwwkfloldj`boaz#wkf#wjnf`lmpjgfqjmdpklqw.ojufg?,psbm=?,b=`bm#af#vpfgufqz#ojwwoflmf#le#wkf#kbg#boqfbgzjmwfqsqfwfg`lnnvmj`bwfefbwvqfp#ledlufqmnfmw/?,mlp`qjsw=fmwfqfg#wkf!#kfjdkw>!0Jmgfsfmgfmwslsvobwjlmpobqdf.p`bof-#Bowklvdk#vpfg#jm#wkfgfpwqv`wjlmslppjajojwzpwbqwjmd#jmwtl#lq#nlqff{sqfppjlmppvalqgjmbwfobqdfq#wkbmkjpwlqz#bmg?,lswjlm= @lmwjmfmwbofojnjmbwjmdtjoo#mlw#afsqb`wj`f#lejm#eqlmw#lepjwf#le#wkffmpvqf#wkbwwl#`qfbwf#bnjppjppjssjslwfmwjboozlvwpwbmgjmdafwwfq#wkbmtkbw#jp#mltpjwvbwfg#jmnfwb#mbnf>!WqbgjwjlmbopvddfpwjlmpWqbmpobwjlmwkf#elqn#lebwnlpskfqj`jgfloldj`bofmwfqsqjpfp`bo`vobwjmdfbpw#le#wkfqfnmbmwp#lesovdjmpsbdf,jmgf{-sks!Wkjp#jp#wkf#?b#kqfe>!,slsvobqjyfgjmuloufg#jmbqf#vpfg#wlbmg#pfufqbonbgf#az#wkfpffnp#wl#afojhfoz#wkbwSbofpwjmjbmmbnfg#bewfqjw#kbg#affmnlpw#`lnnlmwl#qfefq#wlavw#wkjp#jp`lmpf`vwjufwfnslqbqjozJm#dfmfqbo/`lmufmwjlmpwbhfp#sob`fpvagjujpjlmwfqqjwlqjbolsfqbwjlmbosfqnbmfmwoztbp#obqdfozlvwaqfbh#lejm#wkf#sbpwelooltjmd#b#{nomp9ld>!=?b#`obpp>!`obpp>!wf{w@lmufqpjlm#nbz#af#vpfgnbmveb`wvqfbewfq#afjmd`ofbqej{!= rvfpwjlm#letbp#fof`wfgwl#af`lnf#baf`bvpf#le#plnf#sflsofjmpsjqfg#azpv``fppevo#b#wjnf#tkfmnlqf#`lnnlmbnlmdpw#wkfbm#leej`jbotjgwk9233&8wf`kmloldz/tbp#bglswfgwl#hffs#wkfpfwwofnfmwpojuf#ajqwkpjmgf{-kwno!@lmmf`wj`vwbppjdmfg#wl%bns8wjnfp8b``lvmw#elqbojdm>qjdkwwkf#`lnsbmzbotbzp#affmqfwvqmfg#wljmuloufnfmwAf`bvpf#wkfwkjp#sfqjlg!#mbnf>!r!#`lmejmfg#wlb#qfpvow#leubovf>!!#,=jp#b`wvboozFmujqlmnfmw ?,kfbg= @lmufqpfoz/= ?gju#jg>!3!#tjgwk>!2jp#sqlabaozkbuf#af`lnf`lmwqloojmdwkf#sqlaofn`jwjyfmp#leslojwj`jbmpqfb`kfg#wkfbp#fbqoz#bp9mlmf8#lufq?wbaof#`fooubojgjwz#legjqf`woz#wllmnlvpfgltmtkfqf#jw#jptkfm#jw#tbpnfnafqp#le#qfobwjlm#wlb``lnnlgbwfbolmd#tjwk#Jm#wkf#obwfwkf#Fmdojpkgfoj`jlvp!=wkjp#jp#mlwwkf#sqfpfmwje#wkfz#bqfbmg#ejmboozb#nbwwfq#le \n?,gju=  ?,p`qjsw=ebpwfq#wkbmnbilqjwz#lebewfq#tkj`k`lnsbqbwjufwl#nbjmwbjmjnsqluf#wkfbtbqgfg#wkffq!#`obpp>!eqbnfalqgfqqfpwlqbwjlmjm#wkf#pbnfbmbozpjp#lewkfjq#ejqpwGvqjmd#wkf#`lmwjmfmwbopfrvfm`f#leevm`wjlm+*xelmw.pjyf9#tlqh#lm#wkf?,p`qjsw= ?afdjmp#tjwkibubp`qjsw9`lmpwjwvfmwtbp#elvmgfgfrvjojaqjvnbppvnf#wkbwjp#djufm#azmffgp#wl#af`llqgjmbwfpwkf#ubqjlvpbqf#sbqw#lelmoz#jm#wkfpf`wjlmp#lejp#b#`lnnlmwkflqjfp#legjp`lufqjfpbppl`jbwjlmfgdf#le#wkfpwqfmdwk#leslpjwjlm#jmsqfpfmw.gbzvmjufqpboozwl#elqn#wkfavw#jmpwfbg`lqslqbwjlmbwwb`kfg#wljp#`lnnlmozqfbplmp#elq#%rvlw8wkf#`bm#af#nbgftbp#baof#wltkj`k#nfbmpavw#gjg#mlwlmNlvpfLufqbp#slppjaoflsfqbwfg#az`lnjmd#eqlnwkf#sqjnbqzbggjwjlm#leelq#pfufqbowqbmpefqqfgb#sfqjlg#lebqf#baof#wlkltfufq/#jwpklvog#kbufnv`k#obqdfq \n?,p`qjsw=bglswfg#wkfsqlsfqwz#legjqf`wfg#azfeef`wjufoztbp#aqlvdkw`kjogqfm#leSqldqbnnjmdolmdfq#wkbmnbmvp`qjswptbq#bdbjmpwaz#nfbmp#lebmg#nlpw#lepjnjobq#wl#sqlsqjfwbqzlqjdjmbwjmdsqfpwjdjlvpdqbnnbwj`bof{sfqjfm`f-wl#nbhf#wkfJw#tbp#bopljp#elvmg#jm`lnsfwjwlqpjm#wkf#V-P-qfsob`f#wkfaqlvdkw#wkf`bo`vobwjlmeboo#le#wkfwkf#dfmfqbosqb`wj`boozjm#klmlq#leqfofbpfg#jmqfpjgfmwjbobmg#plnf#lehjmd#le#wkfqfb`wjlm#wl2pw#Fbqo#le`vowvqf#bmgsqjm`jsbooz?,wjwof= ##wkfz#`bm#afab`h#wl#wkfplnf#le#kjpf{slpvqf#wlbqf#pjnjobqelqn#le#wkfbggEbulqjwf`jwjyfmpkjssbqw#jm#wkfsflsof#tjwkjm#sqb`wj`fwl#`lmwjmvf%bns8njmvp8bssqlufg#az#wkf#ejqpw#booltfg#wkfbmg#elq#wkfevm`wjlmjmdsobzjmd#wkfplovwjlm#wlkfjdkw>!3!#jm#kjp#allhnlqf#wkbm#belooltp#wkf`qfbwfg#wkfsqfpfm`f#jm%maps8?,wg=mbwjlmbojpwwkf#jgfb#leb#`kbqb`wfqtfqf#elq`fg#`obpp>!awmgbzp#le#wkfefbwvqfg#jmpkltjmd#wkfjmwfqfpw#jmjm#sob`f#lewvqm#le#wkfwkf#kfbg#leOlqg#le#wkfslojwj`boozkbp#jwp#ltmFgv`bwjlmbobssqlubo#leplnf#le#wkffb`k#lwkfq/afkbujlq#lebmg#af`bvpfbmg#bmlwkfqbssfbqfg#lmqf`lqgfg#jmaob`h%rvlw8nbz#jm`ovgfwkf#tlqog$p`bm#ofbg#wlqfefqp#wl#balqgfq>!3!#dlufqmnfmw#tjmmjmd#wkfqfpvowfg#jm#tkjof#wkf#Tbpkjmdwlm/wkf#pvaif`w`jwz#jm#wkf=?,gju= \n\nqfeof`w#wkfwl#`lnsofwfaf`bnf#nlqfqbgjlb`wjufqfif`wfg#aztjwklvw#bmzkjp#ebwkfq/tkj`k#`lvog`lsz#le#wkfwl#jmgj`bwfb#slojwj`bob``lvmwp#le`lmpwjwvwfptlqhfg#tjwkfq?,b=?,oj=le#kjp#ojefb``lnsbmjfg`ojfmwTjgwksqfufmw#wkfOfdjpobwjufgjeefqfmwozwldfwkfq#jmkbp#pfufqboelq#bmlwkfqwf{w#le#wkfelvmgfg#wkff#tjwk#wkf#jp#vpfg#elq`kbmdfg#wkfvpvbooz#wkfsob`f#tkfqftkfqfbp#wkf=#?b#kqfe>!!=?b#kqfe>!wkfnpfoufp/bowklvdk#kfwkbw#`bm#afwqbgjwjlmboqlof#le#wkfbp#b#qfpvowqfnluf@kjoggfpjdmfg#aztfpw#le#wkfPlnf#sflsofsqlgv`wjlm/pjgf#le#wkfmftpofwwfqpvpfg#az#wkfgltm#wl#wkfb``fswfg#azojuf#jm#wkfbwwfnswp#wllvwpjgf#wkfeqfrvfm`jfpKltfufq/#jmsqldqbnnfqpbw#ofbpw#jmbssql{jnbwfbowklvdk#jwtbp#sbqw#lebmg#ubqjlvpDlufqmlq#lewkf#bqwj`ofwvqmfg#jmwl=?b#kqfe>!,wkf#f`lmlnzjp#wkf#nlpwnlpw#tjgfoztlvog#obwfqbmg#sfqkbspqjpf#wl#wkfl``vqp#tkfmvmgfq#tkj`k`lmgjwjlmp-wkf#tfpwfqmwkflqz#wkbwjp#sqlgv`fgwkf#`jwz#lejm#tkj`k#kfpffm#jm#wkfwkf#`fmwqboavjogjmd#lenbmz#le#kjpbqfb#le#wkfjp#wkf#lmoznlpw#le#wkfnbmz#le#wkfwkf#TfpwfqmWkfqf#jp#mlf{wfmgfg#wlPwbwjpwj`bo`lopsbm>1#pklqw#pwlqzslppjaof#wlwlsloldj`bo`qjwj`bo#leqfslqwfg#wlb#@kqjpwjbmgf`jpjlm#wljp#frvbo#wlsqlaofnp#leWkjp#`bm#afnfq`kbmgjpfelq#nlpw#leml#fujgfm`ffgjwjlmp#lefofnfmwp#jm%rvlw8-#Wkf`ln,jnbdfp,tkj`k#nbhfpwkf#sql`fppqfnbjmp#wkfojwfqbwvqf/jp#b#nfnafqwkf#slsvobqwkf#bm`jfmwsqlaofnp#jmwjnf#le#wkfgfefbwfg#azalgz#le#wkfb#eft#zfbqpnv`k#le#wkfwkf#tlqh#le@bojelqmjb/pfqufg#bp#bdlufqmnfmw-`lm`fswp#lenlufnfmw#jm\n\n?gju#jg>!jw!#ubovf>!obmdvbdf#lebp#wkfz#bqfsqlgv`fg#jmjp#wkbw#wkff{sobjm#wkfgju=?,gju= Kltfufq#wkfofbg#wl#wkf\n?b#kqfe>!,tbp#dqbmwfgsflsof#kbuf`lmwjmvbooztbp#pffm#bpbmg#qfobwfgwkf#qlof#lesqlslpfg#azle#wkf#afpwfb`k#lwkfq-@lmpwbmwjmfsflsof#eqlngjbof`wp#lewl#qfujpjlmtbp#qfmbnfgb#plvq`f#lewkf#jmjwjboobvm`kfg#jmsqlujgf#wkfwl#wkf#tfpwtkfqf#wkfqfbmg#pjnjobqafwtffm#wtljp#bopl#wkfFmdojpk#bmg`lmgjwjlmp/wkbw#jw#tbpfmwjwofg#wlwkfnpfoufp-rvbmwjwz#leqbmpsbqfm`zwkf#pbnf#bpwl#iljm#wkf`lvmwqz#bmgwkjp#jp#wkfWkjp#ofg#wlb#pwbwfnfmw`lmwqbpw#wlobpwJmgf{Lewkqlvdk#kjpjp#gfpjdmfgwkf#wfqn#jpjp#sqlujgfgsqlwf`w#wkfmd?,b=?,oj=Wkf#`vqqfmwwkf#pjwf#lepvapwbmwjbof{sfqjfm`f/jm#wkf#Tfpwwkfz#pklvogpolufm(ajmb`lnfmwbqjlpvmjufqpjgbg`lmgj`jlmfpb`wjujgbgfpf{sfqjfm`jbwf`mlold/Absqlgv``j/_msvmwvb`j/_mbsoj`b`j/_m`lmwqbpf/]b`bwfdlq/Abpqfdjpwqbqpfsqlefpjlmbowqbwbnjfmwlqfd/Apwqbwfpf`qfwbq/Absqjm`jsbofpsqlwf``j/_mjnslqwbmwfpjnslqwbm`jbslpjajojgbgjmwfqfpbmwf`qf`jnjfmwlmf`fpjgbgfppvp`qjajqpfbpl`jb`j/_mgjpslmjaofpfubovb`j/_mfpwvgjbmwfpqfpslmpbaofqfplov`j/_mdvbgbobibqbqfdjpwqbglplslqwvmjgbg`lnfq`jbofpelwldqbe/Abbvwlqjgbgfpjmdfmjfq/Abwfofujpj/_m`lnsfwfm`jblsfqb`jlmfpfpwbaof`jglpjnsofnfmwfb`wvbonfmwfmbufdb`j/_m`lmelqnjgbgojmf.kfjdkw9elmw.ebnjoz9!#9#!kwws9,,bssoj`bwjlmpojmh!#kqfe>!psf`jej`booz,,?"X@GBWBX Lqdbmjybwjlmgjpwqjavwjlm3s{8#kfjdkw9qfobwjlmpkjsgfuj`f.tjgwk?gju#`obpp>!?obafo#elq>!qfdjpwqbwjlm?,mlp`qjsw= ,jmgf{-kwno!tjmglt-lsfm+#"jnslqwbmw8bssoj`bwjlm,jmgfsfmgfm`f,,ttt-dlldoflqdbmjybwjlmbvwl`lnsofwfqfrvjqfnfmwp`lmpfqubwjuf?elqn#mbnf>!jmwfoof`wvbonbqdjm.ofew92;wk#`fmwvqzbm#jnslqwbmwjmpwjwvwjlmpbaaqfujbwjlm?jnd#`obpp>!lqdbmjpbwjlm`jujojybwjlm2:wk#`fmwvqzbq`kjwf`wvqfjm`lqslqbwfg13wk#`fmwvqz.`lmwbjmfq!=nlpw#mlwbaoz,=?,b=?,gju=mlwjej`bwjlm$vmgfejmfg$*Evqwkfqnlqf/afojfuf#wkbwjmmfqKWNO#>#sqjlq#wl#wkfgqbnbwj`boozqfefqqjmd#wlmfdlwjbwjlmpkfbgrvbqwfqpPlvwk#Beqj`bvmpv``fppevoSfmmpzoubmjbBp#b#qfpvow/?kwno#obmd>!%ow8,pvs%dw8gfbojmd#tjwkskjobgfoskjbkjpwlqj`booz*8?,p`qjsw= sbggjmd.wls9f{sfqjnfmwbodfwBwwqjavwfjmpwqv`wjlmpwf`kmloldjfpsbqw#le#wkf#>evm`wjlm+*xpvap`qjswjlmo-gwg!= ?kwdfldqbskj`bo@lmpwjwvwjlm$/#evm`wjlm+pvsslqwfg#azbdqj`vowvqbo`lmpwqv`wjlmsvaoj`bwjlmpelmw.pjyf9#2b#ubqjfwz#le?gju#pwzof>!Fm`z`olsfgjbjeqbnf#pq`>!gfnlmpwqbwfgb``lnsojpkfgvmjufqpjwjfpGfnldqbskj`p*8?,p`qjsw=?gfgj`bwfg#wlhmltofgdf#lepbwjpeb`wjlmsbqwj`vobqoz?,gju=?,gju=Fmdojpk#+VP*bssfmg@kjog+wqbmpnjppjlmp-#Kltfufq/#jmwfoojdfm`f!#wbajmgf{>!eolbw9qjdkw8@lnnlmtfbowkqbmdjmd#eqlnjm#tkj`k#wkfbw#ofbpw#lmfqfsqlgv`wjlmfm`z`olsfgjb8elmw.pjyf92ivqjpgj`wjlmbw#wkbw#wjnf!=?b#`obpp>!Jm#bggjwjlm/gfp`qjswjlm(`lmufqpbwjlm`lmwb`w#tjwkjp#dfmfqboozq!#`lmwfmw>!qfsqfpfmwjmd%ow8nbwk%dw8sqfpfmwbwjlml``bpjlmbooz?jnd#tjgwk>!mbujdbwjlm!=`lnsfmpbwjlm`kbnsjlmpkjsnfgjb>!boo!#ujlobwjlm#leqfefqfm`f#wlqfwvqm#wqvf8Pwqj`w,,FM!#wqbmpb`wjlmpjmwfqufmwjlmufqjej`bwjlmJmelqnbwjlm#gjeej`vowjfp@kbnsjlmpkjs`bsbajojwjfp?"Xfmgje^..=~ ?,p`qjsw= @kqjpwjbmjwzelq#f{bnsof/Sqlefppjlmboqfpwqj`wjlmppvddfpw#wkbwtbp#qfofbpfg+pv`k#bp#wkfqfnluf@obpp+vmfnsolznfmwwkf#Bnfqj`bmpwqv`wvqf#le,jmgf{-kwno#svaojpkfg#jmpsbm#`obpp>!!=?b#kqfe>!,jmwqlgv`wjlmafolmdjmd#wl`objnfg#wkbw`lmpfrvfm`fp?nfwb#mbnf>!Dvjgf#wl#wkflufqtkfonjmdbdbjmpw#wkf#`lm`fmwqbwfg/ -mlmwlv`k#lapfqubwjlmp?,b= ?,gju= e#+gl`vnfmw-alqgfq9#2s{#xelmw.pjyf92wqfbwnfmw#le3!#kfjdkw>!2nlgjej`bwjlmJmgfsfmgfm`fgjujgfg#jmwldqfbwfq#wkbmb`kjfufnfmwpfpwbaojpkjmdIbubP`qjsw!#mfufqwkfofpppjdmjej`bm`fAqlbg`bpwjmd=%maps8?,wg=`lmwbjmfq!= pv`k#bp#wkf#jmeovfm`f#leb#sbqwj`vobqpq`>$kwws9,,mbujdbwjlm!#kboe#le#wkf#pvapwbmwjbo#%maps8?,gju=bgubmwbdf#legjp`lufqz#leevmgbnfmwbo#nfwqlslojwbmwkf#lsslpjwf!#{no9obmd>!gfojafqbwfozbojdm>`fmwfqfulovwjlm#lesqfpfqubwjlmjnsqlufnfmwpafdjmmjmd#jmIfpvp#@kqjpwSvaoj`bwjlmpgjpbdqffnfmwwf{w.bojdm9q/#evm`wjlm+*pjnjobqjwjfpalgz=?,kwno=jp#`vqqfmwozboskbafwj`bojp#plnfwjnfpwzsf>!jnbdf,nbmz#le#wkf#eolt9kjggfm8bubjobaof#jmgfp`qjaf#wkff{jpwfm`f#leboo#lufq#wkfwkf#Jmwfqmfw\n?vo#`obpp>!jmpwboobwjlmmfjdkalqkllgbqnfg#elq`fpqfgv`jmd#wkf`lmwjmvfp#wlMlmfwkfofpp/wfnsfqbwvqfp \n\n?b#kqfe>!`olpf#wl#wkff{bnsofp#le#jp#balvw#wkf+pff#afolt*-!#jg>!pfbq`ksqlefppjlmbojp#bubjobaofwkf#leej`jbo\n\n?,p`qjsw= \n\n?gju#jg>!b``fofqbwjlmwkqlvdk#wkf#Kboo#le#Ebnfgfp`qjswjlmpwqbmpobwjlmpjmwfqefqfm`f#wzsf>$wf{w,qf`fmw#zfbqpjm#wkf#tlqogufqz#slsvobqxab`hdqlvmg9wqbgjwjlmbo#plnf#le#wkf#`lmmf`wfg#wlf{soljwbwjlmfnfqdfm`f#le`lmpwjwvwjlmB#Kjpwlqz#lepjdmjej`bmw#nbmveb`wvqfgf{sf`wbwjlmp=?mlp`qjsw=?`bm#af#elvmgaf`bvpf#wkf#kbp#mlw#affmmfjdkalvqjmdtjwklvw#wkf#bggfg#wl#wkf\n?oj#`obpp>!jmpwqvnfmwboPlujfw#Vmjlmb`hmltofgdfgtkj`k#`bm#afmbnf#elq#wkfbwwfmwjlm#wlbwwfnswp#wl#gfufolsnfmwpJm#eb`w/#wkf?oj#`obpp>!bjnsoj`bwjlmppvjwbaof#elqnv`k#le#wkf#`lolmjybwjlmsqfpjgfmwjbo`bm`foAvaaof#Jmelqnbwjlmnlpw#le#wkf#jp#gfp`qjafgqfpw#le#wkf#nlqf#lq#ofppjm#PfswfnafqJmwfoojdfm`fpq`>!kwws9,,s{8#kfjdkw9#bubjobaof#wlnbmveb`wvqfqkvnbm#qjdkwpojmh#kqfe>!,bubjobajojwzsqlslqwjlmbolvwpjgf#wkf#bpwqlmlnj`bokvnbm#afjmdpmbnf#le#wkf#bqf#elvmg#jmbqf#abpfg#lmpnboofq#wkbmb#sfqplm#tklf{sbmpjlm#lebqdvjmd#wkbwmlt#hmltm#bpJm#wkf#fbqozjmwfqnfgjbwfgfqjufg#eqlnP`bmgjmbujbm?,b=?,gju= `lmpjgfq#wkfbm#fpwjnbwfgwkf#Mbwjlmbo?gju#jg>!sbdqfpvowjmd#jm`lnnjppjlmfgbmboldlvp#wlbqf#qfrvjqfg,vo= ?,gju= tbp#abpfg#lmbmg#af`bnf#b%maps8%maps8w!#ubovf>!!#tbp#`bswvqfgml#nlqf#wkbmqfpsf`wjufoz`lmwjmvf#wl#= ?kfbg= ?tfqf#`qfbwfgnlqf#dfmfqbojmelqnbwjlm#vpfg#elq#wkfjmgfsfmgfmw#wkf#Jnsfqjbo`lnslmfmw#lewl#wkf#mlqwkjm`ovgf#wkf#@lmpwqv`wjlmpjgf#le#wkf#tlvog#mlw#afelq#jmpwbm`fjmufmwjlm#lenlqf#`lnsof{`loof`wjufozab`hdqlvmg9#wf{w.bojdm9#jwp#lqjdjmbojmwl#b``lvmwwkjp#sql`fppbm#f{wfmpjufkltfufq/#wkfwkfz#bqf#mlwqfif`wfg#wkf`qjwj`jpn#legvqjmd#tkj`ksqlabaoz#wkfwkjp#bqwj`of+evm`wjlm+*xJw#pklvog#afbm#bdqffnfmwb``jgfmwboozgjeefqp#eqlnBq`kjwf`wvqfafwwfq#hmltmbqqbmdfnfmwpjmeovfm`f#lmbwwfmgfg#wkfjgfmwj`bo#wlplvwk#le#wkfsbpp#wkqlvdk{no!#wjwof>!tfjdkw9alog8`qfbwjmd#wkfgjpsobz9mlmfqfsob`fg#wkf?jnd#pq`>!,jkwwsp9,,ttt-Tlqog#Tbq#JJwfpwjnlmjbopelvmg#jm#wkfqfrvjqfg#wl#bmg#wkbw#wkfafwtffm#wkf#tbp#gfpjdmfg`lmpjpwp#le#`lmpjgfqbaozsvaojpkfg#azwkf#obmdvbdf@lmpfqubwjlm`lmpjpwfg#leqfefq#wl#wkfab`h#wl#wkf#`pp!#nfgjb>!Sflsof#eqln#bubjobaof#lmsqlufg#wl#afpvddfpwjlmp!tbp#hmltm#bpubqjfwjfp#leojhfoz#wl#af`lnsqjpfg#lepvsslqw#wkf#kbmgp#le#wkf`lvsofg#tjwk`lmmf`w#bmg#alqgfq9mlmf8sfqelqnbm`fpafelqf#afjmdobwfq#af`bnf`bo`vobwjlmplewfm#`boofgqfpjgfmwp#lenfbmjmd#wkbw=?oj#`obpp>!fujgfm`f#elqf{sobmbwjlmpfmujqlmnfmwp!=?,b=?,gju=tkj`k#booltpJmwqlgv`wjlmgfufolsfg#azb#tjgf#qbmdflm#afkboe#leubojdm>!wls!sqjm`jsof#lebw#wkf#wjnf/?,mlp`qjsw=pbjg#wl#kbufjm#wkf#ejqpwtkjof#lwkfqpkzslwkfwj`boskjolplskfqpsltfq#le#wkf`lmwbjmfg#jmsfqelqnfg#azjmbajojwz#wltfqf#tqjwwfmpsbm#pwzof>!jmsvw#mbnf>!wkf#rvfpwjlmjmwfmgfg#elqqfif`wjlm#lejnsojfp#wkbwjmufmwfg#wkfwkf#pwbmgbqgtbp#sqlabaozojmh#afwtffmsqlefpplq#lejmwfqb`wjlmp`kbmdjmd#wkfJmgjbm#L`fbm#`obpp>!obpwtlqhjmd#tjwk$kwws9,,ttt-zfbqp#afelqfWkjp#tbp#wkfqf`qfbwjlmbofmwfqjmd#wkfnfbpvqfnfmwpbm#f{wqfnfozubovf#le#wkfpwbqw#le#wkf ?,p`qjsw= bm#feelqw#wljm`qfbpf#wkfwl#wkf#plvwkpsb`jmd>!3!=pveej`jfmwozwkf#Fvqlsfbm`lmufqwfg#wl`ofbqWjnflvwgjg#mlw#kbuf`lmpfrvfmwozelq#wkf#mf{wf{wfmpjlm#lef`lmlnj`#bmgbowklvdk#wkfbqf#sqlgv`fgbmg#tjwk#wkfjmpveej`jfmwdjufm#az#wkfpwbwjmd#wkbwf{sfmgjwvqfp?,psbm=?,b= wklvdkw#wkbwlm#wkf#abpjp`foosbggjmd>jnbdf#le#wkfqfwvqmjmd#wljmelqnbwjlm/pfsbqbwfg#azbppbppjmbwfgp!#`lmwfmw>!bvwklqjwz#lemlqwktfpwfqm?,gju= ?gju#!=?,gju= ##`lmpvowbwjlm`lnnvmjwz#lewkf#mbwjlmbojw#pklvog#afsbqwj`jsbmwp#bojdm>!ofewwkf#dqfbwfpwpfof`wjlm#lepvsfqmbwvqbogfsfmgfmw#lmjp#nfmwjlmfgbooltjmd#wkftbp#jmufmwfgb``lnsbmzjmdkjp#sfqplmbobubjobaof#bwpwvgz#le#wkflm#wkf#lwkfqf{f`vwjlm#leKvnbm#Qjdkwpwfqnp#le#wkfbppl`jbwjlmpqfpfbq`k#bmgpv``ffgfg#azgfefbwfg#wkfbmg#eqln#wkfavw#wkfz#bqf`lnnbmgfq#lepwbwf#le#wkfzfbqp#le#bdfwkf#pwvgz#le?vo#`obpp>!psob`f#jm#wkftkfqf#kf#tbp?oj#`obpp>!ewkfqf#bqf#mltkj`k#af`bnfkf#svaojpkfgf{sqfppfg#jmwl#tkj`k#wkf`lnnjppjlmfqelmw.tfjdkw9wfqqjwlqz#lef{wfmpjlmp!=Qlnbm#Fnsjqffrvbo#wl#wkfJm#`lmwqbpw/kltfufq/#bmgjp#wzsj`boozbmg#kjp#tjef+bopl#`boofg=?vo#`obpp>!feef`wjufoz#fuloufg#jmwlpffn#wl#kbuftkj`k#jp#wkfwkfqf#tbp#mlbm#f{`foofmwboo#le#wkfpfgfp`qjafg#azJm#sqb`wj`f/aqlbg`bpwjmd`kbqdfg#tjwkqfeof`wfg#jmpvaif`wfg#wlnjojwbqz#bmgwl#wkf#sljmwf`lmlnj`boozpfwWbqdfwjmdbqf#b`wvboozuj`wlqz#lufq+*8?,p`qjsw=`lmwjmvlvpozqfrvjqfg#elqfulovwjlmbqzbm#feef`wjufmlqwk#le#wkf/#tkj`k#tbp#eqlmw#le#wkflq#lwkfqtjpfplnf#elqn#lekbg#mlw#affmdfmfqbwfg#azjmelqnbwjlm-sfqnjwwfg#wljm`ovgfp#wkfgfufolsnfmw/fmwfqfg#jmwlwkf#sqfujlvp`lmpjpwfmwozbqf#hmltm#bpwkf#ejfog#lewkjp#wzsf#ledjufm#wl#wkfwkf#wjwof#le`lmwbjmp#wkfjmpwbm`fp#lejm#wkf#mlqwkgvf#wl#wkfjqbqf#gfpjdmfg`lqslqbwjlmptbp#wkbw#wkflmf#le#wkfpfnlqf#slsvobqpv``ffgfg#jmpvsslqw#eqlnjm#gjeefqfmwglnjmbwfg#azgfpjdmfg#elqltmfqpkjs#lebmg#slppjaozpwbmgbqgjyfgqfpslmpfWf{wtbp#jmwfmgfgqf`fjufg#wkfbppvnfg#wkbwbqfbp#le#wkfsqjnbqjoz#jmwkf#abpjp#lejm#wkf#pfmpfb``lvmwp#elqgfpwqlzfg#azbw#ofbpw#wtltbp#gf`obqfg`lvog#mlw#afPf`qfwbqz#lebssfbq#wl#afnbqdjm.wls92,]_p(_p(\',df*xwkqlt#f~8wkf#pwbqw#lewtl#pfsbqbwfobmdvbdf#bmgtkl#kbg#affmlsfqbwjlm#legfbwk#le#wkfqfbo#mvnafqp\n?ojmh#qfo>!sqlujgfg#wkfwkf#pwlqz#le`lnsfwjwjlmpfmdojpk#+VH*fmdojpk#+VP*#evm`wjlm+*-isd!#tjgwk>!`lmejdvqbwjlm-smd!#tjgwk>!?algz#`obpp>!Nbwk-qbmgln+*`lmwfnslqbqz#Vmjwfg#Pwbwfp`jq`vnpwbm`fp-bssfmg@kjog+lqdbmjybwjlmp?psbm#`obpp>!!=?jnd#pq`>!,gjpwjmdvjpkfgwklvpbmgp#le#`lnnvmj`bwjlm`ofbq!=?,gju=jmufpwjdbwjlmebuj`lm-j`l!#nbqdjm.qjdkw9abpfg#lm#wkf#Nbppb`kvpfwwpwbaof#alqgfq>jmwfqmbwjlmbobopl#hmltm#bpsqlmvm`jbwjlmab`hdqlvmg9 esbggjmd.ofew9Elq#f{bnsof/#njp`foobmflvp%ow8,nbwk%dw8spz`kloldj`bojm#sbqwj`vobqfbq`k!#wzsf>!elqn#nfwklg>!bp#lsslpfg#wlPvsqfnf#@lvqwl``bpjlmbooz#Bggjwjlmbooz/Mlqwk#Bnfqj`bs{8ab`hdqlvmglsslqwvmjwjfpFmwfqwbjmnfmw-wlOltfq@bpf+nbmveb`wvqjmdsqlefppjlmbo#`lnajmfg#tjwkElq#jmpwbm`f/`lmpjpwjmd#le!#nb{ofmdwk>!qfwvqm#ebopf8`lmp`jlvpmfppNfgjwfqqbmfbmf{wqblqgjmbqzbppbppjmbwjlmpvapfrvfmwoz#avwwlm#wzsf>!wkf#mvnafq#lewkf#lqjdjmbo#`lnsqfkfmpjufqfefqp#wl#wkf?,vo= ?,gju= skjolplskj`bool`bwjlm-kqfetbp#svaojpkfgPbm#Eqbm`jp`l+evm`wjlm+*x ?gju#jg>!nbjmplskjpwj`bwfgnbwkfnbwj`bo#,kfbg= ?algzpvddfpwp#wkbwgl`vnfmwbwjlm`lm`fmwqbwjlmqfobwjlmpkjspnbz#kbuf#affm+elq#f{bnsof/Wkjp#bqwj`of#jm#plnf#`bpfpsbqwp#le#wkf#gfejmjwjlm#leDqfbw#Aqjwbjm#`foosbggjmd>frvjubofmw#wlsob`fklogfq>!8#elmw.pjyf9#ivpwjej`bwjlmafojfufg#wkbwpveefqfg#eqlnbwwfnswfg#wl#ofbgfq#le#wkf`qjsw!#pq`>!,+evm`wjlm+*#xbqf#bubjobaof \n?ojmh#qfo>!#pq`>$kwws9,,jmwfqfpwfg#jm`lmufmwjlmbo#!#bow>!!#,=?,bqf#dfmfqboozkbp#bopl#affmnlpw#slsvobq#`lqqfpslmgjmd`qfgjwfg#tjwkwzof>!alqgfq9?,b=?,psbm=?,-dje!#tjgwk>!?jeqbnf#pq`>!wbaof#`obpp>!jmojmf.aol`h8b``lqgjmd#wl#wldfwkfq#tjwkbssql{jnbwfozsbqojbnfmwbqznlqf#bmg#nlqfgjpsobz9mlmf8wqbgjwjlmboozsqfglnjmbmwoz%maps8%maps8%maps8?,psbm=#`foopsb`jmd>?jmsvw#mbnf>!lq!#`lmwfmw>!`lmwqlufqpjbosqlsfqwz>!ld9,{.pkl`htbuf.gfnlmpwqbwjlmpvqqlvmgfg#azMfufqwkfofpp/tbp#wkf#ejqpw`lmpjgfqbaof#Bowklvdk#wkf#`loobalqbwjlmpklvog#mlw#afsqlslqwjlm#le?psbm#pwzof>!hmltm#bp#wkf#pklqwoz#bewfqelq#jmpwbm`f/gfp`qjafg#bp#,kfbg= ?algz#pwbqwjmd#tjwkjm`qfbpjmdoz#wkf#eb`w#wkbwgjp`vppjlm#lenjggof#le#wkfbm#jmgjujgvbogjeej`vow#wl#sljmw#le#ujftklnlpf{vbojwzb``fswbm`f#le?,psbm=?,gju=nbmveb`wvqfqplqjdjm#le#wkf`lnnlmoz#vpfgjnslqwbm`f#legfmlnjmbwjlmpab`hdqlvmg9# ofmdwk#le#wkfgfwfqnjmbwjlmb#pjdmjej`bmw!#alqgfq>!3!=qfulovwjlmbqzsqjm`jsofp#lejp#`lmpjgfqfgtbp#gfufolsfgJmgl.Fvqlsfbmuvomfqbaof#wlsqlslmfmwp#lebqf#plnfwjnfp`olpfq#wl#wkfMft#Zlqh#@jwz#mbnf>!pfbq`kbwwqjavwfg#wl`lvqpf#le#wkfnbwkfnbwj`jbmaz#wkf#fmg#lebw#wkf#fmg#le!#alqgfq>!3!#wf`kmloldj`bo-qfnluf@obpp+aqbm`k#le#wkffujgfm`f#wkbw"Xfmgje^..= Jmpwjwvwf#le#jmwl#b#pjmdofqfpsf`wjufoz-bmg#wkfqfelqfsqlsfqwjfp#lejp#ol`bwfg#jmplnf#le#tkj`kWkfqf#jp#bopl`lmwjmvfg#wl#bssfbqbm`f#le#%bns8mgbpk8#gfp`qjafp#wkf`lmpjgfqbwjlmbvwklq#le#wkfjmgfsfmgfmwozfrvjssfg#tjwkglfp#mlw#kbuf?,b=?b#kqfe>!`lmevpfg#tjwk?ojmh#kqfe>!,bw#wkf#bdf#lebssfbq#jm#wkfWkfpf#jm`ovgfqfdbqgofpp#le`lvog#af#vpfg#pwzof>%rvlw8pfufqbo#wjnfpqfsqfpfmw#wkfalgz= ?,kwno=wklvdkw#wl#afslsvobwjlm#leslppjajojwjfpsfq`fmwbdf#leb``fpp#wl#wkfbm#bwwfnsw#wlsqlgv`wjlm#leirvfqz,irvfqzwtl#gjeefqfmwafolmd#wl#wkffpwbaojpknfmwqfsob`jmd#wkfgfp`qjswjlm!#gfwfqnjmf#wkfbubjobaof#elqB``lqgjmd#wl#tjgf#qbmdf#le\n?gju#`obpp>!nlqf#`lnnlmozlqdbmjpbwjlmpevm`wjlmbojwztbp#`lnsofwfg#%bns8ngbpk8#sbqwj`jsbwjlmwkf#`kbqb`wfqbm#bggjwjlmbobssfbqp#wl#afeb`w#wkbw#wkfbm#f{bnsof#lepjdmjej`bmwozlmnlvpflufq>!af`bvpf#wkfz#bpzm`#>#wqvf8sqlaofnp#tjwkpffnp#wl#kbufwkf#qfpvow#le#pq`>!kwws9,,ebnjojbq#tjwkslppfppjlm#leevm`wjlm#+*#xwllh#sob`f#jmbmg#plnfwjnfppvapwbmwjbooz?psbm=?,psbm=jp#lewfm#vpfgjm#bm#bwwfnswdqfbw#gfbo#leFmujqlmnfmwbopv``fppevooz#ujqwvbooz#boo13wk#`fmwvqz/sqlefppjlmbopmf`fppbqz#wl#gfwfqnjmfg#az`lnsbwjajojwzaf`bvpf#jw#jpGj`wjlmbqz#lenlgjej`bwjlmpWkf#elooltjmdnbz#qfefq#wl9@lmpfrvfmwoz/Jmwfqmbwjlmbobowklvdk#plnfwkbw#tlvog#aftlqog$p#ejqpw`obppjejfg#bpalwwln#le#wkf+sbqwj`vobqozbojdm>!ofew!#nlpw#`lnnlmozabpjp#elq#wkfelvmgbwjlm#le`lmwqjavwjlmpslsvobqjwz#le`fmwfq#le#wkfwl#qfgv`f#wkfivqjpgj`wjlmpbssql{jnbwjlm#lmnlvpflvw>!Mft#Wfpwbnfmw`loof`wjlm#le?,psbm=?,b=?,jm#wkf#Vmjwfgejon#gjqf`wlq.pwqj`w-gwg!=kbp#affm#vpfgqfwvqm#wl#wkfbowklvdk#wkjp`kbmdf#jm#wkfpfufqbo#lwkfqavw#wkfqf#bqfvmsqf`fgfmwfgjp#pjnjobq#wlfpsf`jbooz#jmtfjdkw9#alog8jp#`boofg#wkf`lnsvwbwjlmbojmgj`bwf#wkbwqfpwqj`wfg#wl\n?nfwb#mbnf>!bqf#wzsj`booz`lmeoj`w#tjwkKltfufq/#wkf#Bm#f{bnsof#le`lnsbqfg#tjwkrvbmwjwjfp#leqbwkfq#wkbm#b`lmpwfoobwjlmmf`fppbqz#elqqfslqwfg#wkbwpsf`jej`bwjlmslojwj`bo#bmg%maps8%maps8?qfefqfm`fp#wlwkf#pbnf#zfbqDlufqmnfmw#ledfmfqbwjlm#lekbuf#mlw#affmpfufqbo#zfbqp`lnnjwnfmw#wl\n\n?vo#`obpp>!ujpvbojybwjlm2:wk#`fmwvqz/sqb`wjwjlmfqpwkbw#kf#tlvogbmg#`lmwjmvfgl``vsbwjlm#lejp#gfejmfg#bp`fmwqf#le#wkfwkf#bnlvmw#le=?gju#pwzof>!frvjubofmw#legjeefqfmwjbwfaqlvdkw#balvwnbqdjm.ofew9#bvwlnbwj`boozwklvdkw#le#bpPlnf#le#wkfpf ?gju#`obpp>!jmsvw#`obpp>!qfsob`fg#tjwkjp#lmf#le#wkffgv`bwjlm#bmgjmeovfm`fg#azqfsvwbwjlm#bp ?nfwb#mbnf>!b``lnnlgbwjlm?,gju= ?,gju=obqdf#sbqw#leJmpwjwvwf#elqwkf#pl.`boofg#bdbjmpw#wkf#Jm#wkjp#`bpf/tbp#bssljmwfg`objnfg#wl#afKltfufq/#wkjpGfsbqwnfmw#lewkf#qfnbjmjmdfeef`w#lm#wkfsbqwj`vobqoz#gfbo#tjwk#wkf ?gju#pwzof>!bonlpw#botbzpbqf#`vqqfmwozf{sqfppjlm#leskjolplskz#leelq#nlqf#wkbm`jujojybwjlmplm#wkf#jpobmgpfof`wfgJmgf{`bm#qfpvow#jm!#ubovf>!!#,=wkf#pwqv`wvqf#,=?,b=?,gju=Nbmz#le#wkfpf`bvpfg#az#wkfle#wkf#Vmjwfgpsbm#`obpp>!n`bm#af#wqb`fgjp#qfobwfg#wlaf`bnf#lmf#lejp#eqfrvfmwozojujmd#jm#wkfwkflqfwj`boozElooltjmd#wkfQfulovwjlmbqzdlufqmnfmw#jmjp#gfwfqnjmfgwkf#slojwj`bojmwqlgv`fg#jmpveej`jfmw#wlgfp`qjswjlm!=pklqw#pwlqjfppfsbqbwjlm#lebp#wl#tkfwkfqhmltm#elq#jwptbp#jmjwjboozgjpsobz9aol`hjp#bm#f{bnsofwkf#sqjm`jsbo`lmpjpwp#le#bqf`ldmjyfg#bp,algz=?,kwno=b#pvapwbmwjboqf`lmpwqv`wfgkfbg#le#pwbwfqfpjpwbm`f#wlvmgfqdqbgvbwfWkfqf#bqf#wtldqbujwbwjlmbobqf#gfp`qjafgjmwfmwjlmboozpfqufg#bp#wkf`obpp>!kfbgfqlsslpjwjlm#wlevmgbnfmwboozglnjmbwfg#wkfbmg#wkf#lwkfqboojbm`f#tjwktbp#elq`fg#wlqfpsf`wjufoz/bmg#slojwj`bojm#pvsslqw#lesflsof#jm#wkf13wk#`fmwvqz-bmg#svaojpkfgolbg@kbqwafbwwl#vmgfqpwbmgnfnafq#pwbwfpfmujqlmnfmwboejqpw#kboe#le`lvmwqjfp#bmgbq`kjwf`wvqboaf#`lmpjgfqfg`kbqb`wfqjyfg`ofbqJmwfqubobvwklqjwbwjufEfgfqbwjlm#letbp#pv``ffgfgbmg#wkfqf#bqfb#`lmpfrvfm`fwkf#Sqfpjgfmwbopl#jm`ovgfgeqff#plewtbqfpv``fppjlm#legfufolsfg#wkftbp#gfpwqlzfgbtbz#eqln#wkf8 ?,p`qjsw= ?bowklvdk#wkfzelooltfg#az#bnlqf#sltfqevoqfpvowfg#jm#bVmjufqpjwz#leKltfufq/#nbmzwkf#sqfpjgfmwKltfufq/#plnfjp#wklvdkw#wlvmwjo#wkf#fmgtbp#bmmlvm`fgbqf#jnslqwbmwbopl#jm`ovgfp=?jmsvw#wzsf>wkf#`fmwfq#le#GL#MLW#BOWFQvpfg#wl#qfefqwkfnfp,wkbw#kbg#affmwkf#abpjp#elqkbp#gfufolsfgjm#wkf#pvnnfq`lnsbqbwjufozgfp`qjafg#wkfpv`k#bp#wklpfwkf#qfpvowjmdjp#jnslppjaofubqjlvp#lwkfqPlvwk#Beqj`bmkbuf#wkf#pbnffeef`wjufmfppjm#tkj`k#`bpf8#wf{w.bojdm9pwqv`wvqf#bmg8#ab`hdqlvmg9qfdbqgjmd#wkfpvsslqwfg#wkfjp#bopl#hmltmpwzof>!nbqdjmjm`ovgjmd#wkfabkbpb#Nfobzvmlqph#alhn/Iomlqph#mzmlqphpolufm)M(ajmbjmwfqmb`jlmbo`bojej`b`j/_m`lnvmj`b`j/_m`lmpwqv``j/_m!=?gju#`obpp>!gjpbnajdvbwjlmGlnbjmMbnf$/#$bgnjmjpwqbwjlmpjnvowbmflvpozwqbmpslqwbwjlmJmwfqmbwjlmbo#nbqdjm.alwwln9qfpslmpjajojwz?"Xfmgje^..= ?,=?nfwb#mbnf>!jnsofnfmwbwjlmjmeqbpwqv`wvqfqfsqfpfmwbwjlmalqgfq.alwwln9?,kfbg= ?algz=>kwws&0B&1E&1E?elqn#nfwklg>!nfwklg>!slpw!#,ebuj`lm-j`l!#~*8 ?,p`qjsw= -pfwBwwqjavwf+Bgnjmjpwqbwjlm>#mft#Bqqbz+*8?"Xfmgje^..= gjpsobz9aol`h8Vmelqwvmbwfoz/!=%maps8?,gju=,ebuj`lm-j`l!=>$pwzofpkffw$#jgfmwjej`bwjlm/#elq#f{bnsof/?oj=?b#kqfe>!,bm#bowfqmbwjufbp#b#qfpvow#lesw!=?,p`qjsw= wzsf>!pvanjw!# +evm`wjlm+*#xqf`lnnfmgbwjlmelqn#b`wjlm>!,wqbmpelqnbwjlmqf`lmpwqv`wjlm-pwzof-gjpsobz#B``lqgjmd#wl#kjggfm!#mbnf>!bolmd#tjwk#wkfgl`vnfmw-algz-bssql{jnbwfoz#@lnnvmj`bwjlmpslpw!#b`wjlm>!nfbmjmd#%rvlw8..?"Xfmgje^..=Sqjnf#Njmjpwfq`kbqb`wfqjpwj`?,b=#?b#`obpp>wkf#kjpwlqz#le#lmnlvpflufq>!wkf#dlufqmnfmwkqfe>!kwwsp9,,tbp#lqjdjmbooztbp#jmwqlgv`fg`obppjej`bwjlmqfsqfpfmwbwjufbqf#`lmpjgfqfg?"Xfmgje^..= gfsfmgp#lm#wkfVmjufqpjwz#le#jm#`lmwqbpw#wl#sob`fklogfq>!jm#wkf#`bpf#lejmwfqmbwjlmbo#`lmpwjwvwjlmbopwzof>!alqgfq.9#evm`wjlm+*#xAf`bvpf#le#wkf.pwqj`w-gwg!= ?wbaof#`obpp>!b``lnsbmjfg#azb``lvmw#le#wkf?p`qjsw#pq`>!,mbwvqf#le#wkf#wkf#sflsof#jm#jm#bggjwjlm#wlp*8#ip-jg#>#jg!#tjgwk>!233&!qfdbqgjmd#wkf#Qlnbm#@bwkloj`bm#jmgfsfmgfmwelooltjmd#wkf#-dje!#tjgwk>!2wkf#elooltjmd#gjp`qjnjmbwjlmbq`kbfloldj`bosqjnf#njmjpwfq-ip!=?,p`qjsw=`lnajmbwjlm#le#nbqdjmtjgwk>!`qfbwfFofnfmw+t-bwwb`kFufmw+?,b=?,wg=?,wq=pq`>!kwwsp9,,bJm#sbqwj`vobq/#bojdm>!ofew!#@yf`k#Qfsvaoj`Vmjwfg#Hjmdgln`lqqfpslmgfm`f`lm`ovgfg#wkbw-kwno!#wjwof>!+evm`wjlm#+*#x`lnfp#eqln#wkfbssoj`bwjlm#le?psbm#`obpp>!pafojfufg#wl#affnfmw+$p`qjsw$?,b= ?,oj= ?ojufqz#gjeefqfmw=?psbm#`obpp>!lswjlm#ubovf>!+bopl#hmltm#bp\n?oj=?b#kqfe>!=?jmsvw#mbnf>!pfsbqbwfg#eqlnqfefqqfg#wl#bp#ubojdm>!wls!=elvmgfq#le#wkfbwwfnswjmd#wl#`bqalm#gjl{jgf ?gju#`obpp>!`obpp>!pfbq`k.,algz= ?,kwno=lsslqwvmjwz#wl`lnnvmj`bwjlmp?,kfbg= ?algz#pwzof>!tjgwk9Wj\rVSmd#Uj\rWkw`kbmdfp#jm#wkfalqgfq.`lolq9 3!#alqgfq>!3!#?,psbm=?,gju=?tbp#gjp`lufqfg!#wzsf>!wf{w!#*8 ?,p`qjsw= Gfsbqwnfmw#le#f``ofpjbpwj`bowkfqf#kbp#affmqfpvowjmd#eqln?,algz=?,kwno=kbp#mfufq#affmwkf#ejqpw#wjnfjm#qfpslmpf#wlbvwlnbwj`booz#?,gju= ?gju#jtbp#`lmpjgfqfgsfq`fmw#le#wkf!#,=?,b=?,gju=`loof`wjlm#le#gfp`fmgfg#eqlnpf`wjlm#le#wkfb``fsw.`kbqpfwwl#af#`lmevpfgnfnafq#le#wkf#sbggjmd.qjdkw9wqbmpobwjlm#lejmwfqsqfwbwjlm#kqfe>$kwws9,,tkfwkfq#lq#mlwWkfqf#bqf#boplwkfqf#bqf#nbmzb#pnboo#mvnafqlwkfq#sbqwp#lejnslppjaof#wl##`obpp>!avwwlmol`bwfg#jm#wkf-#Kltfufq/#wkfbmg#fufmwvboozBw#wkf#fmg#le#af`bvpf#le#jwpqfsqfpfmwp#wkf?elqn#b`wjlm>!#nfwklg>!slpw!jw#jp#slppjaofnlqf#ojhfoz#wlbm#jm`qfbpf#jmkbuf#bopl#affm`lqqfpslmgp#wlbmmlvm`fg#wkbwbojdm>!qjdkw!=nbmz#`lvmwqjfpelq#nbmz#zfbqpfbqojfpw#hmltmaf`bvpf#jw#tbpsw!=?,p`qjsw=#ubojdm>!wls!#jmkbajwbmwp#leelooltjmd#zfbq ?gju#`obpp>!njoojlm#sflsof`lmwqlufqpjbo#`lm`fqmjmd#wkfbqdvf#wkbw#wkfdlufqmnfmw#bmgb#qfefqfm`f#wlwqbmpefqqfg#wlgfp`qjajmd#wkf#pwzof>!`lolq9bowklvdk#wkfqfafpw#hmltm#elqpvanjw!#mbnf>!nvowjsoj`bwjlmnlqf#wkbm#lmf#qf`ldmjwjlm#le@lvm`jo#le#wkffgjwjlm#le#wkf##?nfwb#mbnf>!Fmwfqwbjmnfmw#btbz#eqln#wkf#8nbqdjm.qjdkw9bw#wkf#wjnf#lejmufpwjdbwjlmp`lmmf`wfg#tjwkbmg#nbmz#lwkfqbowklvdk#jw#jpafdjmmjmd#tjwk#?psbm#`obpp>!gfp`fmgbmwp#le?psbm#`obpp>!j#bojdm>!qjdkw!?,kfbg= ?algz#bpsf`wp#le#wkfkbp#pjm`f#affmFvqlsfbm#Vmjlmqfnjmjp`fmw#lenlqf#gjeej`vowUj`f#Sqfpjgfmw`lnslpjwjlm#lesbppfg#wkqlvdknlqf#jnslqwbmwelmw.pjyf922s{f{sobmbwjlm#lewkf#`lm`fsw#letqjwwfm#jm#wkf\n?psbm#`obpp>!jp#lmf#le#wkf#qfpfnaobm`f#wllm#wkf#dqlvmgptkj`k#`lmwbjmpjm`ovgjmd#wkf#gfejmfg#az#wkfsvaoj`bwjlm#lenfbmp#wkbw#wkflvwpjgf#le#wkfpvsslqw#le#wkf?jmsvw#`obpp>!?psbm#`obpp>!w+Nbwk-qbmgln+*nlpw#sqlnjmfmwgfp`qjswjlm#le@lmpwbmwjmlsoftfqf#svaojpkfg?gju#`obpp>!pfbssfbqp#jm#wkf2!#kfjdkw>!2!#nlpw#jnslqwbmwtkj`k#jm`ovgfptkj`k#kbg#affmgfpwqv`wjlm#lewkf#slsvobwjlm \n?gju#`obpp>!slppjajojwz#leplnfwjnfp#vpfgbssfbq#wl#kbufpv``fpp#le#wkfjmwfmgfg#wl#afsqfpfmw#jm#wkfpwzof>!`ofbq9a ?,p`qjsw= ?tbp#elvmgfg#jmjmwfqujft#tjwk\\jg!#`lmwfmw>!`bsjwbo#le#wkf ?ojmh#qfo>!pqfofbpf#le#wkfsljmw#lvw#wkbw{NOKwwsQfrvfpwbmg#pvapfrvfmwpf`lmg#obqdfpwufqz#jnslqwbmwpsf`jej`bwjlmppvqeb`f#le#wkfbssojfg#wl#wkfelqfjdm#sloj`z\\pfwGlnbjmMbnffpwbaojpkfg#jmjp#afojfufg#wlJm#bggjwjlm#wlnfbmjmd#le#wkfjp#mbnfg#bewfqwl#sqlwf`w#wkfjp#qfsqfpfmwfgGf`obqbwjlm#lenlqf#feej`jfmw@obppjej`bwjlmlwkfq#elqnp#lekf#qfwvqmfg#wl?psbm#`obpp>!`sfqelqnbm`f#le+evm`wjlm+*#xje#bmg#lmoz#jeqfdjlmp#le#wkfofbgjmd#wl#wkfqfobwjlmp#tjwkVmjwfg#Mbwjlmppwzof>!kfjdkw9lwkfq#wkbm#wkfzsf!#`lmwfmw>!Bppl`jbwjlm#le ?,kfbg= ?algzol`bwfg#lm#wkfjp#qfefqqfg#wl+jm`ovgjmd#wkf`lm`fmwqbwjlmpwkf#jmgjujgvbobnlmd#wkf#nlpwwkbm#bmz#lwkfq,= ?ojmh#qfo>!#qfwvqm#ebopf8wkf#svqslpf#lewkf#bajojwz#wl8`lolq9 eee~ - ?psbm#`obpp>!wkf#pvaif`w#legfejmjwjlmp#le= ?ojmh#qfo>!`objn#wkbw#wkfkbuf#gfufolsfg?wbaof#tjgwk>!`fofaqbwjlm#leElooltjmd#wkf#wl#gjpwjmdvjpk?psbm#`obpp>!awbhfp#sob`f#jmvmgfq#wkf#mbnfmlwfg#wkbw#wkf=?"Xfmgje^..= pwzof>!nbqdjm.jmpwfbg#le#wkfjmwqlgv`fg#wkfwkf#sql`fpp#lejm`qfbpjmd#wkfgjeefqfm`fp#jmfpwjnbwfg#wkbwfpsf`jbooz#wkf,gju=?gju#jg>!tbp#fufmwvboozwkqlvdklvw#kjpwkf#gjeefqfm`fplnfwkjmd#wkbwpsbm=?,psbm=?,pjdmjej`bmwoz#=?,p`qjsw=  fmujqlmnfmwbo#wl#sqfufmw#wkfkbuf#affm#vpfgfpsf`jbooz#elqvmgfqpwbmg#wkfjp#fppfmwjbooztfqf#wkf#ejqpwjp#wkf#obqdfpwkbuf#affm#nbgf!#pq`>!kwws9,,jmwfqsqfwfg#bppf`lmg#kboe#le`qloojmd>!ml!#jp#`lnslpfg#leJJ/#Kloz#Qlnbmjp#f{sf`wfg#wlkbuf#wkfjq#ltmgfejmfg#bp#wkfwqbgjwjlmbooz#kbuf#gjeefqfmwbqf#lewfm#vpfgwl#fmpvqf#wkbwbdqffnfmw#tjwk`lmwbjmjmd#wkfbqf#eqfrvfmwozjmelqnbwjlm#lmf{bnsof#jp#wkfqfpvowjmd#jm#b?,b=?,oj=?,vo=#`obpp>!ellwfqbmg#fpsf`jboozwzsf>!avwwlm!#?,psbm=?,psbm=tkj`k#jm`ovgfg= ?nfwb#mbnf>!`lmpjgfqfg#wkf`bqqjfg#lvw#azKltfufq/#jw#jpaf`bnf#sbqw#lejm#qfobwjlm#wlslsvobq#jm#wkfwkf#`bsjwbo#letbp#leej`jbooztkj`k#kbp#affmwkf#Kjpwlqz#lebowfqmbwjuf#wlgjeefqfmw#eqlnwl#pvsslqw#wkfpvddfpwfg#wkbwjm#wkf#sql`fpp##?gju#`obpp>!wkf#elvmgbwjlmaf`bvpf#le#kjp`lm`fqmfg#tjwkwkf#vmjufqpjwzlsslpfg#wl#wkfwkf#`lmwf{w#le?psbm#`obpp>!swf{w!#mbnf>!r!\n\n?gju#`obpp>!wkf#p`jfmwjej`qfsqfpfmwfg#aznbwkfnbwj`jbmpfof`wfg#az#wkfwkbw#kbuf#affm=?gju#`obpp>!`gju#jg>!kfbgfqjm#sbqwj`vobq/`lmufqwfg#jmwl*8 ?,p`qjsw= ?skjolplskj`bo#pqsphlkqubwphjwj\rVSmd#Uj\rWkw!kwws9,,!=?psbm#`obpp>!nfnafqp#le#wkf#tjmglt-ol`bwjlmufqwj`bo.bojdm9,b=##?b#kqfe>!?"gl`wzsf#kwno=nfgjb>!p`qffm!#?lswjlm#ubovf>!ebuj`lm-j`l!#,= \n\n?gju#`obpp>!`kbqb`wfqjpwj`p!#nfwklg>!dfw!#,algz= ?,kwno= pklqw`vw#j`lm!#gl`vnfmw-tqjwf+sbggjmd.alwwln9qfsqfpfmwbwjufppvanjw!#ubovf>!bojdm>!`fmwfq!#wkqlvdklvw#wkf#p`jfm`f#ej`wjlm ##?gju#`obpp>!pvanjw!#`obpp>!lmf#le#wkf#nlpw#ubojdm>!wls!=?tbp#fpwbaojpkfg*8 ?,p`qjsw= qfwvqm#ebopf8!=*-pwzof-gjpsobzaf`bvpf#le#wkf#gl`vnfmw-`llhjf?elqn#b`wjlm>!,~algzxnbqdjm938Fm`z`olsfgjb#leufqpjlm#le#wkf#-`qfbwfFofnfmw+mbnf!#`lmwfmw>!?,gju= ?,gju= bgnjmjpwqbwjuf#?,algz= ?,kwno=kjpwlqz#le#wkf#!=?jmsvw#wzsf>!slqwjlm#le#wkf#bp#sbqw#le#wkf#%maps8?b#kqfe>!lwkfq#`lvmwqjfp!= ?gju#`obpp>!?,psbm=?,psbm=?Jm#lwkfq#tlqgp/gjpsobz9#aol`h8`lmwqlo#le#wkf#jmwqlgv`wjlm#le,= ?nfwb#mbnf>!bp#tfoo#bp#wkf#jm#qf`fmw#zfbqp \n?gju#`obpp>!?,gju= \n?,gju= jmpsjqfg#az#wkfwkf#fmg#le#wkf#`lnsbwjaof#tjwkaf`bnf#hmltm#bp#pwzof>!nbqdjm9-ip!=?,p`qjsw=?#Jmwfqmbwjlmbo#wkfqf#kbuf#affmDfqnbm#obmdvbdf#pwzof>!`lolq9 @lnnvmjpw#Sbqwz`lmpjpwfmw#tjwkalqgfq>!3!#`foo#nbqdjmkfjdkw>!wkf#nbilqjwz#le!#bojdm>!`fmwfqqfobwfg#wl#wkf#nbmz#gjeefqfmw#Lqwklgl{#@kvq`kpjnjobq#wl#wkf#,= ?ojmh#qfo>!ptbp#lmf#le#wkf#vmwjo#kjp#gfbwk~*+*8 ?,p`qjsw=lwkfq#obmdvbdfp`lnsbqfg#wl#wkfslqwjlmp#le#wkfwkf#Mfwkfqobmgpwkf#nlpw#`lnnlmab`hdqlvmg9vqo+bqdvfg#wkbw#wkfp`qloojmd>!ml!#jm`ovgfg#jm#wkfMlqwk#Bnfqj`bm#wkf#mbnf#le#wkfjmwfqsqfwbwjlmpwkf#wqbgjwjlmbogfufolsnfmw#le#eqfrvfmwoz#vpfgb#`loof`wjlm#leufqz#pjnjobq#wlpvqqlvmgjmd#wkff{bnsof#le#wkjpbojdm>!`fmwfq!=tlvog#kbuf#affmjnbdf\\`bswjlm#>bwwb`kfg#wl#wkfpvddfpwjmd#wkbwjm#wkf#elqn#le#jmuloufg#jm#wkfjp#gfqjufg#eqlnmbnfg#bewfq#wkfJmwqlgv`wjlm#wlqfpwqj`wjlmp#lm#pwzof>!tjgwk9#`bm#af#vpfg#wl#wkf#`qfbwjlm#lenlpw#jnslqwbmw#jmelqnbwjlm#bmgqfpvowfg#jm#wkf`loobspf#le#wkfWkjp#nfbmp#wkbwfofnfmwp#le#wkftbp#qfsob`fg#azbmbozpjp#le#wkfjmpsjqbwjlm#elqqfdbqgfg#bp#wkfnlpw#pv``fppevohmltm#bp#%rvlw8b#`lnsqfkfmpjufKjpwlqz#le#wkf#tfqf#`lmpjgfqfgqfwvqmfg#wl#wkfbqf#qfefqqfg#wlVmplvq`fg#jnbdf= \n?gju#`obpp>!`lmpjpwp#le#wkfpwlsSqlsbdbwjlmjmwfqfpw#jm#wkfbubjobajojwz#lebssfbqp#wl#kbuffof`wqlnbdmfwj`fmbaofPfquj`fp+evm`wjlm#le#wkfJw#jp#jnslqwbmw?,p`qjsw=?,gju=evm`wjlm+*xubq#qfobwjuf#wl#wkfbp#b#qfpvow#le#wkf#slpjwjlm#leElq#f{bnsof/#jm#nfwklg>!slpw!#tbp#elooltfg#az%bns8ngbpk8#wkfwkf#bssoj`bwjlmip!=?,p`qjsw= vo=?,gju=?,gju=bewfq#wkf#gfbwktjwk#qfpsf`w#wlpwzof>!sbggjmd9jp#sbqwj`vobqozgjpsobz9jmojmf8#wzsf>!pvanjw!#jp#gjujgfg#jmwl\bTA\nzk#+\vBl\bQ*qfpslmpbajojgbgbgnjmjpwqb`j/_mjmwfqmb`jlmbofp`lqqfpslmgjfmwf\fHe\fHF\fHC\fIg\fH{\fHF\fIn\fH\\\fIa\fHY\fHU\fHB\fHR\fH\\\fIk\fH^\fIg\fH{\fIg\fHn\fHv\fIm\fHD\fHR\fHY\fH^\fIk\fHy\fHS\fHD\fHT\fH\\\fHy\fHR\fH\\\fHF\fIm\fH^\fHS\fHT\fHz\fIg\fHp\fIk\fHn\fHv\fHR\fHU\fHS\fHc\fHA\fIk\fHp\fIk\fHn\fHZ\fHR\fHB\fHS\fH^\fHU\fHB\fHR\fH\\\fIl\fHp\fHR\fH{\fH\\\fHO\fH@\fHD\fHR\fHD\fIk\fHy\fIm\fHB\fHR\fH\\\fH@\fIa\fH^\fIe\fH{\fHB\fHR\fH^\fHS\fHy\fHB\fHU\fHS\fH^\fHR\fHF\fIo\fH[\fIa\fHL\fH@\fHN\fHP\fHH\fIk\fHA\fHR\fHp\fHF\fHR\fHy\fIa\fH^\fHS\fHy\fHs\fIa\fH\\\fIk\fHD\fHz\fHS\fH^\fHR\fHG\fHJ\fI`\fH\\\fHR\fHD\fHB\fHR\fHB\fH^\fIk\fHB\fHH\fHJ\fHR\fHD\fH@\fHR\fHp\fHR\fH\\\fHY\fHS\fHy\fHR\fHT\fHy\fIa\fHC\fIg\fHn\fHv\fHR\fHU\fHH\fIk\fHF\fHU\fIm\fHm\fHv\fH@\fHH\fHR\fHC\fHR\fHT\fHn\fHY\fHR\fHJ\fHJ\fIk\fHz\fHD\fIk\fHF\fHS\fHw\fH^\fIk\fHY\fHS\fHZ\fIk\fH[\fH\\\fHR\fHp\fIa\fHC\fHe\fHH\fIa\fHH\fH\\\fHB\fIm\fHn\fH@\fHd\fHJ\fIg\fHD\fIg\fHn\fHe\fHF\fHy\fH\\\fHO\fHF\fHN\fHP\fIk\fHn\fHT\fIa\fHI\fHS\fHH\fHG\fHS\fH^\fIa\fHB\fHB\fIm\fHz\fIa\fHC\fHi\fHv\fIa\fHw\fHR\fHw\fIn\fHs\fHH\fIl\fHT\fHn\fH{\fIl\fHH\fHp\fHR\fHc\fH{\fHR\fHY\fHS\fHA\fHR\fH{\fHt\fHO\fIa\fHs\fIk\fHJ\fIn\fHT\fH\\\fIk\fHJ\fHS\fHD\fIg\fHn\fHU\fHH\fIa\fHC\fHR\fHT\fIk\fHy\fIa\fHT\fH{\fHR\fHn\fHK\fIl\fHY\fHS\fHZ\fIa\fHY\fH\\\fHR\fHH\fIk\fHn\fHJ\fId\fHs\fIa\fHT\fHD\fHy\fIa\fHZ\fHR\fHT\fHR\fHB\fHD\fIk\fHi\fHJ\fHR\fH^\fHH\fH@\fHS\fHp\fH^\fIl\fHF\fIm\fH\\\fIn\fH[\fHU\fHS\fHn\fHJ\fIl\fHB\fHS\fHH\fIa\fH\\\fHy\fHY\fHS\fHH\fHR\fH\\\fIm\fHF\fHC\fIk\fHT\fIa\fHI\fHR\fHD\fHy\fH\\\fIg\fHM\fHP\fHB\fIm\fHy\fIa\fHH\fHC\fIg\fHp\fHD\fHR\fHy\fIo\fHF\fHC\fHR\fHF\fIg\fHT\fIa\fHs\fHt\fH\\\fIk\fH^\fIn\fHy\fHR\fH\\\fIa\fHC\fHY\fHS\fHv\fHR\fH\\\fHT\fIn\fHv\fHD\fHR\fHB\fIn\fH^\fIa\fHC\fHJ\fIk\fHz\fIk\fHn\fHU\fHB\fIk\fHZ\fHR\fHT\fIa\fHy\fIn\fH^\fHB\fId\fHn\fHD\fIk\fHH\fId\fHC\fHR\fH\\\fHp\fHS\fHT\fHy\fIkqpp({no!#wjwof>!.wzsf!#`lmwfmw>!wjwof!#`lmwfmw>!bw#wkf#pbnf#wjnf-ip!=?,p`qjsw= ?!#nfwklg>!slpw!#?,psbm=?,b=?,oj=ufqwj`bo.bojdm9w,irvfqz-njm-ip!=-`oj`h+evm`wjlm+#pwzof>!sbggjmd.~*+*8 ?,p`qjsw= ?,psbm=?b#kqfe>!?b#kqfe>!kwws9,,*8#qfwvqm#ebopf8wf{w.gf`lqbwjlm9#p`qloojmd>!ml!#alqgfq.`loobspf9bppl`jbwfg#tjwk#Abkbpb#JmglmfpjbFmdojpk#obmdvbdf?wf{w#{no9psb`f>-dje!#alqgfq>!3!?,algz= ?,kwno= lufqeolt9kjggfm8jnd#pq`>!kwws9,,bggFufmwOjpwfmfqqfpslmpjaof#elq#p-ip!=?,p`qjsw= ,ebuj`lm-j`l!#,=lsfqbwjmd#pzpwfn!#pwzof>!tjgwk92wbqdfw>!\\aobmh!=Pwbwf#Vmjufqpjwzwf{w.bojdm9ofew8 gl`vnfmw-tqjwf+/#jm`ovgjmd#wkf#bqlvmg#wkf#tlqog*8 ?,p`qjsw= ?!#pwzof>!kfjdkw98lufqeolt9kjggfmnlqf#jmelqnbwjlmbm#jmwfqmbwjlmbob#nfnafq#le#wkf#lmf#le#wkf#ejqpw`bm#af#elvmg#jm#?,gju= \n\n?,gju= gjpsobz9#mlmf8!=!#,= ?ojmh#qfo>! ##+evm`wjlm+*#xwkf#26wk#`fmwvqz-sqfufmwGfebvow+obqdf#mvnafq#le#Azybmwjmf#Fnsjqf-isdwkvnaofewubpw#nbilqjwz#lenbilqjwz#le#wkf##bojdm>!`fmwfq!=Vmjufqpjwz#Sqfppglnjmbwfg#az#wkfPf`lmg#Tlqog#Tbqgjpwqjavwjlm#le#pwzof>!slpjwjlm9wkf#qfpw#le#wkf#`kbqb`wfqjyfg#az#qfo>!mleloolt!=gfqjufp#eqln#wkfqbwkfq#wkbm#wkf#b#`lnajmbwjlm#lepwzof>!tjgwk9233Fmdojpk.psfbhjmd`lnsvwfq#p`jfm`falqgfq>!3!#bow>!wkf#f{jpwfm`f#leGfnl`qbwj`#Sbqwz!#pwzof>!nbqdjm.Elq#wkjp#qfbplm/-ip!=?,p`qjsw= \npAzWbdMbnf+p*X3^ip!=?,p`qjsw= ?-ip!=?,p`qjsw= ojmh#qfo>!j`lm!#$#bow>$$#`obpp>$elqnbwjlm#le#wkfufqpjlmp#le#wkf#?,b=?,gju=?,gju=,sbdf= ##?sbdf= ?gju#`obpp>!`lmwaf`bnf#wkf#ejqpwabkbpb#Jmglmfpjbfmdojpk#+pjnsof*"y"W"W"["Q"U"V"@=i=l<^<\\=n=m!?gju#jg>!ellwfq!=wkf#Vmjwfg#Pwbwfp?jnd#pq`>!kwws9,,-isdqjdkwwkvna-ip!=?,p`qjsw= ?ol`bwjlm-sqlwl`loeqbnfalqgfq>!3!#p!#,= ?nfwb#mbnf>!?,b=?,gju=?,gju=?elmw.tfjdkw9alog8%rvlw8#bmg#%rvlw8gfsfmgjmd#lm#wkf#nbqdjm938sbggjmd9!#qfo>!mleloolt!#Sqfpjgfmw#le#wkf#wtfmwjfwk#`fmwvqzfujpjlm= ##?,sbdfJmwfqmfw#F{solqfqb-bpzm`#>#wqvf8 jmelqnbwjlm#balvw?gju#jg>!kfbgfq!=!#b`wjlm>!kwws9,,?b#kqfe>!kwwsp9,,?gju#jg>!`lmwfmw!?,gju= ?,gju= ?gfqjufg#eqln#wkf#?jnd#pq`>$kwws9,,b``lqgjmd#wl#wkf# ?,algz= ?,kwno= pwzof>!elmw.pjyf9p`qjsw#obmdvbdf>!Bqjbo/#Kfoufwj`b/?,b=?psbm#`obpp>!?,p`qjsw=?p`qjsw#slojwj`bo#sbqwjfpwg=?,wq=?,wbaof=?kqfe>!kwws9,,ttt-jmwfqsqfwbwjlm#leqfo>!pwzofpkffw!#gl`vnfmw-tqjwf+$?`kbqpfw>!vwe.;!= afdjmmjmd#le#wkf#qfufbofg#wkbw#wkfwfofujpjlm#pfqjfp!#qfo>!mleloolt!=#wbqdfw>!\\aobmh!=`objnjmd#wkbw#wkfkwws&0B&1E&1Ettt-nbmjefpwbwjlmp#leSqjnf#Njmjpwfq#lejmeovfm`fg#az#wkf`obpp>!`ofbqej{!=,gju= ?,gju=  wkqff.gjnfmpjlmbo@kvq`k#le#Fmdobmgle#Mlqwk#@bqlojmbprvbqf#hjolnfwqfp-bggFufmwOjpwfmfqgjpwjm`w#eqln#wkf`lnnlmoz#hmltm#bpSklmfwj`#Boskbafwgf`obqfg#wkbw#wkf`lmwqloofg#az#wkfAfmibnjm#Eqbmhojmqlof.sobzjmd#dbnfwkf#Vmjufqpjwz#lejm#Tfpwfqm#Fvqlsfsfqplmbo#`lnsvwfqSqlif`w#Dvwfmafqdqfdbqgofpp#le#wkfkbp#affm#sqlslpfgwldfwkfq#tjwk#wkf=?,oj=?oj#`obpp>!jm#plnf#`lvmwqjfpnjm-ip!=?,p`qjsw=le#wkf#slsvobwjlmleej`jbo#obmdvbdf?jnd#pq`>!jnbdfp,jgfmwjejfg#az#wkfmbwvqbo#qfplvq`fp`obppjej`bwjlm#le`bm#af#`lmpjgfqfgrvbmwvn#nf`kbmj`pMfufqwkfofpp/#wkfnjoojlm#zfbqp#bdl?,algz= ?,kwno="y"W"W"["Q"U"V"@ wbhf#bgubmwbdf#lebmg/#b``lqgjmd#wlbwwqjavwfg#wl#wkfNj`qlplew#Tjmgltpwkf#ejqpw#`fmwvqzvmgfq#wkf#`lmwqlogju#`obpp>!kfbgfqpklqwoz#bewfq#wkfmlwbaof#f{`fswjlmwfmp#le#wklvpbmgppfufqbo#gjeefqfmwbqlvmg#wkf#tlqog-qfb`kjmd#njojwbqzjplobwfg#eqln#wkflsslpjwjlm#wl#wkfwkf#Log#WfpwbnfmwBeqj`bm#Bnfqj`bmpjmpfqwfg#jmwl#wkfpfsbqbwf#eqln#wkfnfwqlslojwbm#bqfbnbhfp#jw#slppjaofb`hmltofgdfg#wkbwbqdvbaoz#wkf#nlpwwzsf>!wf{w,`pp!= wkf#JmwfqmbwjlmboB``lqgjmd#wl#wkf#sf>!wf{w,`pp!#,= `ljm`jgf#tjwk#wkfwtl.wkjqgp#le#wkfGvqjmd#wkjp#wjnf/gvqjmd#wkf#sfqjlgbmmlvm`fg#wkbw#kfwkf#jmwfqmbwjlmbobmg#nlqf#qf`fmwozafojfufg#wkbw#wkf`lmp`jlvpmfpp#bmgelqnfqoz#hmltm#bppvqqlvmgfg#az#wkfejqpw#bssfbqfg#jml``bpjlmbooz#vpfgslpjwjlm9baplovwf8!#wbqdfw>!\\aobmh!#slpjwjlm9qfobwjuf8wf{w.bojdm9`fmwfq8ib{,ojap,irvfqz,2-ab`hdqlvmg.`lolq9 wzsf>!bssoj`bwjlm,bmdvbdf!#`lmwfmw>!?nfwb#kwws.frvju>!Sqjub`z#Sloj`z?,b=f+!&0@p`qjsw#pq`>$!#wbqdfw>!\\aobmh!=Lm#wkf#lwkfq#kbmg/-isdwkvnaqjdkw1?,gju=?gju#`obpp>!?gju#pwzof>!eolbw9mjmfwffmwk#`fmwvqz?,algz= ?,kwno= ?jnd#pq`>!kwws9,,p8wf{w.bojdm9`fmwfqelmw.tfjdkw9#alog8#B``lqgjmd#wl#wkf#gjeefqfm`f#afwtffm!#eqbnfalqgfq>!3!#!#pwzof>!slpjwjlm9ojmh#kqfe>!kwws9,,kwno7,ollpf-gwg!= gvqjmd#wkjp#sfqjlg?,wg=?,wq=?,wbaof=`olpfoz#qfobwfg#wlelq#wkf#ejqpw#wjnf8elmw.tfjdkw9alog8jmsvw#wzsf>!wf{w!#?psbm#pwzof>!elmw.lmqfbgzpwbwf`kbmdf\n?gju#`obpp>!`ofbqgl`vnfmw-ol`bwjlm-#Elq#f{bnsof/#wkf#b#tjgf#ubqjfwz#le#?"GL@WZSF#kwno= ?%maps8%maps8%maps8!=?b#kqfe>!kwws9,,pwzof>!eolbw9ofew8`lm`fqmfg#tjwk#wkf>kwws&0B&1E&1Ettt-jm#slsvobq#`vowvqfwzsf>!wf{w,`pp!#,=jw#jp#slppjaof#wl#Kbqubqg#Vmjufqpjwzwzofpkffw!#kqfe>!,wkf#nbjm#`kbqb`wfqL{elqg#Vmjufqpjwz##mbnf>!hfztlqgp!#`pwzof>!wf{w.bojdm9wkf#Vmjwfg#Hjmdglnefgfqbo#dlufqmnfmw?gju#pwzof>!nbqdjm#gfsfmgjmd#lm#wkf#gfp`qjswjlm#le#wkf?gju#`obpp>!kfbgfq-njm-ip!=?,p`qjsw=gfpwqv`wjlm#le#wkfpojdkwoz#gjeefqfmwjm#b``lqgbm`f#tjwkwfof`lnnvmj`bwjlmpjmgj`bwfp#wkbw#wkfpklqwoz#wkfqfbewfqfpsf`jbooz#jm#wkf#Fvqlsfbm#`lvmwqjfpKltfufq/#wkfqf#bqfpq`>!kwws9,,pwbwj`pvddfpwfg#wkbw#wkf!#pq`>!kwws9,,ttt-b#obqdf#mvnafq#le#Wfof`lnnvmj`bwjlmp!#qfo>!mleloolt!#wKloz#Qlnbm#Fnsfqlqbonlpw#f{`ovpjufoz!#alqgfq>!3!#bow>!Pf`qfwbqz#le#Pwbwf`vonjmbwjmd#jm#wkf@JB#Tlqog#Eb`wallhwkf#nlpw#jnslqwbmwbmmjufqpbqz#le#wkfpwzof>!ab`hdqlvmg.?oj=?fn=?b#kqfe>!,wkf#Bwobmwj`#L`fbmpwqj`woz#psfbhjmd/pklqwoz#afelqf#wkfgjeefqfmw#wzsfp#lewkf#Lwwlnbm#Fnsjqf=?jnd#pq`>!kwws9,,Bm#Jmwqlgv`wjlm#wl`lmpfrvfm`f#le#wkfgfsbqwvqf#eqln#wkf@lmefgfqbwf#Pwbwfpjmgjdfmlvp#sflsofpSql`ffgjmdp#le#wkfjmelqnbwjlm#lm#wkfwkflqjfp#kbuf#affmjmuloufnfmw#jm#wkfgjujgfg#jmwl#wkqffbgib`fmw#`lvmwqjfpjp#qfpslmpjaof#elqgjpplovwjlm#le#wkf`loobalqbwjlm#tjwktjgfoz#qfdbqgfg#bpkjp#`lmwfnslqbqjfpelvmgjmd#nfnafq#leGlnjmj`bm#Qfsvaoj`dfmfqbooz#b``fswfgwkf#slppjajojwz#lebqf#bopl#bubjobaofvmgfq#`lmpwqv`wjlmqfpwlqbwjlm#le#wkfwkf#dfmfqbo#svaoj`jp#bonlpw#fmwjqfozsbppfp#wkqlvdk#wkfkbp#affm#pvddfpwfg`lnsvwfq#bmg#ujgflDfqnbmj`#obmdvbdfp#b``lqgjmd#wl#wkf#gjeefqfmw#eqln#wkfpklqwoz#bewfqtbqgpkqfe>!kwwsp9,,ttt-qf`fmw#gfufolsnfmwAlbqg#le#Gjqf`wlqp?gju#`obpp>!pfbq`k#?b#kqfe>!kwws9,,Jm#sbqwj`vobq/#wkfNvowjsof#ellwmlwfplq#lwkfq#pvapwbm`fwklvpbmgp#le#zfbqpwqbmpobwjlm#le#wkf?,gju= ?,gju=  ?b#kqfe>!jmgf{-skstbp#fpwbaojpkfg#jmnjm-ip!=?,p`qjsw= sbqwj`jsbwf#jm#wkfb#pwqlmd#jmeovfm`fpwzof>!nbqdjm.wls9qfsqfpfmwfg#az#wkfdqbgvbwfg#eqln#wkfWqbgjwjlmbooz/#wkfFofnfmw+!p`qjsw!*8Kltfufq/#pjm`f#wkf,gju= ?,gju= ?gju#ofew8#nbqdjm.ofew9sqlwf`wjlm#bdbjmpw38#ufqwj`bo.bojdm9Vmelqwvmbwfoz/#wkfwzsf>!jnbdf,{.j`lm,gju= ?gju#`obpp>!#`obpp>!`ofbqej{!=?gju#`obpp>!ellwfq\n\n?,gju= \n\n?,gju= wkf#nlwjlm#sj`wvqf<}=f!t0-lqd,2:::,{kwno!=?b#wbqdfw>!\\aobmh!#wf{w,kwno8#`kbqpfw>!#wbqdfw>!\\aobmh!=?wbaof#`foosbggjmd>!bvwl`lnsofwf>!lee!#wf{w.bojdm9#`fmwfq8wl#obpw#ufqpjlm#az#ab`hdqlvmg.`lolq9# !#kqfe>!kwws9,,ttt-,gju=?,gju=?gju#jg>?b#kqfe>! !#`obpp>!!=?jnd#pq`>!kwws9,,`qjsw!#pq`>!kwws9,, ?p`qjsw#obmdvbdf>!,,FM!#!kwws9,,ttt-tfm`lgfVQJ@lnslmfmw+!#kqfe>!ibubp`qjsw9?gju#`obpp>!`lmwfmwgl`vnfmw-tqjwf+$?p`slpjwjlm9#baplovwf8p`qjsw#pq`>!kwws9,,#pwzof>!nbqdjm.wls9-njm-ip!=?,p`qjsw= ?,gju= ?gju#`obpp>!t0-lqd,2:::,{kwno!#  ?,algz= ?,kwno=gjpwjm`wjlm#afwtffm,!#wbqdfw>!\\aobmh!=?ojmh#kqfe>!kwws9,,fm`lgjmd>!vwe.;!<= t-bggFufmwOjpwfmfq!kwws9,,ttt-j`lm!#kqfe>!kwws9,,#pwzof>!ab`hdqlvmg9wzsf>!wf{w,`pp!#,= nfwb#sqlsfqwz>!ld9w?jmsvw#wzsf>!wf{w!##pwzof>!wf{w.bojdm9wkf#gfufolsnfmw#le#wzofpkffw!#wzsf>!wfkwno8#`kbqpfw>vwe.;jp#`lmpjgfqfg#wl#afwbaof#tjgwk>!233&!#Jm#bggjwjlm#wl#wkf#`lmwqjavwfg#wl#wkf#gjeefqfm`fp#afwtffmgfufolsnfmw#le#wkf#Jw#jp#jnslqwbmw#wl#?,p`qjsw= ?p`qjsw##pwzof>!elmw.pjyf92=?,psbm=?psbm#jg>daOjaqbqz#le#@lmdqfpp?jnd#pq`>!kwws9,,jnFmdojpk#wqbmpobwjlmB`bgfnz#le#P`jfm`fpgju#pwzof>!gjpsobz9`lmpwqv`wjlm#le#wkf-dfwFofnfmwAzJg+jg*jm#`lmivm`wjlm#tjwkFofnfmw+$p`qjsw$*8#?nfwb#sqlsfqwz>!ld9<}=f!wf{w!#mbnf>!=Sqjub`z#Sloj`z?,b=bgnjmjpwfqfg#az#wkffmbaofPjmdofQfrvfpwpwzof>%rvlw8nbqdjm9?,gju=?,gju=?,gju=?=?jnd#pq`>!kwws9,,j#pwzof>%rvlw8eolbw9qfefqqfg#wl#bp#wkf#wlwbo#slsvobwjlm#lejm#Tbpkjmdwlm/#G-@-#pwzof>!ab`hdqlvmg.bnlmd#lwkfq#wkjmdp/lqdbmjybwjlm#le#wkfsbqwj`jsbwfg#jm#wkfwkf#jmwqlgv`wjlm#lejgfmwjejfg#tjwk#wkfej`wjlmbo#`kbqb`wfq#L{elqg#Vmjufqpjwz#njpvmgfqpwbmgjmd#leWkfqf#bqf/#kltfufq/pwzofpkffw!#kqfe>!,@lovnajb#Vmjufqpjwzf{sbmgfg#wl#jm`ovgfvpvbooz#qfefqqfg#wljmgj`bwjmd#wkbw#wkfkbuf#pvddfpwfg#wkbwbeejojbwfg#tjwk#wkf`lqqfobwjlm#afwtffmmvnafq#le#gjeefqfmw=?,wg=?,wq=?,wbaof=Qfsvaoj`#le#Jqfobmg ?,p`qjsw= ?p`qjsw#vmgfq#wkf#jmeovfm`f`lmwqjavwjlm#wl#wkfLeej`jbo#tfapjwf#lekfbgrvbqwfqp#le#wkf`fmwfqfg#bqlvmg#wkfjnsoj`bwjlmp#le#wkfkbuf#affm#gfufolsfgEfgfqbo#Qfsvaoj`#leaf`bnf#jm`qfbpjmdoz`lmwjmvbwjlm#le#wkfMlwf/#kltfufq/#wkbwpjnjobq#wl#wkbw#le#`bsbajojwjfp#le#wkfb``lqgbm`f#tjwk#wkfsbqwj`jsbmwp#jm#wkfevqwkfq#gfufolsnfmwvmgfq#wkf#gjqf`wjlmjp#lewfm#`lmpjgfqfgkjp#zlvmdfq#aqlwkfq?,wg=?,wq=?,wbaof=?b#kwws.frvju>![.VB.skzpj`bo#sqlsfqwjfple#Aqjwjpk#@lovnajbkbp#affm#`qjwj`jyfg+tjwk#wkf#f{`fswjlmrvfpwjlmp#balvw#wkfsbppjmd#wkqlvdk#wkf3!#`foosbggjmd>!3!#wklvpbmgp#le#sflsofqfgjqf`wp#kfqf-#Elqkbuf#`kjogqfm#vmgfq&0F&0@,p`qjsw&0F!**8?b#kqfe>!kwws9,,ttt-?oj=?b#kqfe>!kwws9,,pjwf\\mbnf!#`lmwfmw>!wf{w.gf`lqbwjlm9mlmfpwzof>!gjpsobz9#mlmf?nfwb#kwws.frvju>![.mft#Gbwf+*-dfwWjnf+*#wzsf>!jnbdf,{.j`lm!?,psbm=?psbm#`obpp>!obmdvbdf>!ibubp`qjswtjmglt-ol`bwjlm-kqfe?b#kqfe>!ibubp`qjsw9..= ?p`qjsw#wzsf>!w?b#kqfe>$kwws9,,ttt-klqw`vw#j`lm!#kqfe>!?,gju= ?gju#`obpp>!?p`qjsw#pq`>!kwws9,,!#qfo>!pwzofpkffw!#w?,gju= ?p`qjsw#wzsf>,b=#?b#kqfe>!kwws9,,#booltWqbmpsbqfm`z>![.VB.@lnsbwjaof!#`lmqfobwjlmpkjs#afwtffm ?,p`qjsw= ?p`qjsw#?,b=?,oj=?,vo=?,gju=bppl`jbwfg#tjwk#wkf#sqldqbnnjmd#obmdvbdf?,b=?b#kqfe>!kwws9,,?,b=?,oj=?oj#`obpp>!elqn#b`wjlm>!kwws9,,?gju#pwzof>!gjpsobz9wzsf>!wf{w!#mbnf>!r!?wbaof#tjgwk>!233&!#ab`hdqlvmg.slpjwjlm9!#alqgfq>!3!#tjgwk>!qfo>!pklqw`vw#j`lm!#k5=?vo=?oj=?b#kqfe>!##?nfwb#kwws.frvju>!`pp!#nfgjb>!p`qffm!#qfpslmpjaof#elq#wkf#!#wzsf>!bssoj`bwjlm,!#pwzof>!ab`hdqlvmg.kwno8#`kbqpfw>vwe.;!#booltwqbmpsbqfm`z>!pwzofpkffw!#wzsf>!wf ?nfwb#kwws.frvju>!=?,psbm=?psbm#`obpp>!3!#`foopsb`jmd>!3!=8 ?,p`qjsw= ?p`qjsw#plnfwjnfp#`boofg#wkfglfp#mlw#mf`fppbqjozElq#nlqf#jmelqnbwjlmbw#wkf#afdjmmjmd#le#?"GL@WZSF#kwno=?kwnosbqwj`vobqoz#jm#wkf#wzsf>!kjggfm!#mbnf>!ibubp`qjsw9uljg+3*8!feef`wjufmfpp#le#wkf#bvwl`lnsofwf>!lee!#dfmfqbooz#`lmpjgfqfg=?jmsvw#wzsf>!wf{w!#!=?,p`qjsw= ?p`qjswwkqlvdklvw#wkf#tlqog`lnnlm#njp`lm`fswjlmbppl`jbwjlm#tjwk#wkf?,gju= ?,gju= ?gju#`gvqjmd#kjp#ojefwjnf/`lqqfpslmgjmd#wl#wkfwzsf>!jnbdf,{.j`lm!#bm#jm`qfbpjmd#mvnafqgjsolnbwj`#qfobwjlmpbqf#lewfm#`lmpjgfqfgnfwb#`kbqpfw>!vwe.;!#?jmsvw#wzsf>!wf{w!#f{bnsofp#jm`ovgf#wkf!=?jnd#pq`>!kwws9,,jsbqwj`jsbwjlm#jm#wkfwkf#fpwbaojpknfmw#le ?,gju= ?gju#`obpp>!%bns8maps8%bns8maps8wl#gfwfqnjmf#tkfwkfqrvjwf#gjeefqfmw#eqlnnbqhfg#wkf#afdjmmjmdgjpwbm`f#afwtffm#wkf`lmwqjavwjlmp#wl#wkf`lmeoj`w#afwtffm#wkftjgfoz#`lmpjgfqfg#wltbp#lmf#le#wkf#ejqpwtjwk#ubqzjmd#gfdqffpkbuf#psf`vobwfg#wkbw+gl`vnfmw-dfwFofnfmwsbqwj`jsbwjmd#jm#wkflqjdjmbooz#gfufolsfgfwb#`kbqpfw>!vwe.;!=#wzsf>!wf{w,`pp!#,= jmwfq`kbmdfbaoz#tjwknlqf#`olpfoz#qfobwfgpl`jbo#bmg#slojwj`bowkbw#tlvog#lwkfqtjpfsfqsfmgj`vobq#wl#wkfpwzof#wzsf>!wf{w,`ppwzsf>!pvanjw!#mbnf>!ebnjojfp#qfpjgjmd#jmgfufolsjmd#`lvmwqjfp`lnsvwfq#sqldqbnnjmdf`lmlnj`#gfufolsnfmwgfwfqnjmbwjlm#le#wkfelq#nlqf#jmelqnbwjlmlm#pfufqbo#l``bpjlmpslqwvdv/Fp#+Fvqlsfv*VWE.;!#pfwWjnflvw+evm`wjlm+*gjpsobz9jmojmf.aol`h8?jmsvw#wzsf>!pvanjw!#wzsf#>#$wf{w,ibubp`qj?jnd#pq`>!kwws9,,ttt-!#!kwws9,,ttt-t0-lqd,pklqw`vw#j`lm!#kqfe>!!#bvwl`lnsofwf>!lee!#?,b=?,gju=?gju#`obpp>?,b=?,oj= ?oj#`obpp>!`pp!#wzsf>!wf{w,`pp!#?elqn#b`wjlm>!kwws9,,{w,`pp!#kqfe>!kwws9,,ojmh#qfo>!bowfqmbwf!# ?p`qjsw#wzsf>!wf{w,#lm`oj`h>!ibubp`qjsw9+mft#Gbwf*-dfwWjnf+*~kfjdkw>!2!#tjgwk>!2!#Sflsof$p#Qfsvaoj`#le##?b#kqfe>!kwws9,,ttt-wf{w.gf`lqbwjlm9vmgfqwkf#afdjmmjmd#le#wkf#?,gju= ?,gju= ?,gju= fpwbaojpknfmw#le#wkf#?,gju=?,gju=?,gju=?,g ujftslqwxnjm.kfjdkw9 ?p`qjsw#pq`>!kwws9,,lswjlm=?lswjlm#ubovf>lewfm#qfefqqfg#wl#bp#,lswjlm= ?lswjlm#ubov?"GL@WZSF#kwno= ?"..XJmwfqmbwjlmbo#Bjqslqw= ?b#kqfe>!kwws9,,ttt?,b=?b#kqfe>!kwws9,,t\fTL\fT^\fTE\fT^\fUh\fT{\fTN\roI\ro|\roL\ro{\roO\rov\rot\nAOGx\bTA\nzk#+\vUmGx*\fHD\fHS\fH\\\fIa\fHJ\fIk\fHZ\fHM\fHR\fHe\fHD\fH^\fIg\fHM\fHy\fIa\fH[\fIk\fHH\fIa\fH\\\fHp\fHR\fHD\fHy\fHR\fH\\\fIl\fHT\fHn\fH@\fHn\fHK\fHS\fHH\fHT\fIa\fHI\fHR\fHF\fHD\fHR\fHT\fIa\fHY\fIl\fHy\fHR\fH\\\fHT\fHn\fHT\fIa\fHy\fH\\\fHO\fHT\fHR\fHB\fH{\fIa\fH\\\fIl\fHv\fHS\fHs\fIa\fHL\fIg\fHn\fHY\fHS\fHp\fIa\fHr\fHR\fHD\fHi\fHB\fIk\fH\\\fHS\fHy\fHR\fHY\fHS\fHA\fHS\fHD\fIa\fHD\fH{\fHR\fHM\fHS\fHC\fHR\fHm\fHy\fIa\fHC\fIg\fHn\fHy\fHS\fHT\fIm\fH\\\fHy\fIa\fH[\fHR\fHF\fHU\fIm\fHm\fHv\fHH\fIl\fHF\fIa\fH\\\fH@\fHn\fHK\fHD\fHs\fHS\fHF\fIa\fHF\fHO\fIl\fHy\fIa\fH\\\fHS\fHy\fIk\fHs\fHF\fIa\fH\\\fHR\fH\\\fHn\fHA\fHF\fIa\fH\\\fHR\fHF\fIa\fHH\fHB\fHR\fH^\fHS\fHy\fIg\fHn\fH\\\fHG\fHP\fIa\fHH\fHR\fH\\\fHD\fHS\fH\\\fIa\fHB\fHR\fHO\fH^\fHS\fHB\fHS\fHs\fIk\fHMgfp`qjswjlm!#`lmwfmw>!gl`vnfmw-ol`bwjlm-sqlw-dfwFofnfmwpAzWbdMbnf+?"GL@WZSF#kwno= ?kwno#?nfwb#`kbqpfw>!vwe.;!=9vqo!#`lmwfmw>!kwws9,,-`pp!#qfo>!pwzofpkffw!pwzof#wzsf>!wf{w,`pp!=wzsf>!wf{w,`pp!#kqfe>!t0-lqd,2:::,{kwno!#{nowzsf>!wf{w,ibubp`qjsw!#nfwklg>!dfw!#b`wjlm>!ojmh#qfo>!pwzofpkffw!##>#gl`vnfmw-dfwFofnfmwwzsf>!jnbdf,{.j`lm!#,=`foosbggjmd>!3!#`foops-`pp!#wzsf>!wf{w,`pp!#?,b=?,oj=?oj=?b#kqfe>!!#tjgwk>!2!#kfjdkw>!2!!=?b#kqfe>!kwws9,,ttt-pwzof>!gjpsobz9mlmf8!=bowfqmbwf!#wzsf>!bssoj.,,T0@,,GWG#[KWNO#2-3#foopsb`jmd>!3!#`foosbg#wzsf>!kjggfm!#ubovf>!,b=%maps8?psbm#qlof>!p ?jmsvw#wzsf>!kjggfm!#obmdvbdf>!IbubP`qjsw!##gl`vnfmw-dfwFofnfmwpAd>!3!#`foopsb`jmd>!3!#zsf>!wf{w,`pp!#nfgjb>!wzsf>$wf{w,ibubp`qjsw$tjwk#wkf#f{`fswjlm#le#zsf>!wf{w,`pp!#qfo>!pw#kfjdkw>!2!#tjgwk>!2!#>$(fm`lgfVQJ@lnslmfmw+?ojmh#qfo>!bowfqmbwf!# algz/#wq/#jmsvw/#wf{wnfwb#mbnf>!qlalwp!#`lmnfwklg>!slpw!#b`wjlm>!= ?b#kqfe>!kwws9,,ttt-`pp!#qfo>!pwzofpkffw!#?,gju=?,gju=?gju#`obppobmdvbdf>!ibubp`qjsw!=bqjb.kjggfm>!wqvf!=.[?qjsw!#wzsf>!wf{w,ibubpo>38~*+*8 +evm`wjlm+*xab`hdqlvmg.jnbdf9#vqo+,b=?,oj=?oj=?b#kqfe>!k\n\n?oj=?b#kqfe>!kwws9,,bwlq!#bqjb.kjggfm>!wqv=#?b#kqfe>!kwws9,,ttt-obmdvbdf>!ibubp`qjsw!#,lswjlm= ?lswjlm#ubovf,gju=?,gju=?gju#`obpp>qbwlq!#bqjb.kjggfm>!wqf>+mft#Gbwf*-dfwWjnf+*slqwvdv/Fp#+gl#Aqbpjo*!wf{w,?nfwb#kwws.frvju>!@lmwfqbmpjwjlmbo,,FM!#!kwws9?kwno#{nomp>!kwws9,,ttt.,,T0@,,GWG#[KWNO#2-3#WGWG,{kwno2.wqbmpjwjlmbo,,ttt-t0-lqd,WQ,{kwno2,sf#>#$wf{w,ibubp`qjsw$8?nfwb#mbnf>!gfp`qjswjlmsbqfmwMlgf-jmpfqwAfelqf?jmsvw#wzsf>!kjggfm!#mbip!#wzsf>!wf{w,ibubp`qj+gl`vnfmw*-qfbgz+evm`wjp`qjsw#wzsf>!wf{w,ibubpjnbdf!#`lmwfmw>!kwws9,,VB.@lnsbwjaof!#`lmwfmw>wno8#`kbqpfw>vwe.;!#,= ojmh#qfo>!pklqw`vw#j`lm?ojmh#qfo>!pwzofpkffw!#?,p`qjsw= ?p`qjsw#wzsf>>#gl`vnfmw-`qfbwfFofnfm?b#wbqdfw>!\\aobmh!#kqfe>#gl`vnfmw-dfwFofnfmwpAjmsvw#wzsf>!wf{w!#mbnf>b-wzsf#>#$wf{w,ibubp`qjmsvw#wzsf>!kjggfm!#mbnfkwno8#`kbqpfw>vwe.;!#,=gwg!= ?kwno#{nomp>!kwws.,,T0@,,GWG#KWNO#7-32#WfmwpAzWbdMbnf+$p`qjsw$*jmsvw#wzsf>!kjggfm!#mbn?p`qjsw#wzsf>!wf{w,ibubp!#pwzof>!gjpsobz9mlmf8!=gl`vnfmw-dfwFofnfmwAzJg+>gl`vnfmw-`qfbwfFofnfmw+$#wzsf>$wf{w,ibubp`qjsw$jmsvw#wzsf>!wf{w!#mbnf>!g-dfwFofnfmwpAzWbdMbnf+pmj`bo!#kqfe>!kwws9,,ttt-@,,GWG#KWNO#7-32#Wqbmpjw?pwzof#wzsf>!wf{w,`pp!= ?pwzof#wzsf>!wf{w,`pp!=jlmbo-gwg!= ?kwno#{nomp>kwws.frvju>!@lmwfmw.Wzsfgjmd>!3!#`foopsb`jmd>!3!kwno8#`kbqpfw>vwe.;!#,= #pwzof>!gjpsobz9mlmf8!=??oj=?b#kqfe>!kwws9,,ttt-#wzsf>$wf{w,ibubp`qjsw$=&*&'&^&ˆŸా&ƭ&ƒ&)&^&%&'&‚&P&1&±&3&]&m&u&E&t&C&Ï&V&V&/&>&6&ྲྀ᝼o&p&@&E&M&P&x&@&F&e&Ì&7&:&(&D&0&C&)&.&F&-&1&(&L&F&1ɞ*Ϫ⇳&፲&K&;&)&E&H&P&0&?&9&V&&-&v&a&,&E&)&?&=&'&'&B&മ&ԃ&̖*&*8&%&%&&&%,)&š&>&†&7&]&F&2&>&J&6&n&2&%&?&Ž&2&6&J&g&-&0&,&*&J&*&O&)&6&(&<&B&N&.&P&@&2&.&W&M&%Լ„(,(<&,&Ϛ&ᣇ&-&,(%&(&%&(Ļ0&X&D&&j&'&J&(&.&B&3&Z&R&h&3&E&E&<Æ-͠ỳ&%8?&@&,&Z&@&0&J&,&^&x&_&6&C&6&Cܬ⨥&f&-&-&-&-&,&J&2&8&z&8&C&Y&8&-&d&ṸÌ-&7&1&F&7&t&W&7&I&.&.&^&=ྜ᧓&8(>&/&/&ݻ')'ၥ')'%@/&0&%оী*&*@&CԽהɴ׫4෗ܚӑ6඄&/Ÿ̃Z&*%ɆϿ&Ĵ&1¨ҴŴ",ja,"AAAAKKLLKKKKKJJIHHIHHGGFF"),wa(xa,ja);function Xa(g){this.data=new Int8Array(0),this.offset=0,this.data=g}function Ks(g,T,R,P){if(g.input===null)return-1;const O=g.input,ne=Math.min(O.offset+P,O.data.length),xe=ne-O.offset;return T.set(O.data.subarray(O.offset,ne),R),O.offset+=xe,xe}function le(g){g.input=new Xa(new Int8Array(0))}function ge(g){const T=g.length,R=new Int8Array(T);for(let P=0;P=0)return T;throw g.runningState>=0&&(g.runningState=T),new Error("Brotli error code: "+T)}function nt(g,T){let R=new en;if(R.input=new Xa(g),b(R),T){let ve=T.customDictionary;ve&&m(R,ve)}let P=0,O=[];for(;;){let ve=new Int8Array(16384);if(O.push(ve),R.output=ve,R.outputOffset=0,R.outputLength=16384,R.outputUsed=0,ie(R),P+=R.outputUsed,R.outputUsed<16384)break}w(R),le(R);let ne=new Int8Array(P),xe=0;for(let ve=0;ve{throw de},a=import.meta.url,i="";try{i=new URL(".",a).href}catch{}console.log.bind(console);var r=console.error.bind(console),o=!1,f,l,c,h,u,d=!1;function p(){var W=Ee.buffer;h=new Int8Array(W),u=new Uint8Array(W),new BigInt64Array(W),new BigUint64Array(W)}function m(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)F(n.preRun.shift());q(S)}function b(){d=!0,He.j()}function w(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)A(n.postRun.shift());q(v)}function x(W){n.onAbort?.(W),W="Aborted("+W+")",r(W),o=!0,W+=". Build with -sASSERTIONS for more info.";var de=new WebAssembly.RuntimeError(W);throw c?.(de),de}function j(){var W={a:Ue};return W}async function k(){function W(Z,we){return He=Z.exports,_e(He),p(),He}var de=j();return new Promise((Z,we)=>{n.instantiateWasm(de,(ce,Me)=>{Z(W(ce))})})}class y{name="ExitStatus";constructor(de){this.message=`Program terminated with exit(${de})`,this.status=de}}var q=W=>{for(;W.length>0;)W.shift()(n)},v=[],A=W=>v.push(W),S=[],F=W=>S.push(W),M=!0,N=()=>x(""),D=0,$=()=>{M=!1,D=0},K={},oe=W=>{if(W instanceof y||W=="unwind")return f;s(1,W)},me=()=>M||D>0,X=W=>{f=W,me()||(n.onExit?.(W),o=!0),s(W,new y(W))},ee=(W,de)=>{f=W,X(W)},ye=ee,Be=()=>{if(!me())try{ye(f)}catch(W){oe(W)}},ae=W=>{if(!o)try{return W()}catch(de){oe(de)}finally{Be()}},$e=()=>performance.now(),tt=(W,de)=>{if(K[W]&&(clearTimeout(K[W].id),delete K[W]),!de)return 0;var Z=setTimeout(()=>{delete K[W],ae(()=>Fe(W,$e()))},de);return K[W]={id:Z,timeout_ms:de},0};function G(W){n.imageData=new Uint8Array(W)}var _=()=>2147483648,L=(W,de)=>Math.ceil(W/de)*de,z=W=>{var de=Ee.buffer.byteLength,Z=(W-de+65535)/65536|0;try{return Ee.grow(Z),p(),1}catch{}},te=W=>{var de=u.length;W>>>=0;var Z=_();if(W>Z)return!1;for(var we=1;we<=4;we*=2){var ce=de*(1+.2/we);ce=Math.min(ce,W+100663296);var Me=Math.min(Z,L(Math.max(W,ce),65536)),qe=z(Me);if(qe)return!0}return!1};function je(W,de,Z,we){if(Z===de){n.imageData=new Uint8ClampedArray(u.subarray(W,W+Z*we));return}const ce=de*we,Me=n.imageData=new Uint8ClampedArray(ce);for(let qe=W,Le=0;Le{h.set(W,de)};if(n.noExitRuntime&&(M=n.noExitRuntime),n.print&&n.print,n.printErr&&(r=n.printErr),n.wasmBinary&&n.wasmBinary,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();n.writeArrayToMemory=ie;var Fe,Ee;function _e(W){n._malloc=W.k,n._free=W.l,n._jbig2_decode=W.m,n._ccitt_decode=W.n,Fe=W.o,Ee=W.i,W.__indirect_function_table}var Ue={e:N,b:$,c:tt,g:G,d:te,a:X,h:je,f:he};function Ne(){m();function W(){n.calledRun=!0,!o&&(b(),l?.(n),n.onRuntimeInitialized?.(),w())}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),W()},1)):W()}var He;return He=await k(),Ne(),d?e=n:e=new Promise((W,de)=>{l=W,c=de}),e}const ld=fd;class gn{static#e=null;static#t=new Set;static#s=!0;static#a=!0;static#n=null;#i=null;#r=null;_filename=null;_noWasmFilename=null;static setOptions({handler:e,useWasm:n,useWorkerFetch:s,wasmUrl:a}){gn.#s=n,gn.#a=s,gn.#n=a,s||(gn.#e=e)}static get instance(){st("Abstract getter `instance` accessed")}static cleanup(){for(const e of gn.#t)e.#r=null}constructor(e=!1){e&&gn.#t.add(this)}async#f(e){let n=null;try{n=(await import(`${gn.#n}${this._noWasmFilename}`)).default()}catch(s){H(`#getJsModule: ${s}`)}e(n)}async#o(e,n,s){try{this.#i||(gn.#a?this.#i=await Uo(`${gn.#n}${this._filename}`):this.#i=await gn.#e.sendWithPromise("FetchBinaryData",{kind:"wasmUrl",filename:this._filename}));const a=await WebAssembly.instantiate(this.#i,n);return s(a.instance)}catch(a){return H(`#instantiateWasm: ${a}`),this.#f(e),null}}_getModule(e){if(!this.#r){const{promise:n,resolve:s}=Promise.withResolvers(),a=[n];gn.#s?a.push(e({warn:H,instantiateWasm:this.#o.bind(this,s)})):this.#f(s),this.#r=Promise.race(a)}return this.#r}async decode(e,n){st("Abstract method `decode` called")}}class ql extends Bn{constructor(e){super(e,"Jbig2Error")}}class L0 extends gn{_filename="jbig2.wasm";_noWasmFilename="jbig2_nowasm_fallback.js";static get instance(){return ue(this,"instance",new L0(!0))}async decode(e,n,s,a,i){const r=await this._getModule(ld);if(!r)throw new ql("JBig2 failed to initialize");let o,f;try{const l=e.length;if(o=r._malloc(l),r.writeArrayToMemory(e,o),i)r._ccitt_decode(o,l,n,s,i.K,i.EndOfLine?1:0,i.EncodedByteAlign?1:0,i.BlackIs1?1:0,i.Columns,i.Rows);else{const h=a?a.length:0;h>0&&(f=r._malloc(h),r.writeArrayToMemory(a,f)),r._jbig2_decode(o,l,n,s,f,h)}if(!r.imageData)throw new ql("Unknown error");const{imageData:c}=r;return r.imageData=null,c}finally{o&&r._free(o),f&&r._free(f)}}}class cd extends jn{constructor(e,n,s){super(n),this.stream=e,this.maybeLength=n,this.dict=e.dict,s instanceof B||(s=B.empty),this.params={K:s.get("K")||0,EndOfLine:!!s.get("EndOfLine"),EncodedByteAlign:!!s.get("EncodedByteAlign"),Columns:s.get("Columns")||1728,Rows:s.get("Rows")||0,EndOfBlock:!!(s.get("EndOfBlock")??!0),BlackIs1:!!s.get("BlackIs1")}}get bytes(){return ue(this,"bytes",this.stream.getBytes(this.maybeLength))}get isImageStream(){return!0}get isAsyncDecoder(){return!0}async decodeImage(e,n,s){return this.eof?this.buffer:(e??=this.stream.isAsync?await this.stream.asyncGetBytes()||this.bytes:this.bytes,this.buffer=await L0.instance.decode(e,this.dict.get("W","Width"),this.dict.get("H","Height"),null,this.params),this.bufferLength=this.buffer.length,this.eof=!0,this.buffer)}}const vl=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),hd=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]),ud=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]),dd=[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],md=[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 Sl extends jn{#e=!0;constructor(e,n){super(n),this.stream=e,this.dict=e.dict;const s=e.getByte(),a=e.getByte();if(s===-1||a===-1)throw new Y(`Invalid header in flate stream: ${s}, ${a}`);if((s&15)!==8)throw new Y(`Unknown compression method in flate stream: ${s}, ${a}`);if(((s<<8)+a)%31!==0)throw new Y(`Bad FCHECK in flate stream: ${s}, ${a}`);if(a&32)throw new Y(`FDICT bit set in flate stream: ${s}, ${a}`);this.codeSize=0,this.codeBuf=0}async getImageData(e,n){const s=await this.asyncGetBytes();return s?s.length<=e?s:s.subarray(0,e):this.getBytes(e)}async asyncGetBytes(){const{decompressed:e,compressed:n}=await this.asyncGetBytesFromDecompressionStream("deflate");return e||(this.#e=!1,this.stream=new yt(n,2,n.length,this.stream.dict),this.reset(),null)}get isAsync(){return this.#e}getBits(e){const n=this.stream;let s=this.codeSize,a=this.codeBuf,i;for(;s>e,this.codeSize=s-=e,i}getCode(e){const n=this.stream,s=e[0],a=e[1];let i=this.codeSize,r=this.codeBuf,o;for(;i>16,c=f&65535;if(l<1||i>l,this.codeSize=i-l,c}generateHuffmanTable(e){const n=e.length;let s=0,a;for(a=0;as&&(s=e[a]);const i=1<>=1;for(a=h;a>=1,n===0){let l;if((l=a.getByte())===-1){this.#t("Bad block header in flate stream");return}let c=l;if((l=a.getByte())===-1){this.#t("Bad block header in flate stream");return}if(c|=l<<8,(l=a.getByte())===-1){this.#t("Bad block header in flate stream");return}let h=l;if((l=a.getByte())===-1){this.#t("Bad block header in flate stream");return}if(h|=l<<8,h!==(~c&65535)&&(c!==0||h!==0))throw new Y("Bad uncompressed block length in flate stream");this.codeBuf=0,this.codeSize=0;const u=this.bufferLength,d=u+c;if(e=this.ensureBuffer(d),this.bufferLength=d,c===0)a.peekByte()===-1&&(this.eof=!0);else{const p=a.getBytes(c);e.set(p,u),p.length0;)b[d++]=j}i=this.generateHuffmanTable(b.subarray(0,l)),r=this.generateHuffmanTable(b.subarray(l,m))}else throw new Y("Unknown block type in flate stream");e=this.buffer;let o=e?e.length:0,f=this.bufferLength;for(;;){let l=this.getCode(i);if(l<256){f+1>=o&&(e=this.ensureBuffer(f+1),o=e.length),e[f++]=l;continue}if(l===256){this.bufferLength=f;return}l-=257,l=hd[l];let c=l>>16;c>0&&(c=this.getBits(c)),s=(l&65535)+c,l=this.getCode(r),l=ud[l],c=l>>16,c>0&&(c=this.getBits(c));const h=(l&65535)+c;f+s>=o&&(e=this.ensureBuffer(f+s),o=e.length);for(let u=0;u=9&&e[0]===151&&e[1]===74&&e[2]===66&&e[3]===50&&e[4]===13&&e[5]===10&&e[6]===26&&e[7]===10){const n=(e[8]&2)===0?13:9;return e.subarray(n)}return e}async decodeImage(e,n,s){if(this.eof)return this.buffer;e=q0.stripFileHeader(e||this.bytes);let a=null;if(this.params instanceof B){const i=this.params.get("JBIG2Globals");i instanceof Pe&&(a=q0.stripFileHeader(i.getBytes()))}return this.buffer=await L0.instance.decode(e,this.dict.get("Width"),this.dict.get("Height"),a),this.bufferLength=this.buffer.length,this.eof=!0,this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}}async function pd(t={}){var e,n=t,s="./this.program",a=(le,ge)=>{throw ge},i=import.meta.url,r="";try{r=new URL(".",i).href}catch{}var o=console.log.bind(console),f=console.error.bind(console),l=!1,c,h,u,d=!1;function p(){var le=Fs.buffer;v=new Int8Array(le),S=new Uint8Array(le),q=new Int32Array(le),A=new Uint32Array(le),new BigInt64Array(le),new BigUint64Array(le)}function m(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)$(n.preRun.shift());F(D)}function b(){d=!0,Ks.s()}function w(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)N(n.postRun.shift());F(M)}function x(le){n.onAbort?.(le),le=`Aborted(${le})`,f(le),l=!0,le+=". Build with -sASSERTIONS for more info.";var ge=new WebAssembly.RuntimeError(le);throw u?.(ge),ge}function j(){var le={a:ja};return le}async function k(){function le(Ae,Ie){return Ks=Ae.exports,xa(Ks),p(),Ks}var ge=j();return new Promise((Ae,Ie)=>{n.instantiateWasm(ge,(nt,g)=>{Ae(le(nt))})})}class y{name="ExitStatus";constructor(ge){this.message=`Program terminated with exit(${ge})`,this.status=ge}}var q,v,A,S,F=le=>{for(;le.length>0;)le.shift()(n)},M=[],N=le=>M.push(le),D=[],$=le=>D.push(le),K=!0,oe=()=>x(""),me=0,X=()=>{K=!1,me=0},ee={},ye=le=>{if(le instanceof y||le=="unwind")return c;a(1,le)},Be=()=>K||me>0,ae=le=>{c=le,Be()||(n.onExit?.(le),l=!0),a(le,new y(le))},$e=(le,ge)=>{c=le,ae(le)},tt=$e,G=()=>{if(!Be())try{tt(c)}catch(le){ye(le)}},_=le=>{if(!l)try{return le()}catch(ge){ye(ge)}finally{G()}},L=()=>performance.now(),z=(le,ge)=>{if(ee[le]&&(clearTimeout(ee[le].id),delete ee[le]),!ge)return 0;var Ae=setTimeout(()=>{delete ee[le],_(()=>wa(le,L()))},ge);return ee[le]={id:Ae,timeout_ms:ge},0};function te(le,ge){le>>=2;const Ae=n.imageData=new Uint8ClampedArray(ge),Ie=q.subarray(le,le+ge);Ae.set(Ie)}function je(le,ge,Ae,Ie){le>>=2,ge>>=2,Ae>>=2;const nt=n.imageData=new Uint8ClampedArray(Ie*3),g=q.subarray(le,le+Ie),T=q.subarray(ge,ge+Ie),R=q.subarray(Ae,Ae+Ie);for(let P=0;P>=2,ge>>=2,Ae>>=2,Ie>>=2;const g=n.imageData=new Uint8ClampedArray(nt*4),T=q.subarray(le,le+nt),R=q.subarray(ge,ge+nt),P=q.subarray(Ae,Ae+nt),O=q.subarray(Ie,Ie+nt);for(let ne=0;ne2147483648,Fe=(le,ge)=>Math.ceil(le/ge)*ge,Ee=le=>{var ge=Fs.buffer.byteLength,Ae=(le-ge+65535)/65536|0;try{return Fs.grow(Ae),p(),1}catch{}},_e=le=>{var ge=S.length;le>>>=0;var Ae=ie();if(le>Ae)return!1;for(var Ie=1;Ie<=4;Ie*=2){var nt=ge*(1+.2/Ie);nt=Math.min(nt,le+100663296);var g=Math.min(Ae,Fe(Math.max(le,nt),65536)),T=Ee(g);if(T)return!0}return!1},Ue={},Ne=()=>s||"./this.program",He=()=>{if(!He.strings){var le=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",ge={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:le,_:Ne()};for(var Ae in Ue)Ue[Ae]===void 0?delete ge[Ae]:ge[Ae]=Ue[Ae];var Ie=[];for(var Ae in ge)Ie.push(`${Ae}=${ge[Ae]}`);He.strings=Ie}return He.strings},W=(le,ge,Ae,Ie)=>{if(!(Ie>0))return 0;for(var nt=Ae,g=Ae+Ie-1,T=0;T=g)break;ge[Ae++]=R}else if(R<=2047){if(Ae+1>=g)break;ge[Ae++]=192|R>>6,ge[Ae++]=128|R&63}else if(R<=65535){if(Ae+2>=g)break;ge[Ae++]=224|R>>12,ge[Ae++]=128|R>>6&63,ge[Ae++]=128|R&63}else{if(Ae+3>=g)break;ge[Ae++]=240|R>>18,ge[Ae++]=128|R>>12&63,ge[Ae++]=128|R>>6&63,ge[Ae++]=128|R&63,T++}}return ge[Ae]=0,Ae-nt},de=(le,ge,Ae)=>W(le,S,ge,Ae),Z=(le,ge)=>{var Ae=0,Ie=0;for(var nt of He()){var g=ge+Ae;A[le+Ie>>2]=g,Ae+=de(nt,g,1/0)+1,Ie+=4}return 0},we=le=>{for(var ge=0,Ae=0;Ae=55296&&Ie<=57343?(ge+=4,++Ae):ge+=3}return ge},ce=(le,ge)=>{var Ae=He();A[le>>2]=Ae.length;var Ie=0;for(var nt of Ae)Ie+=we(nt)+1;return A[ge>>2]=Ie,0};function Me(le,ge,Ae,Ie){return 70}var qe=[null,[],[]],Le=globalThis.TextDecoder&&new TextDecoder,Ce=(le,ge,Ae,Ie)=>{for(var nt=ge+Ae;le[ge]&&!(ge>=nt);)++ge;return ge},Je=(le,ge=0,Ae,Ie)=>{var nt=Ce(le,ge,Ae);if(nt-ge>16&&le.buffer&&Le)return Le.decode(le.subarray(ge,nt));for(var g="";ge>10,56320|O&1023)}}return g},ot=(le,ge)=>{var Ae=qe[le];ge===0||ge===10?((le===1?o:f)(Je(Ae)),Ae.length=0):Ae.push(ge)},lt=(le,ge,Ae)=>le?Je(S,le,ge):"",Ft=(le,ge,Ae,Ie)=>{for(var nt=0,g=0;g>2],R=A[ge+4>>2];ge+=8;for(var P=0;P>2]=nt,0};function Qe(le,ge){le>>=2;const Ae=n.imageData=new Uint8ClampedArray(ge*4),Ie=q.subarray(le,le+ge);for(let nt=0;nt>=2,ge>>=2;const Ie=n.imageData=new Uint8ClampedArray(Ae*4),nt=q.subarray(le,le+Ae),g=q.subarray(ge,ge+Ae);for(let T=0;T>=2,ge>>=2,Ae>>=2;const nt=n.imageData=new Uint8ClampedArray(Ie*4),g=q.subarray(le,le+Ie),T=q.subarray(ge,ge+Ie),R=q.subarray(Ae,Ae+Ie);for(let P=0;P{v.set(le,ge)};if(n.noExitRuntime&&(K=n.noExitRuntime),n.print&&(o=n.print),n.printErr&&(f=n.printErr),n.wasmBinary&&n.wasmBinary,n.arguments&&n.arguments,n.thisProgram&&(s=n.thisProgram),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();n.writeArrayToMemory=$a;var wa,Fs;function xa(le){n._malloc=le.t,n._free=le.u,n._jp2_decode=le.v,wa=le.w,Fs=le.r,le.__indirect_function_table}var ja={m:oe,l:X,i:z,f:te,e:je,d:he,j:_e,o:Z,p:ce,n:Me,b:Ft,q:Qe,h:Lt,c:en,k:ae,g:Rn,a:ss};function Xa(){m();function le(){n.calledRun=!0,!l&&(b(),h?.(n),n.onRuntimeInitialized?.(),w())}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),le()},1)):le()}var Ks;return Ks=await k(),Xa(),d?e=n:e=new Promise((le,ge)=>{h=le,u=ge}),e}const gd=pd;class Kr extends Bn{constructor(e){super(e,"JpxError")}}class z0 extends gn{_filename="openjpeg.wasm";_noWasmFilename="openjpeg_nowasm_fallback.js";static get instance(){return ue(this,"instance",new z0(!0))}async decode(e,{numComponents:n=4,isIndexedColormap:s=!1,smaskInData:a=!1,reducePower:i=0}={}){const r=await this._getModule(gd);if(!r)throw new Kr("OpenJPEG failed to initialize");let o;try{const f=e.length;if(o=r._malloc(f),r.writeArrayToMemory(e,o),r._jp2_decode(o,f,n>0?n:0,!!s,!!a,i)){const{errorMessages:h}=r;throw h?(delete r.errorMessages,new Kr(h)):new Kr("Unknown error")}const{imageData:c}=r;return r.imageData=null,c}finally{o&&r._free(o)}}static parseImageProperties(e){let n=e.getByte();for(;n>=0;){const s=n;if(n=e.getByte(),(s<<8|n)===65361){e.skip(4);const i=e.getInt32()>>>0,r=e.getInt32()>>>0,o=e.getInt32()>>>0,f=e.getInt32()>>>0;e.skip(16);const l=e.getUint16();return{width:i-o,height:r-f,bitsPerComponent:8,componentsCount:l}}}throw new Kr("No size marker found in JPX stream")}}class bd extends jn{constructor(e,n){super(n),this.stream=e,this.dict=e.dict,this.maybeLength=n}get bytes(){return ue(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}get isAsyncDecoder(){return!0}async decodeImage(e,n,s){return this.eof?this.buffer:(e||=this.bytes,this.buffer=await z0.instance.decode(e,s),this.bufferLength=this.buffer.length,this.eof=!0,this.buffer)}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}get isImageStream(){return!0}}class Al extends jn{constructor(e,n,s){super(n),this.stream=e,this.dict=e.dict,this.cachedData=0,this.bitsCached=0;const a=4096,i={earlyChange:s,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(a),dictionaryLengths:new Uint16Array(a),dictionaryPrevCodes:new Uint16Array(a),currentSequence:new Uint8Array(a),currentSequenceLength:0};for(let r=0;r<256;++r)i.dictionaryValues[r]=r,i.dictionaryLengths[r]=1;this.lzwState=i}readBits(e){let n=this.bitsCached,s=this.cachedData;for(;n>>n&(1<0;if(k<256)m[0]=k,b=1;else if(k>=258)if(k=0;i--)m[i]=c[r],r=u[r];else m[b++]=m[0];else if(k===256){d=9,l=258,b=0;continue}else{this.eof=!0,delete this.lzwState;break}if(y&&(u[l]=p,h[l]=h[p]+1,c[l]=m[0],l++,d=l+f&l+f-1?d:Math.min(Math.log(l+f)/.6931471805599453+1,12)|0),p=k,w+=b,s15))throw new Y(`Unsupported predictor: ${a}`);this.readBlock=a===2?this.readBlockTiff:this.readBlockPng,this.stream=e,this.dict=e.dict;const i=this.colors=s.get("Colors")||1,r=this.bits=s.get("BPC","BitsPerComponent")||8,o=this.columns=s.get("Columns")||1;return this.pixBytes=i*r+7>>3,this.rowBytes=o*i*r+7>>3,this}readBlockTiff(){const e=this.rowBytes,n=this.bufferLength,s=this.ensureBuffer(n+e),a=this.bits,i=this.colors,r=this.stream.getBytes(e);if(this.eof=!r.length,this.eof)return;let o=0,f=0,l=0,c=0,h=n,u;if(a===1&&i===1)for(u=0;u>1,d^=d>>2,d^=d>>4,o=(d&1)<<7,s[h++]=d}else if(a===8){for(u=0;u>8&255,s[h++]=p&255}}else{const d=new Uint8Array(i+1),p=(1<>l-a)&p,l-=a,f=f<=8&&(s[b++]=f>>c-8&255,c-=8);c>0&&(s[b++]=(f<<8-c)+(o&(1<<8-c)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,n=this.pixBytes,s=this.stream.getByte(),a=this.stream.getBytes(e);if(this.eof=!a.length,this.eof)return;const i=this.bufferLength,r=this.ensureBuffer(i+e);let o=r.subarray(i-e,i);o.length===0&&(o=new Uint8Array(e));let f,l=i,c,h;switch(s){case 0:for(f=0;f>1)+a[f];for(;f>1)+a[f]&255,l++;break;case 4:for(f=0;f0){const i=this.stream.getBytes(a);n.set(i,s),s+=a}}else a=257-a,n=this.ensureBuffer(s+a+1),n.fill(e[1],s,s+a),s+=a;this.bufferLength=s}}const xd=1e3;function jd(t){const e=[],n=t.length;let s=0;for(;s>")&&this.buf1!==ln;){if(!(this.buf1 instanceof J)){ut("Malformed dictionary: key must be a name object"),this.shift();continue}const i=this.buf1.name;if(this.shift(),this.buf1===ln)break;a.set(i,this.getObj(e))}if(this.buf1===ln){if(this.recoveryMode)return a;throw new zo("End of file inside dictionary.")}return Qt(this.buf2,"stream")?this.allowStreams?this.makeStream(a,e):a:(this.shift(),a);default:return n}if(Number.isInteger(n)){if(Number.isInteger(this.buf1)&&Qt(this.buf2,"R")){const s=Q.get(n,this.buf1);return this.shift(),this.shift(),s}return n}return typeof n=="string"&&e?e.decryptString(n):n}findDefaultInlineStreamEnd(e){const{knownCommands:f}=this.lexer,l=e.pos,c=15;let h=0,u,d;for(;(u=e.getByte())!==-1;)if(h===0)h=u===69?1:0;else if(h===1)h=u===73?2:0;else if(u===32||u===10||u===13){d=e.pos;const m=e.peekBytes(c),b=m.length;if(b===0)break;for(let j=0;j127)){h=0;break}if(h!==2)continue;if(!f){H("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");continue}const w=new cs(new yt(e.peekBytes(5*c)),f);w._hexStringWarn=()=>{};let x=0;for(;;){const j=w.getObj();if(j===ln){h=0;break}if(j instanceof Ut){const k=f[j.cmd];if(k){if(k.variableArgs?x<=k.numArgs:x===k.numArgs)break}else{h=0;break}x=0;continue}x++}if(h===2)break}else h=0;u===-1&&(H("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker"),d&&(H('... trying to recover by using the last "EI" occurrence.'),e.skip(-(e.pos-d))));let p=4;return e.skip(-p),u=e.peekByte(),e.skip(p),es(u)||p--,e.pos-p-l}findDCTDecodeInlineStreamEnd(e){const n=e.pos;let s=!1,a,i;for(;(a=e.getByte())!==-1;)if(a===255){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:i=e.getUint16(),i>2?e.skip(i-2):e.skip(-2);break}if(s)break}const r=e.pos-n;return a===-1?(H("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead."),e.skip(-r),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),r)}findASCII85DecodeInlineStreamEnd(e){const a=e.pos;let i;for(;(i=e.getByte())!==-1;)if(i===126){const o=e.pos;for(i=e.peekByte();es(i);)e.skip(),i=e.peekByte();if(i===62){e.skip();break}if(e.pos>o){const f=e.peekBytes(2);if(f[0]===69&&f[1]===73)break}}const r=e.pos-a;return i===-1?(H("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead."),e.skip(-r),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),r)}findASCIIHexDecodeInlineStreamEnd(e){const s=e.pos;let a;for(;(a=e.getByte())!==-1&&a!==62;);const i=e.pos-s;return a===-1?(H("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead."),e.skip(-i),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),i)}inlineStreamSkipEI(e){let a=0,i;for(;(i=e.getByte())!==-1;)if(a===0)a=i===69?1:0;else if(a===1)a=i===73?2:0;else if(a===2)break}makeInlineImage(e){const n=this.lexer,s=n.stream,a=new B(this.xref);let i;for(;!Qt(this.buf1,"ID")&&this.buf1!==ln;){if(!(this.buf1 instanceof J))throw new Y("Dictionary key must be a name object");const u=this.buf1.name;if(this.shift(),this.buf1===ln)break;a.set(u,this.getObj(e))}n.beginInlineImagePos!==-1&&(i=s.pos-n.beginInlineImagePos);const r=a.get("F","Filter");let o;if(r instanceof J)o=r.name;else if(Array.isArray(r)){const u=this.#s(r[0]);u instanceof J&&(o=u.name)}const f=s.pos;let l;switch(o){case"DCT":case"DCTDecode":l=this.findDCTDecodeInlineStreamEnd(s);break;case"A85":case"ASCII85Decode":l=this.findASCII85DecodeInlineStreamEnd(s);break;case"AHx":case"ASCIIHexDecode":l=this.findASCIIHexDecodeInlineStreamEnd(s);break;default:l=this.findDefaultInlineStreamEnd(s)}let c;if(l0){const u=s.pos;s.pos=n.beginInlineImagePos,c=jd(s.getBytes(i+l)),s.pos=u;const d=this.#e?.get(c);if(d)return this.buf2=Ut.get("EI"),this.shift(),d.reset(),d}let h=s.makeSubStream(f,l,a);return e&&!this.#a(r)&&(h=e.createStream(h,l)),h=this.filter(h,a,l,e),h.dict=a,c&&(h.cacheKey=`inline_img_${++this.#t}`,(this.#e??=new Map).set(c,h)),this.buf2=Ut.get("EI"),this.shift(),h}#s(e){return this.xref?this.xref.fetchIfRef(e):e}#a(e){return Array.isArray(e)?e.some(n=>ze(this.#s(n),"Crypt")):ze(e,"Crypt")}#n(e){const{stream:n}=this.lexer;n.pos=e;const s=2048,a=9,i=new Uint8Array([101,110,100]),r=i.length,o=[new Uint8Array([115,116,114,101,97,109]),new Uint8Array([115,116,101,97,109]),new Uint8Array([115,116,114,101,97])],f=a-r;for(;n.pos=r){let d=!1;for(const p of o){const m=p.length;let b=0;for(;b=f){d=!0;break}if(b>=m){const w=l[h+u+b];es(w)&&(ut(`Found "${An([...i,...p])}" when searching for endstream command.`),d=!0);break}}if(d)return n.pos+=h,n.pos-e}h++}n.pos+=c}return-1}makeStream(e,n){const s=this.lexer;let a=s.stream;s.skipToNextLine();const i=a.pos-1;let r=e.get("Length");if(Number.isInteger(r)||(ut(`Bad length "${r&&r.toString()}" in stream.`),r=0),a.pos=i+r,s.nextChar(),this.tryShift()&&Qt(this.buf2,"endstream"))this.shift();else{if(r=this.#n(i),r<0)throw new Y("Missing endstream command.");s.nextChar(),this.shift(),this.shift()}this.shift(),a=a.makeSubStream(i,r,e);const o=e.get("F","Filter");return n&&!this.#a(o)&&(a=n.createStream(a,r)),a=this.filter(a,e,r,n),a.dict=e,a}filter(e,n,s,a=null){let i=n.get("F","Filter"),r=n.get("DP","DecodeParms");if(i instanceof J)return Array.isArray(r)&&H("/DecodeParms should not be an Array, when /Filter is a Name."),this.makeFilter(e,i.name,s,r,a);let o=s;if(Array.isArray(i)){const f=i,l=r;for(let c=0,h=f.length;c=48&&t<=57?t&15:t>=65&&t<=70||t>=97&&t<=102?(t&15)+9:-1}class cs{constructor(e,n=null){this.stream=e,this.nextChar(),this.strBuf=[],this.knownCommands=n,this._hexStringNumWarn=0,this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,n=0,s=1;if(e===45?(s=-1,e=this.nextChar(),e===45&&(e=this.nextChar())):e===43&&(e=this.nextChar()),e===10||e===13)do e=this.nextChar();while(e===10||e===13);if(e===46&&(n=10,e=this.nextChar()),e<48||e>57){const i=`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`;if(es(e)||e===40||e===60||e===-1)return ut(`Lexer.getNumber - "${i}".`),0;throw new Y(i)}let a=e-48;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const i=e-48;n!==0&&(n*=10),a=a*10+i}else if(e===46)if(n===0)n=1;else break;else if(e===45)H("Badly formatted number: minus sign in the middle");else break;return n!==0&&(a/=n),s*a}getString(){let e=1,n=!1;const s=this.strBuf;s.length=0;let a=this.nextChar();for(;;){let i=!1;switch(a|0){case-1:H("Unterminated string"),n=!0;break;case 40:++e,s.push("(");break;case 41:--e===0?(this.nextChar(),n=!0):s.push(")");break;case 92:switch(a=this.nextChar(),a){case-1:H("Unterminated string"),n=!0;break;case 110:s.push(` +`);break;case 114:s.push("\r");break;case 116:s.push(" ");break;case 98:s.push("\b");break;case 102:s.push("\f");break;case 92:case 40:case 41:s.push(String.fromCharCode(a));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let r=a&15;a=this.nextChar(),i=!0,a>=48&&a<=55&&(r=(r<<3)+(a&15),a=this.nextChar(),a>=48&&a<=55&&(i=!1,r=(r<<3)+(a&15))),s.push(String.fromCharCode(r));break;case 13:this.peekChar()===10&&this.nextChar();break;case 10:break;default:s.push(String.fromCharCode(a));break}break;default:s.push(String.fromCharCode(a));break}if(n)break;i||(a=this.nextChar())}return s.join("")}getName(){let e,n;const s=this.strBuf;for(s.length=0;(e=this.nextChar())>=0&&!ei[e];)if(e===35){if(e=this.nextChar(),ei[e]){H("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number."),s.push("#");break}const a=fo(e);if(a!==-1){n=e,e=this.nextChar();const i=fo(e);if(i===-1){if(H(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`),s.push("#",String.fromCharCode(n)),ei[e])break;s.push(String.fromCharCode(e));continue}s.push(String.fromCharCode(a<<4|i))}else s.push("#",String.fromCharCode(e))}else s.push(String.fromCharCode(e));return s.length>127&&H(`Name token is longer than allowed by the spec: ${s.length}`),J.get(s.join(""))}_hexStringWarn(e){if(this._hexStringNumWarn++===5){H("getHexString - ignoring additional invalid characters.");return}this._hexStringNumWarn>5||H(`getHexString - ignoring invalid character: ${e}`)}getHexString(){const e=this.strBuf;e.length=0;let n=this.currentChar,s=-1,a=-1;for(this._hexStringNumWarn=0;;)if(n<0){H("Unterminated hex string");break}else if(n===62){this.nextChar();break}else if(ei[n]===1){n=this.nextChar();continue}else a=fo(n),a===-1?this._hexStringWarn(n):s===-1?s=a:(e.push(String.fromCharCode(s<<4|a)),s=-1),n=this.nextChar();return s!==-1&&e.push(String.fromCharCode(s<<4)),e.join("")}getObj(){let e=!1,n=this.currentChar;for(;;){if(n<0)return ln;if(e)(n===10||n===13)&&(e=!1);else if(n===37)e=!0;else if(ei[n]!==1)break;n=this.nextChar()}switch(n|0){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:return this.nextChar(),Ut.get("[");case 93:return this.nextChar(),Ut.get("]");case 60:return n=this.nextChar(),n===60?(this.nextChar(),Ut.get("<<")):this.getHexString();case 62:return n=this.nextChar(),n===62?(this.nextChar(),Ut.get(">>")):Ut.get(">");case 123:return this.nextChar(),Ut.get("{");case 125:return this.nextChar(),Ut.get("}");case 41:throw this.nextChar(),new Y(`Illegal character: ${n}`)}let s=String.fromCharCode(n);if(n<32||n>127){const r=this.peekChar();if(r>=32&&r<=127)return this.nextChar(),Ut.get(s)}const a=this.knownCommands;let i=a?.[s]!==void 0;for(;(n=this.nextChar())>=0&&!ei[n];){const r=s+String.fromCharCode(n);if(i&&a[r]===void 0)break;if(s.length===128)throw new Y(`Command token too long: ${s.length}`);s=r,i=a?.[s]!==void 0}return s==="true"?!0:s==="false"?!1:s==="null"?null:(s==="BI"&&(this.beginInlineImagePos=this.stream.pos),Ut.get(s))}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(e===13){e=this.nextChar(),e===10&&this.nextChar();break}else if(e===10){this.nextChar();break}e=this.nextChar()}}}class kd{static create(e){function n(h,u,d=!1){const p=h.get(u);if(Number.isInteger(p)&&(d?p>=0:p>0))return p;throw new Error(`The "${u}" parameter in the linearization dictionary is invalid.`)}function s(h){const u=h.get("H");let d;if(Array.isArray(u)&&((d=u.length)===2||d===4)){for(let p=0;p0))throw new Error(`Hint (${p}) in the linearization dictionary is invalid.`)}return u}throw new Error("Hint array in the linearization dictionary is invalid.")}const a=new Zs({lexer:new cs(e),xref:null}),i=a.getObj(),r=a.getObj(),o=a.getObj(),f=a.getObj();let l,c;if(Number.isInteger(i)&&Number.isInteger(r)&&Qt(o,"obj")&&f instanceof B&&typeof(l=f.get("Linearized"))=="number"&&l>0){if((c=n(f,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.')}else return null;return{length:c,hints:s(f),objectNumberFirst:n(f,"O"),endFirst:n(f,"E"),numPages:n(f,"N"),mainXRefEntriesOffset:n(f,"T"),pageFirst:f.has("P")?n(f,"P",!0):0}}}const yd=["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"],lo=2**24-1;class qf{constructor(e=!1){this.codespaceRanges=[[],[],[],[]],this.numCodespaceRanges=0,this._map=[],this.name="",this.vertical=!1,this.useCMap=null,this.builtInCMap=e}addCodespaceRange(e,n,s){this.codespaceRanges[e-1].push(n,s),this.numCodespaceRanges++}mapCidRange(e,n,s){if(n-e>lo)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=n;)this._map[e++]=s++}mapBfRange(e,n,s){if(n-e>lo)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const a=s.length-1;for(;e<=n;){this._map[e++]=s;const i=s.charCodeAt(a)+1;if(i>255){s=s.substring(0,a-1)+String.fromCharCode(s.charCodeAt(a-1)+1)+"\0";continue}s=s.substring(0,a)+String.fromCharCode(i)}}mapBfRangeToArray(e,n,s){if(n-e>lo)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const a=s.length;let i=0;for(;e<=n&&i>>0;const f=i[r];for(let l=0,c=f.length;l=h&&a<=u){s.charcode=a,s.length=r+1;return}}}s.charcode=0,s.length=1}getCharCodeLength(e){const n=this.codespaceRanges;for(let s=0,a=n.length;s=f&&e<=l)return s+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if(!(this.name==="Identity-H"||this.name==="Identity-V")||this._map.length!==65536)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}class sr extends qf{constructor(e,n){super(),this.vertical=e,this.addCodespaceRange(n,0,65535)}mapCidRange(e,n,s){st("should not call mapCidRange")}mapBfRange(e,n,s){st("should not call mapBfRange")}mapBfRangeToArray(e,n,s){st("should not call mapBfRangeToArray")}mapOne(e,n){st("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 n=0;n<=65535;n++)e(n,n)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let n=0;n<=65535;n++)e[n]=n;return e}get length(){return 65536}get isIdentityCMap(){st("should not access .isIdentityCMap")}}function da(t){let e=0;for(let n=0;n>>0}function Ga(t){if(typeof t!="string")throw new Y("Malformed CMap: expected string.")}function oh(t){if(!Number.isInteger(t))throw new Y("Malformed CMap: expected int.")}function qd(t,e){for(;;){let n=e.getObj();if(n===ln)break;if(Qt(n,"endbfchar"))return;Ga(n);const s=da(n);n=e.getObj(),Ga(n);const a=n;t.mapOne(s,a)}}function vd(t,e){for(;;){let n=e.getObj();if(n===ln)break;if(Qt(n,"endbfrange"))return;Ga(n);const s=da(n);n=e.getObj(),Ga(n);const a=da(n);if(n=e.getObj(),Number.isInteger(n)||typeof n=="string"){const i=Number.isInteger(n)?String.fromCharCode(n):n;t.mapBfRange(s,a,i)}else if(Qt(n,"[")){n=e.getObj();const i=[];for(;!Qt(n,"]")&&n!==ln;)i.push(n),n=e.getObj();t.mapBfRangeToArray(s,a,i)}else break}throw new Y("Invalid bf range.")}function Sd(t,e){for(;;){let n=e.getObj();if(n===ln)break;if(Qt(n,"endcidchar"))return;Ga(n);const s=da(n);n=e.getObj(),oh(n);const a=n;t.mapOne(s,a)}}function Ad(t,e){for(;;){let n=e.getObj();if(n===ln)break;if(Qt(n,"endcidrange"))return;Ga(n);const s=da(n);n=e.getObj(),Ga(n);const a=da(n);n=e.getObj(),oh(n);const i=n;t.mapCidRange(s,a,i)}}function Id(t,e){for(;;){let n=e.getObj();if(n===ln)break;if(Qt(n,"endcodespacerange"))return;if(typeof n!="string")break;const s=da(n);if(n=e.getObj(),typeof n!="string")break;const a=da(n);t.addCodespaceRange(n.length,s,a)}throw new Y("Invalid codespace range.")}function Cd(t,e){const n=e.getObj();Number.isInteger(n)&&(t.vertical=!!n)}function Td(t,e){const n=e.getObj();n instanceof J&&(t.name=n.name)}async function fh(t,e,n,s){let a,i;e:for(;;)try{const r=e.getObj();if(r===ln)break;if(r instanceof J)r.name==="WMode"?Cd(t,e):r.name==="CMapName"&&Td(t,e),a=r;else if(r instanceof Ut)switch(r.cmd){case"endcmap":break e;case"usecmap":a instanceof J&&(i=a.name);break;case"begincodespacerange":Id(t,e);break;case"beginbfchar":qd(t,e);break;case"begincidchar":Sd(t,e);break;case"beginbfrange":vd(t,e);break;case"begincidrange":Ad(t,e);break}}catch(r){if(r instanceof kt)throw r;H("Invalid cMap data: "+r);continue}return!s&&i&&(s=i),s?lh(t,n,s):t}async function lh(t,e,n){if(t.useCMap=await Yo(n,e),t.numCodespaceRanges===0){const s=t.useCMap.codespaceRanges;for(let a=0;alh(a,e,r));const i=new cs(new yt(n));return fh(a,i,e,null)}class Hi{static async create({encoding:e,fetchBuiltInCMap:n,useCMap:s}){if(e instanceof J)return Yo(e.name,n);if(e instanceof Pe){if(e.isAsync){const i=await e.asyncGetBytes();i&&(e=new yt(i,0,i.length,e.dict))}const a=await fh(new qf,new cs(e),n,s);return a.isIdentityCMap?Yo(a.name,n):a}throw new Error("Encoding required.")}}const ch=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],Bd=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","",""],vf=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],zs=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","",""],pr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],U0=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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",""],Sf=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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 gr(t){switch(t){case"WinAnsiEncoding":return pr;case"StandardEncoding":return zs;case"MacRomanEncoding":return vf;case"SymbolSetEncoding":return U0;case"ZapfDingbatsEncoding":return Sf;case"ExpertEncoding":return ch;case"MacExpertEncoding":return Bd;default:return null}}const us=It(function(t){t.A=65,t.AE=198,t.AEacute=508,t.AEmacron=482,t.AEsmall=63462,t.Aacute=193,t.Aacutesmall=63457,t.Abreve=258,t.Abreveacute=7854,t.Abrevecyrillic=1232,t.Abrevedotbelow=7862,t.Abrevegrave=7856,t.Abrevehookabove=7858,t.Abrevetilde=7860,t.Acaron=461,t.Acircle=9398,t.Acircumflex=194,t.Acircumflexacute=7844,t.Acircumflexdotbelow=7852,t.Acircumflexgrave=7846,t.Acircumflexhookabove=7848,t.Acircumflexsmall=63458,t.Acircumflextilde=7850,t.Acute=63177,t.Acutesmall=63412,t.Acyrillic=1040,t.Adblgrave=512,t.Adieresis=196,t.Adieresiscyrillic=1234,t.Adieresismacron=478,t.Adieresissmall=63460,t.Adotbelow=7840,t.Adotmacron=480,t.Agrave=192,t.Agravesmall=63456,t.Ahookabove=7842,t.Aiecyrillic=1236,t.Ainvertedbreve=514,t.Alpha=913,t.Alphatonos=902,t.Amacron=256,t.Amonospace=65313,t.Aogonek=260,t.Aring=197,t.Aringacute=506,t.Aringbelow=7680,t.Aringsmall=63461,t.Asmall=63329,t.Atilde=195,t.Atildesmall=63459,t.Aybarmenian=1329,t.B=66,t.Bcircle=9399,t.Bdotaccent=7682,t.Bdotbelow=7684,t.Becyrillic=1041,t.Benarmenian=1330,t.Beta=914,t.Bhook=385,t.Blinebelow=7686,t.Bmonospace=65314,t.Brevesmall=63220,t.Bsmall=63330,t.Btopbar=386,t.C=67,t.Caarmenian=1342,t.Cacute=262,t.Caron=63178,t.Caronsmall=63221,t.Ccaron=268,t.Ccedilla=199,t.Ccedillaacute=7688,t.Ccedillasmall=63463,t.Ccircle=9400,t.Ccircumflex=264,t.Cdot=266,t.Cdotaccent=266,t.Cedillasmall=63416,t.Chaarmenian=1353,t.Cheabkhasiancyrillic=1212,t.Checyrillic=1063,t.Chedescenderabkhasiancyrillic=1214,t.Chedescendercyrillic=1206,t.Chedieresiscyrillic=1268,t.Cheharmenian=1347,t.Chekhakassiancyrillic=1227,t.Cheverticalstrokecyrillic=1208,t.Chi=935,t.Chook=391,t.Circumflexsmall=63222,t.Cmonospace=65315,t.Coarmenian=1361,t.Csmall=63331,t.D=68,t.DZ=497,t.DZcaron=452,t.Daarmenian=1332,t.Dafrican=393,t.Dcaron=270,t.Dcedilla=7696,t.Dcircle=9401,t.Dcircumflexbelow=7698,t.Dcroat=272,t.Ddotaccent=7690,t.Ddotbelow=7692,t.Decyrillic=1044,t.Deicoptic=1006,t.Delta=8710,t.Deltagreek=916,t.Dhook=394,t.Dieresis=63179,t.DieresisAcute=63180,t.DieresisGrave=63181,t.Dieresissmall=63400,t.Digammagreek=988,t.Djecyrillic=1026,t.Dlinebelow=7694,t.Dmonospace=65316,t.Dotaccentsmall=63223,t.Dslash=272,t.Dsmall=63332,t.Dtopbar=395,t.Dz=498,t.Dzcaron=453,t.Dzeabkhasiancyrillic=1248,t.Dzecyrillic=1029,t.Dzhecyrillic=1039,t.E=69,t.Eacute=201,t.Eacutesmall=63465,t.Ebreve=276,t.Ecaron=282,t.Ecedillabreve=7708,t.Echarmenian=1333,t.Ecircle=9402,t.Ecircumflex=202,t.Ecircumflexacute=7870,t.Ecircumflexbelow=7704,t.Ecircumflexdotbelow=7878,t.Ecircumflexgrave=7872,t.Ecircumflexhookabove=7874,t.Ecircumflexsmall=63466,t.Ecircumflextilde=7876,t.Ecyrillic=1028,t.Edblgrave=516,t.Edieresis=203,t.Edieresissmall=63467,t.Edot=278,t.Edotaccent=278,t.Edotbelow=7864,t.Efcyrillic=1060,t.Egrave=200,t.Egravesmall=63464,t.Eharmenian=1335,t.Ehookabove=7866,t.Eightroman=8551,t.Einvertedbreve=518,t.Eiotifiedcyrillic=1124,t.Elcyrillic=1051,t.Elevenroman=8554,t.Emacron=274,t.Emacronacute=7702,t.Emacrongrave=7700,t.Emcyrillic=1052,t.Emonospace=65317,t.Encyrillic=1053,t.Endescendercyrillic=1186,t.Eng=330,t.Enghecyrillic=1188,t.Enhookcyrillic=1223,t.Eogonek=280,t.Eopen=400,t.Epsilon=917,t.Epsilontonos=904,t.Ercyrillic=1056,t.Ereversed=398,t.Ereversedcyrillic=1069,t.Escyrillic=1057,t.Esdescendercyrillic=1194,t.Esh=425,t.Esmall=63333,t.Eta=919,t.Etarmenian=1336,t.Etatonos=905,t.Eth=208,t.Ethsmall=63472,t.Etilde=7868,t.Etildebelow=7706,t.Euro=8364,t.Ezh=439,t.Ezhcaron=494,t.Ezhreversed=440,t.F=70,t.Fcircle=9403,t.Fdotaccent=7710,t.Feharmenian=1366,t.Feicoptic=996,t.Fhook=401,t.Fitacyrillic=1138,t.Fiveroman=8548,t.Fmonospace=65318,t.Fourroman=8547,t.Fsmall=63334,t.G=71,t.GBsquare=13191,t.Gacute=500,t.Gamma=915,t.Gammaafrican=404,t.Gangiacoptic=1002,t.Gbreve=286,t.Gcaron=486,t.Gcedilla=290,t.Gcircle=9404,t.Gcircumflex=284,t.Gcommaaccent=290,t.Gdot=288,t.Gdotaccent=288,t.Gecyrillic=1043,t.Ghadarmenian=1346,t.Ghemiddlehookcyrillic=1172,t.Ghestrokecyrillic=1170,t.Gheupturncyrillic=1168,t.Ghook=403,t.Gimarmenian=1331,t.Gjecyrillic=1027,t.Gmacron=7712,t.Gmonospace=65319,t.Grave=63182,t.Gravesmall=63328,t.Gsmall=63335,t.Gsmallhook=667,t.Gstroke=484,t.H=72,t.H18533=9679,t.H18543=9642,t.H18551=9643,t.H22073=9633,t.HPsquare=13259,t.Haabkhasiancyrillic=1192,t.Hadescendercyrillic=1202,t.Hardsigncyrillic=1066,t.Hbar=294,t.Hbrevebelow=7722,t.Hcedilla=7720,t.Hcircle=9405,t.Hcircumflex=292,t.Hdieresis=7718,t.Hdotaccent=7714,t.Hdotbelow=7716,t.Hmonospace=65320,t.Hoarmenian=1344,t.Horicoptic=1e3,t.Hsmall=63336,t.Hungarumlaut=63183,t.Hungarumlautsmall=63224,t.Hzsquare=13200,t.I=73,t.IAcyrillic=1071,t.IJ=306,t.IUcyrillic=1070,t.Iacute=205,t.Iacutesmall=63469,t.Ibreve=300,t.Icaron=463,t.Icircle=9406,t.Icircumflex=206,t.Icircumflexsmall=63470,t.Icyrillic=1030,t.Idblgrave=520,t.Idieresis=207,t.Idieresisacute=7726,t.Idieresiscyrillic=1252,t.Idieresissmall=63471,t.Idot=304,t.Idotaccent=304,t.Idotbelow=7882,t.Iebrevecyrillic=1238,t.Iecyrillic=1045,t.Ifraktur=8465,t.Igrave=204,t.Igravesmall=63468,t.Ihookabove=7880,t.Iicyrillic=1048,t.Iinvertedbreve=522,t.Iishortcyrillic=1049,t.Imacron=298,t.Imacroncyrillic=1250,t.Imonospace=65321,t.Iniarmenian=1339,t.Iocyrillic=1025,t.Iogonek=302,t.Iota=921,t.Iotaafrican=406,t.Iotadieresis=938,t.Iotatonos=906,t.Ismall=63337,t.Istroke=407,t.Itilde=296,t.Itildebelow=7724,t.Izhitsacyrillic=1140,t.Izhitsadblgravecyrillic=1142,t.J=74,t.Jaarmenian=1345,t.Jcircle=9407,t.Jcircumflex=308,t.Jecyrillic=1032,t.Jheharmenian=1355,t.Jmonospace=65322,t.Jsmall=63338,t.K=75,t.KBsquare=13189,t.KKsquare=13261,t.Kabashkircyrillic=1184,t.Kacute=7728,t.Kacyrillic=1050,t.Kadescendercyrillic=1178,t.Kahookcyrillic=1219,t.Kappa=922,t.Kastrokecyrillic=1182,t.Kaverticalstrokecyrillic=1180,t.Kcaron=488,t.Kcedilla=310,t.Kcircle=9408,t.Kcommaaccent=310,t.Kdotbelow=7730,t.Keharmenian=1364,t.Kenarmenian=1343,t.Khacyrillic=1061,t.Kheicoptic=998,t.Khook=408,t.Kjecyrillic=1036,t.Klinebelow=7732,t.Kmonospace=65323,t.Koppacyrillic=1152,t.Koppagreek=990,t.Ksicyrillic=1134,t.Ksmall=63339,t.L=76,t.LJ=455,t.LL=63167,t.Lacute=313,t.Lambda=923,t.Lcaron=317,t.Lcedilla=315,t.Lcircle=9409,t.Lcircumflexbelow=7740,t.Lcommaaccent=315,t.Ldot=319,t.Ldotaccent=319,t.Ldotbelow=7734,t.Ldotbelowmacron=7736,t.Liwnarmenian=1340,t.Lj=456,t.Ljecyrillic=1033,t.Llinebelow=7738,t.Lmonospace=65324,t.Lslash=321,t.Lslashsmall=63225,t.Lsmall=63340,t.M=77,t.MBsquare=13190,t.Macron=63184,t.Macronsmall=63407,t.Macute=7742,t.Mcircle=9410,t.Mdotaccent=7744,t.Mdotbelow=7746,t.Menarmenian=1348,t.Mmonospace=65325,t.Msmall=63341,t.Mturned=412,t.Mu=924,t.N=78,t.NJ=458,t.Nacute=323,t.Ncaron=327,t.Ncedilla=325,t.Ncircle=9411,t.Ncircumflexbelow=7754,t.Ncommaaccent=325,t.Ndotaccent=7748,t.Ndotbelow=7750,t.Nhookleft=413,t.Nineroman=8552,t.Nj=459,t.Njecyrillic=1034,t.Nlinebelow=7752,t.Nmonospace=65326,t.Nowarmenian=1350,t.Nsmall=63342,t.Ntilde=209,t.Ntildesmall=63473,t.Nu=925,t.O=79,t.OE=338,t.OEsmall=63226,t.Oacute=211,t.Oacutesmall=63475,t.Obarredcyrillic=1256,t.Obarreddieresiscyrillic=1258,t.Obreve=334,t.Ocaron=465,t.Ocenteredtilde=415,t.Ocircle=9412,t.Ocircumflex=212,t.Ocircumflexacute=7888,t.Ocircumflexdotbelow=7896,t.Ocircumflexgrave=7890,t.Ocircumflexhookabove=7892,t.Ocircumflexsmall=63476,t.Ocircumflextilde=7894,t.Ocyrillic=1054,t.Odblacute=336,t.Odblgrave=524,t.Odieresis=214,t.Odieresiscyrillic=1254,t.Odieresissmall=63478,t.Odotbelow=7884,t.Ogoneksmall=63227,t.Ograve=210,t.Ogravesmall=63474,t.Oharmenian=1365,t.Ohm=8486,t.Ohookabove=7886,t.Ohorn=416,t.Ohornacute=7898,t.Ohorndotbelow=7906,t.Ohorngrave=7900,t.Ohornhookabove=7902,t.Ohorntilde=7904,t.Ohungarumlaut=336,t.Oi=418,t.Oinvertedbreve=526,t.Omacron=332,t.Omacronacute=7762,t.Omacrongrave=7760,t.Omega=8486,t.Omegacyrillic=1120,t.Omegagreek=937,t.Omegaroundcyrillic=1146,t.Omegatitlocyrillic=1148,t.Omegatonos=911,t.Omicron=927,t.Omicrontonos=908,t.Omonospace=65327,t.Oneroman=8544,t.Oogonek=490,t.Oogonekmacron=492,t.Oopen=390,t.Oslash=216,t.Oslashacute=510,t.Oslashsmall=63480,t.Osmall=63343,t.Ostrokeacute=510,t.Otcyrillic=1150,t.Otilde=213,t.Otildeacute=7756,t.Otildedieresis=7758,t.Otildesmall=63477,t.P=80,t.Pacute=7764,t.Pcircle=9413,t.Pdotaccent=7766,t.Pecyrillic=1055,t.Peharmenian=1354,t.Pemiddlehookcyrillic=1190,t.Phi=934,t.Phook=420,t.Pi=928,t.Piwrarmenian=1363,t.Pmonospace=65328,t.Psi=936,t.Psicyrillic=1136,t.Psmall=63344,t.Q=81,t.Qcircle=9414,t.Qmonospace=65329,t.Qsmall=63345,t.R=82,t.Raarmenian=1356,t.Racute=340,t.Rcaron=344,t.Rcedilla=342,t.Rcircle=9415,t.Rcommaaccent=342,t.Rdblgrave=528,t.Rdotaccent=7768,t.Rdotbelow=7770,t.Rdotbelowmacron=7772,t.Reharmenian=1360,t.Rfraktur=8476,t.Rho=929,t.Ringsmall=63228,t.Rinvertedbreve=530,t.Rlinebelow=7774,t.Rmonospace=65330,t.Rsmall=63346,t.Rsmallinverted=641,t.Rsmallinvertedsuperior=694,t.S=83,t.SF010000=9484,t.SF020000=9492,t.SF030000=9488,t.SF040000=9496,t.SF050000=9532,t.SF060000=9516,t.SF070000=9524,t.SF080000=9500,t.SF090000=9508,t.SF100000=9472,t.SF110000=9474,t.SF190000=9569,t.SF200000=9570,t.SF210000=9558,t.SF220000=9557,t.SF230000=9571,t.SF240000=9553,t.SF250000=9559,t.SF260000=9565,t.SF270000=9564,t.SF280000=9563,t.SF360000=9566,t.SF370000=9567,t.SF380000=9562,t.SF390000=9556,t.SF400000=9577,t.SF410000=9574,t.SF420000=9568,t.SF430000=9552,t.SF440000=9580,t.SF450000=9575,t.SF460000=9576,t.SF470000=9572,t.SF480000=9573,t.SF490000=9561,t.SF500000=9560,t.SF510000=9554,t.SF520000=9555,t.SF530000=9579,t.SF540000=9578,t.Sacute=346,t.Sacutedotaccent=7780,t.Sampigreek=992,t.Scaron=352,t.Scarondotaccent=7782,t.Scaronsmall=63229,t.Scedilla=350,t.Schwa=399,t.Schwacyrillic=1240,t.Schwadieresiscyrillic=1242,t.Scircle=9416,t.Scircumflex=348,t.Scommaaccent=536,t.Sdotaccent=7776,t.Sdotbelow=7778,t.Sdotbelowdotaccent=7784,t.Seharmenian=1357,t.Sevenroman=8550,t.Shaarmenian=1351,t.Shacyrillic=1064,t.Shchacyrillic=1065,t.Sheicoptic=994,t.Shhacyrillic=1210,t.Shimacoptic=1004,t.Sigma=931,t.Sixroman=8549,t.Smonospace=65331,t.Softsigncyrillic=1068,t.Ssmall=63347,t.Stigmagreek=986,t.T=84,t.Tau=932,t.Tbar=358,t.Tcaron=356,t.Tcedilla=354,t.Tcircle=9417,t.Tcircumflexbelow=7792,t.Tcommaaccent=354,t.Tdotaccent=7786,t.Tdotbelow=7788,t.Tecyrillic=1058,t.Tedescendercyrillic=1196,t.Tenroman=8553,t.Tetsecyrillic=1204,t.Theta=920,t.Thook=428,t.Thorn=222,t.Thornsmall=63486,t.Threeroman=8546,t.Tildesmall=63230,t.Tiwnarmenian=1359,t.Tlinebelow=7790,t.Tmonospace=65332,t.Toarmenian=1337,t.Tonefive=444,t.Tonesix=388,t.Tonetwo=423,t.Tretroflexhook=430,t.Tsecyrillic=1062,t.Tshecyrillic=1035,t.Tsmall=63348,t.Twelveroman=8555,t.Tworoman=8545,t.U=85,t.Uacute=218,t.Uacutesmall=63482,t.Ubreve=364,t.Ucaron=467,t.Ucircle=9418,t.Ucircumflex=219,t.Ucircumflexbelow=7798,t.Ucircumflexsmall=63483,t.Ucyrillic=1059,t.Udblacute=368,t.Udblgrave=532,t.Udieresis=220,t.Udieresisacute=471,t.Udieresisbelow=7794,t.Udieresiscaron=473,t.Udieresiscyrillic=1264,t.Udieresisgrave=475,t.Udieresismacron=469,t.Udieresissmall=63484,t.Udotbelow=7908,t.Ugrave=217,t.Ugravesmall=63481,t.Uhookabove=7910,t.Uhorn=431,t.Uhornacute=7912,t.Uhorndotbelow=7920,t.Uhorngrave=7914,t.Uhornhookabove=7916,t.Uhorntilde=7918,t.Uhungarumlaut=368,t.Uhungarumlautcyrillic=1266,t.Uinvertedbreve=534,t.Ukcyrillic=1144,t.Umacron=362,t.Umacroncyrillic=1262,t.Umacrondieresis=7802,t.Umonospace=65333,t.Uogonek=370,t.Upsilon=933,t.Upsilon1=978,t.Upsilonacutehooksymbolgreek=979,t.Upsilonafrican=433,t.Upsilondieresis=939,t.Upsilondieresishooksymbolgreek=980,t.Upsilonhooksymbol=978,t.Upsilontonos=910,t.Uring=366,t.Ushortcyrillic=1038,t.Usmall=63349,t.Ustraightcyrillic=1198,t.Ustraightstrokecyrillic=1200,t.Utilde=360,t.Utildeacute=7800,t.Utildebelow=7796,t.V=86,t.Vcircle=9419,t.Vdotbelow=7806,t.Vecyrillic=1042,t.Vewarmenian=1358,t.Vhook=434,t.Vmonospace=65334,t.Voarmenian=1352,t.Vsmall=63350,t.Vtilde=7804,t.W=87,t.Wacute=7810,t.Wcircle=9420,t.Wcircumflex=372,t.Wdieresis=7812,t.Wdotaccent=7814,t.Wdotbelow=7816,t.Wgrave=7808,t.Wmonospace=65335,t.Wsmall=63351,t.X=88,t.Xcircle=9421,t.Xdieresis=7820,t.Xdotaccent=7818,t.Xeharmenian=1341,t.Xi=926,t.Xmonospace=65336,t.Xsmall=63352,t.Y=89,t.Yacute=221,t.Yacutesmall=63485,t.Yatcyrillic=1122,t.Ycircle=9422,t.Ycircumflex=374,t.Ydieresis=376,t.Ydieresissmall=63487,t.Ydotaccent=7822,t.Ydotbelow=7924,t.Yericyrillic=1067,t.Yerudieresiscyrillic=1272,t.Ygrave=7922,t.Yhook=435,t.Yhookabove=7926,t.Yiarmenian=1349,t.Yicyrillic=1031,t.Yiwnarmenian=1362,t.Ymonospace=65337,t.Ysmall=63353,t.Ytilde=7928,t.Yusbigcyrillic=1130,t.Yusbigiotifiedcyrillic=1132,t.Yuslittlecyrillic=1126,t.Yuslittleiotifiedcyrillic=1128,t.Z=90,t.Zaarmenian=1334,t.Zacute=377,t.Zcaron=381,t.Zcaronsmall=63231,t.Zcircle=9423,t.Zcircumflex=7824,t.Zdot=379,t.Zdotaccent=379,t.Zdotbelow=7826,t.Zecyrillic=1047,t.Zedescendercyrillic=1176,t.Zedieresiscyrillic=1246,t.Zeta=918,t.Zhearmenian=1338,t.Zhebrevecyrillic=1217,t.Zhecyrillic=1046,t.Zhedescendercyrillic=1174,t.Zhedieresiscyrillic=1244,t.Zlinebelow=7828,t.Zmonospace=65338,t.Zsmall=63354,t.Zstroke=437,t.a=97,t.aabengali=2438,t.aacute=225,t.aadeva=2310,t.aagujarati=2694,t.aagurmukhi=2566,t.aamatragurmukhi=2622,t.aarusquare=13059,t.aavowelsignbengali=2494,t.aavowelsigndeva=2366,t.aavowelsigngujarati=2750,t.abbreviationmarkarmenian=1375,t.abbreviationsigndeva=2416,t.abengali=2437,t.abopomofo=12570,t.abreve=259,t.abreveacute=7855,t.abrevecyrillic=1233,t.abrevedotbelow=7863,t.abrevegrave=7857,t.abrevehookabove=7859,t.abrevetilde=7861,t.acaron=462,t.acircle=9424,t.acircumflex=226,t.acircumflexacute=7845,t.acircumflexdotbelow=7853,t.acircumflexgrave=7847,t.acircumflexhookabove=7849,t.acircumflextilde=7851,t.acute=180,t.acutebelowcmb=791,t.acutecmb=769,t.acutecomb=769,t.acutedeva=2388,t.acutelowmod=719,t.acutetonecmb=833,t.acyrillic=1072,t.adblgrave=513,t.addakgurmukhi=2673,t.adeva=2309,t.adieresis=228,t.adieresiscyrillic=1235,t.adieresismacron=479,t.adotbelow=7841,t.adotmacron=481,t.ae=230,t.aeacute=509,t.aekorean=12624,t.aemacron=483,t.afii00208=8213,t.afii08941=8356,t.afii10017=1040,t.afii10018=1041,t.afii10019=1042,t.afii10020=1043,t.afii10021=1044,t.afii10022=1045,t.afii10023=1025,t.afii10024=1046,t.afii10025=1047,t.afii10026=1048,t.afii10027=1049,t.afii10028=1050,t.afii10029=1051,t.afii10030=1052,t.afii10031=1053,t.afii10032=1054,t.afii10033=1055,t.afii10034=1056,t.afii10035=1057,t.afii10036=1058,t.afii10037=1059,t.afii10038=1060,t.afii10039=1061,t.afii10040=1062,t.afii10041=1063,t.afii10042=1064,t.afii10043=1065,t.afii10044=1066,t.afii10045=1067,t.afii10046=1068,t.afii10047=1069,t.afii10048=1070,t.afii10049=1071,t.afii10050=1168,t.afii10051=1026,t.afii10052=1027,t.afii10053=1028,t.afii10054=1029,t.afii10055=1030,t.afii10056=1031,t.afii10057=1032,t.afii10058=1033,t.afii10059=1034,t.afii10060=1035,t.afii10061=1036,t.afii10062=1038,t.afii10063=63172,t.afii10064=63173,t.afii10065=1072,t.afii10066=1073,t.afii10067=1074,t.afii10068=1075,t.afii10069=1076,t.afii10070=1077,t.afii10071=1105,t.afii10072=1078,t.afii10073=1079,t.afii10074=1080,t.afii10075=1081,t.afii10076=1082,t.afii10077=1083,t.afii10078=1084,t.afii10079=1085,t.afii10080=1086,t.afii10081=1087,t.afii10082=1088,t.afii10083=1089,t.afii10084=1090,t.afii10085=1091,t.afii10086=1092,t.afii10087=1093,t.afii10088=1094,t.afii10089=1095,t.afii10090=1096,t.afii10091=1097,t.afii10092=1098,t.afii10093=1099,t.afii10094=1100,t.afii10095=1101,t.afii10096=1102,t.afii10097=1103,t.afii10098=1169,t.afii10099=1106,t.afii10100=1107,t.afii10101=1108,t.afii10102=1109,t.afii10103=1110,t.afii10104=1111,t.afii10105=1112,t.afii10106=1113,t.afii10107=1114,t.afii10108=1115,t.afii10109=1116,t.afii10110=1118,t.afii10145=1039,t.afii10146=1122,t.afii10147=1138,t.afii10148=1140,t.afii10192=63174,t.afii10193=1119,t.afii10194=1123,t.afii10195=1139,t.afii10196=1141,t.afii10831=63175,t.afii10832=63176,t.afii10846=1241,t.afii299=8206,t.afii300=8207,t.afii301=8205,t.afii57381=1642,t.afii57388=1548,t.afii57392=1632,t.afii57393=1633,t.afii57394=1634,t.afii57395=1635,t.afii57396=1636,t.afii57397=1637,t.afii57398=1638,t.afii57399=1639,t.afii57400=1640,t.afii57401=1641,t.afii57403=1563,t.afii57407=1567,t.afii57409=1569,t.afii57410=1570,t.afii57411=1571,t.afii57412=1572,t.afii57413=1573,t.afii57414=1574,t.afii57415=1575,t.afii57416=1576,t.afii57417=1577,t.afii57418=1578,t.afii57419=1579,t.afii57420=1580,t.afii57421=1581,t.afii57422=1582,t.afii57423=1583,t.afii57424=1584,t.afii57425=1585,t.afii57426=1586,t.afii57427=1587,t.afii57428=1588,t.afii57429=1589,t.afii57430=1590,t.afii57431=1591,t.afii57432=1592,t.afii57433=1593,t.afii57434=1594,t.afii57440=1600,t.afii57441=1601,t.afii57442=1602,t.afii57443=1603,t.afii57444=1604,t.afii57445=1605,t.afii57446=1606,t.afii57448=1608,t.afii57449=1609,t.afii57450=1610,t.afii57451=1611,t.afii57452=1612,t.afii57453=1613,t.afii57454=1614,t.afii57455=1615,t.afii57456=1616,t.afii57457=1617,t.afii57458=1618,t.afii57470=1607,t.afii57505=1700,t.afii57506=1662,t.afii57507=1670,t.afii57508=1688,t.afii57509=1711,t.afii57511=1657,t.afii57512=1672,t.afii57513=1681,t.afii57514=1722,t.afii57519=1746,t.afii57534=1749,t.afii57636=8362,t.afii57645=1470,t.afii57658=1475,t.afii57664=1488,t.afii57665=1489,t.afii57666=1490,t.afii57667=1491,t.afii57668=1492,t.afii57669=1493,t.afii57670=1494,t.afii57671=1495,t.afii57672=1496,t.afii57673=1497,t.afii57674=1498,t.afii57675=1499,t.afii57676=1500,t.afii57677=1501,t.afii57678=1502,t.afii57679=1503,t.afii57680=1504,t.afii57681=1505,t.afii57682=1506,t.afii57683=1507,t.afii57684=1508,t.afii57685=1509,t.afii57686=1510,t.afii57687=1511,t.afii57688=1512,t.afii57689=1513,t.afii57690=1514,t.afii57694=64298,t.afii57695=64299,t.afii57700=64331,t.afii57705=64287,t.afii57716=1520,t.afii57717=1521,t.afii57718=1522,t.afii57723=64309,t.afii57793=1460,t.afii57794=1461,t.afii57795=1462,t.afii57796=1467,t.afii57797=1464,t.afii57798=1463,t.afii57799=1456,t.afii57800=1458,t.afii57801=1457,t.afii57802=1459,t.afii57803=1474,t.afii57804=1473,t.afii57806=1465,t.afii57807=1468,t.afii57839=1469,t.afii57841=1471,t.afii57842=1472,t.afii57929=700,t.afii61248=8453,t.afii61289=8467,t.afii61352=8470,t.afii61573=8236,t.afii61574=8237,t.afii61575=8238,t.afii61664=8204,t.afii63167=1645,t.afii64937=701,t.agrave=224,t.agujarati=2693,t.agurmukhi=2565,t.ahiragana=12354,t.ahookabove=7843,t.aibengali=2448,t.aibopomofo=12574,t.aideva=2320,t.aiecyrillic=1237,t.aigujarati=2704,t.aigurmukhi=2576,t.aimatragurmukhi=2632,t.ainarabic=1593,t.ainfinalarabic=65226,t.aininitialarabic=65227,t.ainmedialarabic=65228,t.ainvertedbreve=515,t.aivowelsignbengali=2504,t.aivowelsigndeva=2376,t.aivowelsigngujarati=2760,t.akatakana=12450,t.akatakanahalfwidth=65393,t.akorean=12623,t.alef=1488,t.alefarabic=1575,t.alefdageshhebrew=64304,t.aleffinalarabic=65166,t.alefhamzaabovearabic=1571,t.alefhamzaabovefinalarabic=65156,t.alefhamzabelowarabic=1573,t.alefhamzabelowfinalarabic=65160,t.alefhebrew=1488,t.aleflamedhebrew=64335,t.alefmaddaabovearabic=1570,t.alefmaddaabovefinalarabic=65154,t.alefmaksuraarabic=1609,t.alefmaksurafinalarabic=65264,t.alefmaksurainitialarabic=65267,t.alefmaksuramedialarabic=65268,t.alefpatahhebrew=64302,t.alefqamatshebrew=64303,t.aleph=8501,t.allequal=8780,t.alpha=945,t.alphatonos=940,t.amacron=257,t.amonospace=65345,t.ampersand=38,t.ampersandmonospace=65286,t.ampersandsmall=63270,t.amsquare=13250,t.anbopomofo=12578,t.angbopomofo=12580,t.angbracketleft=12296,t.angbracketright=12297,t.angkhankhuthai=3674,t.angle=8736,t.anglebracketleft=12296,t.anglebracketleftvertical=65087,t.anglebracketright=12297,t.anglebracketrightvertical=65088,t.angleleft=9001,t.angleright=9002,t.angstrom=8491,t.anoteleia=903,t.anudattadeva=2386,t.anusvarabengali=2434,t.anusvaradeva=2306,t.anusvaragujarati=2690,t.aogonek=261,t.apaatosquare=13056,t.aparen=9372,t.apostrophearmenian=1370,t.apostrophemod=700,t.apple=63743,t.approaches=8784,t.approxequal=8776,t.approxequalorimage=8786,t.approximatelyequal=8773,t.araeaekorean=12686,t.araeakorean=12685,t.arc=8978,t.arighthalfring=7834,t.aring=229,t.aringacute=507,t.aringbelow=7681,t.arrowboth=8596,t.arrowdashdown=8675,t.arrowdashleft=8672,t.arrowdashright=8674,t.arrowdashup=8673,t.arrowdblboth=8660,t.arrowdbldown=8659,t.arrowdblleft=8656,t.arrowdblright=8658,t.arrowdblup=8657,t.arrowdown=8595,t.arrowdownleft=8601,t.arrowdownright=8600,t.arrowdownwhite=8681,t.arrowheaddownmod=709,t.arrowheadleftmod=706,t.arrowheadrightmod=707,t.arrowheadupmod=708,t.arrowhorizex=63719,t.arrowleft=8592,t.arrowleftdbl=8656,t.arrowleftdblstroke=8653,t.arrowleftoverright=8646,t.arrowleftwhite=8678,t.arrowright=8594,t.arrowrightdblstroke=8655,t.arrowrightheavy=10142,t.arrowrightoverleft=8644,t.arrowrightwhite=8680,t.arrowtableft=8676,t.arrowtabright=8677,t.arrowup=8593,t.arrowupdn=8597,t.arrowupdnbse=8616,t.arrowupdownbase=8616,t.arrowupleft=8598,t.arrowupleftofdown=8645,t.arrowupright=8599,t.arrowupwhite=8679,t.arrowvertex=63718,t.asciicircum=94,t.asciicircummonospace=65342,t.asciitilde=126,t.asciitildemonospace=65374,t.ascript=593,t.ascriptturned=594,t.asmallhiragana=12353,t.asmallkatakana=12449,t.asmallkatakanahalfwidth=65383,t.asterisk=42,t.asteriskaltonearabic=1645,t.asteriskarabic=1645,t.asteriskmath=8727,t.asteriskmonospace=65290,t.asterisksmall=65121,t.asterism=8258,t.asuperior=63209,t.asymptoticallyequal=8771,t.at=64,t.atilde=227,t.atmonospace=65312,t.atsmall=65131,t.aturned=592,t.aubengali=2452,t.aubopomofo=12576,t.audeva=2324,t.augujarati=2708,t.augurmukhi=2580,t.aulengthmarkbengali=2519,t.aumatragurmukhi=2636,t.auvowelsignbengali=2508,t.auvowelsigndeva=2380,t.auvowelsigngujarati=2764,t.avagrahadeva=2365,t.aybarmenian=1377,t.ayin=1506,t.ayinaltonehebrew=64288,t.ayinhebrew=1506,t.b=98,t.babengali=2476,t.backslash=92,t.backslashmonospace=65340,t.badeva=2348,t.bagujarati=2732,t.bagurmukhi=2604,t.bahiragana=12400,t.bahtthai=3647,t.bakatakana=12496,t.bar=124,t.barmonospace=65372,t.bbopomofo=12549,t.bcircle=9425,t.bdotaccent=7683,t.bdotbelow=7685,t.beamedsixteenthnotes=9836,t.because=8757,t.becyrillic=1073,t.beharabic=1576,t.behfinalarabic=65168,t.behinitialarabic=65169,t.behiragana=12409,t.behmedialarabic=65170,t.behmeeminitialarabic=64671,t.behmeemisolatedarabic=64520,t.behnoonfinalarabic=64621,t.bekatakana=12505,t.benarmenian=1378,t.bet=1489,t.beta=946,t.betasymbolgreek=976,t.betdagesh=64305,t.betdageshhebrew=64305,t.bethebrew=1489,t.betrafehebrew=64332,t.bhabengali=2477,t.bhadeva=2349,t.bhagujarati=2733,t.bhagurmukhi=2605,t.bhook=595,t.bihiragana=12403,t.bikatakana=12499,t.bilabialclick=664,t.bindigurmukhi=2562,t.birusquare=13105,t.blackcircle=9679,t.blackdiamond=9670,t.blackdownpointingtriangle=9660,t.blackleftpointingpointer=9668,t.blackleftpointingtriangle=9664,t.blacklenticularbracketleft=12304,t.blacklenticularbracketleftvertical=65083,t.blacklenticularbracketright=12305,t.blacklenticularbracketrightvertical=65084,t.blacklowerlefttriangle=9699,t.blacklowerrighttriangle=9698,t.blackrectangle=9644,t.blackrightpointingpointer=9658,t.blackrightpointingtriangle=9654,t.blacksmallsquare=9642,t.blacksmilingface=9787,t.blacksquare=9632,t.blackstar=9733,t.blackupperlefttriangle=9700,t.blackupperrighttriangle=9701,t.blackuppointingsmalltriangle=9652,t.blackuppointingtriangle=9650,t.blank=9251,t.blinebelow=7687,t.block=9608,t.bmonospace=65346,t.bobaimaithai=3610,t.bohiragana=12412,t.bokatakana=12508,t.bparen=9373,t.bqsquare=13251,t.braceex=63732,t.braceleft=123,t.braceleftbt=63731,t.braceleftmid=63730,t.braceleftmonospace=65371,t.braceleftsmall=65115,t.bracelefttp=63729,t.braceleftvertical=65079,t.braceright=125,t.bracerightbt=63742,t.bracerightmid=63741,t.bracerightmonospace=65373,t.bracerightsmall=65116,t.bracerighttp=63740,t.bracerightvertical=65080,t.bracketleft=91,t.bracketleftbt=63728,t.bracketleftex=63727,t.bracketleftmonospace=65339,t.bracketlefttp=63726,t.bracketright=93,t.bracketrightbt=63739,t.bracketrightex=63738,t.bracketrightmonospace=65341,t.bracketrighttp=63737,t.breve=728,t.brevebelowcmb=814,t.brevecmb=774,t.breveinvertedbelowcmb=815,t.breveinvertedcmb=785,t.breveinverteddoublecmb=865,t.bridgebelowcmb=810,t.bridgeinvertedbelowcmb=826,t.brokenbar=166,t.bstroke=384,t.bsuperior=63210,t.btopbar=387,t.buhiragana=12406,t.bukatakana=12502,t.bullet=8226,t.bulletinverse=9688,t.bulletoperator=8729,t.bullseye=9678,t.c=99,t.caarmenian=1390,t.cabengali=2458,t.cacute=263,t.cadeva=2330,t.cagujarati=2714,t.cagurmukhi=2586,t.calsquare=13192,t.candrabindubengali=2433,t.candrabinducmb=784,t.candrabindudeva=2305,t.candrabindugujarati=2689,t.capslock=8682,t.careof=8453,t.caron=711,t.caronbelowcmb=812,t.caroncmb=780,t.carriagereturn=8629,t.cbopomofo=12568,t.ccaron=269,t.ccedilla=231,t.ccedillaacute=7689,t.ccircle=9426,t.ccircumflex=265,t.ccurl=597,t.cdot=267,t.cdotaccent=267,t.cdsquare=13253,t.cedilla=184,t.cedillacmb=807,t.cent=162,t.centigrade=8451,t.centinferior=63199,t.centmonospace=65504,t.centoldstyle=63394,t.centsuperior=63200,t.chaarmenian=1401,t.chabengali=2459,t.chadeva=2331,t.chagujarati=2715,t.chagurmukhi=2587,t.chbopomofo=12564,t.cheabkhasiancyrillic=1213,t.checkmark=10003,t.checyrillic=1095,t.chedescenderabkhasiancyrillic=1215,t.chedescendercyrillic=1207,t.chedieresiscyrillic=1269,t.cheharmenian=1395,t.chekhakassiancyrillic=1228,t.cheverticalstrokecyrillic=1209,t.chi=967,t.chieuchacirclekorean=12919,t.chieuchaparenkorean=12823,t.chieuchcirclekorean=12905,t.chieuchkorean=12618,t.chieuchparenkorean=12809,t.chochangthai=3594,t.chochanthai=3592,t.chochingthai=3593,t.chochoethai=3596,t.chook=392,t.cieucacirclekorean=12918,t.cieucaparenkorean=12822,t.cieuccirclekorean=12904,t.cieuckorean=12616,t.cieucparenkorean=12808,t.cieucuparenkorean=12828,t.circle=9675,t.circlecopyrt=169,t.circlemultiply=8855,t.circleot=8857,t.circleplus=8853,t.circlepostalmark=12342,t.circlewithlefthalfblack=9680,t.circlewithrighthalfblack=9681,t.circumflex=710,t.circumflexbelowcmb=813,t.circumflexcmb=770,t.clear=8999,t.clickalveolar=450,t.clickdental=448,t.clicklateral=449,t.clickretroflex=451,t.club=9827,t.clubsuitblack=9827,t.clubsuitwhite=9831,t.cmcubedsquare=13220,t.cmonospace=65347,t.cmsquaredsquare=13216,t.coarmenian=1409,t.colon=58,t.colonmonetary=8353,t.colonmonospace=65306,t.colonsign=8353,t.colonsmall=65109,t.colontriangularhalfmod=721,t.colontriangularmod=720,t.comma=44,t.commaabovecmb=787,t.commaaboverightcmb=789,t.commaaccent=63171,t.commaarabic=1548,t.commaarmenian=1373,t.commainferior=63201,t.commamonospace=65292,t.commareversedabovecmb=788,t.commareversedmod=701,t.commasmall=65104,t.commasuperior=63202,t.commaturnedabovecmb=786,t.commaturnedmod=699,t.compass=9788,t.congruent=8773,t.contourintegral=8750,t.control=8963,t.controlACK=6,t.controlBEL=7,t.controlBS=8,t.controlCAN=24,t.controlCR=13,t.controlDC1=17,t.controlDC2=18,t.controlDC3=19,t.controlDC4=20,t.controlDEL=127,t.controlDLE=16,t.controlEM=25,t.controlENQ=5,t.controlEOT=4,t.controlESC=27,t.controlETB=23,t.controlETX=3,t.controlFF=12,t.controlFS=28,t.controlGS=29,t.controlHT=9,t.controlLF=10,t.controlNAK=21,t.controlNULL=0,t.controlRS=30,t.controlSI=15,t.controlSO=14,t.controlSOT=2,t.controlSTX=1,t.controlSUB=26,t.controlSYN=22,t.controlUS=31,t.controlVT=11,t.copyright=169,t.copyrightsans=63721,t.copyrightserif=63193,t.cornerbracketleft=12300,t.cornerbracketlefthalfwidth=65378,t.cornerbracketleftvertical=65089,t.cornerbracketright=12301,t.cornerbracketrighthalfwidth=65379,t.cornerbracketrightvertical=65090,t.corporationsquare=13183,t.cosquare=13255,t.coverkgsquare=13254,t.cparen=9374,t.cruzeiro=8354,t.cstretched=663,t.curlyand=8911,t.curlyor=8910,t.currency=164,t.cyrBreve=63185,t.cyrFlex=63186,t.cyrbreve=63188,t.cyrflex=63189,t.d=100,t.daarmenian=1380,t.dabengali=2470,t.dadarabic=1590,t.dadeva=2342,t.dadfinalarabic=65214,t.dadinitialarabic=65215,t.dadmedialarabic=65216,t.dagesh=1468,t.dageshhebrew=1468,t.dagger=8224,t.daggerdbl=8225,t.dagujarati=2726,t.dagurmukhi=2598,t.dahiragana=12384,t.dakatakana=12480,t.dalarabic=1583,t.dalet=1491,t.daletdagesh=64307,t.daletdageshhebrew=64307,t.dalethebrew=1491,t.dalfinalarabic=65194,t.dammaarabic=1615,t.dammalowarabic=1615,t.dammatanaltonearabic=1612,t.dammatanarabic=1612,t.danda=2404,t.dargahebrew=1447,t.dargalefthebrew=1447,t.dasiapneumatacyrilliccmb=1157,t.dblGrave=63187,t.dblanglebracketleft=12298,t.dblanglebracketleftvertical=65085,t.dblanglebracketright=12299,t.dblanglebracketrightvertical=65086,t.dblarchinvertedbelowcmb=811,t.dblarrowleft=8660,t.dblarrowright=8658,t.dbldanda=2405,t.dblgrave=63190,t.dblgravecmb=783,t.dblintegral=8748,t.dbllowline=8215,t.dbllowlinecmb=819,t.dbloverlinecmb=831,t.dblprimemod=698,t.dblverticalbar=8214,t.dblverticallineabovecmb=782,t.dbopomofo=12553,t.dbsquare=13256,t.dcaron=271,t.dcedilla=7697,t.dcircle=9427,t.dcircumflexbelow=7699,t.dcroat=273,t.ddabengali=2465,t.ddadeva=2337,t.ddagujarati=2721,t.ddagurmukhi=2593,t.ddalarabic=1672,t.ddalfinalarabic=64393,t.dddhadeva=2396,t.ddhabengali=2466,t.ddhadeva=2338,t.ddhagujarati=2722,t.ddhagurmukhi=2594,t.ddotaccent=7691,t.ddotbelow=7693,t.decimalseparatorarabic=1643,t.decimalseparatorpersian=1643,t.decyrillic=1076,t.degree=176,t.dehihebrew=1453,t.dehiragana=12391,t.deicoptic=1007,t.dekatakana=12487,t.deleteleft=9003,t.deleteright=8998,t.delta=948,t.deltaturned=397,t.denominatorminusonenumeratorbengali=2552,t.dezh=676,t.dhabengali=2471,t.dhadeva=2343,t.dhagujarati=2727,t.dhagurmukhi=2599,t.dhook=599,t.dialytikatonos=901,t.dialytikatonoscmb=836,t.diamond=9830,t.diamondsuitwhite=9826,t.dieresis=168,t.dieresisacute=63191,t.dieresisbelowcmb=804,t.dieresiscmb=776,t.dieresisgrave=63192,t.dieresistonos=901,t.dihiragana=12386,t.dikatakana=12482,t.dittomark=12291,t.divide=247,t.divides=8739,t.divisionslash=8725,t.djecyrillic=1106,t.dkshade=9619,t.dlinebelow=7695,t.dlsquare=13207,t.dmacron=273,t.dmonospace=65348,t.dnblock=9604,t.dochadathai=3598,t.dodekthai=3604,t.dohiragana=12393,t.dokatakana=12489,t.dollar=36,t.dollarinferior=63203,t.dollarmonospace=65284,t.dollaroldstyle=63268,t.dollarsmall=65129,t.dollarsuperior=63204,t.dong=8363,t.dorusquare=13094,t.dotaccent=729,t.dotaccentcmb=775,t.dotbelowcmb=803,t.dotbelowcomb=803,t.dotkatakana=12539,t.dotlessi=305,t.dotlessj=63166,t.dotlessjstrokehook=644,t.dotmath=8901,t.dottedcircle=9676,t.doubleyodpatah=64287,t.doubleyodpatahhebrew=64287,t.downtackbelowcmb=798,t.downtackmod=725,t.dparen=9375,t.dsuperior=63211,t.dtail=598,t.dtopbar=396,t.duhiragana=12389,t.dukatakana=12485,t.dz=499,t.dzaltone=675,t.dzcaron=454,t.dzcurl=677,t.dzeabkhasiancyrillic=1249,t.dzecyrillic=1109,t.dzhecyrillic=1119,t.e=101,t.eacute=233,t.earth=9793,t.ebengali=2447,t.ebopomofo=12572,t.ebreve=277,t.ecandradeva=2317,t.ecandragujarati=2701,t.ecandravowelsigndeva=2373,t.ecandravowelsigngujarati=2757,t.ecaron=283,t.ecedillabreve=7709,t.echarmenian=1381,t.echyiwnarmenian=1415,t.ecircle=9428,t.ecircumflex=234,t.ecircumflexacute=7871,t.ecircumflexbelow=7705,t.ecircumflexdotbelow=7879,t.ecircumflexgrave=7873,t.ecircumflexhookabove=7875,t.ecircumflextilde=7877,t.ecyrillic=1108,t.edblgrave=517,t.edeva=2319,t.edieresis=235,t.edot=279,t.edotaccent=279,t.edotbelow=7865,t.eegurmukhi=2575,t.eematragurmukhi=2631,t.efcyrillic=1092,t.egrave=232,t.egujarati=2703,t.eharmenian=1383,t.ehbopomofo=12573,t.ehiragana=12360,t.ehookabove=7867,t.eibopomofo=12575,t.eight=56,t.eightarabic=1640,t.eightbengali=2542,t.eightcircle=9319,t.eightcircleinversesansserif=10129,t.eightdeva=2414,t.eighteencircle=9329,t.eighteenparen=9349,t.eighteenperiod=9369,t.eightgujarati=2798,t.eightgurmukhi=2670,t.eighthackarabic=1640,t.eighthangzhou=12328,t.eighthnotebeamed=9835,t.eightideographicparen=12839,t.eightinferior=8328,t.eightmonospace=65304,t.eightoldstyle=63288,t.eightparen=9339,t.eightperiod=9359,t.eightpersian=1784,t.eightroman=8567,t.eightsuperior=8312,t.eightthai=3672,t.einvertedbreve=519,t.eiotifiedcyrillic=1125,t.ekatakana=12456,t.ekatakanahalfwidth=65396,t.ekonkargurmukhi=2676,t.ekorean=12628,t.elcyrillic=1083,t.element=8712,t.elevencircle=9322,t.elevenparen=9342,t.elevenperiod=9362,t.elevenroman=8570,t.ellipsis=8230,t.ellipsisvertical=8942,t.emacron=275,t.emacronacute=7703,t.emacrongrave=7701,t.emcyrillic=1084,t.emdash=8212,t.emdashvertical=65073,t.emonospace=65349,t.emphasismarkarmenian=1371,t.emptyset=8709,t.enbopomofo=12579,t.encyrillic=1085,t.endash=8211,t.endashvertical=65074,t.endescendercyrillic=1187,t.eng=331,t.engbopomofo=12581,t.enghecyrillic=1189,t.enhookcyrillic=1224,t.enspace=8194,t.eogonek=281,t.eokorean=12627,t.eopen=603,t.eopenclosed=666,t.eopenreversed=604,t.eopenreversedclosed=606,t.eopenreversedhook=605,t.eparen=9376,t.epsilon=949,t.epsilontonos=941,t.equal=61,t.equalmonospace=65309,t.equalsmall=65126,t.equalsuperior=8316,t.equivalence=8801,t.erbopomofo=12582,t.ercyrillic=1088,t.ereversed=600,t.ereversedcyrillic=1101,t.escyrillic=1089,t.esdescendercyrillic=1195,t.esh=643,t.eshcurl=646,t.eshortdeva=2318,t.eshortvowelsigndeva=2374,t.eshreversedloop=426,t.eshsquatreversed=645,t.esmallhiragana=12359,t.esmallkatakana=12455,t.esmallkatakanahalfwidth=65386,t.estimated=8494,t.esuperior=63212,t.eta=951,t.etarmenian=1384,t.etatonos=942,t.eth=240,t.etilde=7869,t.etildebelow=7707,t.etnahtafoukhhebrew=1425,t.etnahtafoukhlefthebrew=1425,t.etnahtahebrew=1425,t.etnahtalefthebrew=1425,t.eturned=477,t.eukorean=12641,t.euro=8364,t.evowelsignbengali=2503,t.evowelsigndeva=2375,t.evowelsigngujarati=2759,t.exclam=33,t.exclamarmenian=1372,t.exclamdbl=8252,t.exclamdown=161,t.exclamdownsmall=63393,t.exclammonospace=65281,t.exclamsmall=63265,t.existential=8707,t.ezh=658,t.ezhcaron=495,t.ezhcurl=659,t.ezhreversed=441,t.ezhtail=442,t.f=102,t.fadeva=2398,t.fagurmukhi=2654,t.fahrenheit=8457,t.fathaarabic=1614,t.fathalowarabic=1614,t.fathatanarabic=1611,t.fbopomofo=12552,t.fcircle=9429,t.fdotaccent=7711,t.feharabic=1601,t.feharmenian=1414,t.fehfinalarabic=65234,t.fehinitialarabic=65235,t.fehmedialarabic=65236,t.feicoptic=997,t.female=9792,t.ff=64256,t.f_f=64256,t.ffi=64259,t.f_f_i=64259,t.ffl=64260,t.f_f_l=64260,t.fi=64257,t.f_i=64257,t.fifteencircle=9326,t.fifteenparen=9346,t.fifteenperiod=9366,t.figuredash=8210,t.filledbox=9632,t.filledrect=9644,t.finalkaf=1498,t.finalkafdagesh=64314,t.finalkafdageshhebrew=64314,t.finalkafhebrew=1498,t.finalmem=1501,t.finalmemhebrew=1501,t.finalnun=1503,t.finalnunhebrew=1503,t.finalpe=1507,t.finalpehebrew=1507,t.finaltsadi=1509,t.finaltsadihebrew=1509,t.firsttonechinese=713,t.fisheye=9673,t.fitacyrillic=1139,t.five=53,t.fivearabic=1637,t.fivebengali=2539,t.fivecircle=9316,t.fivecircleinversesansserif=10126,t.fivedeva=2411,t.fiveeighths=8541,t.fivegujarati=2795,t.fivegurmukhi=2667,t.fivehackarabic=1637,t.fivehangzhou=12325,t.fiveideographicparen=12836,t.fiveinferior=8325,t.fivemonospace=65301,t.fiveoldstyle=63285,t.fiveparen=9336,t.fiveperiod=9356,t.fivepersian=1781,t.fiveroman=8564,t.fivesuperior=8309,t.fivethai=3669,t.fl=64258,t.f_l=64258,t.florin=402,t.fmonospace=65350,t.fmsquare=13209,t.fofanthai=3615,t.fofathai=3613,t.fongmanthai=3663,t.forall=8704,t.four=52,t.fourarabic=1636,t.fourbengali=2538,t.fourcircle=9315,t.fourcircleinversesansserif=10125,t.fourdeva=2410,t.fourgujarati=2794,t.fourgurmukhi=2666,t.fourhackarabic=1636,t.fourhangzhou=12324,t.fourideographicparen=12835,t.fourinferior=8324,t.fourmonospace=65300,t.fournumeratorbengali=2551,t.fouroldstyle=63284,t.fourparen=9335,t.fourperiod=9355,t.fourpersian=1780,t.fourroman=8563,t.foursuperior=8308,t.fourteencircle=9325,t.fourteenparen=9345,t.fourteenperiod=9365,t.fourthai=3668,t.fourthtonechinese=715,t.fparen=9377,t.fraction=8260,t.franc=8355,t.g=103,t.gabengali=2455,t.gacute=501,t.gadeva=2327,t.gafarabic=1711,t.gaffinalarabic=64403,t.gafinitialarabic=64404,t.gafmedialarabic=64405,t.gagujarati=2711,t.gagurmukhi=2583,t.gahiragana=12364,t.gakatakana=12460,t.gamma=947,t.gammalatinsmall=611,t.gammasuperior=736,t.gangiacoptic=1003,t.gbopomofo=12557,t.gbreve=287,t.gcaron=487,t.gcedilla=291,t.gcircle=9430,t.gcircumflex=285,t.gcommaaccent=291,t.gdot=289,t.gdotaccent=289,t.gecyrillic=1075,t.gehiragana=12370,t.gekatakana=12466,t.geometricallyequal=8785,t.gereshaccenthebrew=1436,t.gereshhebrew=1523,t.gereshmuqdamhebrew=1437,t.germandbls=223,t.gershayimaccenthebrew=1438,t.gershayimhebrew=1524,t.getamark=12307,t.ghabengali=2456,t.ghadarmenian=1394,t.ghadeva=2328,t.ghagujarati=2712,t.ghagurmukhi=2584,t.ghainarabic=1594,t.ghainfinalarabic=65230,t.ghaininitialarabic=65231,t.ghainmedialarabic=65232,t.ghemiddlehookcyrillic=1173,t.ghestrokecyrillic=1171,t.gheupturncyrillic=1169,t.ghhadeva=2394,t.ghhagurmukhi=2650,t.ghook=608,t.ghzsquare=13203,t.gihiragana=12366,t.gikatakana=12462,t.gimarmenian=1379,t.gimel=1490,t.gimeldagesh=64306,t.gimeldageshhebrew=64306,t.gimelhebrew=1490,t.gjecyrillic=1107,t.glottalinvertedstroke=446,t.glottalstop=660,t.glottalstopinverted=662,t.glottalstopmod=704,t.glottalstopreversed=661,t.glottalstopreversedmod=705,t.glottalstopreversedsuperior=740,t.glottalstopstroke=673,t.glottalstopstrokereversed=674,t.gmacron=7713,t.gmonospace=65351,t.gohiragana=12372,t.gokatakana=12468,t.gparen=9378,t.gpasquare=13228,t.gradient=8711,t.grave=96,t.gravebelowcmb=790,t.gravecmb=768,t.gravecomb=768,t.gravedeva=2387,t.gravelowmod=718,t.gravemonospace=65344,t.gravetonecmb=832,t.greater=62,t.greaterequal=8805,t.greaterequalorless=8923,t.greatermonospace=65310,t.greaterorequivalent=8819,t.greaterorless=8823,t.greateroverequal=8807,t.greatersmall=65125,t.gscript=609,t.gstroke=485,t.guhiragana=12368,t.guillemotleft=171,t.guillemotright=187,t.guilsinglleft=8249,t.guilsinglright=8250,t.gukatakana=12464,t.guramusquare=13080,t.gysquare=13257,t.h=104,t.haabkhasiancyrillic=1193,t.haaltonearabic=1729,t.habengali=2489,t.hadescendercyrillic=1203,t.hadeva=2361,t.hagujarati=2745,t.hagurmukhi=2617,t.haharabic=1581,t.hahfinalarabic=65186,t.hahinitialarabic=65187,t.hahiragana=12399,t.hahmedialarabic=65188,t.haitusquare=13098,t.hakatakana=12495,t.hakatakanahalfwidth=65418,t.halantgurmukhi=2637,t.hamzaarabic=1569,t.hamzalowarabic=1569,t.hangulfiller=12644,t.hardsigncyrillic=1098,t.harpoonleftbarbup=8636,t.harpoonrightbarbup=8640,t.hasquare=13258,t.hatafpatah=1458,t.hatafpatah16=1458,t.hatafpatah23=1458,t.hatafpatah2f=1458,t.hatafpatahhebrew=1458,t.hatafpatahnarrowhebrew=1458,t.hatafpatahquarterhebrew=1458,t.hatafpatahwidehebrew=1458,t.hatafqamats=1459,t.hatafqamats1b=1459,t.hatafqamats28=1459,t.hatafqamats34=1459,t.hatafqamatshebrew=1459,t.hatafqamatsnarrowhebrew=1459,t.hatafqamatsquarterhebrew=1459,t.hatafqamatswidehebrew=1459,t.hatafsegol=1457,t.hatafsegol17=1457,t.hatafsegol24=1457,t.hatafsegol30=1457,t.hatafsegolhebrew=1457,t.hatafsegolnarrowhebrew=1457,t.hatafsegolquarterhebrew=1457,t.hatafsegolwidehebrew=1457,t.hbar=295,t.hbopomofo=12559,t.hbrevebelow=7723,t.hcedilla=7721,t.hcircle=9431,t.hcircumflex=293,t.hdieresis=7719,t.hdotaccent=7715,t.hdotbelow=7717,t.he=1492,t.heart=9829,t.heartsuitblack=9829,t.heartsuitwhite=9825,t.hedagesh=64308,t.hedageshhebrew=64308,t.hehaltonearabic=1729,t.heharabic=1607,t.hehebrew=1492,t.hehfinalaltonearabic=64423,t.hehfinalalttwoarabic=65258,t.hehfinalarabic=65258,t.hehhamzaabovefinalarabic=64421,t.hehhamzaaboveisolatedarabic=64420,t.hehinitialaltonearabic=64424,t.hehinitialarabic=65259,t.hehiragana=12408,t.hehmedialaltonearabic=64425,t.hehmedialarabic=65260,t.heiseierasquare=13179,t.hekatakana=12504,t.hekatakanahalfwidth=65421,t.hekutaarusquare=13110,t.henghook=615,t.herutusquare=13113,t.het=1495,t.hethebrew=1495,t.hhook=614,t.hhooksuperior=689,t.hieuhacirclekorean=12923,t.hieuhaparenkorean=12827,t.hieuhcirclekorean=12909,t.hieuhkorean=12622,t.hieuhparenkorean=12813,t.hihiragana=12402,t.hikatakana=12498,t.hikatakanahalfwidth=65419,t.hiriq=1460,t.hiriq14=1460,t.hiriq21=1460,t.hiriq2d=1460,t.hiriqhebrew=1460,t.hiriqnarrowhebrew=1460,t.hiriqquarterhebrew=1460,t.hiriqwidehebrew=1460,t.hlinebelow=7830,t.hmonospace=65352,t.hoarmenian=1392,t.hohipthai=3627,t.hohiragana=12411,t.hokatakana=12507,t.hokatakanahalfwidth=65422,t.holam=1465,t.holam19=1465,t.holam26=1465,t.holam32=1465,t.holamhebrew=1465,t.holamnarrowhebrew=1465,t.holamquarterhebrew=1465,t.holamwidehebrew=1465,t.honokhukthai=3630,t.hookabovecomb=777,t.hookcmb=777,t.hookpalatalizedbelowcmb=801,t.hookretroflexbelowcmb=802,t.hoonsquare=13122,t.horicoptic=1001,t.horizontalbar=8213,t.horncmb=795,t.hotsprings=9832,t.house=8962,t.hparen=9379,t.hsuperior=688,t.hturned=613,t.huhiragana=12405,t.huiitosquare=13107,t.hukatakana=12501,t.hukatakanahalfwidth=65420,t.hungarumlaut=733,t.hungarumlautcmb=779,t.hv=405,t.hyphen=45,t.hypheninferior=63205,t.hyphenmonospace=65293,t.hyphensmall=65123,t.hyphensuperior=63206,t.hyphentwo=8208,t.i=105,t.iacute=237,t.iacyrillic=1103,t.ibengali=2439,t.ibopomofo=12583,t.ibreve=301,t.icaron=464,t.icircle=9432,t.icircumflex=238,t.icyrillic=1110,t.idblgrave=521,t.ideographearthcircle=12943,t.ideographfirecircle=12939,t.ideographicallianceparen=12863,t.ideographiccallparen=12858,t.ideographiccentrecircle=12965,t.ideographicclose=12294,t.ideographiccomma=12289,t.ideographiccommaleft=65380,t.ideographiccongratulationparen=12855,t.ideographiccorrectcircle=12963,t.ideographicearthparen=12847,t.ideographicenterpriseparen=12861,t.ideographicexcellentcircle=12957,t.ideographicfestivalparen=12864,t.ideographicfinancialcircle=12950,t.ideographicfinancialparen=12854,t.ideographicfireparen=12843,t.ideographichaveparen=12850,t.ideographichighcircle=12964,t.ideographiciterationmark=12293,t.ideographiclaborcircle=12952,t.ideographiclaborparen=12856,t.ideographicleftcircle=12967,t.ideographiclowcircle=12966,t.ideographicmedicinecircle=12969,t.ideographicmetalparen=12846,t.ideographicmoonparen=12842,t.ideographicnameparen=12852,t.ideographicperiod=12290,t.ideographicprintcircle=12958,t.ideographicreachparen=12867,t.ideographicrepresentparen=12857,t.ideographicresourceparen=12862,t.ideographicrightcircle=12968,t.ideographicsecretcircle=12953,t.ideographicselfparen=12866,t.ideographicsocietyparen=12851,t.ideographicspace=12288,t.ideographicspecialparen=12853,t.ideographicstockparen=12849,t.ideographicstudyparen=12859,t.ideographicsunparen=12848,t.ideographicsuperviseparen=12860,t.ideographicwaterparen=12844,t.ideographicwoodparen=12845,t.ideographiczero=12295,t.ideographmetalcircle=12942,t.ideographmooncircle=12938,t.ideographnamecircle=12948,t.ideographsuncircle=12944,t.ideographwatercircle=12940,t.ideographwoodcircle=12941,t.ideva=2311,t.idieresis=239,t.idieresisacute=7727,t.idieresiscyrillic=1253,t.idotbelow=7883,t.iebrevecyrillic=1239,t.iecyrillic=1077,t.ieungacirclekorean=12917,t.ieungaparenkorean=12821,t.ieungcirclekorean=12903,t.ieungkorean=12615,t.ieungparenkorean=12807,t.igrave=236,t.igujarati=2695,t.igurmukhi=2567,t.ihiragana=12356,t.ihookabove=7881,t.iibengali=2440,t.iicyrillic=1080,t.iideva=2312,t.iigujarati=2696,t.iigurmukhi=2568,t.iimatragurmukhi=2624,t.iinvertedbreve=523,t.iishortcyrillic=1081,t.iivowelsignbengali=2496,t.iivowelsigndeva=2368,t.iivowelsigngujarati=2752,t.ij=307,t.ikatakana=12452,t.ikatakanahalfwidth=65394,t.ikorean=12643,t.ilde=732,t.iluyhebrew=1452,t.imacron=299,t.imacroncyrillic=1251,t.imageorapproximatelyequal=8787,t.imatragurmukhi=2623,t.imonospace=65353,t.increment=8710,t.infinity=8734,t.iniarmenian=1387,t.integral=8747,t.integralbottom=8993,t.integralbt=8993,t.integralex=63733,t.integraltop=8992,t.integraltp=8992,t.intersection=8745,t.intisquare=13061,t.invbullet=9688,t.invcircle=9689,t.invsmileface=9787,t.iocyrillic=1105,t.iogonek=303,t.iota=953,t.iotadieresis=970,t.iotadieresistonos=912,t.iotalatin=617,t.iotatonos=943,t.iparen=9380,t.irigurmukhi=2674,t.ismallhiragana=12355,t.ismallkatakana=12451,t.ismallkatakanahalfwidth=65384,t.issharbengali=2554,t.istroke=616,t.isuperior=63213,t.iterationhiragana=12445,t.iterationkatakana=12541,t.itilde=297,t.itildebelow=7725,t.iubopomofo=12585,t.iucyrillic=1102,t.ivowelsignbengali=2495,t.ivowelsigndeva=2367,t.ivowelsigngujarati=2751,t.izhitsacyrillic=1141,t.izhitsadblgravecyrillic=1143,t.j=106,t.jaarmenian=1393,t.jabengali=2460,t.jadeva=2332,t.jagujarati=2716,t.jagurmukhi=2588,t.jbopomofo=12560,t.jcaron=496,t.jcircle=9433,t.jcircumflex=309,t.jcrossedtail=669,t.jdotlessstroke=607,t.jecyrillic=1112,t.jeemarabic=1580,t.jeemfinalarabic=65182,t.jeeminitialarabic=65183,t.jeemmedialarabic=65184,t.jeharabic=1688,t.jehfinalarabic=64395,t.jhabengali=2461,t.jhadeva=2333,t.jhagujarati=2717,t.jhagurmukhi=2589,t.jheharmenian=1403,t.jis=12292,t.jmonospace=65354,t.jparen=9381,t.jsuperior=690,t.k=107,t.kabashkircyrillic=1185,t.kabengali=2453,t.kacute=7729,t.kacyrillic=1082,t.kadescendercyrillic=1179,t.kadeva=2325,t.kaf=1499,t.kafarabic=1603,t.kafdagesh=64315,t.kafdageshhebrew=64315,t.kaffinalarabic=65242,t.kafhebrew=1499,t.kafinitialarabic=65243,t.kafmedialarabic=65244,t.kafrafehebrew=64333,t.kagujarati=2709,t.kagurmukhi=2581,t.kahiragana=12363,t.kahookcyrillic=1220,t.kakatakana=12459,t.kakatakanahalfwidth=65398,t.kappa=954,t.kappasymbolgreek=1008,t.kapyeounmieumkorean=12657,t.kapyeounphieuphkorean=12676,t.kapyeounpieupkorean=12664,t.kapyeounssangpieupkorean=12665,t.karoriisquare=13069,t.kashidaautoarabic=1600,t.kashidaautonosidebearingarabic=1600,t.kasmallkatakana=12533,t.kasquare=13188,t.kasraarabic=1616,t.kasratanarabic=1613,t.kastrokecyrillic=1183,t.katahiraprolongmarkhalfwidth=65392,t.kaverticalstrokecyrillic=1181,t.kbopomofo=12558,t.kcalsquare=13193,t.kcaron=489,t.kcedilla=311,t.kcircle=9434,t.kcommaaccent=311,t.kdotbelow=7731,t.keharmenian=1412,t.kehiragana=12369,t.kekatakana=12465,t.kekatakanahalfwidth=65401,t.kenarmenian=1391,t.kesmallkatakana=12534,t.kgreenlandic=312,t.khabengali=2454,t.khacyrillic=1093,t.khadeva=2326,t.khagujarati=2710,t.khagurmukhi=2582,t.khaharabic=1582,t.khahfinalarabic=65190,t.khahinitialarabic=65191,t.khahmedialarabic=65192,t.kheicoptic=999,t.khhadeva=2393,t.khhagurmukhi=2649,t.khieukhacirclekorean=12920,t.khieukhaparenkorean=12824,t.khieukhcirclekorean=12906,t.khieukhkorean=12619,t.khieukhparenkorean=12810,t.khokhaithai=3586,t.khokhonthai=3589,t.khokhuatthai=3587,t.khokhwaithai=3588,t.khomutthai=3675,t.khook=409,t.khorakhangthai=3590,t.khzsquare=13201,t.kihiragana=12365,t.kikatakana=12461,t.kikatakanahalfwidth=65399,t.kiroguramusquare=13077,t.kiromeetorusquare=13078,t.kirosquare=13076,t.kiyeokacirclekorean=12910,t.kiyeokaparenkorean=12814,t.kiyeokcirclekorean=12896,t.kiyeokkorean=12593,t.kiyeokparenkorean=12800,t.kiyeoksioskorean=12595,t.kjecyrillic=1116,t.klinebelow=7733,t.klsquare=13208,t.kmcubedsquare=13222,t.kmonospace=65355,t.kmsquaredsquare=13218,t.kohiragana=12371,t.kohmsquare=13248,t.kokaithai=3585,t.kokatakana=12467,t.kokatakanahalfwidth=65402,t.kooposquare=13086,t.koppacyrillic=1153,t.koreanstandardsymbol=12927,t.koroniscmb=835,t.kparen=9382,t.kpasquare=13226,t.ksicyrillic=1135,t.ktsquare=13263,t.kturned=670,t.kuhiragana=12367,t.kukatakana=12463,t.kukatakanahalfwidth=65400,t.kvsquare=13240,t.kwsquare=13246,t.l=108,t.labengali=2482,t.lacute=314,t.ladeva=2354,t.lagujarati=2738,t.lagurmukhi=2610,t.lakkhangyaothai=3653,t.lamaleffinalarabic=65276,t.lamalefhamzaabovefinalarabic=65272,t.lamalefhamzaaboveisolatedarabic=65271,t.lamalefhamzabelowfinalarabic=65274,t.lamalefhamzabelowisolatedarabic=65273,t.lamalefisolatedarabic=65275,t.lamalefmaddaabovefinalarabic=65270,t.lamalefmaddaaboveisolatedarabic=65269,t.lamarabic=1604,t.lambda=955,t.lambdastroke=411,t.lamed=1500,t.lameddagesh=64316,t.lameddageshhebrew=64316,t.lamedhebrew=1500,t.lamfinalarabic=65246,t.lamhahinitialarabic=64714,t.laminitialarabic=65247,t.lamjeeminitialarabic=64713,t.lamkhahinitialarabic=64715,t.lamlamhehisolatedarabic=65010,t.lammedialarabic=65248,t.lammeemhahinitialarabic=64904,t.lammeeminitialarabic=64716,t.largecircle=9711,t.lbar=410,t.lbelt=620,t.lbopomofo=12556,t.lcaron=318,t.lcedilla=316,t.lcircle=9435,t.lcircumflexbelow=7741,t.lcommaaccent=316,t.ldot=320,t.ldotaccent=320,t.ldotbelow=7735,t.ldotbelowmacron=7737,t.leftangleabovecmb=794,t.lefttackbelowcmb=792,t.less=60,t.lessequal=8804,t.lessequalorgreater=8922,t.lessmonospace=65308,t.lessorequivalent=8818,t.lessorgreater=8822,t.lessoverequal=8806,t.lesssmall=65124,t.lezh=622,t.lfblock=9612,t.lhookretroflex=621,t.lira=8356,t.liwnarmenian=1388,t.lj=457,t.ljecyrillic=1113,t.ll=63168,t.lladeva=2355,t.llagujarati=2739,t.llinebelow=7739,t.llladeva=2356,t.llvocalicbengali=2529,t.llvocalicdeva=2401,t.llvocalicvowelsignbengali=2531,t.llvocalicvowelsigndeva=2403,t.lmiddletilde=619,t.lmonospace=65356,t.lmsquare=13264,t.lochulathai=3628,t.logicaland=8743,t.logicalnot=172,t.logicalnotreversed=8976,t.logicalor=8744,t.lolingthai=3621,t.longs=383,t.lowlinecenterline=65102,t.lowlinecmb=818,t.lowlinedashed=65101,t.lozenge=9674,t.lparen=9383,t.lslash=322,t.lsquare=8467,t.lsuperior=63214,t.ltshade=9617,t.luthai=3622,t.lvocalicbengali=2444,t.lvocalicdeva=2316,t.lvocalicvowelsignbengali=2530,t.lvocalicvowelsigndeva=2402,t.lxsquare=13267,t.m=109,t.mabengali=2478,t.macron=175,t.macronbelowcmb=817,t.macroncmb=772,t.macronlowmod=717,t.macronmonospace=65507,t.macute=7743,t.madeva=2350,t.magujarati=2734,t.magurmukhi=2606,t.mahapakhhebrew=1444,t.mahapakhlefthebrew=1444,t.mahiragana=12414,t.maichattawalowleftthai=63637,t.maichattawalowrightthai=63636,t.maichattawathai=3659,t.maichattawaupperleftthai=63635,t.maieklowleftthai=63628,t.maieklowrightthai=63627,t.maiekthai=3656,t.maiekupperleftthai=63626,t.maihanakatleftthai=63620,t.maihanakatthai=3633,t.maitaikhuleftthai=63625,t.maitaikhuthai=3655,t.maitholowleftthai=63631,t.maitholowrightthai=63630,t.maithothai=3657,t.maithoupperleftthai=63629,t.maitrilowleftthai=63634,t.maitrilowrightthai=63633,t.maitrithai=3658,t.maitriupperleftthai=63632,t.maiyamokthai=3654,t.makatakana=12510,t.makatakanahalfwidth=65423,t.male=9794,t.mansyonsquare=13127,t.maqafhebrew=1470,t.mars=9794,t.masoracirclehebrew=1455,t.masquare=13187,t.mbopomofo=12551,t.mbsquare=13268,t.mcircle=9436,t.mcubedsquare=13221,t.mdotaccent=7745,t.mdotbelow=7747,t.meemarabic=1605,t.meemfinalarabic=65250,t.meeminitialarabic=65251,t.meemmedialarabic=65252,t.meemmeeminitialarabic=64721,t.meemmeemisolatedarabic=64584,t.meetorusquare=13133,t.mehiragana=12417,t.meizierasquare=13182,t.mekatakana=12513,t.mekatakanahalfwidth=65426,t.mem=1502,t.memdagesh=64318,t.memdageshhebrew=64318,t.memhebrew=1502,t.menarmenian=1396,t.merkhahebrew=1445,t.merkhakefulahebrew=1446,t.merkhakefulalefthebrew=1446,t.merkhalefthebrew=1445,t.mhook=625,t.mhzsquare=13202,t.middledotkatakanahalfwidth=65381,t.middot=183,t.mieumacirclekorean=12914,t.mieumaparenkorean=12818,t.mieumcirclekorean=12900,t.mieumkorean=12609,t.mieumpansioskorean=12656,t.mieumparenkorean=12804,t.mieumpieupkorean=12654,t.mieumsioskorean=12655,t.mihiragana=12415,t.mikatakana=12511,t.mikatakanahalfwidth=65424,t.minus=8722,t.minusbelowcmb=800,t.minuscircle=8854,t.minusmod=727,t.minusplus=8723,t.minute=8242,t.miribaarusquare=13130,t.mirisquare=13129,t.mlonglegturned=624,t.mlsquare=13206,t.mmcubedsquare=13219,t.mmonospace=65357,t.mmsquaredsquare=13215,t.mohiragana=12418,t.mohmsquare=13249,t.mokatakana=12514,t.mokatakanahalfwidth=65427,t.molsquare=13270,t.momathai=3617,t.moverssquare=13223,t.moverssquaredsquare=13224,t.mparen=9384,t.mpasquare=13227,t.mssquare=13235,t.msuperior=63215,t.mturned=623,t.mu=181,t.mu1=181,t.muasquare=13186,t.muchgreater=8811,t.muchless=8810,t.mufsquare=13196,t.mugreek=956,t.mugsquare=13197,t.muhiragana=12416,t.mukatakana=12512,t.mukatakanahalfwidth=65425,t.mulsquare=13205,t.multiply=215,t.mumsquare=13211,t.munahhebrew=1443,t.munahlefthebrew=1443,t.musicalnote=9834,t.musicalnotedbl=9835,t.musicflatsign=9837,t.musicsharpsign=9839,t.mussquare=13234,t.muvsquare=13238,t.muwsquare=13244,t.mvmegasquare=13241,t.mvsquare=13239,t.mwmegasquare=13247,t.mwsquare=13245,t.n=110,t.nabengali=2472,t.nabla=8711,t.nacute=324,t.nadeva=2344,t.nagujarati=2728,t.nagurmukhi=2600,t.nahiragana=12394,t.nakatakana=12490,t.nakatakanahalfwidth=65413,t.napostrophe=329,t.nasquare=13185,t.nbopomofo=12555,t.nbspace=160,t.ncaron=328,t.ncedilla=326,t.ncircle=9437,t.ncircumflexbelow=7755,t.ncommaaccent=326,t.ndotaccent=7749,t.ndotbelow=7751,t.nehiragana=12397,t.nekatakana=12493,t.nekatakanahalfwidth=65416,t.newsheqelsign=8362,t.nfsquare=13195,t.ngabengali=2457,t.ngadeva=2329,t.ngagujarati=2713,t.ngagurmukhi=2585,t.ngonguthai=3591,t.nhiragana=12435,t.nhookleft=626,t.nhookretroflex=627,t.nieunacirclekorean=12911,t.nieunaparenkorean=12815,t.nieuncieuckorean=12597,t.nieuncirclekorean=12897,t.nieunhieuhkorean=12598,t.nieunkorean=12596,t.nieunpansioskorean=12648,t.nieunparenkorean=12801,t.nieunsioskorean=12647,t.nieuntikeutkorean=12646,t.nihiragana=12395,t.nikatakana=12491,t.nikatakanahalfwidth=65414,t.nikhahitleftthai=63641,t.nikhahitthai=3661,t.nine=57,t.ninearabic=1641,t.ninebengali=2543,t.ninecircle=9320,t.ninecircleinversesansserif=10130,t.ninedeva=2415,t.ninegujarati=2799,t.ninegurmukhi=2671,t.ninehackarabic=1641,t.ninehangzhou=12329,t.nineideographicparen=12840,t.nineinferior=8329,t.ninemonospace=65305,t.nineoldstyle=63289,t.nineparen=9340,t.nineperiod=9360,t.ninepersian=1785,t.nineroman=8568,t.ninesuperior=8313,t.nineteencircle=9330,t.nineteenparen=9350,t.nineteenperiod=9370,t.ninethai=3673,t.nj=460,t.njecyrillic=1114,t.nkatakana=12531,t.nkatakanahalfwidth=65437,t.nlegrightlong=414,t.nlinebelow=7753,t.nmonospace=65358,t.nmsquare=13210,t.nnabengali=2467,t.nnadeva=2339,t.nnagujarati=2723,t.nnagurmukhi=2595,t.nnnadeva=2345,t.nohiragana=12398,t.nokatakana=12494,t.nokatakanahalfwidth=65417,t.nonbreakingspace=160,t.nonenthai=3603,t.nonuthai=3609,t.noonarabic=1606,t.noonfinalarabic=65254,t.noonghunnaarabic=1722,t.noonghunnafinalarabic=64415,t.nooninitialarabic=65255,t.noonjeeminitialarabic=64722,t.noonjeemisolatedarabic=64587,t.noonmedialarabic=65256,t.noonmeeminitialarabic=64725,t.noonmeemisolatedarabic=64590,t.noonnoonfinalarabic=64653,t.notcontains=8716,t.notelement=8713,t.notelementof=8713,t.notequal=8800,t.notgreater=8815,t.notgreaternorequal=8817,t.notgreaternorless=8825,t.notidentical=8802,t.notless=8814,t.notlessnorequal=8816,t.notparallel=8742,t.notprecedes=8832,t.notsubset=8836,t.notsucceeds=8833,t.notsuperset=8837,t.nowarmenian=1398,t.nparen=9385,t.nssquare=13233,t.nsuperior=8319,t.ntilde=241,t.nu=957,t.nuhiragana=12396,t.nukatakana=12492,t.nukatakanahalfwidth=65415,t.nuktabengali=2492,t.nuktadeva=2364,t.nuktagujarati=2748,t.nuktagurmukhi=2620,t.numbersign=35,t.numbersignmonospace=65283,t.numbersignsmall=65119,t.numeralsigngreek=884,t.numeralsignlowergreek=885,t.numero=8470,t.nun=1504,t.nundagesh=64320,t.nundageshhebrew=64320,t.nunhebrew=1504,t.nvsquare=13237,t.nwsquare=13243,t.nyabengali=2462,t.nyadeva=2334,t.nyagujarati=2718,t.nyagurmukhi=2590,t.o=111,t.oacute=243,t.oangthai=3629,t.obarred=629,t.obarredcyrillic=1257,t.obarreddieresiscyrillic=1259,t.obengali=2451,t.obopomofo=12571,t.obreve=335,t.ocandradeva=2321,t.ocandragujarati=2705,t.ocandravowelsigndeva=2377,t.ocandravowelsigngujarati=2761,t.ocaron=466,t.ocircle=9438,t.ocircumflex=244,t.ocircumflexacute=7889,t.ocircumflexdotbelow=7897,t.ocircumflexgrave=7891,t.ocircumflexhookabove=7893,t.ocircumflextilde=7895,t.ocyrillic=1086,t.odblacute=337,t.odblgrave=525,t.odeva=2323,t.odieresis=246,t.odieresiscyrillic=1255,t.odotbelow=7885,t.oe=339,t.oekorean=12634,t.ogonek=731,t.ogonekcmb=808,t.ograve=242,t.ogujarati=2707,t.oharmenian=1413,t.ohiragana=12362,t.ohookabove=7887,t.ohorn=417,t.ohornacute=7899,t.ohorndotbelow=7907,t.ohorngrave=7901,t.ohornhookabove=7903,t.ohorntilde=7905,t.ohungarumlaut=337,t.oi=419,t.oinvertedbreve=527,t.okatakana=12458,t.okatakanahalfwidth=65397,t.okorean=12631,t.olehebrew=1451,t.omacron=333,t.omacronacute=7763,t.omacrongrave=7761,t.omdeva=2384,t.omega=969,t.omega1=982,t.omegacyrillic=1121,t.omegalatinclosed=631,t.omegaroundcyrillic=1147,t.omegatitlocyrillic=1149,t.omegatonos=974,t.omgujarati=2768,t.omicron=959,t.omicrontonos=972,t.omonospace=65359,t.one=49,t.onearabic=1633,t.onebengali=2535,t.onecircle=9312,t.onecircleinversesansserif=10122,t.onedeva=2407,t.onedotenleader=8228,t.oneeighth=8539,t.onefitted=63196,t.onegujarati=2791,t.onegurmukhi=2663,t.onehackarabic=1633,t.onehalf=189,t.onehangzhou=12321,t.oneideographicparen=12832,t.oneinferior=8321,t.onemonospace=65297,t.onenumeratorbengali=2548,t.oneoldstyle=63281,t.oneparen=9332,t.oneperiod=9352,t.onepersian=1777,t.onequarter=188,t.oneroman=8560,t.onesuperior=185,t.onethai=3665,t.onethird=8531,t.oogonek=491,t.oogonekmacron=493,t.oogurmukhi=2579,t.oomatragurmukhi=2635,t.oopen=596,t.oparen=9386,t.openbullet=9702,t.option=8997,t.ordfeminine=170,t.ordmasculine=186,t.orthogonal=8735,t.oshortdeva=2322,t.oshortvowelsigndeva=2378,t.oslash=248,t.oslashacute=511,t.osmallhiragana=12361,t.osmallkatakana=12457,t.osmallkatakanahalfwidth=65387,t.ostrokeacute=511,t.osuperior=63216,t.otcyrillic=1151,t.otilde=245,t.otildeacute=7757,t.otildedieresis=7759,t.oubopomofo=12577,t.overline=8254,t.overlinecenterline=65098,t.overlinecmb=773,t.overlinedashed=65097,t.overlinedblwavy=65100,t.overlinewavy=65099,t.overscore=175,t.ovowelsignbengali=2507,t.ovowelsigndeva=2379,t.ovowelsigngujarati=2763,t.p=112,t.paampssquare=13184,t.paasentosquare=13099,t.pabengali=2474,t.pacute=7765,t.padeva=2346,t.pagedown=8671,t.pageup=8670,t.pagujarati=2730,t.pagurmukhi=2602,t.pahiragana=12401,t.paiyannoithai=3631,t.pakatakana=12497,t.palatalizationcyrilliccmb=1156,t.palochkacyrillic=1216,t.pansioskorean=12671,t.paragraph=182,t.parallel=8741,t.parenleft=40,t.parenleftaltonearabic=64830,t.parenleftbt=63725,t.parenleftex=63724,t.parenleftinferior=8333,t.parenleftmonospace=65288,t.parenleftsmall=65113,t.parenleftsuperior=8317,t.parenlefttp=63723,t.parenleftvertical=65077,t.parenright=41,t.parenrightaltonearabic=64831,t.parenrightbt=63736,t.parenrightex=63735,t.parenrightinferior=8334,t.parenrightmonospace=65289,t.parenrightsmall=65114,t.parenrightsuperior=8318,t.parenrighttp=63734,t.parenrightvertical=65078,t.partialdiff=8706,t.paseqhebrew=1472,t.pashtahebrew=1433,t.pasquare=13225,t.patah=1463,t.patah11=1463,t.patah1d=1463,t.patah2a=1463,t.patahhebrew=1463,t.patahnarrowhebrew=1463,t.patahquarterhebrew=1463,t.patahwidehebrew=1463,t.pazerhebrew=1441,t.pbopomofo=12550,t.pcircle=9439,t.pdotaccent=7767,t.pe=1508,t.pecyrillic=1087,t.pedagesh=64324,t.pedageshhebrew=64324,t.peezisquare=13115,t.pefinaldageshhebrew=64323,t.peharabic=1662,t.peharmenian=1402,t.pehebrew=1508,t.pehfinalarabic=64343,t.pehinitialarabic=64344,t.pehiragana=12410,t.pehmedialarabic=64345,t.pekatakana=12506,t.pemiddlehookcyrillic=1191,t.perafehebrew=64334,t.percent=37,t.percentarabic=1642,t.percentmonospace=65285,t.percentsmall=65130,t.period=46,t.periodarmenian=1417,t.periodcentered=183,t.periodhalfwidth=65377,t.periodinferior=63207,t.periodmonospace=65294,t.periodsmall=65106,t.periodsuperior=63208,t.perispomenigreekcmb=834,t.perpendicular=8869,t.perthousand=8240,t.peseta=8359,t.pfsquare=13194,t.phabengali=2475,t.phadeva=2347,t.phagujarati=2731,t.phagurmukhi=2603,t.phi=966,t.phi1=981,t.phieuphacirclekorean=12922,t.phieuphaparenkorean=12826,t.phieuphcirclekorean=12908,t.phieuphkorean=12621,t.phieuphparenkorean=12812,t.philatin=632,t.phinthuthai=3642,t.phisymbolgreek=981,t.phook=421,t.phophanthai=3614,t.phophungthai=3612,t.phosamphaothai=3616,t.pi=960,t.pieupacirclekorean=12915,t.pieupaparenkorean=12819,t.pieupcieuckorean=12662,t.pieupcirclekorean=12901,t.pieupkiyeokkorean=12658,t.pieupkorean=12610,t.pieupparenkorean=12805,t.pieupsioskiyeokkorean=12660,t.pieupsioskorean=12612,t.pieupsiostikeutkorean=12661,t.pieupthieuthkorean=12663,t.pieuptikeutkorean=12659,t.pihiragana=12404,t.pikatakana=12500,t.pisymbolgreek=982,t.piwrarmenian=1411,t.planckover2pi=8463,t.planckover2pi1=8463,t.plus=43,t.plusbelowcmb=799,t.pluscircle=8853,t.plusminus=177,t.plusmod=726,t.plusmonospace=65291,t.plussmall=65122,t.plussuperior=8314,t.pmonospace=65360,t.pmsquare=13272,t.pohiragana=12413,t.pointingindexdownwhite=9759,t.pointingindexleftwhite=9756,t.pointingindexrightwhite=9758,t.pointingindexupwhite=9757,t.pokatakana=12509,t.poplathai=3611,t.postalmark=12306,t.postalmarkface=12320,t.pparen=9387,t.precedes=8826,t.prescription=8478,t.primemod=697,t.primereversed=8245,t.product=8719,t.projective=8965,t.prolongedkana=12540,t.propellor=8984,t.propersubset=8834,t.propersuperset=8835,t.proportion=8759,t.proportional=8733,t.psi=968,t.psicyrillic=1137,t.psilipneumatacyrilliccmb=1158,t.pssquare=13232,t.puhiragana=12407,t.pukatakana=12503,t.pvsquare=13236,t.pwsquare=13242,t.q=113,t.qadeva=2392,t.qadmahebrew=1448,t.qafarabic=1602,t.qaffinalarabic=65238,t.qafinitialarabic=65239,t.qafmedialarabic=65240,t.qamats=1464,t.qamats10=1464,t.qamats1a=1464,t.qamats1c=1464,t.qamats27=1464,t.qamats29=1464,t.qamats33=1464,t.qamatsde=1464,t.qamatshebrew=1464,t.qamatsnarrowhebrew=1464,t.qamatsqatanhebrew=1464,t.qamatsqatannarrowhebrew=1464,t.qamatsqatanquarterhebrew=1464,t.qamatsqatanwidehebrew=1464,t.qamatsquarterhebrew=1464,t.qamatswidehebrew=1464,t.qarneyparahebrew=1439,t.qbopomofo=12561,t.qcircle=9440,t.qhook=672,t.qmonospace=65361,t.qof=1511,t.qofdagesh=64327,t.qofdageshhebrew=64327,t.qofhebrew=1511,t.qparen=9388,t.quarternote=9833,t.qubuts=1467,t.qubuts18=1467,t.qubuts25=1467,t.qubuts31=1467,t.qubutshebrew=1467,t.qubutsnarrowhebrew=1467,t.qubutsquarterhebrew=1467,t.qubutswidehebrew=1467,t.question=63,t.questionarabic=1567,t.questionarmenian=1374,t.questiondown=191,t.questiondownsmall=63423,t.questiongreek=894,t.questionmonospace=65311,t.questionsmall=63295,t.quotedbl=34,t.quotedblbase=8222,t.quotedblleft=8220,t.quotedblmonospace=65282,t.quotedblprime=12318,t.quotedblprimereversed=12317,t.quotedblright=8221,t.quoteleft=8216,t.quoteleftreversed=8219,t.quotereversed=8219,t.quoteright=8217,t.quoterightn=329,t.quotesinglbase=8218,t.quotesingle=39,t.quotesinglemonospace=65287,t.r=114,t.raarmenian=1404,t.rabengali=2480,t.racute=341,t.radeva=2352,t.radical=8730,t.radicalex=63717,t.radoverssquare=13230,t.radoverssquaredsquare=13231,t.radsquare=13229,t.rafe=1471,t.rafehebrew=1471,t.ragujarati=2736,t.ragurmukhi=2608,t.rahiragana=12425,t.rakatakana=12521,t.rakatakanahalfwidth=65431,t.ralowerdiagonalbengali=2545,t.ramiddlediagonalbengali=2544,t.ramshorn=612,t.ratio=8758,t.rbopomofo=12566,t.rcaron=345,t.rcedilla=343,t.rcircle=9441,t.rcommaaccent=343,t.rdblgrave=529,t.rdotaccent=7769,t.rdotbelow=7771,t.rdotbelowmacron=7773,t.referencemark=8251,t.reflexsubset=8838,t.reflexsuperset=8839,t.registered=174,t.registersans=63720,t.registerserif=63194,t.reharabic=1585,t.reharmenian=1408,t.rehfinalarabic=65198,t.rehiragana=12428,t.rekatakana=12524,t.rekatakanahalfwidth=65434,t.resh=1512,t.reshdageshhebrew=64328,t.reshhebrew=1512,t.reversedtilde=8765,t.reviahebrew=1431,t.reviamugrashhebrew=1431,t.revlogicalnot=8976,t.rfishhook=638,t.rfishhookreversed=639,t.rhabengali=2525,t.rhadeva=2397,t.rho=961,t.rhook=637,t.rhookturned=635,t.rhookturnedsuperior=693,t.rhosymbolgreek=1009,t.rhotichookmod=734,t.rieulacirclekorean=12913,t.rieulaparenkorean=12817,t.rieulcirclekorean=12899,t.rieulhieuhkorean=12608,t.rieulkiyeokkorean=12602,t.rieulkiyeoksioskorean=12649,t.rieulkorean=12601,t.rieulmieumkorean=12603,t.rieulpansioskorean=12652,t.rieulparenkorean=12803,t.rieulphieuphkorean=12607,t.rieulpieupkorean=12604,t.rieulpieupsioskorean=12651,t.rieulsioskorean=12605,t.rieulthieuthkorean=12606,t.rieultikeutkorean=12650,t.rieulyeorinhieuhkorean=12653,t.rightangle=8735,t.righttackbelowcmb=793,t.righttriangle=8895,t.rihiragana=12426,t.rikatakana=12522,t.rikatakanahalfwidth=65432,t.ring=730,t.ringbelowcmb=805,t.ringcmb=778,t.ringhalfleft=703,t.ringhalfleftarmenian=1369,t.ringhalfleftbelowcmb=796,t.ringhalfleftcentered=723,t.ringhalfright=702,t.ringhalfrightbelowcmb=825,t.ringhalfrightcentered=722,t.rinvertedbreve=531,t.rittorusquare=13137,t.rlinebelow=7775,t.rlongleg=636,t.rlonglegturned=634,t.rmonospace=65362,t.rohiragana=12429,t.rokatakana=12525,t.rokatakanahalfwidth=65435,t.roruathai=3619,t.rparen=9389,t.rrabengali=2524,t.rradeva=2353,t.rragurmukhi=2652,t.rreharabic=1681,t.rrehfinalarabic=64397,t.rrvocalicbengali=2528,t.rrvocalicdeva=2400,t.rrvocalicgujarati=2784,t.rrvocalicvowelsignbengali=2500,t.rrvocalicvowelsigndeva=2372,t.rrvocalicvowelsigngujarati=2756,t.rsuperior=63217,t.rtblock=9616,t.rturned=633,t.rturnedsuperior=692,t.ruhiragana=12427,t.rukatakana=12523,t.rukatakanahalfwidth=65433,t.rupeemarkbengali=2546,t.rupeesignbengali=2547,t.rupiah=63197,t.ruthai=3620,t.rvocalicbengali=2443,t.rvocalicdeva=2315,t.rvocalicgujarati=2699,t.rvocalicvowelsignbengali=2499,t.rvocalicvowelsigndeva=2371,t.rvocalicvowelsigngujarati=2755,t.s=115,t.sabengali=2488,t.sacute=347,t.sacutedotaccent=7781,t.sadarabic=1589,t.sadeva=2360,t.sadfinalarabic=65210,t.sadinitialarabic=65211,t.sadmedialarabic=65212,t.sagujarati=2744,t.sagurmukhi=2616,t.sahiragana=12373,t.sakatakana=12469,t.sakatakanahalfwidth=65403,t.sallallahoualayhewasallamarabic=65018,t.samekh=1505,t.samekhdagesh=64321,t.samekhdageshhebrew=64321,t.samekhhebrew=1505,t.saraaathai=3634,t.saraaethai=3649,t.saraaimaimalaithai=3652,t.saraaimaimuanthai=3651,t.saraamthai=3635,t.saraathai=3632,t.saraethai=3648,t.saraiileftthai=63622,t.saraiithai=3637,t.saraileftthai=63621,t.saraithai=3636,t.saraothai=3650,t.saraueeleftthai=63624,t.saraueethai=3639,t.saraueleftthai=63623,t.sarauethai=3638,t.sarauthai=3640,t.sarauuthai=3641,t.sbopomofo=12569,t.scaron=353,t.scarondotaccent=7783,t.scedilla=351,t.schwa=601,t.schwacyrillic=1241,t.schwadieresiscyrillic=1243,t.schwahook=602,t.scircle=9442,t.scircumflex=349,t.scommaaccent=537,t.sdotaccent=7777,t.sdotbelow=7779,t.sdotbelowdotaccent=7785,t.seagullbelowcmb=828,t.second=8243,t.secondtonechinese=714,t.section=167,t.seenarabic=1587,t.seenfinalarabic=65202,t.seeninitialarabic=65203,t.seenmedialarabic=65204,t.segol=1462,t.segol13=1462,t.segol1f=1462,t.segol2c=1462,t.segolhebrew=1462,t.segolnarrowhebrew=1462,t.segolquarterhebrew=1462,t.segoltahebrew=1426,t.segolwidehebrew=1462,t.seharmenian=1405,t.sehiragana=12379,t.sekatakana=12475,t.sekatakanahalfwidth=65406,t.semicolon=59,t.semicolonarabic=1563,t.semicolonmonospace=65307,t.semicolonsmall=65108,t.semivoicedmarkkana=12444,t.semivoicedmarkkanahalfwidth=65439,t.sentisquare=13090,t.sentosquare=13091,t.seven=55,t.sevenarabic=1639,t.sevenbengali=2541,t.sevencircle=9318,t.sevencircleinversesansserif=10128,t.sevendeva=2413,t.seveneighths=8542,t.sevengujarati=2797,t.sevengurmukhi=2669,t.sevenhackarabic=1639,t.sevenhangzhou=12327,t.sevenideographicparen=12838,t.seveninferior=8327,t.sevenmonospace=65303,t.sevenoldstyle=63287,t.sevenparen=9338,t.sevenperiod=9358,t.sevenpersian=1783,t.sevenroman=8566,t.sevensuperior=8311,t.seventeencircle=9328,t.seventeenparen=9348,t.seventeenperiod=9368,t.seventhai=3671,t.sfthyphen=173,t.shaarmenian=1399,t.shabengali=2486,t.shacyrillic=1096,t.shaddaarabic=1617,t.shaddadammaarabic=64609,t.shaddadammatanarabic=64606,t.shaddafathaarabic=64608,t.shaddakasraarabic=64610,t.shaddakasratanarabic=64607,t.shade=9618,t.shadedark=9619,t.shadelight=9617,t.shademedium=9618,t.shadeva=2358,t.shagujarati=2742,t.shagurmukhi=2614,t.shalshelethebrew=1427,t.shbopomofo=12565,t.shchacyrillic=1097,t.sheenarabic=1588,t.sheenfinalarabic=65206,t.sheeninitialarabic=65207,t.sheenmedialarabic=65208,t.sheicoptic=995,t.sheqel=8362,t.sheqelhebrew=8362,t.sheva=1456,t.sheva115=1456,t.sheva15=1456,t.sheva22=1456,t.sheva2e=1456,t.shevahebrew=1456,t.shevanarrowhebrew=1456,t.shevaquarterhebrew=1456,t.shevawidehebrew=1456,t.shhacyrillic=1211,t.shimacoptic=1005,t.shin=1513,t.shindagesh=64329,t.shindageshhebrew=64329,t.shindageshshindot=64300,t.shindageshshindothebrew=64300,t.shindageshsindot=64301,t.shindageshsindothebrew=64301,t.shindothebrew=1473,t.shinhebrew=1513,t.shinshindot=64298,t.shinshindothebrew=64298,t.shinsindot=64299,t.shinsindothebrew=64299,t.shook=642,t.sigma=963,t.sigma1=962,t.sigmafinal=962,t.sigmalunatesymbolgreek=1010,t.sihiragana=12375,t.sikatakana=12471,t.sikatakanahalfwidth=65404,t.siluqhebrew=1469,t.siluqlefthebrew=1469,t.similar=8764,t.sindothebrew=1474,t.siosacirclekorean=12916,t.siosaparenkorean=12820,t.sioscieuckorean=12670,t.sioscirclekorean=12902,t.sioskiyeokkorean=12666,t.sioskorean=12613,t.siosnieunkorean=12667,t.siosparenkorean=12806,t.siospieupkorean=12669,t.siostikeutkorean=12668,t.six=54,t.sixarabic=1638,t.sixbengali=2540,t.sixcircle=9317,t.sixcircleinversesansserif=10127,t.sixdeva=2412,t.sixgujarati=2796,t.sixgurmukhi=2668,t.sixhackarabic=1638,t.sixhangzhou=12326,t.sixideographicparen=12837,t.sixinferior=8326,t.sixmonospace=65302,t.sixoldstyle=63286,t.sixparen=9337,t.sixperiod=9357,t.sixpersian=1782,t.sixroman=8565,t.sixsuperior=8310,t.sixteencircle=9327,t.sixteencurrencydenominatorbengali=2553,t.sixteenparen=9347,t.sixteenperiod=9367,t.sixthai=3670,t.slash=47,t.slashmonospace=65295,t.slong=383,t.slongdotaccent=7835,t.smileface=9786,t.smonospace=65363,t.sofpasuqhebrew=1475,t.softhyphen=173,t.softsigncyrillic=1100,t.sohiragana=12381,t.sokatakana=12477,t.sokatakanahalfwidth=65407,t.soliduslongoverlaycmb=824,t.solidusshortoverlaycmb=823,t.sorusithai=3625,t.sosalathai=3624,t.sosothai=3595,t.sosuathai=3626,t.space=32,t.spacehackarabic=32,t.spade=9824,t.spadesuitblack=9824,t.spadesuitwhite=9828,t.sparen=9390,t.squarebelowcmb=827,t.squarecc=13252,t.squarecm=13213,t.squarediagonalcrosshatchfill=9641,t.squarehorizontalfill=9636,t.squarekg=13199,t.squarekm=13214,t.squarekmcapital=13262,t.squareln=13265,t.squarelog=13266,t.squaremg=13198,t.squaremil=13269,t.squaremm=13212,t.squaremsquared=13217,t.squareorthogonalcrosshatchfill=9638,t.squareupperlefttolowerrightfill=9639,t.squareupperrighttolowerleftfill=9640,t.squareverticalfill=9637,t.squarewhitewithsmallblack=9635,t.srsquare=13275,t.ssabengali=2487,t.ssadeva=2359,t.ssagujarati=2743,t.ssangcieuckorean=12617,t.ssanghieuhkorean=12677,t.ssangieungkorean=12672,t.ssangkiyeokkorean=12594,t.ssangnieunkorean=12645,t.ssangpieupkorean=12611,t.ssangsioskorean=12614,t.ssangtikeutkorean=12600,t.ssuperior=63218,t.sterling=163,t.sterlingmonospace=65505,t.strokelongoverlaycmb=822,t.strokeshortoverlaycmb=821,t.subset=8834,t.subsetnotequal=8842,t.subsetorequal=8838,t.succeeds=8827,t.suchthat=8715,t.suhiragana=12377,t.sukatakana=12473,t.sukatakanahalfwidth=65405,t.sukunarabic=1618,t.summation=8721,t.sun=9788,t.superset=8835,t.supersetnotequal=8843,t.supersetorequal=8839,t.svsquare=13276,t.syouwaerasquare=13180,t.t=116,t.tabengali=2468,t.tackdown=8868,t.tackleft=8867,t.tadeva=2340,t.tagujarati=2724,t.tagurmukhi=2596,t.taharabic=1591,t.tahfinalarabic=65218,t.tahinitialarabic=65219,t.tahiragana=12383,t.tahmedialarabic=65220,t.taisyouerasquare=13181,t.takatakana=12479,t.takatakanahalfwidth=65408,t.tatweelarabic=1600,t.tau=964,t.tav=1514,t.tavdages=64330,t.tavdagesh=64330,t.tavdageshhebrew=64330,t.tavhebrew=1514,t.tbar=359,t.tbopomofo=12554,t.tcaron=357,t.tccurl=680,t.tcedilla=355,t.tcheharabic=1670,t.tchehfinalarabic=64379,t.tchehinitialarabic=64380,t.tchehmedialarabic=64381,t.tcircle=9443,t.tcircumflexbelow=7793,t.tcommaaccent=355,t.tdieresis=7831,t.tdotaccent=7787,t.tdotbelow=7789,t.tecyrillic=1090,t.tedescendercyrillic=1197,t.teharabic=1578,t.tehfinalarabic=65174,t.tehhahinitialarabic=64674,t.tehhahisolatedarabic=64524,t.tehinitialarabic=65175,t.tehiragana=12390,t.tehjeeminitialarabic=64673,t.tehjeemisolatedarabic=64523,t.tehmarbutaarabic=1577,t.tehmarbutafinalarabic=65172,t.tehmedialarabic=65176,t.tehmeeminitialarabic=64676,t.tehmeemisolatedarabic=64526,t.tehnoonfinalarabic=64627,t.tekatakana=12486,t.tekatakanahalfwidth=65411,t.telephone=8481,t.telephoneblack=9742,t.telishagedolahebrew=1440,t.telishaqetanahebrew=1449,t.tencircle=9321,t.tenideographicparen=12841,t.tenparen=9341,t.tenperiod=9361,t.tenroman=8569,t.tesh=679,t.tet=1496,t.tetdagesh=64312,t.tetdageshhebrew=64312,t.tethebrew=1496,t.tetsecyrillic=1205,t.tevirhebrew=1435,t.tevirlefthebrew=1435,t.thabengali=2469,t.thadeva=2341,t.thagujarati=2725,t.thagurmukhi=2597,t.thalarabic=1584,t.thalfinalarabic=65196,t.thanthakhatlowleftthai=63640,t.thanthakhatlowrightthai=63639,t.thanthakhatthai=3660,t.thanthakhatupperleftthai=63638,t.theharabic=1579,t.thehfinalarabic=65178,t.thehinitialarabic=65179,t.thehmedialarabic=65180,t.thereexists=8707,t.therefore=8756,t.theta=952,t.theta1=977,t.thetasymbolgreek=977,t.thieuthacirclekorean=12921,t.thieuthaparenkorean=12825,t.thieuthcirclekorean=12907,t.thieuthkorean=12620,t.thieuthparenkorean=12811,t.thirteencircle=9324,t.thirteenparen=9344,t.thirteenperiod=9364,t.thonangmonthothai=3601,t.thook=429,t.thophuthaothai=3602,t.thorn=254,t.thothahanthai=3607,t.thothanthai=3600,t.thothongthai=3608,t.thothungthai=3606,t.thousandcyrillic=1154,t.thousandsseparatorarabic=1644,t.thousandsseparatorpersian=1644,t.three=51,t.threearabic=1635,t.threebengali=2537,t.threecircle=9314,t.threecircleinversesansserif=10124,t.threedeva=2409,t.threeeighths=8540,t.threegujarati=2793,t.threegurmukhi=2665,t.threehackarabic=1635,t.threehangzhou=12323,t.threeideographicparen=12834,t.threeinferior=8323,t.threemonospace=65299,t.threenumeratorbengali=2550,t.threeoldstyle=63283,t.threeparen=9334,t.threeperiod=9354,t.threepersian=1779,t.threequarters=190,t.threequartersemdash=63198,t.threeroman=8562,t.threesuperior=179,t.threethai=3667,t.thzsquare=13204,t.tihiragana=12385,t.tikatakana=12481,t.tikatakanahalfwidth=65409,t.tikeutacirclekorean=12912,t.tikeutaparenkorean=12816,t.tikeutcirclekorean=12898,t.tikeutkorean=12599,t.tikeutparenkorean=12802,t.tilde=732,t.tildebelowcmb=816,t.tildecmb=771,t.tildecomb=771,t.tildedoublecmb=864,t.tildeoperator=8764,t.tildeoverlaycmb=820,t.tildeverticalcmb=830,t.timescircle=8855,t.tipehahebrew=1430,t.tipehalefthebrew=1430,t.tippigurmukhi=2672,t.titlocyrilliccmb=1155,t.tiwnarmenian=1407,t.tlinebelow=7791,t.tmonospace=65364,t.toarmenian=1385,t.tohiragana=12392,t.tokatakana=12488,t.tokatakanahalfwidth=65412,t.tonebarextrahighmod=741,t.tonebarextralowmod=745,t.tonebarhighmod=742,t.tonebarlowmod=744,t.tonebarmidmod=743,t.tonefive=445,t.tonesix=389,t.tonetwo=424,t.tonos=900,t.tonsquare=13095,t.topatakthai=3599,t.tortoiseshellbracketleft=12308,t.tortoiseshellbracketleftsmall=65117,t.tortoiseshellbracketleftvertical=65081,t.tortoiseshellbracketright=12309,t.tortoiseshellbracketrightsmall=65118,t.tortoiseshellbracketrightvertical=65082,t.totaothai=3605,t.tpalatalhook=427,t.tparen=9391,t.trademark=8482,t.trademarksans=63722,t.trademarkserif=63195,t.tretroflexhook=648,t.triagdn=9660,t.triaglf=9668,t.triagrt=9658,t.triagup=9650,t.ts=678,t.tsadi=1510,t.tsadidagesh=64326,t.tsadidageshhebrew=64326,t.tsadihebrew=1510,t.tsecyrillic=1094,t.tsere=1461,t.tsere12=1461,t.tsere1e=1461,t.tsere2b=1461,t.tserehebrew=1461,t.tserenarrowhebrew=1461,t.tserequarterhebrew=1461,t.tserewidehebrew=1461,t.tshecyrillic=1115,t.tsuperior=63219,t.ttabengali=2463,t.ttadeva=2335,t.ttagujarati=2719,t.ttagurmukhi=2591,t.tteharabic=1657,t.ttehfinalarabic=64359,t.ttehinitialarabic=64360,t.ttehmedialarabic=64361,t.tthabengali=2464,t.tthadeva=2336,t.tthagujarati=2720,t.tthagurmukhi=2592,t.tturned=647,t.tuhiragana=12388,t.tukatakana=12484,t.tukatakanahalfwidth=65410,t.tusmallhiragana=12387,t.tusmallkatakana=12483,t.tusmallkatakanahalfwidth=65391,t.twelvecircle=9323,t.twelveparen=9343,t.twelveperiod=9363,t.twelveroman=8571,t.twentycircle=9331,t.twentyhangzhou=21316,t.twentyparen=9351,t.twentyperiod=9371,t.two=50,t.twoarabic=1634,t.twobengali=2536,t.twocircle=9313,t.twocircleinversesansserif=10123,t.twodeva=2408,t.twodotenleader=8229,t.twodotleader=8229,t.twodotleadervertical=65072,t.twogujarati=2792,t.twogurmukhi=2664,t.twohackarabic=1634,t.twohangzhou=12322,t.twoideographicparen=12833,t.twoinferior=8322,t.twomonospace=65298,t.twonumeratorbengali=2549,t.twooldstyle=63282,t.twoparen=9333,t.twoperiod=9353,t.twopersian=1778,t.tworoman=8561,t.twostroke=443,t.twosuperior=178,t.twothai=3666,t.twothirds=8532,t.u=117,t.uacute=250,t.ubar=649,t.ubengali=2441,t.ubopomofo=12584,t.ubreve=365,t.ucaron=468,t.ucircle=9444,t.ucircumflex=251,t.ucircumflexbelow=7799,t.ucyrillic=1091,t.udattadeva=2385,t.udblacute=369,t.udblgrave=533,t.udeva=2313,t.udieresis=252,t.udieresisacute=472,t.udieresisbelow=7795,t.udieresiscaron=474,t.udieresiscyrillic=1265,t.udieresisgrave=476,t.udieresismacron=470,t.udotbelow=7909,t.ugrave=249,t.ugujarati=2697,t.ugurmukhi=2569,t.uhiragana=12358,t.uhookabove=7911,t.uhorn=432,t.uhornacute=7913,t.uhorndotbelow=7921,t.uhorngrave=7915,t.uhornhookabove=7917,t.uhorntilde=7919,t.uhungarumlaut=369,t.uhungarumlautcyrillic=1267,t.uinvertedbreve=535,t.ukatakana=12454,t.ukatakanahalfwidth=65395,t.ukcyrillic=1145,t.ukorean=12636,t.umacron=363,t.umacroncyrillic=1263,t.umacrondieresis=7803,t.umatragurmukhi=2625,t.umonospace=65365,t.underscore=95,t.underscoredbl=8215,t.underscoremonospace=65343,t.underscorevertical=65075,t.underscorewavy=65103,t.union=8746,t.universal=8704,t.uogonek=371,t.uparen=9392,t.upblock=9600,t.upperdothebrew=1476,t.upsilon=965,t.upsilondieresis=971,t.upsilondieresistonos=944,t.upsilonlatin=650,t.upsilontonos=973,t.uptackbelowcmb=797,t.uptackmod=724,t.uragurmukhi=2675,t.uring=367,t.ushortcyrillic=1118,t.usmallhiragana=12357,t.usmallkatakana=12453,t.usmallkatakanahalfwidth=65385,t.ustraightcyrillic=1199,t.ustraightstrokecyrillic=1201,t.utilde=361,t.utildeacute=7801,t.utildebelow=7797,t.uubengali=2442,t.uudeva=2314,t.uugujarati=2698,t.uugurmukhi=2570,t.uumatragurmukhi=2626,t.uuvowelsignbengali=2498,t.uuvowelsigndeva=2370,t.uuvowelsigngujarati=2754,t.uvowelsignbengali=2497,t.uvowelsigndeva=2369,t.uvowelsigngujarati=2753,t.v=118,t.vadeva=2357,t.vagujarati=2741,t.vagurmukhi=2613,t.vakatakana=12535,t.vav=1493,t.vavdagesh=64309,t.vavdagesh65=64309,t.vavdageshhebrew=64309,t.vavhebrew=1493,t.vavholam=64331,t.vavholamhebrew=64331,t.vavvavhebrew=1520,t.vavyodhebrew=1521,t.vcircle=9445,t.vdotbelow=7807,t.vecyrillic=1074,t.veharabic=1700,t.vehfinalarabic=64363,t.vehinitialarabic=64364,t.vehmedialarabic=64365,t.vekatakana=12537,t.venus=9792,t.verticalbar=124,t.verticallineabovecmb=781,t.verticallinebelowcmb=809,t.verticallinelowmod=716,t.verticallinemod=712,t.vewarmenian=1406,t.vhook=651,t.vikatakana=12536,t.viramabengali=2509,t.viramadeva=2381,t.viramagujarati=2765,t.visargabengali=2435,t.visargadeva=2307,t.visargagujarati=2691,t.vmonospace=65366,t.voarmenian=1400,t.voicediterationhiragana=12446,t.voicediterationkatakana=12542,t.voicedmarkkana=12443,t.voicedmarkkanahalfwidth=65438,t.vokatakana=12538,t.vparen=9393,t.vtilde=7805,t.vturned=652,t.vuhiragana=12436,t.vukatakana=12532,t.w=119,t.wacute=7811,t.waekorean=12633,t.wahiragana=12431,t.wakatakana=12527,t.wakatakanahalfwidth=65436,t.wakorean=12632,t.wasmallhiragana=12430,t.wasmallkatakana=12526,t.wattosquare=13143,t.wavedash=12316,t.wavyunderscorevertical=65076,t.wawarabic=1608,t.wawfinalarabic=65262,t.wawhamzaabovearabic=1572,t.wawhamzaabovefinalarabic=65158,t.wbsquare=13277,t.wcircle=9446,t.wcircumflex=373,t.wdieresis=7813,t.wdotaccent=7815,t.wdotbelow=7817,t.wehiragana=12433,t.weierstrass=8472,t.wekatakana=12529,t.wekorean=12638,t.weokorean=12637,t.wgrave=7809,t.whitebullet=9702,t.whitecircle=9675,t.whitecircleinverse=9689,t.whitecornerbracketleft=12302,t.whitecornerbracketleftvertical=65091,t.whitecornerbracketright=12303,t.whitecornerbracketrightvertical=65092,t.whitediamond=9671,t.whitediamondcontainingblacksmalldiamond=9672,t.whitedownpointingsmalltriangle=9663,t.whitedownpointingtriangle=9661,t.whiteleftpointingsmalltriangle=9667,t.whiteleftpointingtriangle=9665,t.whitelenticularbracketleft=12310,t.whitelenticularbracketright=12311,t.whiterightpointingsmalltriangle=9657,t.whiterightpointingtriangle=9655,t.whitesmallsquare=9643,t.whitesmilingface=9786,t.whitesquare=9633,t.whitestar=9734,t.whitetelephone=9743,t.whitetortoiseshellbracketleft=12312,t.whitetortoiseshellbracketright=12313,t.whiteuppointingsmalltriangle=9653,t.whiteuppointingtriangle=9651,t.wihiragana=12432,t.wikatakana=12528,t.wikorean=12639,t.wmonospace=65367,t.wohiragana=12434,t.wokatakana=12530,t.wokatakanahalfwidth=65382,t.won=8361,t.wonmonospace=65510,t.wowaenthai=3623,t.wparen=9394,t.wring=7832,t.wsuperior=695,t.wturned=653,t.wynn=447,t.x=120,t.xabovecmb=829,t.xbopomofo=12562,t.xcircle=9447,t.xdieresis=7821,t.xdotaccent=7819,t.xeharmenian=1389,t.xi=958,t.xmonospace=65368,t.xparen=9395,t.xsuperior=739,t.y=121,t.yaadosquare=13134,t.yabengali=2479,t.yacute=253,t.yadeva=2351,t.yaekorean=12626,t.yagujarati=2735,t.yagurmukhi=2607,t.yahiragana=12420,t.yakatakana=12516,t.yakatakanahalfwidth=65428,t.yakorean=12625,t.yamakkanthai=3662,t.yasmallhiragana=12419,t.yasmallkatakana=12515,t.yasmallkatakanahalfwidth=65388,t.yatcyrillic=1123,t.ycircle=9448,t.ycircumflex=375,t.ydieresis=255,t.ydotaccent=7823,t.ydotbelow=7925,t.yeharabic=1610,t.yehbarreearabic=1746,t.yehbarreefinalarabic=64431,t.yehfinalarabic=65266,t.yehhamzaabovearabic=1574,t.yehhamzaabovefinalarabic=65162,t.yehhamzaaboveinitialarabic=65163,t.yehhamzaabovemedialarabic=65164,t.yehinitialarabic=65267,t.yehmedialarabic=65268,t.yehmeeminitialarabic=64733,t.yehmeemisolatedarabic=64600,t.yehnoonfinalarabic=64660,t.yehthreedotsbelowarabic=1745,t.yekorean=12630,t.yen=165,t.yenmonospace=65509,t.yeokorean=12629,t.yeorinhieuhkorean=12678,t.yerahbenyomohebrew=1450,t.yerahbenyomolefthebrew=1450,t.yericyrillic=1099,t.yerudieresiscyrillic=1273,t.yesieungkorean=12673,t.yesieungpansioskorean=12675,t.yesieungsioskorean=12674,t.yetivhebrew=1434,t.ygrave=7923,t.yhook=436,t.yhookabove=7927,t.yiarmenian=1397,t.yicyrillic=1111,t.yikorean=12642,t.yinyang=9775,t.yiwnarmenian=1410,t.ymonospace=65369,t.yod=1497,t.yoddagesh=64313,t.yoddageshhebrew=64313,t.yodhebrew=1497,t.yodyodhebrew=1522,t.yodyodpatahhebrew=64287,t.yohiragana=12424,t.yoikorean=12681,t.yokatakana=12520,t.yokatakanahalfwidth=65430,t.yokorean=12635,t.yosmallhiragana=12423,t.yosmallkatakana=12519,t.yosmallkatakanahalfwidth=65390,t.yotgreek=1011,t.yoyaekorean=12680,t.yoyakorean=12679,t.yoyakthai=3618,t.yoyingthai=3597,t.yparen=9396,t.ypogegrammeni=890,t.ypogegrammenigreekcmb=837,t.yr=422,t.yring=7833,t.ysuperior=696,t.ytilde=7929,t.yturned=654,t.yuhiragana=12422,t.yuikorean=12684,t.yukatakana=12518,t.yukatakanahalfwidth=65429,t.yukorean=12640,t.yusbigcyrillic=1131,t.yusbigiotifiedcyrillic=1133,t.yuslittlecyrillic=1127,t.yuslittleiotifiedcyrillic=1129,t.yusmallhiragana=12421,t.yusmallkatakana=12517,t.yusmallkatakanahalfwidth=65389,t.yuyekorean=12683,t.yuyeokorean=12682,t.yyabengali=2527,t.yyadeva=2399,t.z=122,t.zaarmenian=1382,t.zacute=378,t.zadeva=2395,t.zagurmukhi=2651,t.zaharabic=1592,t.zahfinalarabic=65222,t.zahinitialarabic=65223,t.zahiragana=12374,t.zahmedialarabic=65224,t.zainarabic=1586,t.zainfinalarabic=65200,t.zakatakana=12470,t.zaqefgadolhebrew=1429,t.zaqefqatanhebrew=1428,t.zarqahebrew=1432,t.zayin=1494,t.zayindagesh=64310,t.zayindageshhebrew=64310,t.zayinhebrew=1494,t.zbopomofo=12567,t.zcaron=382,t.zcircle=9449,t.zcircumflex=7825,t.zcurl=657,t.zdot=380,t.zdotaccent=380,t.zdotbelow=7827,t.zecyrillic=1079,t.zedescendercyrillic=1177,t.zedieresiscyrillic=1247,t.zehiragana=12380,t.zekatakana=12476,t.zero=48,t.zeroarabic=1632,t.zerobengali=2534,t.zerodeva=2406,t.zerogujarati=2790,t.zerogurmukhi=2662,t.zerohackarabic=1632,t.zeroinferior=8320,t.zeromonospace=65296,t.zerooldstyle=63280,t.zeropersian=1776,t.zerosuperior=8304,t.zerothai=3664,t.zerowidthjoiner=65279,t.zerowidthnonjoiner=8204,t.zerowidthspace=8203,t.zeta=950,t.zhbopomofo=12563,t.zhearmenian=1386,t.zhebrevecyrillic=1218,t.zhecyrillic=1078,t.zhedescendercyrillic=1175,t.zhedieresiscyrillic=1245,t.zihiragana=12376,t.zikatakana=12472,t.zinorhebrew=1454,t.zlinebelow=7829,t.zmonospace=65370,t.zohiragana=12382,t.zokatakana=12478,t.zparen=9397,t.zretroflexhook=656,t.zstroke=438,t.zuhiragana=12378,t.zukatakana=12474,t[".notdef"]=0,t.angbracketleftbig=9001,t.angbracketleftBig=9001,t.angbracketleftbigg=9001,t.angbracketleftBigg=9001,t.angbracketrightBig=9002,t.angbracketrightbig=9002,t.angbracketrightBigg=9002,t.angbracketrightbigg=9002,t.arrowhookleft=8618,t.arrowhookright=8617,t.arrowlefttophalf=8636,t.arrowleftbothalf=8637,t.arrownortheast=8599,t.arrownorthwest=8598,t.arrowrighttophalf=8640,t.arrowrightbothalf=8641,t.arrowsoutheast=8600,t.arrowsouthwest=8601,t.backslashbig=8726,t.backslashBig=8726,t.backslashBigg=8726,t.backslashbigg=8726,t.bardbl=8214,t.bracehtipdownleft=65079,t.bracehtipdownright=65079,t.bracehtipupleft=65080,t.bracehtipupright=65080,t.braceleftBig=123,t.braceleftbig=123,t.braceleftbigg=123,t.braceleftBigg=123,t.bracerightBig=125,t.bracerightbig=125,t.bracerightbigg=125,t.bracerightBigg=125,t.bracketleftbig=91,t.bracketleftBig=91,t.bracketleftbigg=91,t.bracketleftBigg=91,t.bracketrightBig=93,t.bracketrightbig=93,t.bracketrightbigg=93,t.bracketrightBigg=93,t.ceilingleftbig=8968,t.ceilingleftBig=8968,t.ceilingleftBigg=8968,t.ceilingleftbigg=8968,t.ceilingrightbig=8969,t.ceilingrightBig=8969,t.ceilingrightbigg=8969,t.ceilingrightBigg=8969,t.circledotdisplay=8857,t.circledottext=8857,t.circlemultiplydisplay=8855,t.circlemultiplytext=8855,t.circleplusdisplay=8853,t.circleplustext=8853,t.contintegraldisplay=8750,t.contintegraltext=8750,t.coproductdisplay=8720,t.coproducttext=8720,t.floorleftBig=8970,t.floorleftbig=8970,t.floorleftbigg=8970,t.floorleftBigg=8970,t.floorrightbig=8971,t.floorrightBig=8971,t.floorrightBigg=8971,t.floorrightbigg=8971,t.hatwide=770,t.hatwider=770,t.hatwidest=770,t.intercal=7488,t.integraldisplay=8747,t.integraltext=8747,t.intersectiondisplay=8898,t.intersectiontext=8898,t.logicalanddisplay=8743,t.logicalandtext=8743,t.logicalordisplay=8744,t.logicalortext=8744,t.parenleftBig=40,t.parenleftbig=40,t.parenleftBigg=40,t.parenleftbigg=40,t.parenrightBig=41,t.parenrightbig=41,t.parenrightBigg=41,t.parenrightbigg=41,t.prime=8242,t.productdisplay=8719,t.producttext=8719,t.radicalbig=8730,t.radicalBig=8730,t.radicalBigg=8730,t.radicalbigg=8730,t.radicalbt=8730,t.radicaltp=8730,t.radicalvertex=8730,t.slashbig=47,t.slashBig=47,t.slashBigg=47,t.slashbigg=47,t.summationdisplay=8721,t.summationtext=8721,t.tildewide=732,t.tildewider=732,t.tildewidest=732,t.uniondisplay=8899,t.unionmultidisplay=8846,t.unionmultitext=8846,t.unionsqdisplay=8852,t.unionsqtext=8852,t.uniontext=8899,t.vextenddouble=8741,t.vextendsingle=8739}),Fd=It(function(t){t.space=32,t.a1=9985,t.a2=9986,t.a202=9987,t.a3=9988,t.a4=9742,t.a5=9990,t.a119=9991,t.a118=9992,t.a117=9993,t.a11=9755,t.a12=9758,t.a13=9996,t.a14=9997,t.a15=9998,t.a16=9999,t.a105=1e4,t.a17=10001,t.a18=10002,t.a19=10003,t.a20=10004,t.a21=10005,t.a22=10006,t.a23=10007,t.a24=10008,t.a25=10009,t.a26=10010,t.a27=10011,t.a28=10012,t.a6=10013,t.a7=10014,t.a8=10015,t.a9=10016,t.a10=10017,t.a29=10018,t.a30=10019,t.a31=10020,t.a32=10021,t.a33=10022,t.a34=10023,t.a35=9733,t.a36=10025,t.a37=10026,t.a38=10027,t.a39=10028,t.a40=10029,t.a41=10030,t.a42=10031,t.a43=10032,t.a44=10033,t.a45=10034,t.a46=10035,t.a47=10036,t.a48=10037,t.a49=10038,t.a50=10039,t.a51=10040,t.a52=10041,t.a53=10042,t.a54=10043,t.a55=10044,t.a56=10045,t.a57=10046,t.a58=10047,t.a59=10048,t.a60=10049,t.a61=10050,t.a62=10051,t.a63=10052,t.a64=10053,t.a65=10054,t.a66=10055,t.a67=10056,t.a68=10057,t.a69=10058,t.a70=10059,t.a71=9679,t.a72=10061,t.a73=9632,t.a74=10063,t.a203=10064,t.a75=10065,t.a204=10066,t.a76=9650,t.a77=9660,t.a78=9670,t.a79=10070,t.a81=9687,t.a82=10072,t.a83=10073,t.a84=10074,t.a97=10075,t.a98=10076,t.a99=10077,t.a100=10078,t.a101=10081,t.a102=10082,t.a103=10083,t.a104=10084,t.a106=10085,t.a107=10086,t.a108=10087,t.a112=9827,t.a111=9830,t.a110=9829,t.a109=9824,t.a120=9312,t.a121=9313,t.a122=9314,t.a123=9315,t.a124=9316,t.a125=9317,t.a126=9318,t.a127=9319,t.a128=9320,t.a129=9321,t.a130=10102,t.a131=10103,t.a132=10104,t.a133=10105,t.a134=10106,t.a135=10107,t.a136=10108,t.a137=10109,t.a138=10110,t.a139=10111,t.a140=10112,t.a141=10113,t.a142=10114,t.a143=10115,t.a144=10116,t.a145=10117,t.a146=10118,t.a147=10119,t.a148=10120,t.a149=10121,t.a150=10122,t.a151=10123,t.a152=10124,t.a153=10125,t.a154=10126,t.a155=10127,t.a156=10128,t.a157=10129,t.a158=10130,t.a159=10131,t.a160=10132,t.a161=8594,t.a163=8596,t.a164=8597,t.a196=10136,t.a165=10137,t.a192=10138,t.a166=10139,t.a167=10140,t.a168=10141,t.a169=10142,t.a170=10143,t.a171=10144,t.a172=10145,t.a173=10146,t.a162=10147,t.a174=10148,t.a175=10149,t.a176=10150,t.a177=10151,t.a178=10152,t.a179=10153,t.a193=10154,t.a180=10155,t.a199=10156,t.a181=10157,t.a200=10158,t.a182=10159,t.a201=10161,t.a183=10162,t.a184=10163,t.a197=10164,t.a185=10165,t.a194=10166,t.a198=10167,t.a186=10168,t.a195=10169,t.a187=10170,t.a188=10171,t.a189=10172,t.a190=10173,t.a191=10174,t.a89=10088,t.a90=10089,t.a93=10090,t.a94=10091,t.a91=10092,t.a92=10093,t.a205=10094,t.a85=10095,t.a206=10096,t.a86=10097,t.a87=10098,t.a88=10099,t.a95=10100,t.a96=10101,t[".notdef"]=0}),Rd=It(function(t){t[63721]=169,t[63193]=169,t[63720]=174,t[63194]=174,t[63722]=8482,t[63195]=8482,t[63718]=9168,t[63719]=9135,t[63733]=9134,t[63729]=9127,t[63730]=9128,t[63731]=9129,t[63740]=9131,t[63741]=9132,t[63742]=9133,t[63726]=9121,t[63727]=9122,t[63728]=9123,t[63737]=9124,t[63738]=9125,t[63739]=9126,t[63723]=9115,t[63724]=9116,t[63725]=9117,t[63734]=9118,t[63735]=9119,t[63736]=9120});function Hd(t){return t>=65520&&t<=65535?0:t>=62976&&t<=63743?Rd()[t]||t:t===173?45:t}function ki(t,e){let n=e[t];if(n!==void 0)return n;if(!t)return-1;if(t[0]==="u"){const s=t.length;let a;if(s===7&&t[1]==="n"&&t[2]==="i")a=t.substring(3);else if(s>=5&&s<=7)a=t.substring(1);else return-1;if(a===a.toUpperCase()&&(n=parseInt(a,16),n>=0))return n}return-1}const co=[[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 Ed(t,e=-1){if(e!==-1){const n=co[e];for(let s=0,a=n.length;s=n[s]&&t<=n[s+1])return e}for(let n=0,s=co.length;n=a[i]&&t<=a[i+1])return n}return-1}const Md=new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$","u"),Jo=new Map;function Dd(t){const e=Jo.get(t);if(e)return e;const n=t.match(Md),s={isWhitespace:!!n?.[1],isZeroWidthDiacritic:!!n?.[2],isInvisibleFormatMark:!!n?.[3]};return Jo.set(t,s),s}function _d(){Jo.clear()}const os={FixedPitch:1,Serif:2,Symbolic:4,Nonsymbolic:32},v0=[".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 hh(t,e){if(e[t]!==void 0)return t;const n=ki(t,e);if(n!==-1){for(const s in e)if(e[s]===n)return s}return ut("Unable to recover a standard glyph name for: "+t),t}function uh(t,e,n){const s=Object.create(null);let a,i,r;const o=!!(t.flags&os.Symbolic);if(t.isInternalFont)for(r=e,i=0;i=0?a:0;else if(t.baseEncodingName)for(r=gr(t.baseEncodingName),i=0;i=0?a:0;else if(o)for(i in e)s[i]=e[i];else for(r=zs,i=0;i=0?a:0;const f=t.differences;let l;if(f)for(i in f){const c=f[i];if(a=n.indexOf(c),a===-1){l??=us();const h=hh(c,l);h!==c&&(a=n.indexOf(h))}s[i]=a>=0?a:0}return s}function ma(t){return t.replaceAll(/[,_]/g,"-").replaceAll(/\s/g,"")}const Pd=It(t=>{t[8211]=65074,t[8212]=65073,t[8229]=65072,t[8230]=65049,t[12289]=65041,t[12290]=65042,t[12296]=65087,t[12297]=65088,t[12298]=65085,t[12299]=65086,t[12300]=65089,t[12301]=65090,t[12302]=65091,t[12303]=65092,t[12304]=65083,t[12305]=65084,t[12308]=65081,t[12309]=65082,t[12310]=65047,t[12311]=65048,t[65103]=65076,t[65281]=65045,t[65288]=65077,t[65289]=65078,t[65292]=65040,t[65306]=65043,t[65307]=65044,t[65311]=65046,t[65339]=65095,t[65341]=65096,t[65343]=65075,t[65371]=65079,t[65373]=65080}),Cl=1e3;function Nd({data:t,width:e,height:n}){if(e>Cl||n>Cl)return null;const s=1e3,a=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),i=e+1,r=new Uint8Array(i*(n+1));let o,f,l;const c=e+7&-8,h=new Uint8Array(c*n);let u=0;for(const q of t){let v=128;for(;v>0;)h[u++]=q&v?0:255,v>>=1}let d=0;for(u=0,h[u]!==0&&(r[0]=1,++d),f=1;f>2)+(h[u+1]?4:0)+(h[u-c+1]?8:0),a[q]&&(r[l+f]=a[q],++d),u++;if(h[u-c]!==h[u]&&(r[l+f]=h[u]?2:4,++d),d>s)return null}for(u=c*(n-1),l=o*i,h[u]!==0&&(r[l]=8,++d),f=1;fs)return null;const p=new Int32Array([0,i,-1,0,-i,0,0,0,1]),m=[],{a:b,b:w,c:x,d:j,e:k,f:y}=new DOMMatrix().scaleSelf(1/e,-1/n).translateSelf(0,-n);for(o=0;d&&o<=n;o++){let q=o*i;const v=q+e;for(;q>4,r[q]&=M>>2|M<<2),A=q%i,S=q/i|0,m.push(At.lineTo,b*A+x*S+k,w*A+j*S+y),r[q]||--d}while(F!==q);--o}return[C.rawFillPath,[new Float32Array(m)],new Float32Array([0,0,e,n])]}const Od=[".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"],Ld=[".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"],zd=[".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"];class Vt{#e;#t=1024;#s=!1;#a=0;#n;constructor({exactLength:e=0,minLength:n=0}){this.#s=!!e,this.#i(e||n)}#i(e){if(this.#s)this.#t=e;else for(;this.#tthis.#t&&this.#i(n),this.#e.set(e,this.#a),this.#a=n}setInt16(e){const n=this.#a+2;!this.#s&&n>this.#t&&this.#i(n),this.#n.setInt16(this.#a,e),this.#a=n}setSafeInt16(e){const n=this.#a+2;!this.#s&&n>this.#t&&this.#i(n),this.#n.setInt16(this.#a,Tt(e,-32768,32767)),this.#a=n}setInt32(e){const n=this.#a+4;!this.#s&&n>this.#t&&this.#i(n),this.#n.setInt32(this.#a,e),this.#a=n}}const Ud=10;function h0(t){return t>32767&&t<=65535}function ho(t,e=!1){return ft.normalizeRect(t.map((n,s)=>(!e||s<2)&&h0(n)?n-65536:n))}const u0=[".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"],Vr=391,Qo=.039625,dh=7,mh=1,ph=.06,ti=[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},{id:"return",min: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},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],Gd=[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(t,e){t[e-2]=t[e-2]+t[e-1]}},{id:"sub",min:2,stackDelta:-1,stackFn(t,e){t[e-2]=t[e-2]-t[e-1]}},{id:"div",min:2,stackDelta:-1,stackFn(t,e){t[e-2]=t[e-2]/t[e-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn(t,e){t[e-1]=-t[e-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(t,e){t[e-2]=t[e-2]*t[e-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 Af{constructor(e,n,s){this.bytes=e.getBytes(),this.properties=n,this.seacAnalysisEnabled=!!s}parse(){const e=this.properties,n=new gh(this.bytes.length);this.cff=n;const s=this.parseHeader(),a=this.parseIndex(s.endPos),i=this.parseIndex(a.endPos),r=this.parseIndex(i.endPos),o=this.parseIndex(r.endPos),f=this.parseDict(i.obj.get(0)),l=this.createDict(br,f,n.strings);n.header=s.obj,n.names=this.parseNameIndex(a.obj),n.strings=this.parseStringIndex(r.obj),n.topDict=l,n.globalSubrIndex=o.obj,this.parsePrivateDict(n.topDict),n.isCIDFont=l.hasName("ROS");const c=l.getByName("CharStrings"),h=this.parseIndex(c).obj;n.charStringCount=h.count;const u=l.getByName("FontMatrix");u&&(e.fontMatrix=u);let d=l.getByName("FontBBox");const p=e.bbox?.some(k=>k!==0)?ho(e.bbox):null,m=d?.slice(0,2).some(h0),b=d?.some(h0);if(d?.every(k=>k===0)&&p)d=p,l.setByName("FontBBox",d);else if(b){const k=ho(d),y=p&&e.bbox.some(q=>q<0)&&!e.bbox.some(h0)&&za(k,p);(y||m)&&(d=y?k:ho(d,!0),l.setByName("FontBBox",d))}d?.some(k=>k!==0)&&(e.ascent=Math.max(d[3],d[1]),e.descent=Math.min(d[1],d[3]),e.ascentScaled=!0);let w,x;if(n.isCIDFont){const k=this.parseIndex(l.getByName("FDArray")).obj;for(let y=0,q=k.count;y=n)throw new Y("Invalid CFF header");s!==0&&(ut("cff data is shifted"),e=e.subarray(s),this.bytes=e);const a=e[0],i=e[1],r=e[2],o=e[3];return{obj:new bh(a,i,r,o),endPos:r}}parseDict(e){const n=new DataView(e.buffer,e.byteOffset,e.bytesLength);let s=0;function a(){let l=e[s++];return l===30?i():l===28?(l=n.getInt16(s),s+=2,l):l===29?(l=n.getInt32(s),s+=4,l):l>=32&&l<=246?l-139:l>=247&&l<=250?(l-247)*256+e[s++]+108:l>=251&&l<=254?-((l-251)*256)-e[s++]-108:(H(`CFFParser.parseDict: "${l}" is a reserved command.`),NaN)}function i(){let l="";const h=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],u=e.length;for(;s>4,m=d&15;if(p===15||(l+=h[p],m===15))break;l+=h[m]}return parseFloat(l)}let r=[];const o=[];s=0;const f=e.length;for(;sUd)return!1;const i=new DataView(n.buffer,n.byteOffset,n.bytesLength);let r=e.stackSize;const o=e.stack;let f=n.length;for(let l=0;l=4&&(r-=4,this.seacAnalysisEnabled))return e.seac=o.slice(r,r+4),!1;h=ti[c]}else if(c>=32&&c<=246)o[r]=c-139,r++;else if(c>=247&&c<=254)o[r]=c<251?(c-247<<8)+n[l]+108:-(c-251<<8)-n[l]-108,l++,r++;else if(c===255)o[r]=i.getInt32(l)/65536,l+=4,r++;else if(c===19||c===20){if(e.hints+=r>>1,e.hints===0){n.copyWithin(l-1,l,-1),l-=1,f-=1;continue}l+=e.hints+7>>3,r%=2,h=ti[c]}else if(c===10||c===29){const u=c===10?s:a;if(!u)return h=ti[c],H("Missing subrsIndex for "+h.id),!1;let d=32768;u.count<1240?d=107:u.count<33900&&(d=1131);const p=o[--r]+d;if(p<0||p>=u.count||isNaN(p))return h=ti[c],H("Out of bounds subrIndex for "+h.id),!1;if(e.stackSize=r,e.callDepth++,!this.parseCharString(e,u.get(p),s,a))return!1;e.callDepth--,r=e.stackSize;continue}else{if(c===11)return e.stackSize=r,!0;if(c===0&&l===n.length)n[l-1]=14,h=ti[14];else if(c===9){n.copyWithin(l-1,l,-1),l-=1,f-=1;continue}else h=ti[c]}if(h){if(h.stem&&(e.hints+=r>>1,c===3||c===23?e.hasVStems=!0:e.hasVStems&&(c===1||c===18)&&(H("CFF stem hints are in wrong order"),n[l-1]=c===1?3:23)),r=2&&h.stem?r%=2:r>1&&H("Found too many parameters for stack-clearing command"),r>0&&(e.width=o[r-1])),"stackDelta"in h?("stackFn"in h&&h.stackFn(o,r),r+=h.stackDelta):(h.stackClearing||h.resetStack)&&(r=0)}}return f=i.length&&(H("Invalid fd index for glyph index."),d=!1),d&&(m=i[b].privateDict,p=m.subrsIndex)}else n&&(p=n);if(d&&=this.parseCharString(u,h,p,s),u.width!==null){const b=m.getByName("nominalWidthX");f[c]=b+u.width}else{const b=m.getByName("defaultWidthX");f[c]=b}u.seac!==null&&(o[c]=u.seac),d||e.set(c,new Uint8Array([14]))}return{charStrings:e,seacs:o,widths:f}}emptyPrivateDictionary(e){const n=this.createDict(wr,[],e.strings);e.setByKey(18,[0,0]),e.privateDict=n}parsePrivateDict(e){if(!e.hasName("Private")){this.emptyPrivateDictionary(e);return}const n=e.getByName("Private");if(!Array.isArray(n)||n.length!==2){e.removeByName("Private");return}const s=n[0],a=n[1];if(s===0||a>=this.bytes.length){this.emptyPrivateDictionary(e);return}if(a+s>this.bytes.length)throw new Y("CFF Private DICT extends past end of font");const i=a+s,r=this.bytes.subarray(a,i),o=this.parseDict(r),f=this.createDict(wr,o,e.strings);e.privateDict=f;const l=f.getByName("BlueScale"),c=f.getByName("BlueShift"),h=f.getByName("BlueFuzz"),u=f.getByName("ExpansionFactor");if(l===0&&c===0&&h===0&&u===0&&(f.setByName("BlueScale",Qo),f.setByName("BlueShift",dh),f.setByName("BlueFuzz",mh)),u===0&&f.setByName("ExpansionFactor",ph),l>0){let b=0;for(const w of[f.getByName("BlueValues"),f.getByName("OtherBlues")])if(w)for(let x=1;xb&&(b=w[x]);if(b>0){const x=.5/b,j=x<=Qo?Math.ceil(x*1e5)/1e5:-1/0,k=Math.floor(1e5/b)/1e5,y=Tt(l,j,k);y!==l&&f.setByName("BlueScale",y)}}if(!f.getByName("Subrs"))return;const d=f.getByName("Subrs"),p=a+d;if(d===0||p>=this.bytes.length){this.emptyPrivateDictionary(e);return}const m=this.parseIndex(p);f.subrsIndex=m.obj}parseCharsets(e,n,s,a){if(e===0)return new Qi(!0,uo.ISO_ADOBE,Od);if(e===1)return new Qi(!0,uo.EXPERT,Ld);if(e===2)return new Qi(!0,uo.EXPERT_SUBSET,zd);const{bytes:i}=this,r=i[e++],o=[a?0:".notdef"];let f,l,c;switch(n-=1,r){case 0:for(c=0;c=65535){H("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){return e<0||e>=this.charStrings.count?!1:this.charStrings.get(e).length>0}}class bh{constructor(e,n,s,a){this.major=e,this.minor=n,this.hdrSize=s,this.offSize=a}}class If{strings=[];get(e){return e>=0&&e<=Vr-1?u0[e]:e-Vr<=this.strings.length?this.strings[e-Vr]:u0[0]}getSID(e){let n=u0.indexOf(e);return n!==-1?n:(n=this.strings.indexOf(e),n!==-1?n+Vr:-1)}add(e){this.strings.push(e)}get count(){return this.strings.length}}class ia{objects=[];length=0;add(e){this.length+=e.length,this.objects.push(e)}set(e,n){this.length+=n.length-this.objects[e].length,this.objects[e]=n}get(e){return this.objects[e]}get count(){return this.objects.length}}class wh{constructor(e,n){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=n,this.values=Object.create(null)}setByKey(e,n){if(!(e in this.keyToNameMap))return!1;if(n.length===0)return!0;for(const a of n)if(isNaN(a))return H(`Invalid CFFDict value: "${n}" for key "${e}".`),!0;const s=this.types[e];return(s==="num"||s==="sid"||s==="offset")&&(n=n[0]),this.values[e]=n,!0}setByName(e,n){if(!(e in this.nameToKeyMap))throw new Y(`Invalid dictionary name "${e}"`);this.values[this.nameToKeyMap[e]]=n}hasName(e){return this.nameToKeyMap[e]in this.values}getByName(e){if(!(e in this.nameToKeyMap))throw new Y(`Invalid dictionary name ${e}"`);const n=this.nameToKeyMap[e];return n in this.values?this.values[n]:this.defaults[n]}removeByName(e){delete this.values[this.nameToKeyMap[e]]}static createTables(e){const n={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]};for(const s of e){const a=Array.isArray(s[0])?(s[0][0]<<8)+s[0][1]:s[0];n.keyToNameMap[a]=s[1],n.nameToKeyMap[s[1]]=a,n.types[a]=s[2],n.defaults[a]=s[3],n.opcodes[a]=Array.isArray(s[0])?s[0]:[s[0]],n.order.push(a)}return n}}const Wd=[[[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 br extends wh{static get tables(){return ue(this,"tables",this.createTables(Wd))}constructor(e){super(br.tables,e),this.privateDict=null}}const Kd=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",Qo],[[12,10],"BlueShift","num",dh],[[12,11],"BlueFuzz","num",mh],[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",ph],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]];class wr extends wh{static get tables(){return ue(this,"tables",this.createTables(Kd))}constructor(e){super(wr.tables,e),this.subrsIndex=null}}const uo={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class Qi{constructor(e,n,s){this.predefined=e,this.format=n,this.charset=s}}class Vd{constructor(e,n,s,a){this.predefined=e,this.format=n,this.encoding=s,this.raw=a}}class $d{constructor(e,n){this.format=e,this.fdSelect=n}getFDIndex(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}class Tl{offsets=Object.create(null);isTracking(e){return e in this.offsets}track(e,n){if(e in this.offsets)throw new Y(`Already tracking location of ${e}`);this.offsets[e]=n}offset(e){for(const n in this.offsets)this.offsets[n]+=e}setEntryLocation(e,n,s){if(!(e in this.offsets))throw new Y(`Not tracking location of ${e}`);const a=s.data,i=this.offsets[e],r=5;for(let o=0,f=n.length;o>24&255,a[h]=p>>16&255,a[u]=p>>8&255,a[d]=p&255}}}class Fr{constructor(e){this.cff=e}compile(){const e=this.cff,n=new Vt({minLength:e.rawFileLength}),s=this.compileHeader(e.header);n.setArray(s);const a=this.compileNameIndex(e.names);if(n.setArray(a),e.isCIDFont&&e.topDict.hasName("FontMatrix")){const u=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const d of e.fdArray){let p=u.slice(0);d.hasName("FontMatrix")&&(p=ft.transform(p,d.getByName("FontMatrix"))),d.setByName("FontMatrix",p)}}e.topDict.getByName("XUID")?.length>16&&e.topDict.removeByName("XUID"),e.topDict.setByName("charset",0);let r=this.compileTopDicts([e.topDict],n.length,e.isCIDFont);n.setArray(r.output);const o=r.trackers[0],f=this.compileStringIndex(e.strings.strings);n.setArray(f);const l=this.compileIndex(e.globalSubrIndex);if(n.setArray(l),e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)o.setEntryLocation("Encoding",[e.encoding.format],n);else{const u=this.compileEncoding(e.encoding);o.setEntryLocation("Encoding",[n.length],n),n.setArray(u)}const c=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);o.setEntryLocation("charset",[n.length],n),n.setArray(c);const h=this.compileCharStrings(e.charStrings);if(o.setEntryLocation("CharStrings",[n.length],n),n.setArray(h),e.isCIDFont){o.setEntryLocation("FDSelect",[n.length],n);const u=this.compileFDSelect(e.fdSelect);n.setArray(u),r=this.compileTopDicts(e.fdArray,n.length,!0),o.setEntryLocation("FDArray",[n.length],n),n.setArray(r.output);const d=r.trackers;this.compilePrivateDicts(e.fdArray,d,n)}return this.compilePrivateDicts([e.topDict],[o],n),n.setArray([0]),n.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return ue(this,"EncodeFloatRegExp",/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let n=e.toString();const s=Fr.EncodeFloatRegExp.exec(n);if(s){const f=parseFloat("1e"+((s[2]?+s[2]:0)+s[1].length));n=(Math.round(e*f)/f).toString()}let a="",i,r;for(i=0,r=n.length;i=-107&&e<=107?n=[e+139]:e>=108&&e<=1131?(e-=108,n=[(e>>8)+247,e&255]):e>=-1131&&e<=-108?(e=-e-108,n=[(e>>8)+251,e&255]):e>=-32768&&e<=32767?n=[28,e>>8&255,e&255]:n=[29,e>>24&255,e>>16&255,e>>8&255,e&255],n}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const n=new ia;for(const s of e){const a=Math.min(s.length,127);let i=new Array(a);for(let r=0;r"~"||o==="["||o==="]"||o==="("||o===")"||o==="{"||o==="}"||o==="<"||o===">"||o==="/"||o==="%")&&(o="_"),i[r]=o}i=i.join(""),i===""&&(i="Bad_Font_Name"),n.add(Bt(i))}return this.compileIndex(n)}compileTopDicts(e,n,s){const a=[];let i=new ia;for(const r of e){s&&(r.removeByName("CIDFontVersion"),r.removeByName("CIDFontRevision"),r.removeByName("CIDFontType"),r.removeByName("CIDCount"),r.removeByName("UIDBase"));const o=new Tl,f=this.compileDict(r,o);a.push(o),i.add(f),o.offset(n)}return i=this.compileIndex(i,a),{trackers:a,output:i}}compilePrivateDicts(e,n,s){for(let a=0,i=e.length;a>8&255,o&255])}else{const o=1+r*2;i=new Uint8Array(o);let f=0;const l=e.charset.length;let c=!1;for(let h=1;h>8&255,i[h+1]=u&255}}return i}compileEncoding(e){return e.raw}compileFDSelect(e){const n=e.format;let s,a;switch(n){case 0:s=new Uint8Array(1+e.fdSelect.length),s[0]=n,s.set(e.fdSelect,1);break;case 3:const i=0;let r=e.fdSelect[0];const o=[n,0,0,i>>8&255,i&255,r];for(a=1;a>8&255,a&255,l),r=l)}const f=(o.length-3)/3;o[1]=f>>8&255,o[2]=f&255,o.push(a>>8&255,a&255),s=new Uint8Array(o);break}return s}compileIndex(e,n=[]){const s=e.objects,a=s.length;if(a===0)return new Uint8Array(2);let i=1,r;for(r=0;r>8&255,f[l++]=a&255,f[l++]=o;let c=1;for(r=0;r>8&255,f[l++]=c&255):o===3?(f[l++]=c>>16&255,f[l++]=c>>8&255,f[l++]=c&255):(f[l++]=c>>>24&255,f[l++]=c>>16&255,f[l++]=c>>8&255,f[l++]=c&255),s[r]&&(c+=s[r].length);for(r=0;re.getSize()+3&-4))}write(){const e=this.getSize(),n=new DataView(new ArrayBuffer(e)),s=e>131070,a=s?4:2,i=new DataView(new ArrayBuffer((this.glyphs.length+1)*a));s?i.setUint32(0,0):i.setUint16(0,0);let r=0,o=0;for(const f of this.glyphs)r+=f.write(r,n),r=r+3&-4,o+=a,s?i.setUint32(o,r):i.setUint16(o,r>>1);return{isLocationLong:s,loca:new Uint8Array(i.buffer),glyf:new Uint8Array(n.buffer)}}scale(e){for(let n=0,s=this.glyphs.length;nn.getSize()));return this.header.getSize()+e}write(e,n){if(!this.header)return 0;const s=e;if(e+=this.header.write(e,n),this.simple)e+=this.simple.write(e,n);else for(const a of this.composites)e+=a.write(e,n);return e-s}scale(e){if(!this.header)return;const n=(this.header.xMin+this.header.xMax)/2;if(this.header.scale(n,e),this.simple)this.simple.scale(n,e);else for(const s of this.composites)s.scale(n,e)}}class Tf{constructor({numberOfContours:e,xMin:n,yMin:s,xMax:a,yMax:i}){this.numberOfContours=e,this.xMin=n,this.yMin=s,this.xMax=a,this.yMax=i}static parse(e,n){return[gi,new Tf({numberOfContours:n.getInt16(e),xMin:n.getInt16(e+2),yMin:n.getInt16(e+4),xMax:n.getInt16(e+6),yMax:n.getInt16(e+8)})]}getSize(){return gi}write(e,n){return n.setInt16(e,this.numberOfContours),n.setInt16(e+2,this.xMin),n.setInt16(e+4,this.yMin),n.setInt16(e+6,this.xMax),n.setInt16(e+8,this.yMax),gi}scale(e,n){this.xMin=Math.round(e+(this.xMin-e)*n),this.xMax=Math.round(e+(this.xMax-e)*n)}}class sm{constructor({flags:e,xCoordinates:n,yCoordinates:s}){this.xCoordinates=n,this.yCoordinates=s,this.flags=e}}class Bf{constructor({contours:e,instructions:n}){this.contours=e,this.instructions=n}static parse(e,n,s){const a=[];for(let b=0;b255?e+=2:l>0&&(e+=1),n=o,l=Math.abs(f-s),l>255?e+=2:l>0&&(e+=1),s=f}}return e}write(e,n){const s=e,a=[],i=[],r=[];let o=0,f=0;for(const l of this.contours){for(let c=0,h=l.xCoordinates.length;c=0?$r|Ei:$r,a.push(b)):a.push(p)}o=d;const m=l.yCoordinates[c];if(p=m-f,p===0)u|=Mi,i.push(0);else{const b=Math.abs(p);b<=255?(u|=p>=0?Xr|Mi:Xr,i.push(b)):i.push(p)}f=m,r.push(u)}n.setUint16(e,a.length-1),e+=2}n.setUint16(e,this.instructions.length),e+=2,this.instructions.length&&(new Uint8Array(n.buffer,0,n.buffer.byteLength).set(this.instructions,e),e+=this.instructions.length);for(const l of r)n.setUint8(e++,l);for(let l=0,c=a.length;l=-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),e}write(e,n){const s=e;return this.flags&Yr?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=oi):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=oi),n.setUint16(e,this.flags),n.setUint16(e+2,this.glyphIndex),e+=4,this.flags&oi?(this.flags&Yr?(n.setInt16(e,this.argument1),n.setInt16(e+2,this.argument2)):(n.setUint16(e,this.argument1),n.setUint16(e+2,this.argument2)),e+=4):(n.setUint8(e,this.argument1),n.setUint8(e+1,this.argument2),e+=2),this.flags&m0&&(n.setUint16(e,this.instructions.length),e+=2,this.instructions.length&&(new Uint8Array(n.buffer,0,n.buffer.byteLength).set(this.instructions,e),e+=this.instructions.length)),e-s}scale(e,n){}}function am(t,e,n){const s=new DataView(t.buffer,t.byteOffset,t.byteLength),a=new Array(n);for(let h=0;h=0)continue;const p=[];let m=u+gi;for(;m+4<=d;){const b=s.getUint16(m),w=s.getUint16(m+2);let x=4+(b&oi?4:2);if(b&xh?x+=2:b&jh?x+=4:b&kh&&(x+=8),p.push({gid:w,offset:m,size:x,flags:b}),m+=x,!(b&d0))break}p.length&&(a[h]=p)}const i=0,r=1,o=2,f=new Uint8Array(n),l=new Map;for(let h=0;h0;){const d=u.at(-1),p=a[d.node];if(!p||d.idx>=p.length){f[d.node]=o,u.pop();continue}const m=d.idx++,b=p[m].gid;if(!(b>=n||f[b]===o)){if(f[b]===i){f[b]=r,u.push({node:b,idx:0});continue}l.getOrInsertComputed(d.node,Nc).add(m)}}}const c=new Set;for(const[h,u]of l){const d=a[h],p=[];for(let x=0;x=this.firstChar&&e<=this.lastChar?e:-1}amend(e){st("Should not call amend()")}}class po{constructor(e,n){this.properties=n;const s=new Af(e,n,!0);this.cff=s.parse(),this.cff.duplicateFirstGlyph();const a=new Fr(this.cff);this.seacs=this.cff.seacs;try{this.data=a.compile()}catch(i){H(`Failed to compile font "${n.loadedName}": "${i}".`),e.reset(),this.data=e.getBytes()}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,n=this.properties,{cidToGidMap:s,cMap:a}=n,i=e.charset.charset;let r,o;if(n.composite){let l;if(s?.length>0){l=Object.create(null);for(let h=0,u=s.length;h=0){const f=s[o];f&&(i[r]=f)}}i.length>0&&(this.properties.builtInEncoding=i)}}class Hl{static strings=["fontFamily","fontWeight","italicAngle"]}class El{static strings=["css","loadedName","baseFontName","src"]}class En{static bools=["black","bold","disableFontFace","fontExtraProperties","isInvalidPDFjsFont","isType3Font","italic","missingFile","remeasure","vertical"];static numbers=["ascent","defaultWidth","descent"];static strings=["fallbackName","loadedName","mimetype","name"];static OFFSET_NUMBERS=Math.ceil(this.bools.length*2/8);static OFFSET_BBOX=this.OFFSET_NUMBERS+this.numbers.length*8;static OFFSET_FONT_MATRIX=this.OFFSET_BBOX+1+8;static OFFSET_DEFAULT_VMETRICS=this.OFFSET_FONT_MATRIX+1+48;static OFFSET_STRINGS=this.OFFSET_DEFAULT_VMETRICS+1+6}class Xs{static KIND=0;static HAS_BBOX=1;static HAS_BACKGROUND=2;static SHADING_TYPE=3;static N_COORD=4;static N_COLOR=8;static N_STOP=12;static N_FIGURES=16}class Rf{static get decoder(){return ue(this,"decoder",new TextDecoder)}static get encoder(){return ue(this,"encoder",new TextEncoder)}}function im(t){const{encoder:e}=Rf,n={};let s=0;for(const f of Hl.strings){const l=e.encode(t[f]);n[f]=l,s+=4+l.length}const a=new ArrayBuffer(s),i=new Uint8Array(a),r=new DataView(a);let o=0;for(const f of Hl.strings){const l=n[f],c=l.length;r.setUint32(o,c),i.set(l,o+4),o+=4+c}return Ct(o===a.byteLength,"compileCssFontInfo: Buffer overflow"),a}function rm(t){const{encoder:e}=Rf,n={};let s=0;for(const h of El.strings){const u=e.encode(t[h]);n[h]=u,s+=4+u.length}s+=4;let a,i,r=1+s;t.style&&(a=e.encode(t.style.style),i=e.encode(t.style.weight),r+=4+a.length+4+i.length);const o=new ArrayBuffer(r),f=new Uint8Array(o),l=new DataView(o);let c=0;l.setUint8(c++,t.guessFallback?1:0),l.setUint32(c,0),c+=4,s=0;for(const h of El.strings){const u=n[h],d=u.length;s+=4+d,l.setUint32(c,d),f.set(u,c+4),c+=4+d}return l.setUint32(c-s-4,s),t.style&&(l.setUint32(c,a.length),f.set(a,c+4),c+=4+a.length,l.setUint32(c,i.length),f.set(i,c+4),c+=4+i.length),Ct(c<=o.byteLength,"compileSystemFontInfo: Buffer overflow"),o.transferToFixedLength(c)}function om(t){const e=t.systemFontInfo?rm(t.systemFontInfo):null,n=t.cssFontInfo?im(t.cssFontInfo):null,{encoder:s}=Rf,a={};let i=0;for(const p of En.strings)a[p]=s.encode(t[p]),i+=4+a[p].length;const r=En.OFFSET_STRINGS+4+i+4+(e?.byteLength??0)+4+(n?.byteLength??0)+4+(t.data?.length??0),o=new ArrayBuffer(r),f=new Uint8Array(o),l=new DataView(o);let c=0;const h=En.bools.length;let u=0,d=0;for(let p=0;p=33900?32768:e<1240?107:1131}function cm(t,e,n){const s=new DataView(t.buffer,t.byteOffset,t.byteLength),a=s.getUint16(e+2)===1?s.getUint32(e+8):s.getUint32(e+16),i=s.getUint16(e+a);let r,o,f;if(i===4){const l=s.getUint16(e+a+6)>>1;for(o=e+a+14,r=[],f=0;ff.getUint32(l)):(a=2,i=(f,l)=>2*f.getUint16(l));const r=[];let o=i(s,0);for(let f=a;f>1;n0;)j.push({flags:c})}for(m=0;m>1,b=!0;break;case 3:c+=o.length>>1,b=!0;break;case 4:l+=o.pop(),a(f,l),b=!0;break;case 5:for(;o.length>0;)f+=o.shift(),l+=o.shift(),i(f,l);break;case 6:for(;o.length>0&&(f+=o.shift(),i(f,l),o.length!==0);)l+=o.shift(),i(f,l);break;case 7:for(;o.length>0&&(l+=o.shift(),i(f,l),o.length!==0);)f+=o.shift(),i(f,l);break;case 8:for(;o.length>0;)x=f+o.shift(),k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y+o.shift(),r(x,k,j,y,f,l);break;case 10:if(S=o.pop(),F=null,n.isCFFCIDFont){const M=n.fdSelect.getFDIndex(s);if(M>=0&&MMath.abs(l-N)?f+=o.shift():l+=o.shift(),r(x,k,j,y,f,l);break;default:throw new Y(`unknown operator: 12 ${w}`)}break;case 14:if(o.length>=4){const M=o.pop(),N=o.pop();l=o.pop(),f=o.pop(),e.save(),e.translate(f,l);let D=nf(n.cmap,String.fromCharCode(n.glyphNameMap[zs[M]]));sf(n.glyphs[D.glyphId],e,n,D.glyphId),e.restore(),D=nf(n.cmap,String.fromCharCode(n.glyphNameMap[zs[N]])),sf(n.glyphs[D.glyphId],e,n,D.glyphId)}return;case 18:c+=o.length>>1,b=!0;break;case 19:c+=o.length>>1,m+=c+7>>3,b=!0;break;case 20:c+=o.length>>1,m+=c+7>>3,b=!0;break;case 21:l+=o.pop(),f+=o.pop(),a(f,l),b=!0;break;case 22:f+=o.pop(),a(f,l),b=!0;break;case 23:c+=o.length>>1,b=!0;break;case 24:for(;o.length>2;)x=f+o.shift(),k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y+o.shift(),r(x,k,j,y,f,l);f+=o.shift(),l+=o.shift(),i(f,l);break;case 25:for(;o.length>6;)f+=o.shift(),l+=o.shift(),i(f,l);x=f+o.shift(),k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y+o.shift(),r(x,k,j,y,f,l);break;case 26:for(o.length%2&&(f+=o.shift());o.length>0;)x=f,k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j,l=y+o.shift(),r(x,k,j,y,f,l);break;case 27:for(o.length%2&&(l+=o.shift());o.length>0;)x=f+o.shift(),k=l,j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y,r(x,k,j,y,f,l);break;case 28:o.push(p.getInt16(m)),m+=2;break;case 29:S=o.pop()+n.gsubrsBias,F=n.gsubrs[S],F&&u(F);break;case 30:for(;o.length>0&&(x=f,k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y+(o.length===1?o.shift():0),r(x,k,j,y,f,l),o.length!==0);)x=f+o.shift(),k=l,j=x+o.shift(),y=k+o.shift(),l=y+o.shift(),f=j+(o.length===1?o.shift():0),r(x,k,j,y,f,l);break;case 31:for(;o.length>0&&(x=f+o.shift(),k=l,j=x+o.shift(),y=k+o.shift(),l=y+o.shift(),f=j+(o.length===1?o.shift():0),r(x,k,j,y,f,l),o.length!==0);)x=f,k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y+(o.length===1?o.shift():0),r(x,k,j,y,f,l);break;default:if(w<32)throw new Y(`unknown operator: ${w}`);w<247?o.push(w-139):w<251?o.push((w-247)*256+d[m++]+108):w<255?o.push(-(w-251)*256-d[m++]-108):(o.push(p.getInt32(m)/65536),m+=4);break}b&&(o.length=0)}}u(t)}class dm{cmds=[];transformStack=[];currentTransform=[1,0,0,1,0,0];add(e,n){if(n){const{currentTransform:s}=this;for(let a=0,i=n.length;a{try{return this.compileGlyph(this.glyphs[s],s)}catch(i){return i}});if(this.#e.add(n),a instanceof Error)throw a;return lm(a)}compileGlyph(e,n){if(!e?.length||e[0]===14)return G0.NOOP;let s=this.fontMatrix;if(this.isCFFCIDFont){const i=this.fdSelect.getFDIndex(n);i>=0&&is;)s<<=1,a++;const i=s*n;return{range:i,entry:a,rangeShift:n*e-i}}toArray(){let e=this.sfnt;const n=this.#e,s=[...n.keys()].sort(),a=s.length;let i=Ml+a*Dl;const r=[i];for(let c=0;c>>0;i+=u,r.push(i)}const o=new Uint8Array(i),f=new DataView(o.buffer);for(let c=0;c>>0}f.setInt32(i+4,u),f.setInt32(i+8,r[c]),f.setInt32(i+12,n.get(h).length),i+=Dl}return this.#e.clear(),o}addTable(e,n){if(this.#e.has(e))throw new Error(`Table ${e} already exists`);this.#e.set(e,n)}}const yn={vmoveto:[4],rlineto:[5],hlineto:[6],vlineto:[7],rrcurveto:[8],flex:[12,35],endchar:[14],rmoveto:[21],hmoveto:[22],vhcurveto:[30],hvcurveto:[31]};class _l{width=0;lsb=0;flexing=!1;output=[];stack=[];convert(e,n,s){const a=e.length;let i=!1,r,o,f;for(let l=0;la)return!0;const i=a-e;for(let r=i;r>8&255,o&255):(o=65536*o|0,this.output.push(255,o>>24&255,o>>16&255,o>>8&255,o&255))}return this.output.push(...n),s?this.stack.splice(i,e):this.stack.length=0,!1}}const Pl=55665,xm=4330;function rs(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}function Nl(t,e,n){if(n>=t.length)return new Uint8Array(0);const s=52845,a=22719;let i=e|0,r,o;for(r=0;r>8,i=(c+i)*s+a&65535}return l}function jm(t,e,n){let i=e|0;const r=t.length,o=r>>>1,f=new Uint8Array(o);let l,c;for(l=0,c=0;l>8,i=(d+i)*52845+22719&65535}}return f.slice(n,c)}function Ol(t){return t===47||t===91||t===93||t===123||t===125||t===40||t===41}class go{constructor(e,n,s){if(n){const a=e.getBytes(),i=!((rs(a[0])||es(a[0]))&&rs(a[1])&&rs(a[2])&&rs(a[3])&&rs(a[4])&&rs(a[5])&&rs(a[6])&&rs(a[7]));e=new yt(i?Nl(a,Pl,4):jm(a,Pl,4))}this.seacAnalysisEnabled=!!s,this.stream=e,this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const n=this.getToken();if(n===null||n==="]"||n==="}")break;e.push(parseFloat(n||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return parseInt(e||0,10)|0}readBoolean(){return this.getToken()==="true"?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){return this.stream.skip(-2),this.currentChar=this.stream.getByte()}getToken(){let e=!1,n=this.currentChar;for(;;){if(n===-1)return null;if(e)(n===10||n===13)&&(e=!1);else if(n===37)e=!0;else if(!es(n))break;n=this.nextChar()}if(Ol(n))return this.nextChar(),String.fromCharCode(n);let s="";do s+=String.fromCharCode(n),n=this.nextChar();while(n>=0&&!es(n)&&!Ol(n));return s}readCharStrings(e,n){return n===-1?e:Nl(e,xm,n)}extractFontProgram(e){const n=this.stream,s=[],a=[],i=new Map([["lenIV",4]]),r={subrs:[],charstrings:[],properties:{privateData:i}};let o,f,l,c=!1,h=!1;for(;(o=this.getToken())!==null;)if(o==="/")switch(o=this.getToken(),o){case"CharStrings":if(h)break;for(h=!0,this.getToken(),this.getToken(),this.getToken(),this.getToken();o=this.getToken(),!(o===null||o==="end");){if(o!=="/")continue;const u=this.getToken();f=this.readInt(),this.getToken(),l=f>0?n.getBytes(f):new Uint8Array(0);const d=this.readCharStrings(l,i.get("lenIV"));this.nextChar(),o=this.getToken(),o==="noaccess"?this.getToken():o==="/"&&this.prevChar(),a.push({glyph:u,encoded:d})}break;case"Subrs":if(c)break;for(c=!0,this.readInt(),this.getToken();this.getToken()==="dup";){const u=this.readInt();f=this.readInt(),this.getToken(),l=f>0?n.getBytes(f):new Uint8Array(0);const d=this.readCharStrings(l,i.get("lenIV"));this.nextChar(),o=this.getToken(),o==="noaccess"&&this.getToken(),s[u]=d}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":this.readNumberArray();break;case"StemSnapH":case"StemSnapV":i.set(o,this.readNumberArray());break;case"StdHW":case"StdVW":i.set(o,this.readNumberArray()[0]);break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":i.set(o,this.readNumber());break;case"ExpansionFactor":i.set(o,this.readNumber()||.06);break;case"ForceBold":i.set(o,this.readBoolean());break}for(const{encoded:u,glyph:d}of a){const p=new _l,b=p.convert(u,s,this.seacAnalysisEnabled)?[14]:p.output,w={glyphName:d,charstring:b,width:p.width,lsb:p.lsb,seac:p.seac};if(d===".notdef"?r.charstrings.unshift(w):r.charstrings.push(w),e.builtInEncoding){const x=e.builtInEncoding.indexOf(d);x>-1&&e.widths[x]===void 0&&x>=e.firstChar&&x<=e.lastChar&&(e.widths[x]=p.width)}}return r}extractCidKeyedFontProgram(e){const n=this.stream,s=new Map([["lenIV",4]]),a={subrs:[],charstrings:[],properties:{privateData:s}};let i=0,r=-1,o=1,f=0,l=-1,c=0,h=0,u=0,d=!1,p=!1;const m=[];function b(F){m.push(F),m.length>4&&m.shift()}let w;for(;(w=this.getToken())!==null;){if(w==="StartData"){const F=m.at(-3),M=m.at(-1);if(m.at(-4)!=="("||m.at(-2)!==")"||F!=="Binary"&&F!=="Hex"||!/^\d+$/.test(M)||(u=parseInt(M,10),u<=0))return null;d=F==="Hex",p=!0;break}if(b(w),w==="/")switch(w=this.getToken(),b(w),w){case"FontMatrix":e.fontMatrix=this.readNumberArray();break;case"FontBBox":const F=this.readNumberArray();e.ascent=Math.max(F[3],F[1]),e.descent=Math.min(F[1],F[3]),e.ascentScaled=!0;break;case"CIDCount":i=this.readInt();break;case"CIDMapOffset":r=this.readInt();break;case"FDBytes":o=this.readInt();break;case"GDBytes":f=this.readInt();break;case"SubrMapOffset":l=this.readInt();break;case"SDBytes":c=this.readInt();break;case"SubrCount":h=this.readInt();break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":this.readNumberArray();break;case"StemSnapH":case"StemSnapV":s.set(w,this.readNumberArray());break;case"StdHW":case"StdVW":s.set(w,this.readNumberArray()[0]);break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":s.set(w,this.readNumber());break;case"ExpansionFactor":s.set(w,this.readNumber()||.06);break;case"ForceBold":s.set(w,this.readBoolean());break}}if(!p||i<=0||r<0||o<0||o>4||f<1||f>4)return null;const x=n.end-n.pos;if(u>x){if(!d)u=x;else if(u>2*x)return null}let j=n.getBytes(d?void 0:u);if(d){const F=new Uint8Array(u);let M=-1,N=0;for(let D=0,$=j.length;D<$&&N>>0}if(r+(i+1)*y>j.length||h>0&&(l<0||c<1||c>4||l+(h+1)*c>j.length))return null;if(o>0){for(let F=0;F0){const F=new Array(h+1);for(let M=0;M<=h;M++)F[M]=v(l+M*c,c);for(let M=0;Mj.length||DS&&M<=j.length){const D=this.readCharStrings(j.subarray(S,M),k),$=new _l,K=$.convert(D,q,this.seacAnalysisEnabled);A.push({glyphName:N,charstring:K?[14]:$.output,width:$.width,lsb:$.lsb,seac:$.seac})}else{const D=A[0];A.push({glyphName:N,charstring:D?.charstring.slice()||[139,14],width:D?.width||0,lsb:D?.lsb||0})}S=M}return a.subrs=q,a.charstrings=A,a}extractFontHeader(e){let n;for(;(n=this.getToken())!==null;)if(n==="/")switch(n=this.getToken(),n){case"FontMatrix":const s=this.readNumberArray();e.fontMatrix=s;break;case"Encoding":const a=this.getToken();let i;if(!/^\d+$/.test(a))i=gr(a);else{i=[];const o=parseInt(a,10)|0;this.getToken();for(let f=0;f=a){for(r+=f;r=0&&(a[o]=i)}return uh(e,a,s)}hasGlyphId(e){return e<0||e>=this.numGlyphs?!1:e===0?!0:this.charstrings[e-1].charstring.length>0}getSeacs(e){const n=[];for(let s=0,a=e.length;s0;x--)w[x]-=w[x-1];u.setByName(b,w)}r.topDict.privateDict=u;const p=new ia;for(const b of a)p.add(b);return u.subrsIndex=p,new Fr(r).compile()}}const Hs=[[57344,63743],[1048576,1114109]],Ca=1e3,Sm=["ascent","bbox","black","bold","cssFontInfo","data","defaultVMetrics","defaultWidth","descent","disableFontFace","fallbackName","fontExtraProperties","fontMatrix","isInvalidPDFjsFont","isType3Font","italic","loadedName","mimetype","missingFile","name","remeasure","systemFontInfo","vertical"],Am=["cMap","composite","defaultEncoding","differences","isMonospace","isSerifFont","isSymbolicFont","seacMap","subtype","toFontChar","toUnicode","type","vmetrics","widths"];function zl(t){if(!t.fontMatrix||t.fontMatrix[0]===Ea[0])return;const e=.001/t.fontMatrix[0],n=t.widths;for(const s in n)n[s]*=e;t.defaultWidth*=e}function Im(t,e,n){if(t.isInternalFont||t.hasIncludedToUnicodeMap||t.hasEncoding||t.toUnicode instanceof Jn||!e||n.length===0||t.defaultEncoding===pr)return;for(const r of n)if(!vh(r))return;const s=pr,a=[],i=us();for(const r in s){const o=s[r];if(o==="")continue;const f=i[o];f!==void 0&&(a[r]=String.fromCharCode(f))}a.length>0&&t.toUnicode.amend(a)}function Cm(t,e){if(t.isInternalFont||t.hasIncludedToUnicodeMap||e===t.defaultEncoding||t.toUnicode instanceof Jn)return;const n=[],s=us();for(const a in e){if(t.hasEncoding&&(t.baseEncodingName||t.differences[a]!==void 0))continue;const i=e[a],r=ki(i,s);r!==-1&&(n[a]=String.fromCharCode(r))}n.length>0&&t.toUnicode.amend(n)}function Ul(t){if(!t.fallbackToUnicode||t.toUnicode instanceof Jn)return;const e=[];for(const n in t.fallbackToUnicode)t.toUnicode.has(n)||(e[n]=t.fallbackToUnicode[n]);e.length>0&&t.toUnicode.amend(e)}class Tm{constructor(e,n,s,a,i,r,o,f,l){this.originalCharCode=e,this.fontChar=n,this.unicode=s,this.accent=a,this.width=i,this.vmetric=r,this.operatorListId=o,this.isSpace=f,this.isInFont=l}get category(){return ue(this,"category",Dd(this.unicode),!0)}}function Di(t,e){return(t<<8)+e}function _i(t,e,n){t[e+1]=n,t[e]=n>>>8}function qn(t,e){const n=(t<<8)+e;return n&32768?n-65536:n}function Gl(t,e,n){t[e+3]=n&255,t[e+2]=n>>>8,t[e+1]=n>>>16,t[e]=n>>>24}function Bm(t){const e=t.peekBytes(4),n=An(e);return n==="\0\0\0"||n==="true"}function qh(t){const e=t.peekBytes(4);return An(e)==="ttcf"}function Fm(t){const e=t.peekBytes(4);return An(e)==="OTTO"}function Rm(t){const e=t.peekBytes(2);return e[0]===37&&e[1]===33||e[0]===128&&e[1]===1}function Hm(t){const e=t.peekBytes(4);return e[0]>=1&&e[3]>=1&&e[3]<=4}function Em(t,{type:e,subtype:n,composite:s}){let a,i;return Bm(t)||qh(t)?a=s?"CIDFontType2":"TrueType":Fm(t)?a=s?"CIDFontType2":"OpenType":Rm(t)?s?a="CIDFontType0":a=e==="MMType1"?"MMType1":"Type1":Hm(t)?s?(a="CIDFontType0",i="CIDFontType0C"):(a=e==="MMType1"?"MMType1":"Type1",i="Type1C"):(H("getFontFileType: Unable to detect correct font file Type/Subtype."),a=e,i=n),[a,i]}function ni(t,e){for(const n in e)t[+n]=e[n]}const Mm=It(t=>{let e=3;for(const[n,s]of[[32,126],[161,254]])for(let a=n;a<=s;a++)t[e++]=U0[a]},!0);function bo(t,e,n){const s=[];let a;for(let i=0,r=t.length;iHs[0][0]<=p&&p<=Hs[0][1]||Hs[1][0]<=p&&p<=Hs[1][1];let d=null;for(const p in t){let m=t[p];if(!e(m))continue;if(c>h){if(f++,f>=Hs.length){H("Ran out of space in font private use area.");break}c=Hs[f][0],h=Hs[f][1]}const b=c++;m===0&&(m=n);let w=s.get(p);if(typeof w=="string")if(w.length===1)w=w.codePointAt(0);else{if(!d){d=new Map;for(let x=64256;x<=64335;x++){const j=String.fromCharCode(x).normalize("NFKD");j.length>1&&d.set(j,x)}}w=d.get(w)||w.codePointAt(0)}w&&!u(w)&&!o.has(m)&&(i.set(w,m),o.add(m)),a[b]=m,r[p]=b}return{toFontChar:r,charCodeToGlyphId:a,toUnicodeExtraMap:i,nextAvailableFontCharCode:c}}function _m(t,e,n){const s=[];for(const r in t)t[r]>=n||s.push({fontCharCode:r|0,glyphId:t[r]});if(e)for(const[r,o]of e)o>=n||s.push({fontCharCode:r,glyphId:o});s.length===0&&s.push({fontCharCode:0,glyphId:0}),s.sort((r,o)=>r.fontCharCode-o.fontCharCode);const a=[],i=s.length;for(let r=0;r65535;let i,r,o,f;for(i=s.length-1;i>=0&&!(s[i][0]<=65535);--i);const l=i+1;s[i][0]<65535&&s[i][1]===65535&&(s[i][1]=65534);const c=s[i][1]<65535?1:0,h=l+c,u=kr.getSearchParams(h,2),d=l*2+c*2,p=new Vt({exactLength:d}),m=new Vt({exactLength:d}),b=new Vt({exactLength:d}),w=new Vt({exactLength:d}),x=new Vt({});let j=0,k=!1;for(i=0,r=l;i65535?(k=!0,w.skip(2)):w.setInt16(ye),o=0,f=X.length;o0&&(m.setArray([255,255]),p.setArray([255,255]),b.setArray([0,1]),w.skip(2));const y=new Vt({exactLength:12+p.length+m.length+b.length+w.length+x.length});y.skip(2),y.setInt16(2*h),y.setInt16(u.range),y.setInt16(u.entry),y.setInt16(u.rangeShift),y.setArray(m.data),y.skip(2),y.setArray(p.data),y.setArray(b.data),y.setArray(w.data),y.setArray(x.data);const q=!k&&y.length+4<=65535,v=a||!q,A=(q?1:0)+(v?1:0);let S=null,F=null;if(v){S=new Vt({});for(const oe of s){let me=oe[0];const X=oe[2];let ee=X[0];for(o=1,f=X.length;or||(e.skip(6),e.getUint16()===0)?!1:(t.data[8]=t.data[9]=0,!0)}function Vl(t,e,n){n||={unitsPerEm:0,yMax:0,yMin:0,ascent:0,descent:0};let s=0,a=0,i=0,r=0,o=null,f=0,l=-1;if(e){for(let x in e)if(x|=0,(o>x||!o)&&(o=x),f 123 are reserved for internal usage");f>65535&&(f=65535)}else o=0,f=255;const c=t.bbox||[0,0,0,0],h=n.unitsPerEm||(t.fontMatrix?1/Math.max(...t.fontMatrix.slice(0,4).map(Math.abs)):1e3),u=t.ascentScaled?1:h/Ca,d=n.ascent||Math.round(u*(t.ascent||c[3]));let p=n.descent||Math.round(u*(t.descent||c[1]));p>0&&t.descent>0&&c[1]<0&&(p=-p);const m=n.yMax||d,b=-n.yMin||-p,w=new Vt({exactLength:96});return w.setArray([0,3]),w.setArray([2,36]),w.setArray([1,244]),w.setArray([0,5]),w.skip(2),w.setArray([2,138]),w.setArray([2,187]),w.skip(2),w.setArray([0,140]),w.setArray([2,138]),w.setArray([2,187]),w.skip(2),w.setArray([1,223]),w.setArray([0,49]),w.setArray([1,2]),w.skip(2),w.setArray([0,0,6,t.fixedPitch?9:0,0,0,0,0,0,0]),w.setInt32(s),w.setInt32(a),w.setInt32(i),w.setInt32(r),w.setArray([42,50,49,42]),w.setInt16(t.italicAngle?1:0),w.setInt16(o||t.firstChar),w.setInt16(f||t.lastChar),w.setInt16(d),w.setInt16(p),w.setArray([0,100]),w.setInt16(m),w.setInt16(b),w.skip(8),w.setInt16(t.xHeight),w.setInt16(t.capHeight),w.skip(2),w.setInt16(o||t.firstChar),w.setArray([0,3]),w.data}function $l(t){const e=new Vt({exactLength:32});return e.setArray([0,3,0,0]),e.setInt32(Math.floor(t.italicAngle*2**16)),e.skip(4),e.setInt32(t.fixedPitch?1:0),e.skip(16),e.data}function Nm(t){return t.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g,"").slice(0,63)}function xo(t,e){e||=[[],[]];const n=[e[0][0]||"Original licence",e[0][1]||t,e[0][2]||"Unknown",e[0][3]||"uniqueID",e[0][4]||t,e[0][5]||"Version 0.11",e[0][6]||Nm(t),e[0][7]||"Unknown",e[0][8]||"Unknown",e[0][9]||"Unknown"],s=n.map(Bt),a=new Array(n.length);let i,r,o,f,l;for(i=0,r=n.length;ix.length))+Math.sumPrecise(s.map(x=>x.length))+Math.sumPrecise(a.map(x=>x.length))});w.skip(2),w.setInt16(b),w.setInt16(b*12+6);for(const x of p)w.setArray(x);for(const x of s)w.setArray(x);for(const x of a)w.setArray(x);return w.data}class Xl{#e=new Map;#t=new Map;charProcOperatorList;constructor(e,n,s,a){this.name=e,this.psName=null,this.mimetype=null,this.disableFontFace=a.disableFontFace,this.fontExtraProperties=a.fontExtraProperties,this.loadedName=s.loadedName,this.isType3Font=s.isType3Font,this.missingFile=!1,this.cssFontInfo=s.cssFontInfo;let i=!!(s.flags&os.Serif);if(!i&&!s.isSimulatedFlags){const c=xr(),h=Zo(),u=Cf();for(const d of e.split("+")){let p=ma(d);if(p=c[p]||h[p]||p,p=p.split("-",1)[0],u[p]){i=!0;break}}}this.isSerifFont=i,this.isSymbolicFont=!!(s.flags&os.Symbolic),this.isMonospace=!!(s.flags&os.FixedPitch);let{type:r,subtype:o}=s;this.type=r,this.subtype=o,this.systemFontInfo=s.systemFontInfo;const f=e.match(/^InvalidPDFjsFont_(.*)_\d+$/);if(this.isInvalidPDFjsFont=!!f,this.isInvalidPDFjsFont?this.fallbackName=f[1]:this.isMonospace?this.fallbackName="monospace":this.isSerifFont?this.fallbackName="serif":this.fallbackName="sans-serif",this.systemFontInfo?.guessFallback&&(this.systemFontInfo.guessFallback=!1,this.systemFontInfo.css+=`,${this.fallbackName}`),this.differences=s.differences,this.widths=s.widths,this.defaultWidth=s.defaultWidth,this.composite=s.composite,this.cMap=s.cMap,this.capHeight=s.capHeight/Ca,this.ascent=s.ascent/Ca,this.descent=s.descent/Ca,this.lineHeight=this.ascent-this.descent,this.fontMatrix=s.fontMatrix,this.bbox=s.bbox,this.defaultEncoding=s.defaultEncoding,this.toUnicode=s.toUnicode,this.toFontChar=[],s.type==="Type3"){for(let c=0;c<256;c++)this.toFontChar[c]=this.differences[c]||s.defaultEncoding[c];return}if(this.cidEncoding=s.cidEncoding||"",this.vertical=!!s.vertical,this.vertical&&(this.vmetrics=s.vmetrics,this.defaultVMetrics=s.defaultVMetrics),!n||n.isEmpty){n&&H('Font file is empty in "'+e+'" ('+this.loadedName+")"),this.fallbackToSystemFont(s);return}[r,o]=Em(n,s),(r!==this.type||o!==this.subtype)&&ut(`Inconsistent font file Type/SubType, expected: ${this.type}/${this.subtype} but found: ${r}/${o}.`);let l;try{switch(r){case"MMType1":ut("MMType1 font ("+e+"), falling back to Type1.");case"Type1":case"CIDFontType0":this.mimetype="font/opentype";const c=o==="Type1C"||o==="CIDFontType0C"?new po(n,s):new vm(e,n,s);zl(s),l=this.convert(e,c,s);break;case"OpenType":case"TrueType":case"CIDFontType2":this.mimetype="font/opentype",l=this.checkAndRepair(e,n,s),zl(s),this.isOpenType&&(r="OpenType");break;default:throw new Y(`Font ${r} is not supported`)}}catch(c){H(c),this.fallbackToSystemFont(s);return}Ul(s),this.data=l,this.type=r,this.subtype=o,this.fontMatrix=s.fontMatrix,this.widths=s.widths,this.defaultWidth=s.defaultWidth,this.toUnicode=s.toUnicode,this.seacMap=s.seacMap}get renderer(){const e=gm.create(this,!0);return ue(this,"renderer",e)}#s(e){const n=Object.create(null);for(const s of e){const a=this[s];a!==void 0&&(n[s]=a)}return n}exportData(){return{buffer:om(this.#s(Sm)),charProcOperatorList:this.charProcOperatorList,extra:this.fontExtraProperties?this.#s(Am):void 0}}fallbackToSystemFont(e){this.missingFile=!0;const{name:n,type:s}=this;let a=ma(n);const i=xr(),r=Zo(),o=!!i[a],f=!!(r[a]&&i[r[a]]);a=i[a]||r[a]||a;const c=wm()[a];c&&(isNaN(this.ascent)&&(this.ascent=c.ascent/Ca),isNaN(this.descent)&&(this.descent=c.descent/Ca),isNaN(this.capHeight)&&(this.capHeight=c.capHeight/Ca)),this.bold=/bold/i.test(a),this.italic=/oblique|italic/i.test(a),this.black=/Black/.test(n);const h=/Narrow/.test(n);if(this.remeasure=(!o||h)&&Object.keys(this.widths).length>0,(o||f)&&s==="CIDFontType2"&&this.cidEncoding.startsWith("Identity-")){const u=e.cidToGidMap,d=[];if(/Trebuchet/i.test(n)?(ni(d,Yd()),ni(d,Jd())):(ni(d,Bl()),/Arial-?Black/i.test(n)?ni(d,Qd()):/Calibri/i.test(n)&&ni(d,Zd())),u){for(const p in d){const m=d[p];u[m]!==void 0&&(d[+p]=u[m])}u.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof Jn&&this.toUnicode.forEach(function(p,m){const b=d[p];u[b]===void 0&&(d[+p]=m)})}this.toUnicode instanceof Jn||this.toUnicode.forEach(function(p,m){d[+p]=m}),this.toFontChar=d,this.toUnicode=new Zi(d)}else if(/Symbol/i.test(a)){const u=this.composite&&this.cidEncoding.startsWith("Identity-");this.toFontChar=bo(u?Mm():U0,us(),this.differences)}else if(/Dingbats/i.test(a))this.toFontChar=bo(Sf,Fd(),this.differences);else if(o||f){const u=bo(this.defaultEncoding,us(),this.differences);s==="CIDFontType2"&&!this.cidEncoding.startsWith("Identity-")&&!(this.toUnicode instanceof Jn)&&this.toUnicode.forEach(function(d,p){u[+d]=p}),this.toFontChar=u}else{const u=us(),d=[];this.toUnicode.forEach((p,m)=>{if(!this.composite){const b=this.differences[p]||this.defaultEncoding[p],w=ki(b,u);w!==-1&&(m=w)}d[+p]=m}),this.composite&&this.toUnicode instanceof Jn&&/Tahoma|Verdana/i.test(n)&&ni(d,Bl()),this.toFontChar=d}Ul(e),this.loadedName=a.split("-",1)[0]}checkAndRepair(e,n,s){const a=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function i(G,_){const L=Object.create(null);L["OS/2"]=null,L.cmap=null,L.head=null,L.hhea=null,L.hmtx=null,L.maxp=null,L.name=null,L.post=null;for(let z=0;z<_;z++){const te=r(G);a.includes(te.tag)&&te.length!==0&&(L[te.tag]=te)}return L}function r(G){const _=G.getString(4),L=G.getInt32()>>>0,z=G.getInt32()>>>0,te=G.getInt32()>>>0,je=G.pos;G.pos=G.start||0,G.skip(z);const he=G.getBytes(te);G.pos=je,_==="head"&&(he[8]=he[9]=he[10]=he[11]=0,he[17]|=32);const ie=_==="CFF "?null:new DataView(he.buffer,he.byteOffset,he.byteLength);return{tag:_,checksum:L,length:te,offset:z,data:he,view:ie}}function o(G){return{version:G.getString(4),numTables:G.getUint16(),searchRange:G.getUint16(),entrySelector:G.getUint16(),rangeShift:G.getUint16()}}function f(G){const _=G.getString(4);Ct(_==="ttcf","Must be a TrueType Collection font.");const L=G.getUint16(),z=G.getUint16(),te=G.getInt32()>>>0,je=[];for(let ie=0;ie>>0);const he={ttcTag:_,majorVersion:L,minorVersion:z,numFonts:te,offsetTable:je};switch(L){case 1:return he;case 2:return he.dsigTag=G.getInt32()>>>0,he.dsigLength=G.getInt32()>>>0,he.dsigOffset=G.getInt32()>>>0,he}throw new Y(`Invalid TrueType Collection majorVersion: ${L}.`)}function l(G,_){const{numFonts:L,offsetTable:z}=f(G),te=_.split("+");let je;for(let he=0;he>>0;let qe=!1;if(!(ie?.platformId===we&&ie?.encodingId===ce)){if(we===0&&(ce===0||ce===1||ce===3))qe=!0;else if(we===1&&ce===0)qe=!0;else if(we===3&&ce===1&&(z||!ie))qe=!0,L||(Fe=!0);else if(L&&we===3&&ce===0){qe=!0;let Le=!0;if(Z>3;Z.push(qe),we=Math.max(qe,we)}const ce=[];for(let Me=0;Me<=we;Me++)ce.push({firstCode:_.getUint16(),entryCount:_.getUint16(),idDelta:qn(_.getByte(),_.getByte()),idRangePos:_.pos+_.getUint16()});for(let Me=0;Me<256;Me++)if(Z[Me]===0)_.pos=ce[0].idRangePos+2*Me,He=_.getUint16(),Ue.push({charCode:Me,glyphId:He});else{const qe=ce[Z[Me]];for(Ne=0;Ne>1;_.skip(6);const we=[];let ce;for(ce=0;ce>1)-(Z-ce),te.offsetIndex=qe,Me=Math.max(Me,qe+te.end-te.start+1)}const Le=[];for(Ne=0;Ne>>0;for(Ne=0;Ne>>0,ce=_.getInt32()>>>0;let Me=_.getInt32()>>>0;for(let qe=we;qe<=ce;qe++)Ue.push({charCode:qe,glyphId:Me++})}}else return H("cmap table has unsupported format: "+Ee),{platformId:-1,encodingId:-1,mappings:[],hasShortCmap:!1};const W=[],de=new Set;for(const Z of Ue){const{charCode:we}=Z;de.has(we)||(de.add(we),W.push(Z))}return{platformId:ie.platformId,encodingId:ie.encodingId,mappings:W.sort((Z,we)=>Z.charCode-we.charCode),hasShortCmap:_e}}function h(G,_,L,z,te,je){if(!_){L&&(L.data=null);return}G.pos=(G.start||0)+_.offset,G.pos+=4,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2;const he=G.getUint16();G.pos+=8,G.pos+=2;let ie=G.getUint16();he!==0&&(Di(z.data[44],z.data[45])&2||(_.data[22]=0,_.data[23]=0)),ie>te&&(ut(`The numOfMetrics (${ie}) should not be greater than the numGlyphs (${te}).`),ie=te,_.data[34]=(ie&65280)>>8,_.data[35]=ie&255);const Ee=te-ie-(L.length-ie*4>>1);if(Ee>0){const _e=new Uint8Array(L.length+Ee*2);_e.set(L.data),je&&(_e[L.length]=L.data[2],_e[L.length+1]=L.data[3]),L.data=_e}}function u(G,_,L,z,te,je){const he={length:0,sizeOfInstructions:0};if(_<0||_>=G.length||L>G.length||L-_<=12)return he;const ie=G.subarray(_,L),Fe=qn(ie[2],ie[3]),Ee=qn(ie[4],ie[5]),_e=qn(ie[6],ie[7]),Ue=qn(ie[8],ie[9]);Fe>_e&&(_i(ie,2,_e),_i(ie,6,Fe)),Ee>Ue&&(_i(ie,4,Ue),_i(ie,8,Ee));const Ne=qn(ie[0],ie[1]);if(Ne<0)return Ne<-1||(z.set(ie,te),he.length=ie.length),he;let He,W=10,de=0;for(He=0;Heie.length?he:!je&&we>0?(z.set(ie.subarray(0,Z),te),z.set([0,0],te+Z),z.set(ie.subarray(ce,qe),te+Z+2),qe-=we,ie.length-qe>3&&(qe=qe+3&-4),he.length=qe,he):ie.length-qe>3?(qe=qe+3&-4,z.set(ie.subarray(0,qe),te),he.length=qe,he):(z.set(ie,te),he.length=ie.length,he)}function d(G,_,L){const{data:z,view:te}=G,je=te.getInt32(0);je>>16!==1&&(ut("Attempting to fix invalid version in head table: "+je),te.setInt32(0,65536));const he=qn(z[50],z[51]);if(he<0||he>1){ut("Attempting to fix invalid indexToLocFormat in head table: "+he);const ie=_+1;if(L===ie<<1)z[50]=0,z[51]=0;else if(L===ie<<2)z[50]=0,z[51]=1;else throw new Y("Could not fix indexToLocFormat: "+he)}}function p(G,_,L,z,te,je,he){let ie,Fe,Ee;z?(ie=4,Fe=function(ot,lt){return ot[lt]<<24|ot[lt+1]<<16|ot[lt+2]<<8|ot[lt+3]},Ee=function(ot,lt,Ft){ot[lt]=Ft>>>24&255,ot[lt+1]=Ft>>16&255,ot[lt+2]=Ft>>8&255,ot[lt+3]=Ft&255}):(ie=2,Fe=function(ot,lt){return ot[lt]<<9|ot[lt+1]<<1},Ee=function(ot,lt,Ft){ot[lt]=Ft>>9&255,ot[lt+1]=Ft>>1&255});const _e=je?L+1:L,Ue=ie*(1+_e),Ne=new Uint8Array(Ue);Ne.set(G.data.subarray(0,Ue)),G.data=Ne;const He=_.data,W=He.length,de=new Uint8Array(W);let Z,we;const ce=[];for(Z=0,we=0;ZW&&(Je=W),ce.push({index:Z,offset:Je,endOffset:0})}for(ce.sort((Je,ot)=>Je.offset-ot.offset),Z=0;ZJe.index-ot.index),Z=0;Zhe&&(he=Je.sizeOfInstructions),Ce+=ot,Ee(Ne,we,Ce)}if(Ce===0){const Je=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(Z=0,we=ie;Z<_e;Z++,we+=ie)Ee(Ne,we,Je.length);_.data=Je}else if(je){const Je=Fe(Ne,ie);de.length>Je+Ce?_.data=de.subarray(0,Je+Ce):(_.data=new Uint8Array(Je+Ce),_.data.set(de.subarray(0,Ce))),_.data.set(de.subarray(0,Je),Ce),Ee(G.data,Ne.length-ie,Ce+Je)}else _.data=de.subarray(0,Ce);return{missingGlyphs:Le,maxSizeOfInstructions:he}}function m(G,_,L){const z=(n.start||0)+G.offset;n.pos=z;const te=G.length,je=z+te,he=n.getInt32();n.skip(28);let ie,Fe=!0,Ee;switch(he){case 65536:ie=v0;break;case 131072:const _e=n.getUint16();if(_e!==L){Fe=!1;break}const Ue=[];for(Ee=0;Ee<_e;++Ee){const He=n.getUint16();if(He>=32768){Fe=!1;break}Ue.push(He)}if(!Fe)break;const Ne=[];for(;n.posje)continue;n.pos=W;const de=He.name;if(He.encoding){let Z="";for(let we=0,ce=He.length;we0&&(z+=Le-1)}if(!de&&!we){let Le=0;for(qe<=142?Le=w[qe]:qe>=192&&qe<=223?Le=-1:qe>=224&&(Le=-2),qe>=113&&qe<=117&&(je=Ue.pop(),isNaN(je)||(Le=-je*2));Le<0&&Ue.length>0;)Ue.pop(),Le++;for(;Le>0;)Ue.push(NaN),Le--}}_.tooComplexToFollowFunctions=W;const ce=[L];z>L.length&&ce.push(new Uint8Array(z-L.length)),_e>Ee&&(H("TT: complementing a missing function tail"),ce.push(new Uint8Array([34,45]))),k(G,ce)}function j(G,_){if(!G.tooComplexToFollowFunctions){if(G.functionsDefined.length>_){H("TT: more functions defined than expected"),G.hintsValid=!1;return}for(let L=0,z=G.functionsUsed.length;L_){H("TT: invalid function id: "+L),G.hintsValid=!1;return}if(G.functionsUsed[L]&&!G.functionsDefined[L]){H("TT: undefined function: "+L),G.hintsValid=!1;return}}}}function k(G,_){if(_.length>1){let L=0,z,te;for(z=0,te=_.length;z=32)M=65536;else throw new Y('"maxp" table has a wrong version number');Gl(v.maxp.data,0,M)}let D=Di(v.head.data[50],v.head.data[51]);if(v.loca){const G=D?(N+1)*4:(N+1)*2;if(v.loca.length!==G){H("Incorrect 'loca' table length -- attempting to fix it.");const _=Object.values(v).filter(Boolean).sort((te,je)=>te.offset-je.offset),L=_.indexOf(v.loca),z=_[L+1]||null;if(z&&v.loca.offset+G>8&255,je[ie+1]=Fe&255;const Ee=Math.round(G[he]*qn(je[ie+2],je[ie+3]));_i(je,ie+2,Ee)}}let $=N+1,K=!0;$>65535&&(K=!1,$=N,H("Not enough space in glyfs to duplicate first glyph."));let oe=0,me=0;if(M>=65536&&v.maxp.length>=32)n.pos+=8,n.getUint16()>2&&(v.maxp.data[14]=0,v.maxp.data[15]=2),n.pos+=4,oe=n.getUint16(),n.pos+=4,me=n.getUint16();else if(A&&M===20480){const G=new Uint8Array(32);Gl(G,0,65536),G[4]=N>>8&255,G[5]=N&255,G.fill(255,6,14),G[15]=2,G[28]=255,G[29]=255,G[31]=16,v.maxp.data=G,v.maxp.length=32,M=65536}v.maxp.data[4]=$>>8,v.maxp.data[5]=$&255;const X=y(v.fpgm,v.prep,v["cvt "],oe);if(X||(delete v.fpgm,delete v.prep,delete v["cvt "]),h(n,v.hhea,v.hmtx,v.head,$,K),!v.head)throw new Y('Required "head" table is not found');d(v.head,N,A?v.loca.length:0);let ee=Object.create(null);if(A){const G=p(v.loca,v.glyf,N,D,X,K,me);ee=G.missingGlyphs,M>=65536&&v.maxp.length>=32&&(v.maxp.data[26]=G.maxSizeOfInstructions>>8,v.maxp.data[27]=G.maxSizeOfInstructions&255)}if(!v.hhea)throw new Y('Required "hhea" table is not found');v.hhea.data[10]===0&&v.hhea.data[11]===0&&(v.hhea.data[10]=255,v.hhea.data[11]=255);const ye={unitsPerEm:Di(v.head.data[18],v.head.data[19]),yMax:qn(v.head.data[42],v.head.data[43]),yMin:qn(v.head.data[38],v.head.data[39]),ascent:qn(v.hhea.data[4],v.hhea.data[5]),descent:qn(v.hhea.data[6],v.hhea.data[7]),lineGap:qn(v.hhea.data[8],v.hhea.data[9])};this.ascent=ye.ascent/ye.unitsPerEm,this.descent=ye.descent/ye.unitsPerEm,this.lineGap=ye.lineGap/ye.unitsPerEm,this.cssFontInfo?.lineHeight?(this.lineHeight=this.cssFontInfo.metrics.lineHeight,this.lineGap=this.cssFontInfo.metrics.lineGap):this.lineHeight=this.ascent-this.descent+this.lineGap,v.post&&m(v.post,s,N),v.post={tag:"post",data:$l(s)};const Be=Object.create(null);function ae(G){return!ee[G]}if(s.composite){const G=s.cidToGidMap||[],_=G.length===0;s.cMap.forEach(function(L,z){if(typeof z=="string"&&(z=wo(L,z,!0)),z>65535)throw new Y("Max size of CID is 65,535");let te=-1;_?te=z:G[z]!==void 0&&(te=G[z]),te>=0&&te=61440&&ie<=61695&&(ie&=255),Be[ie]=he.glyphId}else for(const he of z)Be[he.charCode]=he.glyphId;if(s.glyphNames&&(te.length||this.differences.length))for(let he=0;he<256;++he){if(!je&&Be[he]!==void 0)continue;const ie=this.differences[he]||te[he];if(!ie)continue;const Fe=s.glyphNames.indexOf(ie);Fe>0&&ae(Fe)&&(Be[he]=Fe)}!s.isInternalFont&&Be[0]===void 0&&ae(0)&&(Be[0]=0)}Be.length===0&&(Be[0]=0);const $e=K?$-1:0;if(!s.cssFontInfo){const G=Wl(Be,ae,$e,this.toUnicode);this.toFontChar=G.toFontChar,v.cmap={tag:"cmap",data:Kl(G.charCodeToGlyphId,G.toUnicodeExtraMap,$)},(!v["OS/2"]||!Pm(v["OS/2"],n))&&(v["OS/2"]={tag:"OS/2",data:Vl(s,G.charCodeToGlyphId,ye)})}if(!v.name)v.name={tag:"name",data:xo(this.name)};else{const[G,_]=b(v.name);v.name.data=xo(e,G),this.psName=G[0][6]||null,s.composite||Im(s,this.isSymbolicFont,_)}const tt=new kr(q.version);for(const G in v)tt.addTable(G,v[G].data);return tt.toArray()}convert(e,n,s){s.fixedPitch=!1,s.builtInEncoding&&Cm(s,s.builtInEncoding);const a=n instanceof po?n.numGlyphs-1:1,i=n.getGlyphMapping(s);let r=null,o=i,f=null;s.cssFontInfo||(r=Wl(i,n.hasGlyphId.bind(n),a,this.toUnicode),this.toFontChar=r.toFontChar,o=r.charCodeToGlyphId,f=r.toUnicodeExtraMap);const l=n.numGlyphs;function c(m,b){let w=null;for(const x in m)b===m[x]&&(w||=[]).push(x|0);return w}function h(m,b){for(const w in m)if(b===m[w])return w|0;return r.charCodeToGlyphId[r.nextAvailableFontCharCode]=b,r.nextAvailableFontCharCode++}const u=n.seacs;if(r&&u?.length){const m=s.fontMatrix||Ea,b=n.getCharset(),w=Object.create(null);for(let x in u){x|=0;const j=u[x],k=zs[j[2]],y=zs[j[3]],q=b.indexOf(k),v=b.indexOf(y);if(q<0||v<0)continue;const A={x:j[0]*m[0]+j[1]*m[2]+m[4],y:j[0]*m[1]+j[1]*m[3]+m[5]},S=c(i,x);if(S)for(const F of S){const M=r.charCodeToGlyphId,N=h(M,q),D=h(M,v);w[F]={baseFontCharCode:N,accentFontCharCode:D,accentOffset:A}}}s.seacMap=w}const d=s.fontMatrix?1/Math.max(...s.fontMatrix.slice(0,4).map(Math.abs)):1e3,p=new kr("OTTO");return p.addTable("CFF ",n.data),p.addTable("OS/2",Vl(s,o)),p.addTable("cmap",Kl(o,f,l)),p.addTable("head",(function(){const b=[0,0,0,0,158,11,126,39],w=new Vt({exactLength:54});return w.setArray([0,1,0,0]),w.setArray([0,0,16,0]),w.skip(4),w.setArray([95,15,60,245]),w.skip(2),w.setSafeInt16(d),w.setArray(b),w.setArray(b),w.skip(2),w.setSafeInt16(s.descent),w.setArray([15,255]),w.setSafeInt16(s.ascent),w.setInt16(s.italicAngle?2:0),w.setArray([0,17]),w.skip(6),w.data})()),p.addTable("hhea",(function(){const b=new Vt({exactLength:36});return b.setArray([0,1,0,0]),b.setSafeInt16(s.ascent),b.setSafeInt16(s.descent),b.skip(2),b.setArray([255,255]),b.skip(6),b.setSafeInt16(s.capHeight),b.setSafeInt16(Math.tan(s.italicAngle)*s.xHeight),b.skip(12),b.setInt16(l),b.data})()),p.addTable("hmtx",(function(){const b=n.charstrings,w=n.cff?.widths??null,x=new Vt({exactLength:l*4});x.skip(4);for(let j=1,k=l;jn.length%2===1,i=this.toUnicode instanceof Jn?r=>this.toUnicode.charCodeOf(r):r=>this.toUnicode.charCodeOf(String.fromCodePoint(r));for(let r=0,o=e.length;r65535&&r++,this.toUnicode){const l=i(f);if(l!==-1){a()&&(n.push(s.join("")),s.length=0);const c=this.cMap?this.cMap.getCharCodeLength(l):1;for(let h=c-1;h>=0;h--)s.push(String.fromCharCode(l>>8*h&255));continue}}a()||(n.push(s.join("")),s.length=0),s.push(String.fromCodePoint(f))}return n.push(s.join("")),n}}class Yl{constructor(e){this.error=e,this.loadedName="g_font_error",this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(){return{error:this.error}}}const Om=[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],Lm={lineHeight:1.2207,lineGap:.2207},zm=[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],Um={lineHeight:1.2207,lineGap:.2207},Gm=[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],Wm={lineHeight:1.2207,lineGap:.2207},Km=[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],Vm={lineHeight:1.2207,lineGap:.2207},$m=[.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],Xm={lineHeight:1.2,lineGap:.2},Ym=[.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],Jm={lineHeight:1.35,lineGap:.2},Qm=[.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],Zm={lineHeight:1.35,lineGap:.2},ep=[.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],tp={lineHeight:1.2,lineGap:.2},Pi=[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],Ni=[-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],Oi=[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],Li=[-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],zi=[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],Ui=[-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],Gi=[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],Wi=[-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],np=[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],sp={lineHeight:1.2,lineGap:.2},ap=[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],ip={lineHeight:1.2,lineGap:.2},rp=[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],op={lineHeight:1.2,lineGap:.2},fp=[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],lp={lineHeight:1.2,lineGap:.2},cp=[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],hp={lineHeight:1.33008,lineGap:0},up=[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],dp={lineHeight:1.33008,lineGap:0},mp=[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],pp={lineHeight:1.33008,lineGap:0},gp=[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],bp={lineHeight:1.33008,lineGap:0},wp=It(function(t){t["MyriadPro-Regular"]=t["PdfJS-Fallback-Regular"]={name:"LiberationSans-Regular",factors:fp,baseWidths:Gi,baseMapping:Wi,metrics:lp},t["MyriadPro-Bold"]=t["PdfJS-Fallback-Bold"]={name:"LiberationSans-Bold",factors:np,baseWidths:Pi,baseMapping:Ni,metrics:sp},t["MyriadPro-It"]=t["MyriadPro-Italic"]=t["PdfJS-Fallback-Italic"]={name:"LiberationSans-Italic",factors:rp,baseWidths:zi,baseMapping:Ui,metrics:op},t["MyriadPro-BoldIt"]=t["MyriadPro-BoldItalic"]=t["PdfJS-Fallback-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:ap,baseWidths:Oi,baseMapping:Li,metrics:ip},t.ArialMT=t.Arial=t["Arial-Regular"]={name:"LiberationSans-Regular",baseWidths:Gi,baseMapping:Wi},t["Arial-BoldMT"]=t["Arial-Bold"]={name:"LiberationSans-Bold",baseWidths:Pi,baseMapping:Ni},t["Arial-ItalicMT"]=t["Arial-Italic"]={name:"LiberationSans-Italic",baseWidths:zi,baseMapping:Ui},t["Arial-BoldItalicMT"]=t["Arial-BoldItalic"]={name:"LiberationSans-BoldItalic",baseWidths:Oi,baseMapping:Li},t["Calibri-Regular"]={name:"LiberationSans-Regular",factors:Km,baseWidths:Gi,baseMapping:Wi,metrics:Vm},t["Calibri-Bold"]={name:"LiberationSans-Bold",factors:Om,baseWidths:Pi,baseMapping:Ni,metrics:Lm},t["Calibri-Italic"]={name:"LiberationSans-Italic",factors:Gm,baseWidths:zi,baseMapping:Ui,metrics:Wm},t["Calibri-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:zm,baseWidths:Oi,baseMapping:Li,metrics:Um},t["Segoeui-Regular"]={name:"LiberationSans-Regular",factors:gp,baseWidths:Gi,baseMapping:Wi,metrics:bp},t["Segoeui-Bold"]={name:"LiberationSans-Bold",factors:cp,baseWidths:Pi,baseMapping:Ni,metrics:hp},t["Segoeui-Italic"]={name:"LiberationSans-Italic",factors:mp,baseWidths:zi,baseMapping:Ui,metrics:pp},t["Segoeui-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:up,baseWidths:Oi,baseMapping:Li,metrics:dp},t["Helvetica-Regular"]=t.Helvetica={name:"LiberationSans-Regular",factors:ep,baseWidths:Gi,baseMapping:Wi,metrics:tp},t["Helvetica-Bold"]={name:"LiberationSans-Bold",factors:$m,baseWidths:Pi,baseMapping:Ni,metrics:Xm},t["Helvetica-Italic"]={name:"LiberationSans-Italic",factors:Qm,baseWidths:zi,baseMapping:Ui,metrics:Zm},t["Helvetica-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:Ym,baseWidths:Oi,baseMapping:Li,metrics:Jm}});function Hf(t){const e=ma(t);return wp()[e]}function xp(t){const e=Hf(t);if(!e)return null;const{baseWidths:n,baseMapping:s,factors:a}=e,i=a?n.map((l,c)=>l*a[c]):n;let r=-2,o;const f=[];for(const[l,c]of s.map((h,u)=>[h,u]).sort(([h],[u])=>h-u))l!==-1&&(l===r+1?(o.push(i[c]),r+=1):(r=l,o=[i[c]],f.push(l,o)));return f}function Sh(t){const e=xp(t),n=new B(null);n.set("BaseFont",J.get(t)),n.set("Type",J.get("Font")),n.set("Subtype",J.get("CIDFontType2")),n.set("Encoding",J.get("Identity-H")),n.set("CIDToGIDMap",J.get("Identity")),n.set("W",e),n.set("FirstChar",e[0]),n.set("LastChar",e.at(-2)+e.at(-1).length-1);const s=new B(null);n.set("FontDescriptor",s);const a=new B(null);return a.set("Ordering","Identity"),a.set("Registry","Adobe"),a.set("Supplement",0),n.set("CIDSystemInfo",a),n}const I={number:0,lbrace:1,rbrace:2,true:3,false:4,add:5,sub:6,mul:7,div:8,idiv:9,mod:10,exp:11,eq:12,ne:13,gt:14,ge:15,lt:16,le:17,and:18,or:19,xor:20,bitshift:21,abs:22,neg:23,ceiling:24,floor:25,round:26,truncate:27,not:28,sqrt:29,sin:30,cos:31,ln:32,log:33,atan:34,cvi:35,cvr:36,dup:37,exch:38,pop:39,copy:40,index:41,roll:42,if:43,ifelse:44,eof:45,min:46,max:47};class va{constructor(e,n=null){this.id=e,this.value=n}}class ea{static#e=null;static#t=null;static#s(){const e=Object.create(null),n=Object.create(null);for(const[s,a]of Object.entries(I)){if(s==="number")continue;const i=a>=I.true&&a<=I.ifelse,r=new va(a,i?s:null);e[s]=r,i&&(n[s]=r)}this.#e=e,this.#t=n}constructor(e){ea.#e||ea.#s(),this.data=e,this.pos=0,this.len=e.length,this._numberPattern=/[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/iy,this._identifierPattern=/[a-z]+/y}_skipComment(){const e=this.data.indexOf(` +`,this.pos),n=this.data.indexOf("\r",this.pos),s=Math.min(e<0?this.len:e,n<0?this.len:n);this.pos=Math.min(s+1,this.len)}_getNumber(){this._numberPattern.lastIndex=this.pos;const e=this._numberPattern.exec(this.data);if(!e)return new va(I.number,0);const n=parseFloat(e[0]);return Number.isFinite(n)?(this.pos=this._numberPattern.lastIndex,new va(I.number,n)):new va(I.number,0)}_getOperator(){this._identifierPattern.lastIndex=this.pos;const e=this._identifierPattern.exec(this.data);if(!e)return new va(I.number,0);this.pos=this._identifierPattern.lastIndex;const n=e[0],s=ea.#t[n];return s||new va(I.number,0)}next(){for(;this.pos=48&&e<=57?(this.pos--,this._getNumber()):e>=97&&e<=122?(this.pos--,this._getOperator()):new va(I.number,0)}}return ea.#e.eof}}const Pt={numeric:0,boolean:1,unknown:2},De={program:0,block:1,number:2,operator:3,if:4,ifelse:5,arg:6,const:7,unary:8,binary:9,ternary:10};class gs{constructor(e){this.type=e}}class jp extends gs{constructor(e){super(De.program),this.body=e}}class kp extends gs{constructor(e){super(De.block),this.instructions=e}}class yp extends gs{constructor(e){super(De.number),this.value=e}}class qp extends gs{constructor(e){super(De.operator),this.op=e}}class vp extends gs{constructor(e){super(De.if),this.then=e}}class Sp extends gs{constructor(e,n){super(De.ifelse),this.then=e,this.otherwise=n}}class Ap extends gs{constructor(e){super(De.arg),this.index=e,this.valueType=Pt.numeric}}class Mn extends gs{constructor(e){super(De.const),this.value=e,this.valueType=typeof e=="boolean"?Pt.boolean:Pt.numeric}}class Ip extends gs{constructor(e,n,s=Pt.unknown){super(De.unary),this.op=e,this.operand=n,this.valueType=s}}class Jl extends gs{constructor(e,n,s,a=Pt.unknown){super(De.binary),this.op=e,this.first=n,this.second=s,this.valueType=a}}class Cp extends gs{constructor(e,n,s,a=Pt.unknown){super(De.ternary),this.cond=e,this.then=n,this.otherwise=s,this.valueType=a}}class Ef{constructor(e){this.lexer=e,this._token=null}static _isRegularOperator(e){return e>=I.true&&en;case I.ge:return e>=n;case I.lt:return e=0?e<>-n|0;case I.min:return Math.min(e,n);case I.max:return Math.max(e,n);default:return}}function Bp(t,e){switch(t){case I.abs:return Math.abs(e);case I.neg:return-e;case I.ceiling:return Math.ceil(e);case I.floor:return Math.floor(e);case I.round:return Math.round(e);case I.truncate:return Math.trunc(e);case I.sqrt:{const n=Math.sqrt(e);return Number.isFinite(n)?n:void 0}case I.sin:return Math.sin(e%360*Math.PI/180);case I.cos:return Math.cos(e%360*Math.PI/180);case I.ln:{const n=Math.log(e);return Number.isFinite(n)?n:void 0}case I.log:{const n=Math.log10(e);return Number.isFinite(n)?n:void 0}case I.cvi:return Math.trunc(e);case I.cvr:return e;case I.not:return typeof e=="boolean"?!e:~e;default:return}}const si=100;function Fp(t,e){return t===I.not?e:Pt.numeric}function Rp(t,e,n){switch(t){case I.eq:case I.ne:case I.gt:case I.ge:case I.lt:case I.le:return Pt.boolean;case I.and:case I.or:case I.xor:return e===n&&e!==Pt.unknown?e:Pt.unknown;default:return Pt.numeric}}class ys{static#e=null;static#t=null;static#s=null;static#a=null;static#n(){this.#e=new Set([I.add,I.sub,I.mul,I.div,I.idiv,I.mod,I.exp,I.atan,I.eq,I.ne,I.gt,I.ge,I.lt,I.le,I.and,I.or,I.xor,I.bitshift]),this.#t=new Set([I.abs,I.neg,I.ceiling,I.floor,I.round,I.truncate,I.sqrt,I.sin,I.cos,I.ln,I.log,I.cvi,I.cvr,I.not]),this.#s=new Set([I.abs,I.ceiling,I.cvi,I.cvr,I.floor,I.round,I.truncate]),this.#a=new Map([[I.eq,I.ne],[I.ne,I.eq],[I.lt,I.ge],[I.le,I.gt],[I.gt,I.le],[I.ge,I.lt]])}evaluate(e,n){if(ys.#e||ys.#n(),this._failed=!1,n>si)return null;const s=[];for(let a=0;a{if(!a||a.type===De.arg||a.type===De.const)return;const i=n.get(a)??0;if(n.set(a,i+1),!(i>0))switch(a.type){case De.unary:s(a.operand);break;case De.binary:s(a.first),s(a.second);break;case De.ternary:s(a.cond),s(a.then),s(a.otherwise);break}};for(const a of e)s(a);for(const[a,i]of n)i>1&&(a.shared=!0,a.sharedCount=i)}_evalBlock(e,n){this._evalBlockFrom(e.instructions,0,n)}_evalBlockFrom(e,n,s){for(let a=n;asi&&(this._failed=!0);break;case De.operator:this._evalOp(i.op,s);break;case De.if:{if(s.length<1){this._failed=!0;break}const r=s.pop(),o=s.slice();if(this._evalBlock(i.then,s),this._failed)break;if(s.length===o.length)for(let f=0;fo.length){if(r.type===De.const){r.value||(s.length=0,s.push(...o));break}const f=s.slice();if(this._evalBlockFrom(e,a+1,f),this._failed)break;const l=o;if(this._evalBlockFrom(e,a+1,l),this._failed)break;if(f.length!==l.length){const c=new Mn(0);for(;f.lengthsi&&(this._failed=!0);break;case I.false:n.push(new Mn(!1)),n.length>si&&(this._failed=!0);break;case I.dup:if(n.length<1){this._failed=!0;break}n.push(n.at(-1)),n.length>si&&(this._failed=!0);break;case I.exch:{if(n.length<2){this._failed=!0;break}const s=n.pop(),a=n.pop();n.push(s,a);break}case I.pop:if(n.length<1){this._failed=!0;break}n.pop();break;case I.copy:{if(n.length<1){this._failed=!0;break}const s=n.pop();if(s.type===De.const){const a=s.value|0;a===0||(a<0||a>n.length?this._failed=!0:(n.push(...n.slice(-a)),n.length>si&&(this._failed=!0)))}else this._failed=!0;break}case I.index:{if(n.length<1){this._failed=!0;break}const s=n.pop();if(s.type===De.const){const a=s.value|0;a<0||a>=n.length?this._failed=!0:n.push(n.at(-a-1))}else this._failed=!0;break}case I.roll:{if(n.length<2){this._failed=!0;break}const s=n.pop(),a=n.pop();if(a.type===De.const&&s.type===De.const){const i=a.value|0;if(i!==0)if(i<0||i>n.length)this._failed=!0;else{const r=((s.value|0)%i+i)%i;if(r>0){const o=n.splice(-i,i);n.push(...o.slice(i-r),...o.slice(0,i-r))}}}else this._failed=!0;break}default:this._failed=!0;break}}_makeBinary(e,n,s){if(n.type===De.const&&s.type===De.const){const a=Tp(e,s.value,n.value);if(a!==void 0)return new Mn(a)}if(bn(n,s))switch(e){case I.sub:return new Mn(0);case I.xor:return new Mn(n.valueType===Pt.boolean?!1:0);case I.and:case I.or:return n;case I.min:case I.max:return n;case I.eq:case I.ge:case I.le:return new Mn(!0);case I.ne:case I.gt:case I.lt:return new Mn(!1)}if(n.type===De.const){const a=n.value;switch(e){case I.add:if(a===0)return s;break;case I.sub:if(a===0)return s;break;case I.mul:if(a===1)return s;if(a===0)return n;if(a===-1)return this._makeUnary(I.neg,s);break;case I.div:if(a!==0)return this._makeBinary(I.mul,new Mn(1/a),s);break;case I.idiv:if(a===1)return s;break;case I.exp:if(a===1)return s;if(a===-1)return this._makeBinary(I.div,s,new Mn(1));if(a===.5)return this._makeUnary(I.sqrt,s);if(a===.25){const i=this._makeUnary(I.sqrt,s);return this._makeUnary(I.sqrt,i)}if(a===2)return this._makeBinary(I.mul,s,s);if(a===3)return this._makeBinary(I.mul,this._makeBinary(I.mul,s,s),s);if(a===4){const i=this._makeBinary(I.mul,s,s);return this._makeBinary(I.mul,i,i)}if(a===0)return new Mn(1);break;case I.and:if(a===!0)return s;if(a===!1)return n;break;case I.or:if(a===!1)return s;if(a===!0)return n;break;case I.min:if(s.type===De.binary&&s.op===I.max&&s.first.type===De.const&&s.first.value>=a)return n;break;case I.max:if(s.type===De.binary&&s.op===I.min&&s.first.type===De.const&&s.first.value<=a)return n;break}}if(s.type===De.const){const a=s.value;switch(e){case I.add:if(a===0)return n;break;case I.sub:if(a===0)return this._makeUnary(I.neg,n);break;case I.mul:if(a===1)return n;if(a===0)return s;if(a===-1)return this._makeUnary(I.neg,n);break;case I.and:if(a===!0)return n;if(a===!1)return s;break;case I.or:if(a===!1)return n;if(a===!0)return s;break}}return new Jl(e,n,s,Rp(e,n.valueType,s.valueType))}_makeUnary(e,n){if(n.type===De.const){const s=Bp(e,n.value);if(s!==void 0)return new Mn(s)}if(e===I.not&&n.type===De.binary){const s=ys.#a.get(n.op);if(s!==void 0)return new Jl(s,n.first,n.second,Pt.boolean)}if(e===I.neg&&n.type===De.binary&&n.op===I.sub)return this._makeBinary(I.sub,n.second,n.first);if(n.type===De.unary){if(e===I.neg&&n.op===I.neg||e===I.not&&n.op===I.not)return n.operand;if(e===I.abs&&n.op===I.neg)return this._makeUnary(I.abs,n.operand);if(ys.#s.has(e)&&e===n.op)return n}return new Ip(e,n,Fp(e,n.valueType))}_makeTernary(e,n,s){if(e.type===De.const)return e.value?n:s;if(bn(n,s))return n;if(n.type===De.const&&s.type===De.const){if(n.value===!0&&s.value===!1)return e;if(n.value===!1&&s.value===!0)return this._makeUnary(I.not,e)}if(e.type===De.binary){const{op:a,first:i,second:r}=e;if(a===I.gt||a===I.ge){if(bn(n,i)&&bn(s,r))return this._makeBinary(I.min,i,r);if(bn(n,r)&&bn(s,i))return this._makeBinary(I.max,i,r)}else if(a===I.lt||a===I.le){if(bn(n,i)&&bn(s,r))return this._makeBinary(I.max,i,r);if(bn(n,r)&&bn(s,i))return this._makeBinary(I.min,i,r)}}return new Cp(e,n,s,n.valueType===s.valueType?n.valueType:Pt.unknown)}}const Te={ARG:0,CONST:1,STORE:2,IF:3,JUMP:4,ABS:5,NEG:6,CEIL:7,FLOOR:8,ROUND:9,TRUNC:10,NOT_B:11,NOT_N:12,SQRT:13,SIN:14,COS:15,LN:16,LOG10:17,CVI:18,SHIFT:19,ADD:20,SUB:21,MUL:22,DIV:23,IDIV:24,MOD:25,POW:26,EQ:27,NE:28,GT:29,GE:30,LT:31,LE:32,AND:33,OR:34,XOR:35,ATAN:36,MIN:37,MAX:38,TEE_TMP:39,LOAD_TMP:40},S0=Math.PI/180,Ih=180/Math.PI;class Ql{static#e=new Float64Array(64);static#t=new Float64Array(64);constructor(e,n){this.nIn=e.length>>1,this.nOut=n.length>>1,this.range=n,this.ir=[],this._tmpMap=new Map,this._nextTmp=0}_compileNode(e){if(e.shared){const n=this._tmpMap.get(e);if(n!==void 0)return this.ir.push(Te.LOAD_TMP,n),!0;if(!this._compileNodeImpl(e))return!1;const s=this._nextTmp++;return this._tmpMap.set(e,s),this.ir.push(Te.TEE_TMP,s),!0}return this._compileNodeImpl(e)}_compileNodeImpl(e){switch(e.type){case De.arg:return this.ir.push(Te.ARG,e.index),!0;case De.const:{const n=e.value;return this.ir.push(Te.CONST,typeof n=="boolean"?Number(n):n),!0}case De.unary:return this._compileUnary(e);case De.binary:return this._compileBinary(e);case De.ternary:return this._compileTernary(e);default:return!1}}_compileUnary(e){const{op:n,operand:s,valueType:a}=e;if(n===I.cvr)return this._compileNode(s);if(!this._compileNode(s))return!1;switch(n){case I.abs:this.ir.push(Te.ABS);break;case I.neg:this.ir.push(Te.NEG);break;case I.ceiling:this.ir.push(Te.CEIL);break;case I.floor:this.ir.push(Te.FLOOR);break;case I.round:this.ir.push(Te.ROUND);break;case I.truncate:this.ir.push(Te.TRUNC);break;case I.sqrt:this.ir.push(Te.SQRT);break;case I.sin:this.ir.push(Te.SIN);break;case I.cos:this.ir.push(Te.COS);break;case I.ln:this.ir.push(Te.LN);break;case I.log:this.ir.push(Te.LOG10);break;case I.cvi:this.ir.push(Te.CVI);break;case I.not:if(a===Pt.boolean)this.ir.push(Te.NOT_B);else if(a===Pt.numeric)this.ir.push(Te.NOT_N);else return!1;break;default:return!1}return!0}_compileBinary(e){const{op:n,first:s,second:a}=e;if(n===I.bitshift)return s.type!==De.const||!Number.isInteger(s.value)||!this._compileNode(a)?!1:(this.ir.push(Te.SHIFT,s.value),!0);if(!this._compileNode(a)||!this._compileNode(s))return!1;switch(n){case I.add:this.ir.push(Te.ADD);break;case I.sub:this.ir.push(Te.SUB);break;case I.mul:this.ir.push(Te.MUL);break;case I.div:this.ir.push(Te.DIV);break;case I.idiv:this.ir.push(Te.IDIV);break;case I.mod:this.ir.push(Te.MOD);break;case I.exp:this.ir.push(Te.POW);break;case I.eq:this.ir.push(Te.EQ);break;case I.ne:this.ir.push(Te.NE);break;case I.gt:this.ir.push(Te.GT);break;case I.ge:this.ir.push(Te.GE);break;case I.lt:this.ir.push(Te.LT);break;case I.le:this.ir.push(Te.LE);break;case I.and:this.ir.push(Te.AND);break;case I.or:this.ir.push(Te.OR);break;case I.xor:this.ir.push(Te.XOR);break;case I.atan:this.ir.push(Te.ATAN);break;case I.min:this.ir.push(Te.MIN);break;case I.max:this.ir.push(Te.MAX);break;default:return!1}return!0}_compileTernary(e){if(!this._compileNode(e.cond))return!1;this.ir.push(Te.IF,0);const n=this.ir.length-1;if(!this._compileNode(e.then))return!1;this.ir.push(Te.JUMP,0);const s=this.ir.length-1;return this.ir[n]=this.ir.length,this._compileNode(e.otherwise)?(this.ir[s]=this.ir.length,!0):!1}compile(e){const n=new ys().evaluate(e,this.nIn);if(!n||n.length0?l[o-1]=u<>-h:l[o-1]=u;break}case Te.ADD:{const h=l[--o];l[o-1]+=h;break}case Te.SUB:{const h=l[--o];l[o-1]-=h;break}case Te.MUL:{const h=l[--o];l[o-1]*=h;break}case Te.DIV:{const h=l[--o];l[o-1]=h!==0?l[o-1]/h:0;break}case Te.IDIV:{const h=l[--o];l[o-1]=h!==0?Math.trunc(l[o-1]/h):0;break}case Te.MOD:{const h=l[--o];l[o-1]=h!==0?l[o-1]%h:0;break}case Te.POW:{const h=l[--o];l[o-1]**=h;break}case Te.EQ:{const h=l[--o];l[o-1]=l[o-1]===h?1:0;break}case Te.NE:{const h=l[--o];l[o-1]=l[o-1]!==h?1:0;break}case Te.GT:{const h=l[--o];l[o-1]=l[o-1]>h?1:0;break}case Te.GE:{const h=l[--o];l[o-1]=l[o-1]>=h?1:0;break}case Te.LT:{const h=l[--o];l[o-1]=l[o-1]s?1:0;break}case I.ge:{const s=n[--this.#t];n[this.#t-1]=n[this.#t-1]>=s?1:0;break}case I.lt:{const s=n[--this.#t];n[this.#t-1]=n[this.#t-1]0?a<>-s;break}case I.min:{const s=n[--this.#t];n[this.#t-1]=Math.min(n[this.#t-1],s);break}case I.max:{const s=n[--this.#t];n[this.#t-1]=Math.max(n[this.#t-1],s);break}case I.dup:this.#s(n[this.#t-1]);break;case I.exch:{const s=n[--this.#t],a=n[--this.#t];this.#s(s),this.#s(a);break}case I.pop:this.#t--;break;case I.copy:{const s=Math.trunc(n[--this.#t]),a=this.#t-s;for(let i=0;i1&&s!==0){const i=(s%a+a)%a;if(i!==0){const r=this.#t-a,o=n.slice(r,this.#t);for(let f=0;f>1,i=s.length>>1,{instructions:r}=e.body;return(o,f,l,c)=>{this.#t=0;for(let u=0;u=0?this.#e[h+u]:0;l[c+u]=Tt(d,s[u*2],s[u*2+1])}}}}function Ep(t,e,n,s=!1){const a=Ah(t),i=!s&&new Ql(e,n).compile(a);return i?(r,o,f,l)=>{Ql.execute(i,r,o,f,l)}:Hp.build(a,e,n)}const ke={if:4,else:5,end:11,select:27,call:16,local_get:32,local_set:33,local_tee:34,i32_const:65,i32_eqz:69,i32_and:113,i32_or:114,i32_xor:115,i32_shl:116,i32_shr_s:117,i32_trunc_f64_s:170,f64_const:68,f64_eq:97,f64_ne:98,f64_lt:99,f64_gt:100,f64_le:101,f64_ge:102,f64_abs:153,f64_neg:154,f64_ceil:155,f64_floor:156,f64_trunc:157,f64_nearest:158,f64_sqrt:159,f64_add:160,f64_sub:161,f64_mul:162,f64_div:163,f64_min:164,f64_max:165,f64_convert_i32_s:183,f64_store:57},Zl=96,nn=124,ai={type:1,import:2,function:3,memory:5,export:7,code:10},ec=0,Mp=2;function Ra(t){const e=[];do{let n=t&127;t>>>=7,t!==0&&(n|=128),e.push(n)}while(t!==0);return e}function Jr(t){return[...Ra(t.length),...Bt(t)]}function ii(t,e){return[t,...Ra(e.length),...e]}function Kn(t){const e=Ra(t.length);for(const n of t){if(typeof n=="number"){e.push(n);continue}for(const s of n)e.push(s)}return e}const fi=[["sin","Math","sin",[nn],[nn]],["cos","Math","cos",[nn],[nn]],["atan2","Math","atan2",[nn,nn],[nn]],["log","Math","log",[nn],[nn]],["log10","Math","log10",[nn],[nn]],["pow","Math","pow",[nn,nn],[nn]]],Dp={Math:Object.fromEntries(fi.map(([t])=>[t,Math[t]]))};class Wt{static#e=!1;static#t=null;static#s=null;static#a=0;static#n=0;static#i=null;static#r=null;static#f=null;static#o=null;static#l=null;static#u=null;static#c=null;static#h=null;static#d(){this.#t=new Map([[I.eq,ke.f64_eq],[I.ne,ke.f64_ne],[I.lt,ke.f64_lt],[I.le,ke.f64_le],[I.gt,ke.f64_gt],[I.ge,ke.f64_ge]]),this.#s=Object.create(null);for(let n=0;n[Zl,...Kn(n),...Kn(s)]),this.#r=new Uint8Array(ii(ai.import,Kn(fi.map(([,n,s],a)=>[...Jr(n),...Jr(s),ec,...Ra(a+1)])))),this.#f=new Uint8Array(ii(ai.function,Kn([[0]]))),this.#o=new Uint8Array(ii(ai.memory,Kn([[0,1]]))),this.#l=new Uint8Array(ii(ai.export,Kn([[...Jr("fn"),ec,...Ra(fi.length)],[...Jr("mem"),Mp,0]]))),this.#u=new Uint8Array([0,97,115,109,1,0,0,0]);const e=new ArrayBuffer(8);this.#c=new DataView(e),this.#h=new Uint8Array(e),this.#e=!0}constructor(e,n){Wt.#e||Wt.#d(),this._nIn=e.length>>1,this._nOut=n.length>>1,this._range=n,this._code=[],this._nextLocal=this._nIn,this._freeLocals=[],this._sharedLocals=new Map}_allocLocal(){return this._freeLocals.pop()??this._nextLocal++}_releaseLocal(e){this._freeLocals.push(e)}_emitULEB128(e){do{let n=e&127;e>>>=7,e!==0&&(n|=128),this._code.push(n)}while(e!==0)}_emitSLEB128(e){for(;;){const n=e&127;if(e>>=7,e===0&&(n&64)===0||e===-1&&(n&64)!==0){this._code.push(n);return}this._code.push(n|128)}}_emitF64Const(e){this._code.push(ke.f64_const),Wt.#c.setFloat64(0,e,!0);for(let n=0;n<8;n++)this._code.push(Wt.#h[n])}_emitLocalGet(e){this._code.push(ke.local_get),this._emitULEB128(e)}_emitLocalSet(e){this._code.push(ke.local_set),this._emitULEB128(e)}_emitLocalTee(e){this._code.push(ke.local_tee),this._emitULEB128(e)}_compileNode(e){if(e.shared){const n=this._sharedLocals.get(e);if(n!==void 0)return this._emitLocalGet(n.local),--n.remaining===0&&this._releaseLocal(n.local),!0;if(!this._compileNodeImpl(e))return!1;const s=this._allocLocal();return this._sharedLocals.set(e,{local:s,remaining:e.sharedCount-1}),this._emitLocalTee(s),!0}return this._compileNodeImpl(e)}_compileNodeImpl(e){switch(e.type){case De.arg:return this._emitLocalGet(e.index),!0;case De.const:{let n=e.value;return typeof n=="boolean"&&(n=n?1:0),this._emitF64Const(n),!0}case De.unary:return this._compileUnaryNode(e);case De.binary:return this._compileBinaryNode(e);case De.ternary:return this._compileTernaryNode(e);default:return!1}}_compileSinCosNode(e){const n=this._allocLocal();try{if(!this._compileNode(e.operand))return!1;const s=this._code;return this._emitLocalSet(n),this._emitLocalGet(n),this._emitLocalGet(n),this._emitF64Const(360),s.push(ke.f64_div,ke.f64_trunc),this._emitF64Const(360),s.push(ke.f64_mul,ke.f64_sub),this._emitF64Const(Wt.#a),s.push(ke.f64_mul,ke.call),this._emitULEB128(Wt.#s[e.op===I.sin?"sin":"cos"]),!0}finally{this._releaseLocal(n)}}_compileUnaryNode(e){const n=this._code;if(e.op===I.sin||e.op===I.cos)return this._compileSinCosNode(e);if(e.op===I.not)return e.valueType===Pt.boolean?this._compileNodeAsBoolI32(e.operand)?(n.push(ke.i32_eqz,ke.f64_convert_i32_s),!0):!1:e.valueType===Pt.numeric&&this._compileNode(e.operand)?(n.push(ke.i32_trunc_f64_s,ke.i32_const,127,ke.i32_xor,ke.f64_convert_i32_s),!0):!1;if(!this._compileNode(e.operand))return!1;switch(e.op){case I.abs:n.push(ke.f64_abs);break;case I.neg:n.push(ke.f64_neg);break;case I.sqrt:n.push(ke.f64_sqrt);break;case I.floor:n.push(ke.f64_floor);break;case I.ceiling:n.push(ke.f64_ceil);break;case I.round:this._emitF64Const(.5),n.push(ke.f64_add,ke.f64_floor);break;case I.truncate:n.push(ke.f64_trunc);break;case I.cvi:n.push(ke.i32_trunc_f64_s,ke.f64_convert_i32_s);break;case I.cvr:break;case I.ln:n.push(ke.call),this._emitULEB128(Wt.#s.log);break;case I.log:n.push(ke.call),this._emitULEB128(Wt.#s.log10);break;default:return!1}return!0}_compileSafeDivNode(e,n){const s=this._allocLocal();try{if(!this._compileNode(n)||!this._compileNode(e))return!1;const a=this._code;return this._emitLocalTee(s),a.push(ke.f64_div),this._emitF64Const(0),this._emitLocalGet(s),this._emitF64Const(0),a.push(ke.f64_ne,ke.select),!0}finally{this._releaseLocal(s)}}_compileSafeIdivNode(e,n){const s=this._allocLocal();try{if(!this._compileNode(n)||!this._compileNode(e))return!1;const a=this._code;return this._emitLocalTee(s),a.push(ke.f64_div,ke.f64_trunc),this._emitF64Const(0),this._emitLocalGet(s),this._emitF64Const(0),a.push(ke.f64_ne,ke.select),!0}finally{this._releaseLocal(s)}}_compileBitshiftNode(e,n){if(e.type!==De.const||!Number.isInteger(e.value)||!this._compileNode(n))return!1;const s=this._code;s.push(ke.i32_trunc_f64_s);const a=e.value;return a>0?(s.push(ke.i32_const),this._emitSLEB128(a),s.push(ke.i32_shl)):a<0&&(s.push(ke.i32_const),this._emitSLEB128(-a),s.push(ke.i32_shr_s)),s.push(ke.f64_convert_i32_s),!0}_compileModNode(e,n){if(e.type===De.const&&e.value===0)return this._compileNode(n)?(this._code.push(ke.drop),this._emitF64Const(0),!0):!1;const s=this._allocLocal();try{if(!this._compileNode(n))return!1;this._emitLocalTee(s);const a=this._code;if(e.type===De.const)this._emitLocalGet(s),this._emitF64Const(e.value),a.push(ke.f64_div,ke.f64_trunc),this._emitF64Const(e.value),a.push(ke.f64_mul,ke.f64_sub);else{const i=this._allocLocal();try{if(!this._compileNode(e))return!1;this._emitLocalSet(i),this._emitLocalGet(s),this._emitLocalGet(i),a.push(ke.f64_div,ke.f64_trunc),this._emitLocalGet(i),a.push(ke.f64_mul,ke.f64_sub),this._emitF64Const(0),this._emitLocalGet(i),this._emitF64Const(0),a.push(ke.f64_ne,ke.select)}finally{this._releaseLocal(i)}}return!0}finally{this._releaseLocal(s)}}_compileAtanNode(e,n){const s=this._allocLocal();try{if(!this._compileNode(n)||!this._compileNode(e))return!1;const a=this._code;return a.push(ke.call),this._emitULEB128(Wt.#s.atan2),this._emitF64Const(Wt.#n),a.push(ke.f64_mul),this._emitLocalTee(s),this._emitF64Const(0),a.push(ke.f64_lt,ke.if,nn),this._emitLocalGet(s),this._emitF64Const(360),a.push(ke.f64_add,ke.else),this._emitLocalGet(s),a.push(ke.end),!0}finally{this._releaseLocal(s)}}_compileBitwiseNode(e,n,s){if(!this._compileBitwiseOperandI32(s)||!this._compileBitwiseOperandI32(n))return!1;const a=this._code;switch(e){case I.and:a.push(ke.i32_and);break;case I.or:a.push(ke.i32_or);break;case I.xor:a.push(ke.i32_xor);break;default:return!1}return a.push(ke.f64_convert_i32_s),!0}_compileBitwiseOperandI32(e){return e.valueType===Pt.boolean?this._compileNodeAsBoolI32(e):this._compileNode(e)?(this._code.push(ke.i32_trunc_f64_s),!0):!1}_compileStandardBinaryNode(e,n,s){if(n===s&&n.type!==De.arg&&n.type!==De.const&&!n.shared){const i=this._allocLocal();try{if(!this._compileNode(n))return!1;this._emitLocalTee(i),this._emitLocalGet(i)}finally{this._releaseLocal(i)}}else if(!this._compileNode(s)||!this._compileNode(n))return!1;const a=this._code;switch(e){case I.add:a.push(ke.f64_add);break;case I.sub:a.push(ke.f64_sub);break;case I.mul:a.push(ke.f64_mul);break;case I.exp:a.push(ke.call),this._emitULEB128(Wt.#s.pow);break;case I.eq:a.push(ke.f64_eq,ke.f64_convert_i32_s);break;case I.ne:a.push(ke.f64_ne,ke.f64_convert_i32_s);break;case I.lt:a.push(ke.f64_lt,ke.f64_convert_i32_s);break;case I.le:a.push(ke.f64_le,ke.f64_convert_i32_s);break;case I.gt:a.push(ke.f64_gt,ke.f64_convert_i32_s);break;case I.ge:a.push(ke.f64_ge,ke.f64_convert_i32_s);break;case I.min:a.push(ke.f64_min);break;case I.max:a.push(ke.f64_max);break;default:return!1}return!0}_compileBinaryNode(e){const{op:n,first:s,second:a}=e;return n===I.bitshift?this._compileBitshiftNode(s,a):n===I.div?this._compileSafeDivNode(s,a):n===I.idiv?this._compileSafeIdivNode(s,a):n===I.mod?this._compileModNode(s,a):n===I.atan?this._compileAtanNode(s,a):n===I.and||n===I.or||n===I.xor?this._compileBitwiseNode(n,s,a):this._compileStandardBinaryNode(n,s,a)}_compileNodeAsBoolI32(e){if(e.type===De.binary){const n=Wt.#t.get(e.op);if(n!==void 0)return!this._compileNode(e.second)||!this._compileNode(e.first)?!1:(this._code.push(n),!0);if(e.valueType===Pt.boolean&&(e.op===I.and||e.op===I.or||e.op===I.xor)){if(!this._compileNodeAsBoolI32(e.second)||!this._compileNodeAsBoolI32(e.first))return!1;switch(e.op){case I.and:this._code.push(ke.i32_and);break;case I.or:this._code.push(ke.i32_or);break;case I.xor:this._code.push(ke.i32_xor);break}return!0}}return e.type===De.unary&&e.op===I.not&&e.valueType===Pt.boolean?this._compileNodeAsBoolI32(e.operand)?(this._code.push(ke.i32_eqz),!0):!1:this._compileNode(e)?(e.valueType===Pt.boolean?this._code.push(ke.i32_trunc_f64_s):(this._emitF64Const(0),this._code.push(ke.f64_ne)),!0):!1}_compileTernaryNode(e){return!this._compileNodeAsBoolI32(e.cond)||(this._code.push(ke.if,nn),!this._compileNode(e.then))||(this._code.push(ke.else),!this._compileNode(e.otherwise))?!1:(this._code.push(ke.end),!0)}compile(e){const n=new ys().evaluate(e,this._nIn);if(!n||n.length0?Kn([[...Ra(i),nn]]):Kn([]),h=c.length+s.length,u=new Uint8Array(ii(ai.code,Kn([[...Ra(h),...c,...s]]))),d=Wt.#u,p=Wt.#r,m=Wt.#f,b=Wt.#o,w=Wt.#l,x=d.length+l.length+p.length+m.length+b.length+w.length+u.length,j=new Uint8Array(x);let k=0;return j.set(d,k),k+=d.length,j.set(l,k),k+=l.length,j.set(p,k),k+=p.length,j.set(m,k),k+=m.length,j.set(b,k),k+=b.length,j.set(w,k),k+=w.length,j.set(u,k),j}}function _p(t,e,n){return new Wt(e,n).compile(Ah(t))}function Pp(t,e,n){const{fn:s,mem:a}=t,i=new Float64Array(a.buffer,0,n);let r;switch(n){case 1:r=(o,f)=>{o[f]=i[0]};break;case 2:r=(o,f)=>{o[f]=i[0],o[f+1]=i[1]};break;case 3:r=(o,f)=>{o[f]=i[0],o[f+1]=i[1],o[f+2]=i[2]};break;case 4:r=(o,f)=>{o[f]=i[0],o[f+1]=i[1],o[f+2]=i[2],o[f+3]=i[3]};break;default:r=(o,f)=>{for(let l=0;l{s(o[f]),r(l,c)};case 2:return(o,f,l,c)=>{s(o[f],o[f+1]),r(l,c)};case 3:return(o,f,l,c)=>{s(o[f],o[f+1],o[f+2]),r(l,c)};case 4:return(o,f,l,c)=>{s(o[f],o[f+1],o[f+2],o[f+3]),r(l,c)};default:{const o=new Float64Array(e);return(f,l,c,h)=>{for(let u=0;u>1,n.length>>1)}catch{return null}}class Ka{constructor(e){this._onlyRefs=e?.onlyRefs===!0,this._onlyRefs||(this._nameRefMap=new Map,this._imageMap=new Map),this._imageCache=new $t}getByName(e){this._onlyRefs&&st("Should not call `getByName` method.");const n=this._nameRefMap.get(e);return n?this.getByRef(n):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,n,s){st("Abstract method `set` called.")}}class tc extends Ka{set(e,n=null,s){if(typeof e!="string")throw new Error('LocalImageCache.set - expected "name" argument.');if(n){if(this._imageCache.has(n))return;this._nameRefMap.set(e,n),this._imageCache.put(n,s);return}this._imageMap.has(e)||this._imageMap.set(e,s)}}class Ch extends Ka{set(e=null,n=null,s){if(typeof e!="string"&&!n)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(n){if(this._imageCache.has(n))return;e!==null&&this._nameRefMap.set(e,n),this._imageCache.put(n,s);return}this._imageMap.has(e)||this._imageMap.set(e,s)}}class Op extends Ka{constructor(e){super({onlyRefs:!0})}set(e=null,n,s){if(!n)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(n)||this._imageCache.put(n,s)}}class nc extends Ka{set(e,n=null,s){if(typeof e!="string")throw new Error('LocalGStateCache.set - expected "name" argument.');if(n){if(this._imageCache.has(n))return;this._nameRefMap.set(e,n),this._imageCache.put(n,s);return}this._imageMap.has(e)||this._imageMap.set(e,s)}}class Lp extends Ka{constructor(e){super({onlyRefs:!0})}set(e=null,n,s){if(!n)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(n)||this._imageCache.put(n,s)}}class zp extends Ka{constructor(e){super({onlyRefs:!0})}set(e=null,n,s){if(!n)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(n)||this._imageCache.put(n,s)}}class Up extends Ka{constructor(e){super({onlyRefs:!0})}set(e=null,n,s){if(!n)throw new Error('GlobalColorSpaceCache.set - expected "ref" argument.');this._imageCache.has(n)||this._imageCache.put(n,s)}clear(){this._imageCache.clear()}}class hi{static NUM_PAGES_THRESHOLD=2;static MIN_IMAGES_TO_CACHE=10;static MAX_BYTE_SIZE=5e7;#e=new bt;constructor(){this._refCache=new $t,this._imageCache=new $t}get#t(){let e=0;for(const n of this._imageCache)e+=n.byteSize;return e}get#s(){return!(this._imageCache.size+e):null}class sc{static getSampleArray(e,n,s,a){let i=n;for(const u of e)i*=u;const r=new Array(i);let o=0,f=0;const l=1/(2**s-1),c=a.getBytes((i*s+7)/8);let h=0;for(let u=0;u>o)*l,f&=(1<0?o[w-1]:s[0],j=w10){H("Visibility expression is too deeply nested");return}const i=e.length,r=t.fetchIfRef(e[0]);if(i<2||!(r instanceof J)){H("Invalid visibility expression");return}switch(r.name){case"And":case"Or":case"Not":s.push(r.name);break;default:H(`Invalid operator ${r.name} in visibility expression`);return}for(let o=1;o0)return{type:"OCMD",expression:o}}const r=s.get("OCGs");if(Array.isArray(r)||r instanceof B){const o=[];if(Array.isArray(r))for(const l of r)o.push(l.toString());else o.push(r.objId);const f=s.get("P");return{type:a,ids:o,policy:f instanceof J?f.name:null,expression:null}}else if(r instanceof Q)return{type:a,id:r.toString()}}return null}const Gp=["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"],Wp=["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 ic(t){return(t&1)!==0}function Kp(t){return(t&1)===0}function Vp(t,e,n){let s,a;for(s=e,a=t.length;s4?(s=!0,e=0):(s=!1,e=1));const f=[];for(r=0;r=0&&pt[w]==="ET";--w)pt[w]="EN";for(let w=r+1;w=0;k--){const y=pt[k];if(y==="L"){x="L";break}if(y==="R"||y==="EN"||y==="AN"){x="R";break}}let j=h;for(let k=w;kb&&ic(b)&&(m=b);for(b=p;b>=m;--b){let w=-1;for(r=0,o=f.length;r=0&&(rc(Ys,w,r),w=-1):w<0&&(w=r);w>=0&&rc(Ys,w,f.length)}for(r=0,o=Ys.length;r")&&(Ys[r]="")}return ko(Ys.join(""),s)}const mn={style:"normal",weight:"normal"},Zr={style:"normal",weight:"500"},Ds={style:"normal",weight:"bold"},Ta={style:"italic",weight:"normal"},Ba={style:"italic",weight:"bold"},ar=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","PT Astra Serif","DejaVu Serif","Bitstream Vera Serif","Ubuntu"],style:mn,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:Ds,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:Ta,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:Ba,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:mn,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:Ds,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:Ta,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:Ba,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:mn,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:Ds,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:Ta,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:Ba,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:mn,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:Ds,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:Ta,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:Ba,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:mn,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:Ds,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:Ta,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:Ba,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:mn}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}],["ËÎÌå",{local:["SimSun","SimSun Regular","NSimSun"],style:mn,ultimate:"serif"}],["ºÚÌå",{local:["SimHei","SimHei Regular"],style:mn,ultimate:"sans-serif"}],["¿¬Ìå",{local:["KaiTi","SimKai","SimKai Regular"],style:mn,ultimate:"sans-serif"}],["·ÂËÎ",{local:["FangSong","SimFang","SimFang Regular"],style:mn,ultimate:"serif"}],["¿¬Ìå_GB2312",{alias:"¿¬Ìå"}],["·ÂËÎ_GB2312",{alias:"·ÂËÎ"}],["Á¥Êé",{local:["SimLi","SimLi Regular"],style:mn,ultimate:"serif"}],["ÐÂËÎ",{alias:"ËÎÌå"}],["HeiseiMin-W3",{local:["Hiragino Mincho ProN","Hiragino Mincho Pro","Yu Mincho","YuMincho","Source Han Serif JP","Noto Serif JP","Noto Serif CJK JP","IPAexMincho","IPAMincho","Takao Mincho","MS Mincho","MS PMincho"],style:mn,ultimate:"serif"}],["HeiseiKakuGo-W5",{local:["Hiragino Kaku Gothic ProN","Hiragino Kaku Gothic Pro","Hiragino Sans","Yu Gothic","YuGothic","Source Han Sans JP","Noto Sans JP","Noto Sans CJK JP","IPAexGothic","IPAGothic","Takao Gothic","Meiryo","MS Gothic","MS PGothic"],style:Zr,ultimate:"sans-serif"}],["HeiseiMin-W3-Acro",{alias:"HeiseiMin-W3"}],["HeiseiKakuGo-W5-Acro",{alias:"HeiseiKakuGo-W5"}],["KozMinPro-Regular",{alias:"HeiseiMin-W3"}],["KozMinProVI-Regular",{alias:"HeiseiMin-W3"}],["KozMinPr6N-Regular",{alias:"HeiseiMin-W3"}],["KozGoPro-Regular",{alias:"HeiseiKakuGo-W5"}],["KozGoProVI-Regular",{alias:"HeiseiKakuGo-W5"}],["KozGoPr6N-Regular",{alias:"HeiseiKakuGo-W5"}],["STSong-Light",{local:["STSong","Songti SC","Source Han Serif SC","Source Han Serif CN","Noto Serif SC","Noto Serif CJK SC","AR PL UMing CN","SimSun","NSimSun"],style:mn,ultimate:"serif"}],["STHeiti-Regular",{local:["STHeiti","Heiti SC","PingFang SC","Source Han Sans SC","Source Han Sans CN","Noto Sans SC","Noto Sans CJK SC","Microsoft YaHei","SimHei","WenQuanYi Zen Hei"],style:mn,ultimate:"sans-serif"}],["STSongStd-Light",{alias:"STSong-Light"}],["AdobeSongStd-Light",{alias:"STSong-Light"}],["AdobeHeitiStd-Regular",{alias:"STHeiti-Regular"}],["AdobeKaitiStd-Regular",{alias:"¿¬Ìå"}],["AdobeFangsongStd-Regular",{alias:"·ÂËÎ"}],["MSung-Light",{local:["Songti TC","LiSong Pro","Source Han Serif TC","Source Han Serif TW","Noto Serif TC","Noto Serif CJK TC","AR PL UMing TW","PMingLiU","MingLiU","MingLiU_HKSCS"],style:mn,ultimate:"serif"}],["MHei-Medium",{local:["Heiti TC","STHeiti","Source Han Sans TC","Source Han Sans TW","Noto Sans TC","Noto Sans CJK TC","PingFang TC","Microsoft JhengHei"],style:Zr,ultimate:"sans-serif"}],["MSungStd-Light",{alias:"MSung-Light"}],["AdobeMingStd-Light",{alias:"MSung-Light"}],["HYSMyeongJo-Medium",{local:["AppleMyungjo","Source Han Serif KR","Noto Serif KR","Noto Serif CJK KR","Nanum Myeongjo","Batang"],style:Zr,ultimate:"serif"}],["HYGoThic-Medium",{local:["Apple SD Gothic Neo","AppleGothic","Source Han Sans KR","Noto Sans KR","Noto Sans CJK KR","Nanum Gothic","Malgun Gothic","Dotum","Gulim"],style:Zr,ultimate:"sans-serif"}],["HYSMyeongJoStd-Medium",{alias:"HYSMyeongJo-Medium"}],["AdobeMyungjoStd-Medium",{alias:"HYSMyeongJo-Medium"}],["HYGoThic-Bold",{alias:"HYGoThic-Medium",style:Ds}],["AdobeGothicStd-Bold",{alias:"HYGoThic-Medium",style:Ds}]]),$p=new Map([["Arial-Black","ArialBlack"]]);function Xp(t){switch(t){case Ds:return"Bold";case Ta:return"Italic";case Ba:return"Bold Italic";default:if(t?.weight==="bold")return"Bold";if(t?.style==="italic")return"Italic"}return""}function oc(t){const e=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 t.split(/[- ,+]+/g).filter(n=>!e.has(n.toLowerCase())).join(" ")}function af({alias:t,local:e,path:n,fallback:s,style:a,ultimate:i},r,o,f=!0,l=!0,c=""){const h={style:null,ultimate:null};if(e){const u=c?` ${c}`:"";for(const d of e)r.push(`local(${d}${u})`)}if(t){const u=ar.get(t),d=c||Xp(a);Object.assign(h,af(u,r,o,f&&!s,l&&!n,d))}if(a&&(h.style=a),i&&(h.ultimate=i),f&&s){const u=ar.get(s),{ultimate:d}=af(u,r,o,f,l&&!n,c);h.ultimate||=d}return l&&n&&o&&r.push(`url(${o}${n})`),h}function yo(t,e,n,s,a,i){if(s.startsWith("InvalidPDFjsFont_"))return null;(i==="TrueType"||i==="Type1")&&/^[A-Z]{6}\+/.test(s)&&(s=s.slice(7)),s=ma(s);const r=s;let o=t.get(r);if(o)return o;let f=ar.get(s);if(!f){for(const[b,w]of $p)if(s.startsWith(b)){s=`${w}${s.substring(b.length)}`,f=ar.get(s);break}}let l=!1;f||(f=ar.get(a),l=!0);const c=`${e.getDocId()}_s${e.createFontId()}`;if(!f){if(!Wo(s))return H(`Cannot substitute the font because of its name: ${s}`),t.set(r,null),null;const b=/bold/i.test(s),w=/oblique|italic/i.test(s),x=b&&w&&Ba||b&&Ds||w&&Ta||mn;return o={css:`"${oc(s)}",${c}`,guessFallback:!0,loadedName:c,baseFontName:s,src:`local(${s})`,style:x},t.set(r,o),o}const h=[];l&&Wo(s)&&h.push(`local(${s})`);const{style:u,ultimate:d}=af(f,h,n),p=d===null,m=p?"":`,${d}`;return o={css:`"${oc(s)}",${c}${m}`,guessFallback:p,loadedName:c,baseFontName:s,src:h.join(","),style:u},t.set(r,o),o}const fc=3285377520,$n=4294901760,ks=65535;class Fh{constructor(e){this.h1=e?e&4294967295:fc,this.h2=e?e&4294967295:fc}update(e){let n,s;if(typeof e=="string"){n=new Uint8Array(e.length*2),s=0;for(let m=0,b=e.length;m>>8,n[s++]=w&255)}}else if(ArrayBuffer.isView(e))n=e.slice(),s=n.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const a=s>>2,i=s-a*4,r=new Uint32Array(n.buffer,0,a);let o=0,f=0,l=this.h1,c=this.h2;const h=3432918353,u=461845907,d=h&ks,p=u&ks;for(let m=0;m>>17,o=o*u&$n|o*p&ks,l^=o,l=l<<13|l>>>19,l=l*5+3864292196):(f=r[m],f=f*h&$n|f*d&ks,f=f<<15|f>>>17,f=f*u&$n|f*p&ks,c^=f,c=c<<13|c>>>19,c=c*5+3864292196);switch(o=0,i){case 3:o^=n[a*4+2]<<16;case 2:o^=n[a*4+1]<<8;case 1:o^=n[a*4],o=o*h&$n|o*d&ks,o=o<<15|o>>>17,o=o*u&$n|o*p&ks,a&1?l^=o:c^=o}this.h1=l,this.h2=c}hexdigest(){let e=this.h1,n=this.h2;return e^=n>>>1,e=e*3981806797&$n|e*36045&ks,n=n*4283543511&$n|((n<<16|e>>>16)*2950163797&$n)>>>16,e^=n>>>1,e=e*444984403&$n|e*60499&ks,n=n*3301882366&$n|((n<<16|e>>>16)*3120437893&$n)>>>16,e^=n>>>1,(e>>>0).toString(16).padStart(8,"0")+(n>>>0).toString(16).padStart(8,"0")}}class qs{constructor({xref:e,res:n,image:s,isInline:a=!1,smask:i=null,mask:r=null,isMask:o=!1,pdfFunctionFactory:f,globalColorSpaceCache:l,localColorSpaceCache:c}){this.image=s;const h=s.dict,u=h.get("F","Filter");let d;if(u instanceof J)d=u.name;else if(Array.isArray(u)){const w=e.fetchIfRef(u[0]);w instanceof J&&(d=w.name)}switch(d){case"JPXDecode":({width:s.width,height:s.height,componentsCount:s.numComps,bitsPerComponent:s.bitsPerComponent}=z0.parseImageProperties(s.stream)),s.stream.reset();const w=vn.getReducePowerForJPX(s.width,s.height,s.numComps);if(this.jpxDecoderOptions={numComponents:0,isIndexedColormap:!1,smaskInData:h.get("SMaskInData")>=1,reducePower:w},w){const x=2**w;s.width=Math.ceil(s.width/x),s.height=Math.ceil(s.height/x)}break;case"JBIG2Decode":s.bitsPerComponent=1,s.numComps=1;break}let p=h.get("W","Width"),m=h.get("H","Height");if(Number.isInteger(s.width)&&s.width>0&&Number.isInteger(s.height)&&s.height>0&&(s.width!==p||s.height!==m))H("PDFImage - using the Width/Height of the image data, rather than the image dictionary."),p=s.width,m=s.height;else{const w=typeof p=="number"&&p>0,x=typeof m=="number"&&m>0;if(!w||!x){if(!s.fallbackDims)throw new Y(`Invalid image width: ${p} or height: ${m}`);H("PDFImage - using the Width/Height of the parent image, for SMask/Mask data."),w||(p=s.fallbackDims.width),x||(m=s.fallbackDims.height)}}this.width=p,this.height=m,this.interpolate=h.get("I","Interpolate"),this.imageMask=h.get("IM","ImageMask")||!1,this.matte=h.get("Matte")||!1;let b=s.bitsPerComponent;if(!b&&(b=h.get("BPC","BitsPerComponent"),!b))if(this.imageMask)b=1;else throw new Y(`Bits per component missing in image: ${this.imageMask}`);if(this.bpc=b,this.imageMask)this.numComps=1;else{let w=h.getRaw("CS")||h.getRaw("ColorSpace");const x=!!w;if(this.jpxDecoderOptions?.smaskInData&&h.get("SMaskInData")===2&&(this.jpxPremultiplied=!0,this.matte)){const j=ht.parse({cs:x?w:J.get("DeviceRGB"),xref:e,resources:a?n:null,pdfFunctionFactory:f,globalColorSpaceCache:l,localColorSpaceCache:c});this.preblendMatte=j.getRgb(this.matte,0)}if(x)this.jpxDecoderOptions?.smaskInData&&(w=J.get("DeviceRGBA"));else if(this.jpxDecoderOptions)w=J.get("DeviceRGBA");else switch(s.numComps){case 1:w=J.get("DeviceGray");break;case 3:w=J.get("DeviceRGB");break;case 4:w=J.get("DeviceCMYK");break;default:throw new Error(`Images with ${s.numComps} color components not supported.`)}this.colorSpace=ht.parse({cs:w,xref:e,resources:a?n:null,pdfFunctionFactory:f,globalColorSpaceCache:l,localColorSpaceCache:c}),this.numComps=this.colorSpace.numComps,this.jpxDecoderOptions&&(this.jpxDecoderOptions.numComponents=x?this.numComps:0,this.jpxDecoderOptions.isIndexedColormap=this.colorSpace.name==="Indexed")}if(this.decode=h.getArray("D","Decode"),this.needsDecode=!1,this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,b)||o&&!on.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const w=(1<0,l=(a+7>>3)*i,c=await e.getImageData(l),h=a===1&&i===1&&f===(c.length===0||!!(c[0]&128));if(h)return{isSingleOpaquePixel:h};if(n){if(vn.needsToBeResized(a,i)){const j=new Uint8ClampedArray(a*i*4);return Vo({src:c,dest:j,width:a,height:i,nonBlackColor:0,inverseDecode:f}),vn.createImage({kind:sn.RGBA_32BPP,data:j,width:a,height:i,interpolate:r})}const m=new OffscreenCanvas(a,i),b=m.getContext("2d"),w=b.createImageData(a,i);Vo({src:c,dest:w.data,width:a,height:i,nonBlackColor:0,inverseDecode:f}),b.putImageData(w,0,0);const x=m.transferToImageBitmap();return{data:null,width:a,height:i,interpolate:r,bitmap:x}}const u=c.byteLength,d=l===u;let p;if(e instanceof jn&&(!f||d)?p=c:f?(p=new Uint8Array(l),p.set(c),p.fill(255,u)):p=new Uint8Array(c),f)for(let m=0;m>7&1,f[h+1]=d>>6&1,f[h+2]=d>>5&1,f[h+3]=d>>4&1,f[h+4]=d>>3&1,f[h+5]=d>>2&1,f[h+6]=d>>1&1,f[h+7]=d&1,h+=8;if(h>=1}}else{let p=0;for(d=0,h=0,u=r;h>m,0,c),d&=(1<this.smask.fillGrayBuffer(o,{...f,destWidth:n,destHeight:s});else if(this.mask)if(this.mask instanceof qs)r=(o,f)=>this.mask.fillGrayBuffer(o,{...f,invertOutput:!0,destWidth:n,destHeight:s});else if(Array.isArray(this.mask))r=(o,{maxRows:f,offset:l,stride:c})=>{for(let h=0,u=n*f;hthis.mask[w+1]){d=255;break}}o[h*c+l]=d}};else throw new Y("Unknown mask format.");else r=(o,{maxRows:f,offset:l,stride:c})=>{for(let h=0,u=n*f;h>3,h=n&&vn.needsToBeResized(s,a);if(!this.smask&&!this.mask&&this.colorSpace.name==="DeviceRGBA"){i.kind=sn.RGBA_32BPP;const y=i.data=await this.getImageBytes(f*o*4,{internal:n&&h});if(this.jpxPremultiplied){const q=this.preblendMatte;qs.#e(y,y.length,q?.[0]??0,q?.[1]??0,q?.[2]??0)}return n?h?vn.createImage(i,!1):this.createBitmap(sn.RGBA_32BPP,s,a,y):i}if(!e&&!this.smask&&!this.mask){let y;if(this.colorSpace.name==="DeviceGray"&&l===1?y=sn.GRAYSCALE_1BPP:this.colorSpace.name==="DeviceRGB"&&l===8&&!this.needsDecode&&(y=sn.RGB_24BPP),y&&s===o&&a===f){const q=await this.#t(o,f);if(q)return q;const v=await this.getImageBytes(f*c,{internal:n&&h});if(n)return h?vn.createImage({data:v,kind:y,width:s,height:a,interpolate:this.interpolate},this.needsDecode):this.createBitmap(y,o,f,v);if(i.kind=y,i.data=v,this.needsDecode){Ct(y===sn.GRAYSCALE_1BPP,"PDFImage.createImageData: The image must be grayscale.");const A=i.data;for(let S=0,F=A.length;S>3,d=await this.getImageBytes(c*u,{internal:!0}),p=this.getComponents(d),m=n??l,b=s??c,w=m!==l||b!==c,x=i===void 0?b:Math.min(b,i);let j=l,k=0,y=null;if(w){j=m,k=c/b;const A=l/m;y=new Uint32Array(m);for(let S=0;S0&&s[0].count++}class yr{static TIME_SLOT_DURATION_MS=20;static CHECK_TIME_EVERY=100;constructor(){this.reset()}check(){return++this.checked!isFinite(k))&&(u=null);let d,p;l.has("OC")&&(d=await this.parseMarkedContentProps(l.get("OC"),e)),d!==void 0&&a.addOp(C.beginMarkedContentProps,["OC",d]);const m=l.get("Group");let b;const x=[c&&new Float32Array(c),!m&&u||null],j=l.get("Resources");if(m){p={matrix:c,bbox:u,smask:s,isolated:!1,knockout:!1,needsIsolation:!1,hasSoftMask:!1,isGray:!1};const k=m.get("S");let y=null;if(ze(k,"Transparency")&&(p.isolated=m.get("I")||!1,p.knockout=m.get("K")||!1,m.has("CS"))){const q=this._getColorSpace(m.getRaw("CS"),e,o);y=q instanceof on?q:await this._handleColorSpace(q)}p.isGray=y?.numComps===1,s?.backdrop?(y||=ht.rgb,s.backdrop=y.getRgbHex(s.backdrop,0)):s?.subtype==="Luminosity"&&(s.backdrop="#000000"),b=new jl}else b=a,a.addOp(C.paintFormXObjectBegin,x);await this.getOperatorList({stream:n,task:i,resources:j instanceof B?j:e,operatorList:b,initialState:r,prevRefs:f}),m?(p.needsIsolation=b.needsIsolation||!!s,p.hasSoftMask=b.hasSoftMask||!!s,a.addOp(C.beginGroup,[p]),a.addOp(C.paintFormXObjectBegin,x),a.addOpList(b),a.addOp(C.paintFormXObjectEnd,[]),a.addOp(C.endGroup,[p])):a.addOp(C.paintFormXObjectEnd,[]),d!==void 0&&a.addOp(C.endMarkedContent,[])}_sendImgData(e,n,s=!1){const a=n?[n.bitmap||n.data.buffer]:null;return this.parsingType3Font||s?this.handler.send("commonobj",[e,"Image",n],a):this.handler.send("obj",[e,this.pageIndex,"Image",n],a)}async buildPaintImageXObject({resources:e,image:n,isInline:s=!1,operatorList:a,cacheKey:i,localImageCache:r,localColorSpaceCache:o}){const{maxImageSize:f,ignoreErrors:l,isOffscreenCanvasSupported:c}=this.options,{dict:h}=n,u=h.objId,d=h.get("W","Width"),p=h.get("H","Height");if(!(d&&typeof d=="number")||!(p&&typeof p=="number")){H("Image dimensions are missing, or not numbers.");return}if(f!==-1&&d*p>f){const S="Image exceeded maximum allowed size and was removed.";if(!l)throw new Error(S);H(S);return}let m;h.has("OC")&&(m=await this.parseMarkedContentProps(h.get("OC"),e));const b=h.get("IM","ImageMask")||!1;let w,x,j;if(b){if(w=await qs.createMask({image:n,isOffscreenCanvasSupported:c&&!this.parsingType3Font}),w.isSingleOpaquePixel){if(x=C.paintSolidColorImageMask,j=[],a.addImageOps(x,j,m),i){const F={fn:x,args:j,optionalContent:m};r.set(i,u,F),u&&this._regionalImageCache.set(null,u,F)}return}if(this.parsingType3Font){if(j=Nd(w),j){a.addImageOps(C.constructPath,j,m);return}H("Cannot compile Type3 glyph."),a.addImageOps(C.paintImageMaskXObject,[w],m);return}const S=`mask_${this.idFactory.createObjId()}`;if(a.addDependency(S),w.dataLen=w.bitmap?w.width*w.height*4:w.data.length,this._sendImgData(S,w),x=C.paintImageMaskXObject,j=[{data:S,width:w.width,height:w.height,interpolate:w.interpolate,count:1}],a.addImageOps(x,j,m),i){const F={objId:S,fn:x,args:j,optionalContent:m};r.set(i,u,F),u&&this._regionalImageCache.set(null,u,F)}return}const k=200,y=h.has("SMask")||h.has("Mask");if(s&&d+p25e4||y){const S=await this.handler.sendWithPromise("commonobj",[q,"CopyLocalImage",{imageRef:u}]);if(S){this.globalImageCache.setData(u,A),this.globalImageCache.addByteSize(u,S);return}}}if(qs.buildImage({xref:this.xref,res:e,image:n,isInline:s,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:o}).then(async S=>(w=await S.createImageData(!1,c),w.dataLen=w.bitmap?w.width*w.height*4:w.data.length,w.ref=u,v&&this.globalImageCache.addByteSize(u,w.dataLen),this._sendImgData(q,w,v))).catch(S=>(H(`Unable to decode image "${q}": "${S}".`),u&&this.globalImageCache.addDecodeFailed(u),this._sendImgData(q,null,v))),i){const S={objId:q,fn:x,args:j,optionalContent:m,hasMask:y};r.set(i,u,S),u&&(this._regionalImageCache.set(null,u,S),v&&(Ct(A,"The global cache-data must be available."),this.globalImageCache.setData(u,A)))}}#e(e){const n=this._pdfFunctionFactory.create(e),s=new Float32Array(1);return Uint8Array.from({length:256},(a,i)=>(s[0]=i/255,n(s,0,s,0),s[0]*255|0))}handleSMask(e,n,s,a,i,r,o){const f=e.get("G"),l={subtype:e.get("S").name,backdrop:e.get("BC")},c=e.get("TR");return jo(c)&&(l.transferMap=this.#e(c)),this.buildFormXObject(n,f,l,s,a,i.state.clone({newPath:!0}),r,o)}handleTransferFunction(e){let n;if(Array.isArray(e))n=e.length>1&&e.every(r=>r===e[0])?[e[0]]:e;else if(jo(e))n=[e];else return null;const s=[];let a=0,i=0;for(const r of n){const o=this.xref.fetchIfRef(r);if(a++,ze(o,"Identity")){s.push(null);continue}else if(!jo(o))return null;s.push(this.#e(o)),i++}return!(a===1||a===4)||i===0?null:s}handleTilingType(e,n,s,a,i,r,o,f,l){const c=new jl,h=B.merge({xref:this.xref,dictArray:[i.get("Resources"),s]});return this.getOperatorList({stream:a,task:o,resources:h,operatorList:c,prevRefs:l}).then(function(){const u=c.getIR(),{needsIsolation:d}=c,p=yl(u,i,n,d);r.addDependencies(c.dependencies),r.addOp(e,p),i.objId&&f.set(null,i.objId,{operatorListIR:u,needsIsolation:d,dict:i})}).catch(u=>{if(!(u instanceof fn)){if(this.options.ignoreErrors){H(`handleTilingType - ignoring pattern: "${u}".`);return}throw u}})}async handleSetFont(e,n,s,a,i,r,o=null,f=null,l=null){const c=n?.[0]instanceof J?n[0].name:null,h=await this.loadFont(c,s,e,i,o,f,l);return h.font.isType3Font&&a.addDependencies(h.type3Dependencies),r.font=h.font,h.send(this.handler),h.loadedName}handleText(e,n){const s=n.font,a=s.charsToGlyphs(e);return s.data&&(n.textRenderingMode&Dc.ADD_TO_PATH_FLAG||n.fillColorSpace.name==="Pattern"||n.strokeColorSpace.name==="Pattern"||s.disableFontFace)&&yi.buildFontPaths(s,a,this.handler,this.options),a}ensureStateFont(e){if(e.font)return;const n=new Y("Missing setFont (Tf) operator before text rendering operator.");if(this.options.ignoreErrors){H(`ensureStateFont: "${n}".`);return}throw n}async setGState({resources:e,gState:n,operatorList:s,cacheKey:a,task:i,stateManager:r,localGStateCache:o,localColorSpaceCache:f,seenRefs:l}){const c=n.objId;let h=!0;const u=[];let d=Promise.resolve();for(const[p,m]of n)switch(p){case"Type":break;case"LW":if(typeof m!="number"){H(`Invalid LW (line width): ${m}`);break}u.push([p,Math.abs(m)]);break;case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":u.push([p,m]);break;case"Font":h=!1,d=d.then(()=>this.handleSetFont(e,null,m[0],s,i,r.state,null,null,l).then(function(b){s.addDependency(b),u.push([p,[b,m[1]]])}));break;case"BM":u.push([p,Rh(m)]);break;case"SMask":if(ze(m,"None")){u.push([p,!1]);break}m instanceof B?(h=!1,d=d.then(()=>this.handleSMask(m,e,s,i,r,f,l)),u.push([p,!0])):H("Unsupported SMask type");break;case"TR":if(n.has("TR2"))break;case"TR2":{const b=this.handleTransferFunction(m);u.push(["TR",b]);break}case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"HT":case"SM":case"SA":case"AIS":case"TK":ut("graphic state operator "+p);break;default:ut("Unknown graphic state operator "+p);break}await d,u.length>0&&s.addOp(C.setGState,[u]),h&&o.set(a,c,u)}loadFont(e,n,s,a,i=null,r=null,o=null){const f=async()=>new vo({loadedName:"g_font_error",font:new Yl(`Font "${e}" is not available.`),dict:n});let l;if(n)n instanceof Q&&(l=n);else{const w=s.get("Font");w&&(l=w.getRaw(e))}if(l){if(this.type3FontRefs?.has(l))return f();if(this.fontCache.has(l))return this.fontCache.get(l);try{n=this.xref.fetchIfRef(l)}catch(w){H(`loadFont - lookup failed: "${w}".`)}}if(!(n instanceof B)){if(!this.options.ignoreErrors&&!this.parsingType3Font)return H(`Font "${e}" is not available.`),f();H(`Font "${e}" is not available -- attempting to fallback to a default font.`),n=i||yi.fallbackFontDict}if(n.cacheKey&&this.fontCache.has(n.cacheKey))return this.fontCache.get(n.cacheKey);const{promise:c,resolve:h}=Promise.withResolvers();let u;try{u=this.preEvaluateFont(n),u.cssFontInfo=r}catch(w){return H(`loadFont - preEvaluateFont failed: "${w}".`),f()}const{descriptor:d,hash:p}=u,m=l instanceof Q;let b;if(p&&d instanceof B){const w=d.fontAliases||=Object.create(null);if(w[p]){const x=w[p].aliasRef;if(m&&x&&this.fontCache.has(x))return this.fontCache.putAlias(l,x),this.fontCache.get(l)}else w[p]={fontID:this.idFactory.createFontId()};m&&(w[p].aliasRef=l),b=w[p].fontID}else b=this.idFactory.createFontId();return Ct(b?.startsWith("f"),'The "fontID" must be (correctly) defined.'),m?this.fontCache.put(l,c):(n.cacheKey=`cacheKey_${b}`,this.fontCache.put(n.cacheKey,c)),n.loadedName=`${this.idFactory.getDocId()}_${b}`,this.translateFont(u).then(async w=>{const x=new vo({loadedName:n.loadedName,font:w,dict:n});if(w.isType3Font)try{await x.loadType3Data(this,s,a,o)}catch(j){throw new Error(`Type3 font load error: ${j}`)}h(x)}).catch(w=>{H(`loadFont - translateFont failed: "${w}".`),h(new vo({loadedName:n.loadedName,font:new Yl(w?.message),dict:n}))}),c}buildPath(e,n,s){const{pathMinMax:a,pathBuffer:i}=s;switch(e|0){case C.rectangle:{const r=s.currentPointX=n[0],o=s.currentPointY=n[1],f=n[2],l=n[3],c=r+f,h=o+l;f===0||l===0?i.push(At.moveTo,r,o,At.lineTo,c,h,At.closePath):i.push(At.moveTo,r,o,At.lineTo,c,o,At.lineTo,c,h,At.lineTo,r,h,At.closePath),ft.rectBoundingBox(r,o,c,h,a);break}case C.moveTo:{const r=s.currentPointX=n[0],o=s.currentPointY=n[1];i.push(At.moveTo,r,o),ft.pointBoundingBox(r,o,a);break}case C.lineTo:{const r=s.currentPointX=n[0],o=s.currentPointY=n[1];i.push(At.lineTo,r,o),ft.pointBoundingBox(r,o,a);break}case C.curveTo:{const r=s.currentPointX,o=s.currentPointY,[f,l,c,h,u,d]=n;s.currentPointX=u,s.currentPointY=d,i.push(At.curveTo,f,l,c,h,u,d),ft.bezierBoundingBox(r,o,f,l,c,h,u,d,a);break}case C.curveTo2:{const r=s.currentPointX,o=s.currentPointY,[f,l,c,h]=n;s.currentPointX=c,s.currentPointY=h,i.push(At.curveTo,r,o,f,l,c,h),ft.bezierBoundingBox(r,o,r,o,f,l,c,h,a);break}case C.curveTo3:{const r=s.currentPointX,o=s.currentPointY,[f,l,c,h]=n;s.currentPointX=c,s.currentPointY=h,i.push(At.curveTo,f,l,c,h,c,h),ft.bezierBoundingBox(r,o,f,l,c,h,c,h,a);break}case C.closePath:i.push(At.closePath);break}}_getColorSpace(e,n,s){return ht.parse({cs:e,xref:this.xref,resources:n,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:s,asyncIfNotCached:!0})}async _handleColorSpace(e){try{return await e}catch(n){if(n instanceof fn)return null;if(this.options.ignoreErrors)return H(`_handleColorSpace - ignoring ColorSpace: "${n}".`),null;throw n}}parseShading({shading:e,resources:n,localColorSpaceCache:s,localShadingPatternCache:a}){let i=a.get(e);if(i)return i;let r;try{r=ah.parseShading(e,this.xref,n,this._pdfFunctionFactory,this.globalColorSpaceCache,s).getIR()}catch(o){if(o instanceof fn)return null;if(this.options.ignoreErrors)return H(`parseShading - ignoring shading: "${o}".`),a.set(e,null),null;throw o}if(i=`pattern_${this.idFactory.createObjId()}`,this.parsingType3Font&&(i=`${this.idFactory.getDocId()}_type3_${i}`),a.set(e,i),this.parsingType3Font){const o=fm(r);this.handler.send("commonobj",[i,"Pattern",o],[o])}else this.handler.send("obj",[i,this.pageIndex,"Pattern",r]);return i}handleColorN(e,n,s,a,i,r,o,f,l,c,h){const u=s.pop();if(u instanceof J){const d=i.getRaw(u.name),p=d instanceof Q&&l.getByRef(d);if(p)try{const b=a.base?a.base.getRgbHex(s,0):null,w=yl(p.operatorListIR,p.dict,b,p.needsIsolation);e.addOp(n,w);return}catch{}const m=this.xref.fetchIfRef(d);if(m){const b=m instanceof Pe?m.dict:m,w=b.get("PatternType");if(w===lc.TILING){const x=a.base?a.base.getRgbHex(s,0):null;return this.handleTilingType(n,x,r,m,b,e,o,l,h)}else if(w===lc.SHADING){const x=b.get("Shading"),j=this.parseShading({shading:x,resources:r,localColorSpaceCache:f,localShadingPatternCache:c});if(j){const k=Ps(b.getArray("Matrix"),null);e.addOp(n,["Shading",j,k])}return}throw new Y(`Unknown PatternType: ${w}`)}}throw new Y(`Unknown PatternName: ${u}`)}async parseMarkedContentProps(e,n){return Bh(this.xref,e,n)}async getOperatorList({stream:e,task:n,resources:s,operatorList:a,initialState:i=null,fallbackFontDict:r=null,prevRefs:o=null}){if(e.isAsync){const S=await e.asyncGetBytes();S&&(e=new yt(S,0,S.length,e.dict))}const f=e.dict?.objId,l=new bt(o);if(f){if(o?.has(f))throw new Error(`getOperatorList - ignoring circular reference: ${f}`);l.put(f)}if(s||=B.empty,i||=new Hh,!a)throw new Error('getOperatorList: missing "operatorList" parameter');const c=this,h=this.xref,u=new tc,d=new Ch,p=new nc,m=new Lp,b=new Map,w=s.get("XObject")||B.empty,x=s.get("Pattern")||B.empty,j=new p0(i),k=new la(e,h,j),y=new yr;let q=0;function v(S){for(let F=0,M=k.savedStatesDepth;F0;q--)a.addOp(C.endMarkedContent,[])}return new Promise(function S(F,M){const N=function(X){Promise.all([X,a.ready]).then(function(){try{S(F,M)}catch(ee){M(ee)}},M)};n.ensureNotTerminated(),y.reset();const D={};let $,K,oe,me;for(;!($=y.check())&&(D.args=null,!!k.read(D));){let X=D.args,ee=D.fn;switch(ee|0){case C.paintXObject:if(me=X[0]instanceof J,oe=X[0].name,me){const _=u.getByName(oe);if(_){qo(a,_),X=null;continue}}N(new Promise(function(_,L){if(!me)throw new Y("XObject must be referred to by name.");let z=w.getRaw(oe);if(z instanceof Q){const je=u.getByRef(z)||c._regionalImageCache.getByRef(z)||c.globalImageCache.getData(z,c.pageIndex);if(je){qo(a,je),_();return}z=h.fetch(z)}if(!(z instanceof Pe))throw new Y("XObject should be a stream");const te=z.dict.get("Subtype");if(!(te instanceof J))throw new Y("XObject should have a Name subtype");if(te.name==="Form"){j.save(),c.buildFormXObject(s,z,null,a,n,j.state.clone({newPath:!0}),d,l).then(function(){j.restore(),_()},L);return}else if(te.name==="Image"){c.buildPaintImageXObject({resources:s,image:z,operatorList:a,cacheKey:oe,localImageCache:u,localColorSpaceCache:d}).then(_,L);return}else if(te.name==="PS")ut("Ignored XObject subtype PS");else throw new Y(`Unhandled XObject subtype ${te.name}`);_()}).catch(function(_){if(!(_ instanceof fn)){if(c.options.ignoreErrors){H(`getOperatorList - ignoring XObject: "${_}".`);return}throw _}}));return;case C.setFont:const ye=X[1];N(c.handleSetFont(s,X,null,a,n,j.state,r,null,l).then(function(_){a.addDependency(_),a.addOp(C.setFont,[_,ye])}));return;case C.endInlineImage:const Be=X[0].cacheKey;if(Be){const _=u.getByName(Be);if(_){qo(a,_),X=null;continue}}N(c.buildPaintImageXObject({resources:s,image:X[0],isInline:!0,operatorList:a,cacheKey:Be,localImageCache:u,localColorSpaceCache:d}));return;case C.showText:if(!j.state.font){c.ensureStateFont(j.state);continue}X[0]=c.handleText(X[0],j.state);break;case C.showSpacedText:if(!j.state.font){c.ensureStateFont(j.state);continue}const ae=[],$e=j.state;for(const _ of X[0])typeof _=="string"?ae.push(...c.handleText(_,$e)):typeof _=="number"&&ae.push(_);X[0]=ae,ee=C.showText;break;case C.nextLineShowText:if(!j.state.font){c.ensureStateFont(j.state);continue}a.addOp(C.nextLine),X[0]=c.handleText(X[0],j.state),ee=C.showText;break;case C.nextLineSetSpacingShowText:if(!j.state.font){c.ensureStateFont(j.state);continue}a.addOp(C.nextLine),a.addOp(C.setWordSpacing,[X.shift()]),a.addOp(C.setCharSpacing,[X.shift()]),X[0]=c.handleText(X[0],j.state),ee=C.showText;break;case C.setTextRenderingMode:j.state.textRenderingMode=X[0];break;case C.setFillColorSpace:{const _=c._getColorSpace(X[0],s,d);if(_ instanceof on){j.state.fillColorSpace=_;continue}N(c._handleColorSpace(_).then(L=>{j.state.fillColorSpace=L||ht.gray}));return}case C.setStrokeColorSpace:{const _=c._getColorSpace(X[0],s,d);if(_ instanceof on){j.state.strokeColorSpace=_;continue}N(c._handleColorSpace(_).then(L=>{j.state.strokeColorSpace=L||ht.gray}));return}case C.setFillColor:if(!Rt(X,null))continue;K=j.state.fillColorSpace,X=[K.getRgbHex(X,0)],ee=C.setFillRGBColor;break;case C.setStrokeColor:if(!Rt(X,null))continue;K=j.state.strokeColorSpace,X=[K.getRgbHex(X,0)],ee=C.setStrokeRGBColor;break;case C.setFillGray:if(!Rt(X,null))continue;j.state.fillColorSpace=ht.gray,X=[ht.gray.getRgbHex(X,0)],ee=C.setFillRGBColor;break;case C.setStrokeGray:if(!Rt(X,null))continue;j.state.strokeColorSpace=ht.gray,X=[ht.gray.getRgbHex(X,0)],ee=C.setStrokeRGBColor;break;case C.setFillCMYKColor:if(!Rt(X,null))continue;j.state.fillColorSpace=ht.cmyk,X=[ht.cmyk.getRgbHex(X,0)],ee=C.setFillRGBColor;break;case C.setStrokeCMYKColor:if(!Rt(X,null))continue;j.state.strokeColorSpace=ht.cmyk,X=[ht.cmyk.getRgbHex(X,0)],ee=C.setStrokeRGBColor;break;case C.setFillRGBColor:if(!Rt(X,null))continue;j.state.fillColorSpace=ht.rgb,X=[ht.rgb.getRgbHex(X,0)];break;case C.setStrokeRGBColor:if(!Rt(X,null))continue;j.state.strokeColorSpace=ht.rgb,X=[ht.rgb.getRgbHex(X,0)];break;case C.setFillColorN:if(K=j.state.patternFillColorSpace,!K){if(Rt(X,null)){X=[ht.gray.getRgbHex(X,0)],ee=C.setFillRGBColor;break}X=[],ee=C.setFillTransparent;break}if(K.name==="Pattern"){if(!Array.isArray(X))continue;N(c.handleColorN(a,C.setFillColorN,X,K,x,s,n,d,m,b,l));return}if(!Rt(X,null))continue;X=[K.getRgbHex(X,0)],ee=C.setFillRGBColor;break;case C.setStrokeColorN:if(K=j.state.patternStrokeColorSpace,!K){if(Rt(X,null)){X=[ht.gray.getRgbHex(X,0)],ee=C.setStrokeRGBColor;break}X=[],ee=C.setStrokeTransparent;break}if(K.name==="Pattern"){if(!Array.isArray(X))continue;N(c.handleColorN(a,C.setStrokeColorN,X,K,x,s,n,d,m,b,l));return}if(!Rt(X,null))continue;X=[K.getRgbHex(X,0)],ee=C.setStrokeRGBColor;break;case C.shadingFill:let tt;try{const _=s.get("Shading");if(!_)throw new Y("No shading resource found");if(tt=_.get(X[0].name),!tt)throw new Y("No shading object found")}catch(_){if(_ instanceof fn)continue;if(c.options.ignoreErrors){H(`getOperatorList - ignoring Shading: "${_}".`);continue}throw _}const G=c.parseShading({shading:tt,resources:s,localColorSpaceCache:d,localShadingPatternCache:b});if(!G)continue;X=[G],ee=C.shadingFill;break;case C.setGState:if(me=X[0]instanceof J,oe=X[0].name,me){const _=p.getByName(oe);if(_){_.length>0&&a.addOp(C.setGState,[_]),X=null;continue}}N(new Promise(function(_,L){if(!me)throw new Y("GState must be referred to by name.");const z=s.get("ExtGState");if(!(z instanceof B))throw new Y("ExtGState should be a dictionary.");const te=z.get(oe);if(!(te instanceof B))throw new Y("GState should be a dictionary.");c.setGState({resources:s,gState:te,operatorList:a,cacheKey:oe,task:n,stateManager:j,localGStateCache:p,localColorSpaceCache:d,seenRefs:l}).then(_,L)}).catch(function(_){if(!(_ instanceof fn)){if(c.options.ignoreErrors){H(`getOperatorList - ignoring ExtGState: "${_}".`);return}throw _}}));return;case C.setLineWidth:{const[_]=X;if(typeof _!="number"){H(`Invalid setLineWidth: ${_}`);continue}X[0]=Math.abs(_);break}case C.setDash:{const _=X[1];if(typeof _!="number"){H(`Invalid setDash: ${_}`);continue}const L=X[0];if(!Array.isArray(L)){H(`Invalid setDash: ${L}`);continue}L.some(z=>typeof z!="number")&&(X[0]=L.filter(z=>typeof z=="number"));break}case C.moveTo:case C.lineTo:case C.curveTo:case C.curveTo2:case C.curveTo3:case C.closePath:case C.rectangle:c.buildPath(ee,X,j.state);continue;case C.stroke:case C.closeStroke:case C.fill:case C.eoFill:case C.fillStroke:case C.eoFillStroke:case C.closeFillStroke:case C.closeEOFillStroke:case C.endPath:{const{state:{pathBuffer:_,pathMinMax:L}}=j;(ee===C.closeStroke||ee===C.closeFillStroke||ee===C.closeEOFillStroke)&&_.push(At.closePath),_.length===0?a.addOp(C.constructPath,[ee,[null],null]):(a.addOp(C.constructPath,[ee,[new Float32Array(_)],L.slice()]),_.length=0,L.set(ca,0));continue}case C.setTextMatrix:a.addOp(ee,[new Float32Array(X)]);continue;case C.markPoint:case C.markPointProps:case C.beginCompat:case C.endCompat:continue;case C.beginMarkedContentProps:if(q++,!(X[0]instanceof J)){H(`Expected name for beginMarkedContentProps arg0=${X[0]}`),a.addOp(C.beginMarkedContentProps,["OC",null]);continue}if(X[0].name==="OC"){N(c.parseMarkedContentProps(X[1],s).then(_=>{a.addOp(C.beginMarkedContentProps,["OC",_])}).catch(_=>{if(!(_ instanceof fn)){if(c.options.ignoreErrors){H(`getOperatorList - ignoring beginMarkedContentProps: "${_}".`),a.addOp(C.beginMarkedContentProps,["OC",null]);return}throw _}}));return}X=[X[0].name,X[1]instanceof B?X[1].get("MCID"):null];break;case C.beginMarkedContent:if(X?.some(_=>_ instanceof B)){H(`getOperatorList - ignoring operator: ${ee}`);continue}q++;break;case C.endMarkedContent:if(X?.some(_=>_ instanceof B)){H(`getOperatorList - ignoring operator: ${ee}`);continue}if(q===0)continue;q--;break;default:if(X?.some(_=>_ instanceof B)){H(`getOperatorList - ignoring operator: ${ee}`);continue}}a.addOp(ee,X)}if($){N(cc);return}A(),v(),F()}).catch(S=>{if(!(S instanceof fn)){if(this.options.ignoreErrors){H(`getOperatorList - ignoring errors during "${n.name}" task: "${S}".`),A(),v();return}throw S}})}async getTextContent({stream:e,task:n,resources:s,stateManager:a=null,includeMarkedContent:i=!1,sink:r,seenStyles:o=new Set,viewBox:f,lang:l=null,disableNormalization:c=!1,keepWhiteSpace:h=!1,prevRefs:u=null,intersector:d=null}){if(e.isAsync){const W=await e.asyncGetBytes();W&&(e=new yt(W,0,W.length,e.dict))}r??=ac(null);const p=e.dict?.objId,m=new bt(u);if(p){if(u?.has(p))throw new Error(`getTextContent - ignoring circular reference: ${p}`);m.put(p)}s||=B.empty,a||=new p0(new Qp);let b=0,w=null;const x={items:[],styles:Object.create(null),lang:l},j={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,prevTransform:null,prevTextRise:0,textAdvanceScale:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,negativeSpaceMax:-1/0,notASpace:-1/0,transform:null,fontName:null,hasEOL:!1},k=[" "," "];let y=0;function q(W){const de=(y+1)%2,Z=k[y]!==" "&&k[de]===" ";return k[y]=W,y=de,!h&&Z}function v(){return!h&&k[y]!==" "&&k[(y+1)%2]===" "}function A(){k[0]=k[1]=" ",y=0}const S=.102,F=.03,M=-.2,N=.102,D=.6,$=.25,K=this,oe=this.xref,me=[];let X=null;const ee=new tc,ye=new nc,Be=new la(e,oe,a);let ae,$e;function tt({width:W=0,height:de=0,transform:Z=j.prevTransform,fontName:we=j.fontName}){d?.addExtraChar(" "),x.items.push({str:" ",dir:"ltr",width:W,height:de,transform:Z,fontName:we,hasEOL:!1})}function G(){const W=ae.font,de=[ae.fontSize*ae.textHScale,0,0,ae.fontSize,0,ae.textRise];if(W.isType3Font&&(ae.fontSize<=1||W.isCharBBox)&&!za(ae.fontMatrix,Ea)){const Z=W.bbox[3]-W.bbox[1];Z>0&&(de[3]*=Z*ae.fontMatrix[3])}return ft.transform(ae.ctm,ft.transform(ae.textMatrix,de))}function _(){if(j.initialized)return j;const{font:W,loadedName:de}=ae;if(!o.has(de)&&(o.add(de),x.styles[de]={fontFamily:W.fallbackName,ascent:W.ascent,descent:W.descent,vertical:W.vertical},K.options.fontExtraProperties&&W.systemFontInfo)){const qe=x.styles[de];qe.fontSubstitution=W.systemFontInfo.css,qe.fontSubstitutionLoadedName=W.systemFontInfo.loadedName}j.fontName=de;const Z=j.transform=G();W.vertical?(j.width=j.totalWidth=Math.hypot(Z[0],Z[1]),j.height=j.totalHeight=0,j.vertical=!0):(j.width=j.totalWidth=0,j.height=j.totalHeight=Math.hypot(Z[2],Z[3]),j.vertical=!1);const we=Math.hypot(ae.textLineMatrix[0],ae.textLineMatrix[1]),ce=Math.hypot(ae.ctm[0],ae.ctm[1]);j.textAdvanceScale=ce*we;const{fontSize:Me}=ae;return j.trackingSpaceMin=Me*S,j.notASpace=Me*F,j.negativeSpaceMax=Me*M,j.spaceInFlowMin=Me*N,j.spaceInFlowMax=Me*D,j.hasEOL=!1,j.initialized=!0,j}function L(){if(!j.initialized)return;const W=Math.hypot(ae.textLineMatrix[0],ae.textLineMatrix[1]),Z=Math.hypot(ae.ctm[0],ae.ctm[1])*W;Z!==j.textAdvanceScale&&(j.vertical?(j.totalHeight+=j.height*j.textAdvanceScale,j.height=0):(j.totalWidth+=j.width*j.textAdvanceScale,j.width=0),j.textAdvanceScale=Z)}function z(W){let de=W.str.join("");c||(de=Wu(de));const Z=Mf(de,-1,W.vertical);return{str:Z.str,dir:Z.dir,width:Math.abs(W.totalWidth),height:Math.abs(W.totalHeight),transform:W.transform,fontName:W.fontName,hasEOL:W.hasEOL}}async function te(W,de){const Z=await K.loadFont(W,de,s,n,null,null,m);ae.loadedName=Z.loadedName,ae.font=Z.font,ae.fontMatrix=Z.font.fontMatrix||Ea}function je(W,de,Z){const we=Math.hypot(Z[0],Z[1]);return[(Z[0]*W+Z[1]*de)/we,(Z[2]*W+Z[3]*de)/we]}function he(W){const de=G();let Z=de[4],we=de[5];if(ae.font?.vertical){if(Zf[2]||we+Wf[3])return!1}else if(Z+Wf[2]||wef[3])return!1;if(!ae.font||!j.prevTransform)return!0;let ce=j.prevTransform[4],Me=j.prevTransform[5];if(ce===Z&&Me===we)return!0;let qe=-1;switch(de[0]&&de[1]===0&&de[2]===0?qe=de[0]>0?0:180:de[1]&&de[0]===0&&de[3]===0&&(qe=de[1]>0?90:270),qe){case 0:break;case 90:[Z,we]=[we,Z],[ce,Me]=[Me,ce];break;case 180:[Z,we,ce,Me]=[-Z,-we,-ce,-Me];break;case 270:[Z,we]=[-we,-Z],[ce,Me]=[-Me,-ce];break;default:[Z,we]=je(Z,we,de),[ce,Me]=je(ce,Me,j.prevTransform)}if(ae.font.vertical){const Ft=(Me-we)/j.textAdvanceScale,Qe=Z-ce,Lt=Math.sign(j.height||j.totalHeight);return Ft.5*j.width?(Fe(),!0):(A(),_e(),!0):Math.abs(Qe)>j.width?(Fe(),!0):(Ft<=Lt*j.notASpace&&A(),Ft<=Lt*j.trackingSpaceMin?v()?(A(),_e(),tt({height:Math.abs(Ft)})):j.height+=Ft:Ee(Ft,j.prevTransform,Lt)||(j.str.length===0?(A(),tt({height:Math.abs(Ft)})):j.height+=Ft),Math.abs(Qe)>j.width*$&&_e(),!0)}const Le=(Z-ce)/j.textAdvanceScale,Ce=we-Me,Je=Math.sign(j.width||j.totalWidth);if(Le.5*j.height?(Fe(),!0):(A(),_e(),!0);const ot=ae.textRise-j.prevTextRise,lt=ot===0?Ce:Ce-de[3]/ae.fontSize*ot;return Math.abs(lt)>j.height?(Fe(),!0):(Le<=Je*j.notASpace&&A(),Le<=Je*j.trackingSpaceMin?v()?(A(),_e(),tt({width:Math.abs(Le)})):j.width+=Le:Ee(Le,j.prevTransform,Je)||(j.str.length===0?(A(),tt({width:Math.abs(Le)})):j.width+=Le),Math.abs(Ce)>j.height*$&&_e(),!0)}function ie({chars:W,extraSpacing:de}){$e!==ae&&($e.fontSize!==ae.fontSize||$e.fontName!==ae.fontName&&($e.font.name!==ae.font.name||$e.font.vertical!==ae.font.vertical))&&(_e(),$e=ae.clone());const Z=ae.font,we=Z.vertical?-ae.charSpacing:ae.charSpacing;if(!W){const qe=we+de;qe&&(Z.vertical?ae.translateTextMatrix(0,-qe):ae.translateTextMatrix(qe*ae.textHScale,0)),h&&he(0);return}const ce=Z.charsToGlyphs(W),Me=ae.fontMatrix[0]*ae.fontSize;for(let qe=0,Le=ce.length;qeW;b--)x.items.push({type:"endMarkedContent"})}function Ne(W=!1){const de=x.items.length;de!==0&&(W&&de0){const Qe=me.join("");me.length=0,ie({chars:Qe,extraSpacing:0})}break;case C.showText:if(!a.state.font){K.ensureStateFont(a.state);continue}ie({chars:Ce[0],extraSpacing:0});break;case C.nextLineShowText:if(!a.state.font){K.ensureStateFont(a.state);continue}ae.carriageReturn(),ie({chars:Ce[0],extraSpacing:0});break;case C.nextLineSetSpacingShowText:if(!a.state.font){K.ensureStateFont(a.state);continue}ae.wordSpacing=Ce[0],ae.charSpacing=Ce[1],ae.carriageReturn(),ie({chars:Ce[2],extraSpacing:0});break;case C.paintXObject:if(_e(),X??=s.get("XObject")||B.empty,Le=Ce[0]instanceof J,qe=Ce[0].name,Le&&ee.getByName(qe))break;we(new Promise(function(Qe,Lt){if(!Le)throw new Y("XObject must be referred to by name.");let en=X.getRaw(qe);if(en instanceof Q){if(ee.getByRef(en)){Qe();return}if(K.globalImageCache.getData(en,K.pageIndex)){Qe();return}en=oe.fetch(en)}if(!(en instanceof Pe))throw new Y("XObject should be a stream");const{dict:Rn}=en,ss=Rn.get("Subtype");if(!(ss instanceof J))throw new Y("XObject should have a Name subtype");if(ss.name!=="Form"){ee.set(qe,Rn.objId,!0),Qe();return}const $a=a.state.clone(),wa=new p0($a),Fs=Ps(Rn.getArray("Matrix"),null);Fs&&wa.transform(Fs);const xa=Rn.get("Resources");Ne();const ja=ac(r);K.getTextContent({stream:en,task:n,resources:xa instanceof B?xa:s,stateManager:wa,includeMarkedContent:i,sink:ja,seenStyles:o,viewBox:f,lang:l,disableNormalization:c,keepWhiteSpace:h,prevRefs:m}).then(function(){ja.enqueueInvoked||ee.set(qe,Rn.objId,!0),Qe()},Lt)}).catch(function(Qe){if(!(Qe instanceof fn)){if(K.options.ignoreErrors){H(`getTextContent - ignoring XObject: "${Qe}".`);return}throw Qe}}));return;case C.setGState:if(Le=Ce[0]instanceof J,qe=Ce[0].name,Le&&ye.getByName(qe))break;we(new Promise(function(Qe,Lt){if(!Le)throw new Y("GState must be referred to by name.");const en=s.get("ExtGState");if(!(en instanceof B))throw new Y("ExtGState should be a dictionary.");const Rn=en.get(qe);if(!(Rn instanceof B))throw new Y("GState should be a dictionary.");const ss=Rn.get("Font");if(!ss){ye.set(qe,Rn.objId,!0),Qe();return}_e(),ae.fontName=null,ae.fontSize=ss[1],te(null,ss[0]).then(Qe,Lt)}).catch(function(Qe){if(!(Qe instanceof fn)){if(K.options.ignoreErrors){H(`getTextContent - ignoring ExtGState: "${Qe}".`);return}throw Qe}}));return;case C.beginMarkedContent:_e(),i&&(b++,x.items.push({type:"beginMarkedContent",tag:Ce[0]instanceof J?Ce[0].name:null}));break;case C.beginMarkedContentProps:if(_e(),i){b++;const Qe=Ce[1]instanceof B?Ce[1].get("MCID"):null;x.items.push({type:"beginMarkedContentProps",id:Number.isInteger(Qe)?`${K.idFactory.getPageObjId()}_mc${Qe}`:null,tag:Ce[0]instanceof J?Ce[0].name:null})}break;case C.endMarkedContent:if(_e(),i){if(b===0)break;b--,x.items.push({type:"endMarkedContent"})}break}if(x.items.length>=r.desiredSize){Me=!0;break}}if(Me){we(cc);return}_e(),Ue(),Ne(),de()}).catch(W=>{if(!(W instanceof fn)){if(this.options.ignoreErrors){H(`getTextContent - ignoring errors during "${n.name}" task: "${W}".`),_e(),Ue(),Ne();return}throw W}})}async extractDataStructures(e,n){const s=this.xref;let a;const i=this.readToUnicode(n.toUnicode);if(n.composite){const u=e.get("CIDSystemInfo");u instanceof B&&!n.cidSystemInfo&&(n.cidSystemInfo={registry:Xe(u.get("Registry")),ordering:Xe(u.get("Ordering")),supplement:u.get("Supplement")});try{const d=e.get("CIDToGIDMap");d instanceof Pe&&(a=d.getBytes())}catch(d){if(!this.options.ignoreErrors)throw d;H(`extractDataStructures - ignoring CIDToGIDMap data: "${d}".`)}}const r=[];let o=null,f;if(e.has("Encoding")){if(f=e.get("Encoding"),f instanceof B){if(o=f.get("BaseEncoding"),o=o instanceof J?o.name:null,f.has("Differences")){const u=f.get("Differences");let d=0;for(const p of u){const m=s.fetchIfRef(p);if(typeof m=="number")d=m;else if(m instanceof J)r[d++]=m.name;else throw new Y(`Invalid entry in 'Differences' array: ${m}`)}}}else if(f instanceof J)o=f.name;else{const u="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new Y(u);H(u)}o!=="MacRomanEncoding"&&o!=="MacExpertEncoding"&&o!=="WinAnsiEncoding"&&(o=null)}const l=!n.file||n.isInternalFont,c=ef()[n.name];if(o&&l&&c&&(o=null),o==="WinAnsiEncoding"&&l&&n.name?.charCodeAt(0)>=183){const u=n.name;if(["ËÎÌå","ºÚÌå","¿¬Ìå","·ÂËÎ","¿¬Ìå_GB2312","·ÂËÎ_GB2312","Á¥Êé","ÐÂËÎ","·ÂËÎÌå","С±êËÎ"].includes(u)){o=null,n.defaultEncoding="Adobe-GB1-UCS2",n.composite=!0,n.cidEncoding=J.get("GBK-EUC-H");const p=await Hi.create({encoding:n.cidEncoding,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});n.cMap=p,n.vertical=n.cMap.vertical,n.cidSystemInfo={registry:"Adobe",ordering:"GB1",supplement:0}}}if(o)n.defaultEncoding=gr(o);else{let u=!!(n.flags&os.Symbolic);const d=!!(n.flags&os.Nonsymbolic);n.type==="TrueType"&&u&&d&&r.length!==0&&(n.flags&=-5,u=!1),f=zs,n.type==="TrueType"&&!d&&(f=pr),(u||c)&&(f=vf,l&&(/Symbol/i.test(n.name)?f=U0:/Dingbats/i.test(n.name)?f=Sf:/Wingdings/i.test(n.name)&&(f=pr))),n.defaultEncoding=f}n.differences=r,n.baseEncodingName=o,n.hasEncoding=!!o||r.length>0,n.dict=e,n.toUnicode=await i;const h=await this.buildToUnicode(n);return n.toUnicode=h,a&&(n.cidToGidMap=this.readCidToGidMap(a,h)),n}_simpleFontToUnicode(e,n=!1){Ct(!e.composite,"Must be a simple font.");const s=[],a=e.defaultEncoding.slice(),i=e.baseEncodingName,r=e.differences;for(const f in r){const l=r[f];l!==".notdef"&&(a[f]=l)}const o=us();for(const f in a){let l=a[f];if(l==="")continue;let c=o[l];if(c!==void 0){s[f]=String.fromCharCode(c);continue}let h=0;switch(l[0]){case"G":l.length===3&&(h=parseInt(l.substring(1),16));break;case"g":l.length===5&&(h=parseInt(l.substring(1),16));break;case"C":case"c":if(l.length>=3&&l.length<=4){const u=l.substring(1);if(n){h=parseInt(u,16);break}if(h=+u,Number.isNaN(h)&&Number.isInteger(parseInt(u,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":c=ki(l,o),c!==-1&&(h=c);break;default:switch(l){case"f_h":case"f_t":case"T_h":s[f]=l.replaceAll("_","");continue}break}if(h>0&&h<=1114111&&Number.isInteger(h)){if(i&&h===+f){const u=gr(i);if(u&&(l=u[f])){s[f]=String.fromCharCode(o[l]);continue}}s[f]=String.fromCodePoint(h)}}return s}async buildToUnicode(e){if(e.hasIncludedToUnicodeMap=e.toUnicode?.length>0,e.hasIncludedToUnicodeMap)return!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e)),e.toUnicode;if(!e.composite)return new Zi(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof sr)||e.cidSystemInfo?.registry==="Adobe"&&(e.cidSystemInfo.ordering==="GB1"||e.cidSystemInfo.ordering==="CNS1"||e.cidSystemInfo.ordering==="Japan1"||e.cidSystemInfo.ordering==="Korea1"))){const{registry:n,ordering:s}=e.cidSystemInfo,a=J.get(`${n}-${s}-UCS2`),i=await Hi.create({encoding:a,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),r=[],o=[];return e.cMap.forEach(function(f,l){if(l>65535)throw new Y("Max size of CID is 65,535");const c=i.lookup(l);if(c){o.length=0;for(let h=0,u=c.length;h>1;r===0&&!n.has(o)||(s[o]=r)}return s}extractWidths(e,n,s){const a=this.xref;let i=[],r=0;const o=[];let f;if(s.composite){const h=e.get("DW");r=typeof h=="number"?Math.ceil(h):1e3;const u=e.get("W");if(Array.isArray(u))for(let d=0,p=u.length;d=10)&&(this._bbox??=ca.slice(),ft.rectBoundingBox(...s,this._bbox));let o=0,f=e.length;for(;o=C.moveTo&&r<=C.endPath,i.variableArgs)f>o&&ut(`Command ${a}: expected [0, ${o}] args, but received ${f} args.`);else{if(f!==o){const l=this.nonProcessedArgs;for(;f>o;)l.push(n.shift()),f--;for(;fla.MAX_INVALID_PATH_OPS)throw new Y(`Invalid ${l}`);H(`Skipping ${l}`),n!==null&&(n.length=0);continue}}return this.preprocessCommand(r,n),e.fn=r,e.args=n,!0}if(s===ln)return!1;if(s!==null&&(n===null&&(n=[]),n.push(s),n.length>33))throw new Y("Too many arguments")}}preprocessCommand(e,n){switch(e|0){case C.save:this.stateManager.save();break;case C.restore:this.stateManager.restore();break;case C.transform:this.stateManager.transform(n);break}}}class Zp extends la{constructor(e){super(new hn(e))}parse(){const e={fn:0,args:[]},n={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;e.args.length=0,!!this.read(e);){if(this.savedStatesDepth!==0)continue;const{fn:s,args:a}=e;switch(s|0){case C.setFont:const[i,r]=a;i instanceof J&&(n.fontName=i.name),typeof r=="number"&&r>0&&(n.fontSize=r);break;case C.setFillRGBColor:ht.rgb.getRgbItem(a,0,n.fontColor,0);break;case C.setFillGray:ht.gray.getRgbItem(a,0,n.fontColor,0);break;case C.setFillCMYKColor:ht.cmyk.getRgbItem(a,0,n.fontColor,0);break}}}catch(s){H(`parseDefaultAppearance - ignoring errors: "${s}".`)}return n}}function Df(t){return new Zp(t).parse()}class eg extends la{constructor(e,n,s){super(e),this.stream=e,this.xref=n,this.globalColorSpaceCache=s,this.resources=e.dict?.get("Resources")}parse(){const e={fn:0,args:[]};let n={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:ht.gray},s=!1;const a=[];try{for(;e.args.length=0,!(s||!this.read(e));){const{fn:i,args:r}=e;switch(i|0){case C.save:a.push({scaleFactor:n.scaleFactor,fontSize:n.fontSize,fontName:n.fontName,fontColor:n.fontColor.slice(),fillColorSpace:n.fillColorSpace});break;case C.restore:n=a.pop()||n;break;case C.setTextMatrix:const o=ft.transform(this.stateManager.state.ctm,r);n.scaleFactor*=Math.hypot(o[0],o[1]);break;case C.setFont:const[f,l]=r;f instanceof J&&(n.fontName=f.name),typeof l=="number"&&l>0&&(n.fontSize=l);break;case C.setFillColorSpace:n.fillColorSpace=ht.parse({cs:r[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:this._localColorSpaceCache});break;case C.setFillColor:n.fillColorSpace.getRgbItem(r,0,n.fontColor,0);break;case C.setFillRGBColor:ht.rgb.getRgbItem(r,0,n.fontColor,0);break;case C.setFillGray:ht.gray.getRgbItem(r,0,n.fontColor,0);break;case C.setFillCMYKColor:ht.cmyk.getRgbItem(r,0,n.fontColor,0);break;case C.showText:case C.showSpacedText:case C.nextLineShowText:case C.nextLineSetSpacingShowText:n.fontSize*=n.scaleFactor,s=!0;break}}}catch(i){H(`parseAppearanceStream - ignoring errors: "${i}".`)}return this.stream.reset(),delete n.scaleFactor,delete n.fillColorSpace,n}get _localColorSpaceCache(){return ue(this,"_localColorSpaceCache",new Ch)}get _pdfFunctionFactory(){return ue(this,"_pdfFunctionFactory",new Rr({xref:this.xref}))}}function tg(t,e,n){return new eg(t,e,n).parse()}function Ts(t,e){if(t[0]===t[1]&&t[1]===t[2]){const n=t[0]/255;return`${jt(n)} ${e?"g":"G"}`}return Array.from(t,n=>jt(n/255)).join(" ")+` ${e?"rg":"RG"}`}function ng({fontSize:t,fontName:e,fontColor:n}){return`/${jf(e)} ${t} Tf ${Ts(n,!0)}`}class ra{static#e=1;constructor(e,n){this.xref=e,this.widths=null,this.firstChar=1/0,this.lastChar=-1/0,this.fontFamily=n;const s=new OffscreenCanvas(1,1);this.ctxMeasure=s.getContext("2d",{willReadFrequently:!0}),this.fontName=J.get(`InvalidPDFjsFont_${n}_${ra.#e++}`)}get fontDescriptorRef(){if(!ra._fontDescriptorRef){const e=new B(this.xref);e.setIfName("Type","FontDescriptor"),e.set("FontName",this.fontName),e.set("FontFamily","MyriadPro Regular"),e.set("FontBBox",[0,0,0,0]),e.setIfName("FontStretch","Normal"),e.set("FontWeight",400),e.set("ItalicAngle",0),ra._fontDescriptorRef=this.xref.getNewPersistentRef(e)}return ra._fontDescriptorRef}get descendantFontRef(){const e=new B(this.xref);e.set("BaseFont",this.fontName),e.setIfName("Type","Font"),e.setIfName("Subtype","CIDFontType0"),e.setIfName("CIDToGIDMap","Identity"),e.set("FirstChar",this.firstChar),e.set("LastChar",this.lastChar),e.set("FontDescriptor",this.fontDescriptorRef),e.set("DW",1e3);const n=[],s=[...this.widths].sort();let a=null,i=null;for(const[o,f]of s){if(!a){a=o,i=[f];continue}o===a+i.length?i.push(f):(n.push(a,i),a=o,i=[f])}a&&n.push(a,i),e.set("W",n);const r=new B(this.xref);return r.set("Ordering","Identity"),r.set("Registry","Adobe"),r.set("Supplement",0),e.set("CIDSystemInfo",r),this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new B(this.xref);return e.set("BaseFont",this.fontName),e.setIfName("Type","Font"),e.setIfName("Subtype","Type0"),e.setIfName("Encoding","Identity-H"),e.set("DescendantFonts",[this.descendantFontRef]),e.setIfName("ToUnicode","Identity-H"),this.xref.getNewPersistentRef(e)}get resources(){const e=new B(this.xref),n=new B(this.xref);return n.set(this.fontName.name,this.baseFontRef),e.set("Font",n),e}_createContext(){return this.widths=new Map,this.ctxMeasure.font=`1000px ${this.fontFamily}`,this.ctxMeasure}createFontResources(e){const n=this._createContext();for(const s of e.split(/\r\n?|\n/))for(const a of s.split("")){const i=a.charCodeAt(0);if(this.widths.has(i))continue;const r=n.measureText(a),o=Math.ceil(r.width);this.widths.set(i,o),this.firstChar=Math.min(i,this.firstChar),this.lastChar=Math.max(i,this.lastChar)}return this.resources}static getFirstPositionInfo(e,n,s){const[a,i,r,o]=e;let f=r-a,l=o-i;n%180!==0&&([f,l]=[l,f]);const c=1.35*s,h=.35*s;return{coords:[0,l+h-c],bbox:[0,0,f,l],matrix:n!==0?k0(n,l,c):void 0}}createAppearance(e,n,s,a,i,r){const o=this._createContext(),f=[];let l=-1/0;for(const N of e.split(/\r\n?|\n/)){f.push(N);const D=o.measureText(N).width;l=Math.max(l,D);for(const $ of r1(N)){const K=String.fromCodePoint($);let oe=this.widths.get($);if(oe===void 0){const me=o.measureText(K);oe=Math.ceil(me.width),this.widths.set($,oe),this.firstChar=Math.min($,this.firstChar),this.lastChar=Math.max($,this.lastChar)}}}l*=a/1e3;const[c,h,u,d]=n;let p=u-c,m=d-h;s%180!==0&&([p,m]=[m,p]);const b=l>p?p/l:1;let w=1;const x=1.35*a,j=.35*a,k=x*f.length;k>m&&(w=m/k);const y=Math.min(b,w),q=a*y,v=["q",`0 0 ${jt(p)} ${jt(m)} re W n`,"BT",`1 0 0 1 0 ${jt(m+j)} Tm 0 Tc ${Ts(i,!0)}`,`/${this.fontName.name} ${jt(q)} Tf`],{resources:A}=this;if(r=typeof r=="number"&&r>=0&&r<=1?r:1,r!==1){v.push("/R0 gs");const N=new B(this.xref),D=new B(this.xref);D.set("ca",r),D.set("CA",r),D.setIfName("Type","ExtGState"),N.set("R0",D),A.set("ExtGState",N)}const S=jt(x);for(const N of f)v.push(`0 -${S} Td <${Zu(N)}> Tj`);v.push("ET","Q");const F=v.join(` +`),M=new B(this.xref);if(M.setIfName("Subtype","Form"),M.setIfName("Type","XObject"),M.set("BBox",[0,0,p,m]),M.set("Length",F.length),M.set("Resources",A),s){const N=k0(s,p,m);M.set("Matrix",N)}return new hn(F,M)}}const sg=["m/d","m/d/yy","mm/dd/yy","mm/yy","d-mmm","d-mmm-yy","dd-mmm-yy","yy-mm-dd","mmm-yy","mmmm-yy","mmm d, yyyy","mmmm d, yyyy","m/d/yy h:MM tt","m/d/yy HH:MM"],ag=["HH:MM","h:MM tt","HH:MM:ss","h:MM:ss tt"];class Eh{constructor(e,n,s){this.root=e,this.xref=n,this._type=s}getAll(e=!1){const n=new Map;if(!this.root)return n;const s=this.xref,a=new bt;this.root instanceof Q&&a.put(this.root);const i=[this.root];for(const r of i){const o=s.fetchIfRef(r);if(!(o instanceof B))continue;if(o.has("Kids")){const l=o.get("Kids");if(!Array.isArray(l))continue;for(const c of l){if(c instanceof Q){if(a.has(c))throw new Y(`Duplicate entry in "${this._type}" tree.`);a.put(c)}i.push(c)}continue}const f=o.get(this._type);if(Array.isArray(f))for(let l=0,c=f.length;li)return H(`Search depth limit reached for "${this._type}" tree.`),null;const o=s.get("Kids");if(!Array.isArray(o))return null;let f=0,l=o.length-1;for(;f<=l;){const c=f+l>>1,h=n.fetchIfRef(o[c]),u=h.get("Limits");if(en.fetchIfRef(u[1]))f=c+1;else{s=h;break}}if(f>l)return null}const r=s.get(this._type);if(Array.isArray(r)){let o=0,f=r.length-2;for(;o<=f;){const l=o+f>>1,c=l+(l&1),h=n.fetchIfRef(r[c]);if(eh)o=c+2;else return r[c+1]}}return null}get(e){return this.xref.fetchIfRef(this.getRaw(e))}}class Ms extends Eh{constructor(e,n){super(e,n,"Names")}}class qr extends Eh{constructor(e,n){super(e,n,"Nums")}}function _f(){Q1(),Yu(),_d(),gn.cleanup()}class Sn{constructor(e){e instanceof B&&(this.root=e,e.has("RF")&&H("Related file specifications are not supported"))}get filename(){const e=Sn.pickPlatformItem(this.root);return e&&typeof e=="string"?Xe(e,!0).replaceAll("\\\\","\\").replaceAll("\\/","/").replaceAll("\\","/"):""}get description(){const e=this.root?.get("Desc");return e&&typeof e=="string"?Xe(e):""}get serializable(){const{filename:e,description:n}=this;return{rawFilename:e,filename:Gu(e)||"unnamed",description:n}}static pickPlatformItem(e,n=!1){if(e instanceof B){for(const s of["UF","F","Unix","Mac","DOS"])if(e.has(s))return n?e.getRaw(s):e.get(s)}return null}static hasEmbeddedFile(e){return this.pickPlatformItem(e.get("EF"))instanceof Pe}static readContent(e){if(!(e instanceof B))return null;const n=this.pickPlatformItem(e.get("EF"));return n instanceof Pe?this.readStreamContent(n):(H("Embedded file specification points to non-existing/invalid content"),null)}static readStreamContent(e){if(e.dict?.xref?.encrypt?.encryptionKey===null)throw new Os("No password given",f0.NEED_PASSWORD);return e.getBytes()}}const Dn={NoError:0,UnterminatedCdat:-2,UnterminatedXmlDeclaration:-3,UnterminatedDoctypeDeclaration:-4,UnterminatedComment:-5,MalformedElement:-6,UnterminatedElement:-9};function li(t,e){const n=t[e];return n===" "||n===` +`||n==="\r"||n===" "}function ig(t){for(let e=0,n=t.length;e{if(s||a){const r=s?parseInt(s,16):parseInt(a,10);return r>=0&&r<=1114111?String.fromCodePoint(r):n}switch(i){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(i)})}_parseContent(e,n){const s=[];let a=n;function i(){for(;a"&&e[a]!=="/";)++a;const r=e.substring(n,a);for(i();a"&&e[a]!=="/"&&e[a]!=="?";){i();let o="",f="";for(;a"&&e[s]!=="?"&&e[s]!=="/";)++s;const i=e.substring(n,s);a();const r=s;for(;s");)++s;const o=e.substring(r,s);return{name:i,value:o,parsed:s-n}}parseXml(e){let n=0;for(;n",a),r<0){this.onError(Dn.UnterminatedElement);return}this.onEndElement(e.substring(a,r)),a=r+1;break;case"?":++a;const o=this._parseProcessingInstruction(e,a);if(e.substring(a+o.parsed,a+o.parsed+2)!=="?>"){this.onError(Dn.UnterminatedXmlDeclaration);return}this.onPi(o.name,o.value),a+=o.parsed+2;break;case"!":if(e.substring(a+1,a+3)==="--"){if(r=e.indexOf("-->",a+3),r<0){this.onError(Dn.UnterminatedComment);return}this.onComment(e.substring(a+3,r)),a=r+3}else if(e.substring(a+1,a+8)==="[CDATA["){if(r=e.indexOf("]]>",a+8),r<0){this.onError(Dn.UnterminatedCdat);return}this.onCdata(e.substring(a+8,r)),a=r+3}else if(e.substring(a+1,a+8)==="DOCTYPE"){const c=e.indexOf("[",a+8);let h=!1;if(r=e.indexOf(">",a+8),r<0){this.onError(Dn.UnterminatedDoctypeDeclaration);return}if(c>0&&r>c){if(r=e.indexOf("]>",a+8),r<0){this.onError(Dn.UnterminatedDoctypeDeclaration);return}h=!0}const u=e.substring(a+8,r+(h?1:0));this.onDoctype(u),a=r+(h?2:1)}else{this.onError(Dn.MalformedElement);return}break;default:const f=this._parseContent(e,a);if(f===null){this.onError(Dn.MalformedElement);return}let l=!1;if(e.substring(a+f.parsed,a+f.parsed+2)==="/>")l=!0;else if(e.substring(a+f.parsed,a+f.parsed+1)!==">"){this.onError(Dn.UnterminatedElement);return}this.onBeginElement(f.name,f.attributes,l),a+=f.parsed+(l?2:1);break}}else{for(;ae.textContent).join(""):this.nodeValue||""}get children(){return this.childNodes||[]}hasChildNodes(){return this.childNodes?.length>0}searchNode(e,n){if(n>=e.length)return this;const s=e[n];if(s.name.startsWith("#")&&n0)a.push([i,0]),i=i.childNodes[0];else{if(a.length===0)return null;for(;a.length!==0;){const[r,o]=a.pop(),f=o+1;if(f");for(const n of this.childNodes)n.dump(e);e.push(``)}else this.nodeValue?e.push(`>${mi(this.nodeValue)}`):e.push("/>")}}class K0 extends W0{constructor({hasAttributes:e=!1,lowerCaseName:n=!1}){super(),this._currentFragment=null,this._stack=null,this._errorCode=Dn.NoError,this._hasAttributes=e,this._lowerCaseName=n}parseFromString(e){if(this._currentFragment=[],this._stack=[],this._errorCode=Dn.NoError,this.parseXml(e),this._errorCode!==Dn.NoError)return;const[n]=this._currentFragment;if(n)return{documentElement:n}}onText(e){if(ig(e))return;const n=new ir("#text",e);this._currentFragment.push(n)}onCdata(e){const n=new ir("#text",e);this._currentFragment.push(n)}onBeginElement(e,n,s){this._lowerCaseName&&(e=e.toLowerCase());const a=new ir(e);a.childNodes=[],this._hasAttributes&&(a.attributes=n),this._currentFragment.push(a),!s&&(this._stack.push(this._currentFragment),this._currentFragment=a.childNodes)}onEndElement(e){this._currentFragment=this._stack.pop()||[];const n=this._currentFragment.at(-1);if(!n)return null;for(const s of n.childNodes)s.parentNode=n;return n}onError(e){this._errorCode=e}}class rg{constructor(e){e=this._repair(e);const s=new K0({lowerCaseName:!0}).parseFromString(e);this._metadataMap=new Map,this._data=e,s&&this._parse(s)}_repair(e){return e.replace(/^[^<]+/,"").replaceAll(/>\\376\\377([^<]+)/g,function(n,s){const a=s.replaceAll(/\\([0-3])([0-7])([0-7])/g,function(r,o,f,l){return String.fromCharCode(o*64+f*8+l*1)}).replaceAll(/&(amp|apos|gt|lt|quot);/g,function(r,o){switch(o){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error(`_repair: ${o} isn't defined.`)}),i=[">"];for(let r=0,o=a.length;r=32&&f<127&&f!==60&&f!==62&&f!==38?i.push(String.fromCharCode(f)):i.push("&#x"+(65536+f).toString(16).substring(1)+";")}return i.join("")})}_getSequence(e){const n=e.nodeName;return n!=="rdf:bag"&&n!=="rdf:seq"&&n!=="rdf:alt"?null:e.childNodes.filter(s=>s.nodeName==="rdf:li")}_parseArray(e){if(!e.hasChildNodes())return;const[n]=e.childNodes,s=this._getSequence(n)||[];this._metadataMap.set(e.nodeName,s.map(a=>a.textContent.trim()))}_parse(e){let n=e.documentElement;if(n.nodeName!=="rdf:rdf")for(n=n.firstChild;n&&n.nodeName!=="rdf:rdf";)n=n.nextSibling;if(!(!n||n.nodeName!=="rdf:rdf"||!n.hasChildNodes())){for(const s of n.childNodes)if(s.nodeName==="rdf:description")for(const a of s.childNodes){const i=a.nodeName;switch(i){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(a);continue}this._metadataMap.set(i,a.textContent.trim())}}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}const Ki=44;function Mh(t){if(!t||t.has("CO"))return null;const e=t.get("R");if(!Number.isInteger(e)||e<=0)return null;const n=t.get("C")??1;if(!Number.isInteger(n)||n<1||n>2)return null;const s=t.get("B")??8;if(s!==8&&s!==16)return null;const a=t.get("E");let i="Raw";return a!==void 0&&(i=a instanceof J?a.name:null),i!=="Raw"&&i!=="Signed"?null:{channels:n,sampleRate:e,bitsPerSample:s,encoding:i}}function og(t,e){const n=Mh(t.dict);if(!n)return null;const{channels:s,sampleRate:a,bitsPerSample:i,encoding:r}=n,o=s*(i>>3),f=e.length-e.length%o;if(f===0)return null;const l=new Uint8Array(Ki+f),c=new DataView(l.buffer);if(l.set(Bt("RIFF"),0),c.setUint32(4,Ki-8+f,!0),l.set(Bt("WAVE"),8),l.set(Bt("fmt "),12),c.setUint32(16,16,!0),c.setUint16(20,1,!0),c.setUint16(22,s,!0),c.setUint32(24,a,!0),c.setUint32(28,a*o,!0),c.setUint16(32,o,!0),c.setUint16(34,i,!0),l.set(Bt("data"),36),c.setUint32(40,f,!0),i===16){const h=r==="Signed";for(let u=0;u=32768&&(d-=65536):d-=32768,c.setInt16(Ki+u,d,!0)}}else if(r==="Signed")for(let h=0;h=0||(h.parentTreeId=s++),o=!1)}if(o){for(const f of n.values())for(const l of f)delete l.parentTreeId,delete l.structTreeParent;return!1}return!0}async updateStructureTree({newAnnotationsByPage:e,pdfManager:n,changes:s}){const{ref:a,xref:i}=this,r=this.dict.clone(),o=new $t;o.put(a,r);let f=r.getRaw("ParentTree"),l;f instanceof Q?l=i.fetch(f):(l=f,f=i.getNewTemporaryRef(),r.set("ParentTree",f)),l=l.clone(),o.put(f,l);let c=l.getRaw("Nums"),h=null;c instanceof Q&&(h=c,c=i.fetch(h)),c=c.slice(),h||l.set("Nums",c);const u=await oa.#t({newAnnotationsByPage:e,structTreeRootRef:a,structTreeRoot:this,kids:null,nums:c,xref:i,pdfManager:n,changes:s,cache:o});if(u!==-1){r.set("ParentTreeNextKey",u),h&&o.put(h,c);for(const[d,p]of o.items())s.put(d,{data:p})}}static async#t({newAnnotationsByPage:e,structTreeRootRef:n,structTreeRoot:s,kids:a,nums:i,xref:r,pdfManager:o,changes:f,cache:l}){const c=J.get("OBJR");let h=-1,u;for(const[d,p]of e){const m=await o.getPage(d),{ref:b}=m,w=b instanceof Q;for(const{accessibilityData:x,ref:j,parentTreeId:k,structTreeParent:y}of p){if(!x?.type)continue;const{structParent:q}=x;if(s&&Number.isInteger(q)&&q>=0){let F=(u||=new Map).get(d);F===void 0&&(F=new Dh(s,m.pageDict).collectObjects(b),u.set(d,F));const M=F?.get(q);if(M){const N=r.fetch(M).clone();oa.#s(N,x),f.put(M,{data:N});continue}}h=Math.max(h,k);const v=r.getNewTemporaryRef(),A=new B(r);oa.#s(A,x),await this.#n({structTreeParent:y,tagDict:A,newTagRef:v,structTreeRootRef:n,fallbackKids:a,xref:r,cache:l});const S=new B(r);A.set("K",S),S.set("Type",c),w&&S.set("Pg",b),S.set("Obj",j),l.put(v,A),i.push(k,v)}}return h+1}static#s(e,{type:n,title:s,lang:a,alt:i,expanded:r,actualText:o}){e.set("S",J.get(n)),s&&e.set("T",Zt(s)),a&&e.set("Lang",Zt(a)),i&&e.set("Alt",Zt(i)),r&&e.set("E",Zt(r)),o&&e.set("ActualText",Zt(o))}static#a({elements:e,xref:n,pageDict:s,numberTree:a}){const i=new Map;for(const l of e)if(l.structTreeParentId){const c=parseInt(l.structTreeParentId.split("_mc")[1],10);i.getOrInsertComputed(c,ha).push(l)}const r=s.get("StructParents");if(!Number.isInteger(r))return;const o=a.get(r),f=(l,c,h)=>{const u=i.get(l);if(u){const d=c.getRaw("P"),p=n.fetchIfRef(d);if(d instanceof Q&&p instanceof B){const m={ref:h,dict:c};for(const b of u)b.structTreeParent=m}return!0}return!1};for(const l of o){if(!(l instanceof Q))continue;const c=n.fetch(l),h=c.get("K");if(Number.isInteger(h)){f(h,c,l);continue}if(Array.isArray(h))for(let u of h){if(u=n.fetchIfRef(u),Number.isInteger(u)&&f(u,c,l))break;if(!(u instanceof B))continue;if(!ze(u.get("Type"),"MCR"))break;const d=u.get("MCID");if(Number.isInteger(d)&&f(d,c,l))break}}}static async#n({structTreeParent:e,tagDict:n,newTagRef:s,structTreeRootRef:a,fallbackKids:i,xref:r,cache:o}){let f=null,l;e?({ref:f}=e,l=e.dict.getRaw("P")||a):l=a,n.set("P",l);const c=r.fetchIfRef(l);if(!c){i.push(s);return}const h=o.getOrPutComputed(l,()=>c.clone()),u=h.getRaw("K");let d=u instanceof Q?o.get(u):null;if(!d){d=r.fetchIfRef(u),d=Array.isArray(d)?d.slice():[u];const m=r.getNewTemporaryRef();h.set("K",m),o.put(m,d)}const p=d.indexOf(f);d.splice(p>=0?p+1:d.length,0,s)}}class lg{constructor(e,n){this.tree=e,this.xref=e.xref,this.dict=n,this.kids=[],this.parseKids()}get role(){const e=this.dict.get("S"),n=e instanceof J?e.name:"",{root:s}=this.tree;return s.roleMap.get(n)??n}get mathML(){let e=this.dict.get("AF")||[];Array.isArray(e)||(e=[e]);for(let n of e){if(n=this.xref.fetchIfRef(n),!wi(n,"Filespec")||!ze(n.get("AFRelationship"),"Supplement"))continue;const s=Sn.pickPlatformItem(n.get("EF"));if(!(!(s instanceof Pe)||!wi(s.dict,"EmbeddedFile")||!ze(s.dict.get("Subtype"),"application/mathml+xml")))return bi(s.getString())}for(const n of this.attributes)if(ze(n.get("O"),"MSFT_Office")){const s=n.get("MSFT_MathML");return s?Xe(s):null}return null}#e(e,n){const s=[e],a=new bt;for(;s.length>0;){if(e=s.pop(),e instanceof Q){if(a.has(e))continue;a.put(e),e=this.xref.fetch(e)}if(e instanceof Pe&&(e=e.dict),e instanceof B){n.push(e);continue}if(Array.isArray(e))for(let i=e.length-1;i>=0;i--)Number.isInteger(e[i])||s.push(e[i])}}get attributes(){const e=[],n=this.dict.getArray("C");if(n!==void 0){const s=this.tree.rootDict?.get("ClassMap");if(s instanceof B)for(const a of Array.isArray(n)?n:[n])a instanceof J&&this.#e(s.getRaw(a.name),e)}return this.#e(this.dict.getRaw("A"),e),ue(this,"attributes",e)}get tableAttributes(){const{role:e}=this;if(e!=="Table"&&e!=="TH"&&e!=="TD")return null;const n=new Map;for(const s of this.attributes)if(ze(s.get("O"),"Table")){if(e==="Table"){if(s.has("Summary")){const a=s.get("Summary");typeof a=="string"&&a?n.set("summary",Xe(a)):n.delete("summary")}continue}for(const[a,i]of fg){if(!s.has(a))continue;const r=s.get(a);Number.isInteger(r)&&r>1?n.set(i,r):n.delete(i)}if(s.has("Headers")){n.delete("headers");const a=s.getArray("Headers");if(Array.isArray(a)){const i=a.filter(r=>typeof r=="string").map(Xe);i.length>0&&n.set("headers",i)}}if(e==="TH"&&s.has("Scope")){n.delete("scope");const a=s.get("Scope");a instanceof J&&["Row","Column","Both"].includes(a.name)&&n.set("scope",a.name)}if(e==="TH"&&s.has("Short")){n.delete("short");const a=s.get("Short");typeof a=="string"&&a&&n.set("short",Xe(a))}}return n.size?n:null}parseKids(){let e=null;const n=this.dict.getRaw("Pg");n instanceof Q&&(e=n.toString());const s=this.dict.get("K");if(Array.isArray(s))for(const a of s){const i=this.parseKid(e,this.xref.fetchIfRef(a));i&&this.kids.push(i)}else{const a=this.parseKid(e,s);a&&this.kids.push(a)}}parseKid(e,n){if(Number.isInteger(n))return this.tree.pageDict.objId!==e?null:new e0({type:Un.PAGE_CONTENT,mcid:n,pageObjId:e});if(!(n instanceof B))return null;const s=n.getRaw("Pg");s instanceof Q&&(e=s.toString());const a=n.get("Type")instanceof J?n.get("Type").name:null;if(a==="MCR"){if(this.tree.pageDict.objId!==e)return null;const i=n.getRaw("Stm");return new e0({type:Un.STREAM_CONTENT,refObjId:i instanceof Q?i.toString():null,pageObjId:e,mcid:n.get("MCID")})}if(a==="OBJR"){if(this.tree.pageDict.objId!==e)return null;const i=n.getRaw("Obj");return new e0({type:Un.OBJECT,refObjId:i instanceof Q?i.toString():null,pageObjId:e})}return new e0({type:Un.ELEMENT,dict:n})}}class e0{constructor({type:e,dict:n=null,mcid:s=null,pageObjId:a=null,refObjId:i=null}){this.type=e,this.dict=n,this.mcid=s,this.pageObjId=a,this.refObjId=i,this.parentNode=null}}class Dh{constructor(e,n){this.root=e,this.xref=e?.xref??null,this.rootDict=e?.dict??null,this.pageDict=n,this.nodes=[]}collectObjects(e){if(!this.root||!this.rootDict||!(e instanceof Q))return null;const n=this.rootDict.get("ParentTree");if(!n)return null;const s=this.root.structParentIds?.get(e);if(!s)return null;const a=new Map,i=new qr(n,this.xref);for(const[r]of s){const o=i.getRaw(r);o instanceof Q&&a.set(r,o)}return a}parse(e){if(!this.root||!this.rootDict||!(e instanceof Q))return;const{parentTree:n}=this.root;if(!n)return;const s=this.pageDict.get("StructParents"),a=this.root.structParentIds?.get(e);if(!Number.isInteger(s)&&!a)return;const i=new Map;if(Number.isInteger(s)){const r=n.get(s);if(Array.isArray(r))for(const o of r)o instanceof Q&&this.addNode(this.xref.fetch(o),i)}if(a)for(const[r,o,f]of a){const l=n.get(r);if(!l)continue;const c=this.addNode(this.xref.fetchIfRef(l),i);if(!(!c||!f))for(const h of c.kids)h.type===Un.OBJECT&&h.refObjId===f&&(h.type=o)}}addNode(e,n,s=0){if(s>hc)return H("StructTree MAX_DEPTH reached."),null;if(!(e instanceof B))return null;if(n.has(e))return n.get(e);const a=new lg(this,e);switch(n.set(e,a),a.role){case"L":case"LBody":case"LI":case"Table":case"THead":case"TBody":case"TFoot":case"TR":for(const f of a.kids)f.type===Un.ELEMENT&&this.addNode(f.dict,n,s-1)}const i=e.get("P");if(!(i instanceof B)||ze(i.get("Type"),"StructTreeRoot"))return this.addTopLevelNode(e,a)||n.delete(e),a;const r=this.addNode(i,n,s+1);if(!r)return a;let o=!1;for(const f of r.kids)f.type===Un.ELEMENT&&f.dict===e&&(f.parentNode=a,o=!0);return o||n.delete(e),a}addTopLevelNode(e,n){const s=this.root.getKidPosition(e.objId);return isNaN(s)?!1:(s!==-1&&(this.nodes[s]=n),!0)}get serializable(){function e(s,a,i=0){if(i>hc){H("StructTree too deep to be fully serialized.");return}const r=Object.create(null);r.role=s.role,r.children=[],a.children.push(r);let o=s.dict.get("Alt");typeof o!="string"&&(o=s.dict.get("ActualText")),typeof o=="string"&&(r.alt=Xe(o));const f=s.dict.get("ID");if(r.role==="TH"&&typeof f=="string"&&f&&(r.structId=Xe(f)),s.tableAttributes?.forEach((u,d)=>{r[d]=u}),r.role==="Formula")try{const{mathML:u}=s;u&&(r.mathML=u)}catch(u){if(u instanceof kt)throw u;H(`Ignoring mathML: "${u}".`)}let l=null,c=null;for(const u of s.attributes){l=Cs(u.getArray("BBox"),l);const d=u.get("Width"),p=u.get("Height");typeof d=="number"&&d>0&&typeof p=="number"&&p>0&&(c=[0,0,d,p])}(l||c)&&(r.bbox=l??c);const h=s.dict.get("Lang");typeof h=="string"&&(r.lang=Xe(h));for(const u of s.kids){const d=u.type===Un.ELEMENT?u.parentNode:null;if(d){e(d,r,i+1);continue}else u.type===Un.PAGE_CONTENT||u.type===Un.STREAM_CONTENT?r.children.push({type:"content",id:`p${u.pageObjId}_mc${u.mcid}`}):u.type===Un.OBJECT?r.children.push({type:"object",id:u.refObjId}):u.type===Un.ANNOTATION&&r.children.push({type:"annotation",id:`${_u}${u.refObjId}`})}}const n=Object.create(null);n.children=[],n.role="Root";for(const s of this.nodes)s&&e(s,n);return n}}const cg=t=>t instanceof Q,A0=Ku.bind(null,cg,ze);function So(t){return t instanceof B&&(t=t.get("D")),A0(t)?t:null}function uc(t){let e=t.get("D");if(e){if(e instanceof J&&(e=e.name),typeof e=="string")return Xe(e,!0);if(A0(e))return JSON.stringify(e)}return null}class _a{#e=null;#t=new $t;#s=new Map;#a=new Set;#n=null;builtInCMapCache=new Map;fontCache=new $t;globalColorSpaceCache=new Up;globalImageCache=new hi;nonBlendModesSet=new bt;pageDictCache=new $t;pageIndexCache=new $t;pageKidsCountCache=new $t;standardFontDataCache=new Map;systemFontCache=new Map;constructor(e,n){if(this.pdfManager=e,this.xref=n,this.#n=n.getCatalogObj(),!(this.#n instanceof B))throw new Y("Catalog object is not a dictionary.");this.toplevelPagesDict}cloneDict(){return this.#n.clone()}getAttachmentIdForAnnotation(e,n=!1){let s=this.#t.get(e);if(!s){const a=`attachmentRef:${e.toString()}`;s=a;let i=1;for(;this.#s.has(s)||this.attachments?.has(s);)s=`${a}-${i++}`;this.#t.put(e,s),this.#s.set(s,e)}return n&&this.#a.add(s),s}get version(){const e=this.#n.get("Version");if(e instanceof J){if(Gc.test(e.name))return ue(this,"version",e.name);H(`Invalid PDF catalog version: ${e.name}`)}return ue(this,"version",null)}get lang(){const e=this.#n.get("Lang");return ue(this,"lang",e&&typeof e=="string"?Xe(e):null)}get needsRendering(){const e=this.#n.get("NeedsRendering");return ue(this,"needsRendering",typeof e=="boolean"?e:!1)}get collection(){let e=null;try{const n=this.#n.get("Collection");n instanceof B&&n.size>0&&(e=n)}catch(n){if(n instanceof kt)throw n;ut("Cannot fetch Collection entry; assuming no collection is present.")}return ue(this,"collection",e)}get acroForm(){let e=null;try{const n=this.#n.get("AcroForm");n instanceof B&&n.size>0&&(e=n)}catch(n){if(n instanceof kt)throw n;ut("Cannot fetch AcroForm entry; assuming no forms are present.")}return ue(this,"acroForm",e)}get acroFormRef(){const e=this.#n.getRaw("AcroForm");return ue(this,"acroFormRef",e instanceof Q?e:null)}get metadata(){const e=this.#n.getRaw("Metadata");if(!(e instanceof Q))return ue(this,"metadata",null);let n=null;try{const s=this.xref.fetch(e,!this.xref.encrypt?.encryptMetadata);if(s instanceof Pe&&wi(s.dict,"Metadata")&&ze(s.dict.get("Subtype"),"XML")){const a=bi(s.getString());a&&(n=new rg(a).serializable)}}catch(s){if(s instanceof kt)throw s;ut(`Skipping invalid Metadata: "${s}".`)}return ue(this,"metadata",n)}get markInfo(){let e=null;try{e=this.#i()}catch(n){if(n instanceof kt)throw n;H("Unable to read mark info.")}return ue(this,"markInfo",e)}#i(){const e=this.#n.get("MarkInfo");if(!(e instanceof B))return null;const n=new Map;for(const s of["Marked","UserProperties","Suspects"]){const a=e.get(s);n.set(s,typeof a=="boolean"?a:!1)}return n}get hasStructTree(){return this.#n.has("StructTreeRoot")}get structTreeRoot(){let e=null;try{e=this.#r()}catch(n){if(n instanceof kt)throw n;H("Unable read to structTreeRoot info.")}return ue(this,"structTreeRoot",e)}#r(){const e=this.#n.getRaw("StructTreeRoot"),n=this.xref.fetchIfRef(e);return n instanceof B?new oa(this.xref,n,e):null}get toplevelPagesDict(){const e=this.#n.get("Pages");if(!(e instanceof B))throw new Y("Invalid top-level pages dictionary.");return ue(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this.#f()}catch(n){if(n instanceof kt)throw n;H("Unable to read document outline.")}return ue(this,"documentOutline",e)}#f(e={}){let n=this.#n.get("Outlines");if(!(n instanceof B)||(n=n.getRaw("First"),!(n instanceof Q)))return null;const s={items:[]},a=[{obj:n,parent:s}],i=new bt;i.put(n);const r=this.xref,o=new Uint8ClampedArray(3);for(;a.length>0;){const f=a.shift(),l=r.fetchIfRef(f.obj);if(l===null)continue;l.has("Title")||H("Invalid outline item encountered.");const c={url:null,dest:null,action:null};_a.parseDestDictionary({destDict:l,resultObj:c,docBaseUrl:this.baseUrl,docAttachments:this.attachments});const h=l.get("Title"),u=l.get("F")||0,d=l.getArray("C"),p=l.get("Count");let m=o;Rt(d,3)&&(d[0]!==0||d[1]!==0||d[2]!==0)&&(m=ht.rgb.getRgb(d,0));const b={action:c.action,attachmentId:c.attachmentId,attachment:c.attachment,dest:c.dest,url:c.url,unsafeUrl:c.unsafeUrl,newWindow:c.newWindow,setOCGState:c.setOCGState,title:typeof h=="string"?Xe(h):"",color:m,count:Number.isInteger(p)?p:void 0,bold:!!(u&2),italic:!!(u&1),items:[]};e.keepRawDict&&(b.rawDict=l),f.parent.items.push(b),n=l.getRaw("First"),n instanceof Q&&!i.has(n)&&(a.push({obj:n,parent:b}),i.put(n)),n=l.getRaw("Next"),n instanceof Q&&!i.has(n)&&(a.push({obj:n,parent:f.parent}),i.put(n))}return s.items.length>0?s.items:null}get documentOutlineForEditor(){let e=null;try{e=this.#f({keepRawDict:!0})}catch(n){if(n instanceof kt)throw n;H("Unable to read document outline.")}return ue(this,"documentOutlineForEditor",e)}get permissions(){let e=null;try{e=this.#o()}catch(n){if(n instanceof kt)throw n;H("Unable to read permissions.")}return ue(this,"permissions",e)}#o(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof B))return null;let n=e.get("P");if(typeof n!="number")return null;n+=2**32;const s=new Set;for(const a of Object.values(Pu))n&a&&s.add(a);return s}get optionalContentConfig(){let e=null;try{const n=this.#n.get("OCProperties");if(!n)return ue(this,"optionalContentConfig",null);const s=n.get("D");if(!s)return ue(this,"optionalContentConfig",null);const a=n.get("OCGs");if(!Array.isArray(a))return ue(this,"optionalContentConfig",null);const i=new $t;for(const r of a)!(r instanceof Q)||i.has(r)||i.put(r,this.#l(r));e=this.#u(s,i)}catch(n){if(n instanceof kt)throw n;H(`Unable to read optional content config: ${n}`)}return ue(this,"optionalContentConfig",e)}#l(e){const n=this.xref.fetch(e),s={id:e.toString(),name:null,intent:null,usage:{print:null,view:null},rbGroups:[]},a=n.get("Name");typeof a=="string"&&(s.name=Xe(a));let i=n.getArray("Intent");Array.isArray(i)||(i=[i]),i.every(c=>c instanceof J)&&(s.intent=i.map(c=>c.name));const r=n.get("Usage");if(!(r instanceof B))return s;const o=s.usage,f=r.get("Print");if(f instanceof B){const c=f.get("PrintState");if(c instanceof J)switch(c.name){case"ON":case"OFF":o.print={printState:c.name}}}const l=r.get("View");if(l instanceof B){const c=l.get("ViewState");if(c instanceof J)switch(c.name){case"ON":case"OFF":o.view={viewState:c.name}}}return s}#u(e,n){function s(c){const h=[];if(Array.isArray(c))for(const u of c)u instanceof Q&&n.has(u)&&h.push(u.toString());return h}function a(c,h=0){if(!Array.isArray(c))return null;const u=[];for(const p of c){if(p instanceof Q&&n.has(p)){f.put(p),u.push(p.toString());continue}const m=i(p,h);m&&u.push(m)}if(h>0)return u;const d=[];for(const[p]of n.items())f.has(p)||d.push(p.toString());return d.length&&u.push({name:null,order:d}),u}function i(c,h){if(++h>l)return H("parseNestedOrder - reached MAX_NESTED_LEVELS."),null;const u=o.fetchIfRef(c);if(!Array.isArray(u))return null;const d=o.fetchIfRef(u[0]);if(typeof d!="string")return null;const p=a(u.slice(1),h);return p?.length?{name:Xe(d),order:p}:null}function r(c){if(Array.isArray(c))for(const h of c){const u=o.fetchIfRef(h);if(!Array.isArray(u)||!u.length)continue;const d=new Set;for(const p of u)p instanceof Q&&n.has(p)&&!d.has(p.toString())&&(d.add(p.toString()),n.get(p).rbGroups.push(d))}}const o=this.xref,f=new bt,l=10;return r(e.get("RBGroups")),{name:typeof e.get("Name")=="string"?Xe(e.get("Name")):null,creator:typeof e.get("Creator")=="string"?Xe(e.get("Creator")):null,baseState:e.get("BaseState")instanceof J?e.get("BaseState").name:null,on:s(e.get("ON")),off:s(e.get("OFF")),order:a(e.get("Order")),groups:[...n]}}setActualNumPages(e=null){this.#e=e}get hasActualNumPages(){return this.#e!==null}get _pagesCount(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new Y("Page count in top-level pages dictionary is not an integer.");return ue(this,"_pagesCount",e)}get numPages(){return this.#e??this._pagesCount}get destinations(){const e=new Map;for(const n of this.#c())if(n instanceof Ms)for(const[s,a]of n.getAll()){const i=So(a);i&&e.set(Xe(s,!0),i)}else if(n instanceof B)for(const[s,a]of n){const i=So(a);i&&e.getOrInsert(Xe(s,!0),i)}return ue(this,"destinations",e)}getDestination(e){if(Object.hasOwn(this,"destinations"))return this.destinations.get(e)??null;for(const n of this.#c())if(n instanceof Ms||n instanceof B){const s=So(n.get(e));if(s)return s}return this.destinations.get(e)??null}#c(){const e=this.#n.get("Names"),n=[];return e?.has("Dests")&&n.push(new Ms(e.getRaw("Dests"),this.xref)),this.#n.has("Dests")&&n.push(this.#n.get("Dests")),n}get rawPageLabels(){const e=this.#n.getRaw("PageLabels");return e?new qr(e,this.xref).getAll():null}get pageLabels(){let e=null;try{e=this.#h()}catch(n){if(n instanceof kt)throw n;H("Unable to read page labels.")}return ue(this,"pageLabels",e)}#h(){const e=this.rawPageLabels;if(!e)return null;const n=new Array(this.numPages);let s=null,a="",i="",r=1;for(let o=0,f=this.numPages;o=1))throw new Y("Invalid start in PageLabel dictionary.");r=c}else r=1}switch(s){case"D":i=r;break;case"R":case"r":i=s1(r,s==="r");break;case"A":case"a":const c=26,h=r-1;i=String.fromCharCode(s.charCodeAt(0)+h%c).repeat(Math.floor(h/c)+1);break;default:if(s)throw new Y(`Invalid style "${s}" in PageLabel dictionary.`);i=""}n[o]=a+i,r++}return n}get pageLayout(){const e=this.#n.get("PageLayout");let n="";if(e instanceof J)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":n=e.name}return ue(this,"pageLayout",n)}get pageMode(){const e=this.#n.get("PageMode");let n="UseNone";if(e instanceof J)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":n=e.name}return ue(this,"pageMode",n)}get viewerPreferences(){const e=this.#n.get("ViewerPreferences");if(!(e instanceof B))return ue(this,"viewerPreferences",null);let n=null;for(const[s,a]of e){let i;switch(s){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":typeof a=="boolean"&&(i=a);break;case"NonFullScreenPageMode":if(a instanceof J)switch(a.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":i=a.name;break;default:i="UseNone"}break;case"Direction":if(a instanceof J)switch(a.name){case"L2R":case"R2L":i=a.name;break;default:i="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(a instanceof J)switch(a.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":i=a.name;break;default:i="CropBox"}break;case"PrintScaling":if(a instanceof J)switch(a.name){case"None":case"AppDefault":i=a.name;break;default:i="AppDefault"}break;case"Duplex":if(a instanceof J)switch(a.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":i=a.name;break;default:i="None"}break;case"PrintPageRange":Array.isArray(a)&&a.length%2===0&&a.every((r,o,f)=>Number.isInteger(r)&&r>0&&(o===0||r>=f[o-1])&&r<=this.numPages)&&(i=a);break;case"NumCopies":Number.isInteger(a)&&a>0&&(i=a);break;default:H(`Ignoring non-standard key in ViewerPreferences: ${s}.`);continue}if(i===void 0){H(`Bad value, for key "${s}", in ViewerPreferences: ${a}.`);continue}(n??=new Map).set(s,i)}return ue(this,"viewerPreferences",n)}get openAction(){const e=this.#n.get("OpenAction"),n=new Map;if(e instanceof B){const s=new B(this.xref);s.set("A",e);const a={url:null,dest:null,action:null};_a.parseDestDictionary({destDict:s,resultObj:a}),Array.isArray(a.dest)?n.set("dest",a.dest):a.action&&n.set("action",a.action)}else A0(e)&&n.set("dest",e);return ue(this,"openAction",n.size?n:null)}get attachments(){const e=this.#n.get("Names");let n=null;if(e instanceof B&&e.has("EmbeddedFiles")){const s=new Ms(e.getRaw("EmbeddedFiles"),this.xref);for(const[a,i]of s.getAll())(n??=new Map).set(Xe(a,!0),new Sn(i).serializable)}return ue(this,"attachments",n)}#d(e){const n=this.#n.get("Names");if(n instanceof B&&n.has("EmbeddedFiles")){const s=new Ms(n.getRaw("EmbeddedFiles"),this.xref);for(const[a,i]of s.getAll())if(Xe(a,!0)===e)return Sn.readContent(i)}}attachmentContent(e){const n=this.#d(e);if(n!==void 0)return n;const s=this.#s.get(e);if(s){const a=this.xref.fetch(s);if(a instanceof Pe){const i=Sn.readStreamContent(a);return this.#a.has(e)?og(a,i)??i:i}return a instanceof B?Sn.readContent(a):null}return null}get rawEmbeddedFiles(){const e=this.#n.get("Names");return!(e instanceof B)||!e.has("EmbeddedFiles")?null:new Ms(e.getRaw("EmbeddedFiles"),this.xref).getAll(!0)}get xfaImages(){const e=this.#n.get("Names");let n=null;if(e instanceof B&&e.has("XFAImages")){const s=new Ms(e.getRaw("XFAImages"),this.xref);for(const[a,i]of s.getAll())i instanceof Pe&&(n??=new Map,n.set(Xe(a,!0),i.getBytes()))}return ue(this,"xfaImages",n)}#m(){const e=this.#n.get("Names");let n=null;function s(i,r){if(!(r instanceof B)||!ze(r.get("S"),"JavaScript"))return;let o=r.get("JS");if(o instanceof Pe)o=o.getString();else if(typeof o!="string")return;o=Xe(o,!0).replaceAll("\0",""),o&&(n??=new Map).set(i,o)}if(e instanceof B&&e.has("JavaScript")){const i=new Ms(e.getRaw("JavaScript"),this.xref);for(const[r,o]of i.getAll())s(Xe(r,!0),o)}const a=this.#n.get("OpenAction");return a&&s("OpenAction",a),n}get jsActions(){const e=this.#m();let n=N0(this.xref,this.#n,Nu);if(e){n??=new Map;for(const[s,a]of e)n.getOrInsertComputed(s,ha).push(a)}return ue(this,"jsActions",n)}async cleanup(e=!1){_f(),this.globalColorSpaceCache.clear(),this.globalImageCache.clear(e),this.pageKidsCountCache.clear(),this.pageIndexCache.clear(),this.pageDictCache.clear(),this.nonBlendModesSet.clear();for(const{dict:n}of await Promise.all(this.fontCache))delete n.cacheKey;this.fontCache.clear(),this.builtInCMapCache.clear(),this.standardFontDataCache.clear(),this.systemFontCache.clear()}async getPageDict(e){const n=[this.toplevelPagesDict],s=new bt,a=this.#n.getRaw("Pages");a instanceof Q&&s.put(a);const i=this.xref,r=this.pageKidsCountCache,o=this.pageIndexCache,f=this.pageDictCache;let l=0;for(;n.length;){const c=n.pop();if(c instanceof Q){const p=r.get(c);if(p>=0&&l+p<=e){l+=p;continue}if(s.has(c))throw new Y("Pages tree contains circular reference.");s.put(c);const m=await(f.get(c)||i.fetchAsync(c));if(m instanceof B){let b=m.getRaw("Type");if(b instanceof Q&&(b=await i.fetchAsync(b)),ze(b,"Page")||!m.has("Kids")){if(r.has(c)||r.put(c,1),o.has(c)||o.put(c,l),l===e)return[m,c];l++;continue}}n.push(m);continue}if(!(c instanceof B))throw new Y("Page dictionary kid reference points to wrong type of object.");const{objId:h}=c;let u=c.getRaw("Count");if(u instanceof Q&&(u=await i.fetchAsync(u)),Number.isInteger(u)&&u>=0&&(h&&!r.has(h)&&r.put(h,u),l+u<=e)){l+=u;continue}let d=c.getRaw("Kids");if(d instanceof Q&&(d=await i.fetchAsync(d)),!Array.isArray(d)){let p=c.getRaw("Type");if(p instanceof Q&&(p=await i.fetchAsync(p)),ze(p,"Page")||!c.has("Kids")){if(l===e)return[c,null];l++;continue}throw new Y("Page dictionary kids object is not an array.")}for(let p=d.length-1;p>=0;p--){const m=d[p];n.push(m),c===this.toplevelPagesDict&&m instanceof Q&&!f.has(m)&&f.put(m,i.fetchAsync(m))}}throw new Error(`Page index ${e} not found.`)}async getAllPageDicts(e=!1){const{ignoreErrors:n}=this.pdfManager.evaluatorOptions,s=[{currentNode:this.toplevelPagesDict,posInKids:0}],a=new bt,i=this.#n.getRaw("Pages");i instanceof Q&&a.put(i);const r=new Map,o=this.xref,f=this.pageIndexCache;let l=0;function c(u,d){d&&!f.has(d)&&f.put(d,l),r.set(l++,[u,d])}function h(u){if(u instanceof aa&&!e)throw u;e&&n&&l===0&&(H(`getAllPageDicts - Skipping invalid first page: "${u}".`),u=B.empty),r.set(l++,[u,null])}for(;s.length>0;){const u=s.at(-1),{currentNode:d,posInKids:p}=u;let m=d.getRaw("Kids");if(m instanceof Q)try{m=await o.fetchAsync(m)}catch(j){h(j);break}if(!Array.isArray(m)){let j=d.getRaw("Type");if(j instanceof Q)try{j=await o.fetchAsync(j)}catch(k){h(k);break}if(ze(j,"Page")||!d.has("Kids")){c(d,null);break}h(new Y("Page dictionary kids object is not an array."));break}if(p>=m.length){s.pop();continue}const b=m[p];let w;if(b instanceof Q){if(a.has(b)){h(new Y("Pages tree contains circular reference."));break}a.put(b);try{w=await o.fetchAsync(b)}catch(j){h(j);break}}else w=b;if(!(w instanceof B)){h(new Y("Page dictionary kid reference points to wrong type of object."));break}let x=w.getRaw("Type");if(x instanceof Q)try{x=await o.fetchAsync(x)}catch(j){h(j);break}ze(x,"Page")||!w.has("Kids")?c(w,b instanceof Q?b:null):s.push({currentNode:w,posInKids:0}),u.posInKids++}return r}async getPageIndex(e){const n=this.pageIndexCache.get(e);if(n!==void 0)return n;const s=this.xref;let a=0,i=e;const r=new bt;for(r.put(e);;){const o=await s.fetchAsync(i);if(xi(i,e)&&!wi(o,"Page")&&!(o instanceof B&&!o.has("Type")&&o.has("Contents")))throw new Y("The reference does not point to a /Page dictionary.");if(!o)break;if(!(o instanceof B))throw new Y("Node must be a dictionary.");const f=o.getRaw("Parent");if(f instanceof Q){if(r.has(f))throw new Y("Pages tree contains circular reference.");r.put(f)}const l=await o.getAsync("Parent");if(!l)break;if(!(l instanceof B))throw new Y("Parent must be a dictionary.");const c=await l.getAsync("Kids");if(!c)break;if(!Array.isArray(c))throw new Y("Kids must be an array.");const h=[];let u=!1;for(const d of c){if(!(d instanceof Q))throw new Y("Kid must be a reference.");if(xi(d,i)){u=!0;break}h.push(s.fetchAsync(d).then(p=>{if(!(p instanceof B))throw new Y("Kid node must be a dictionary.");if(p.has("Count")){const m=p.get("Count");if(Number.isInteger(m)&&m>=0){a+=m;return}throw new Y("Count must be a (positive) integer.")}a++}))}if(!u)throw new Y("Kid reference not found in parent's kids.");await Promise.all(h),i=f}return this.pageIndexCache.put(e,a),a}get baseUrl(){const e=this.#n.get("URI");if(e instanceof B){const n=e.get("Base");if(typeof n=="string"){const s=x0(n,null,{tryConvertEncoding:!0});if(s)return ue(this,"baseUrl",s.href)}}return ue(this,"baseUrl",this.pdfManager.docBaseUrl)}static#p(e,n){const s=e.fetchIfRef(n);if(!(s instanceof B))return null;let a=null;const i=s.getRaw("Pg");if(i instanceof Q&&(a=i),!a){const l=[s],c=new bt;for(c.put(n);l.length>0&&!a;){let u=l.shift().getRaw("K");if(u instanceof Q){if(c.has(u))continue;c.put(u),u=e.fetch(u)}let d;if(Array.isArray(u))d=u;else if(u)d=[u];else continue;for(const p of d){if(p instanceof Q){if(c.has(p))continue;c.put(p)}const m=e.fetchIfRef(p);if(!(m instanceof B))continue;const b=m.getRaw("Pg");if(b instanceof Q){a=b;break}l.push(m)}}}if(!a){let c=s;for(let h=0;h<40;h++){const u=c.getRaw("P");if(!(u instanceof Q))break;const d=e.fetch(u);if(!(d instanceof B)||ze(d.get("Type"),"StructTreeRoot"))break;const p=d.getRaw("Pg");if(p instanceof Q){a=p;break}c=d}}if(!a)return null;let r=null,o=null;const f=s.get("A");if(f instanceof B){const l=dr(f.getArray("BBox"),null);l&&(r=l[0],o=l[3])}return[a,{name:"XYZ"},r,o,null]}static parseDestDictionary({destDict:e,resultObj:n,docBaseUrl:s=null,docAttachments:a=null}){if(!(e instanceof B)){H("parseDestDictionary: `destDict` must be a dictionary.");return}let i=e.get("A"),r,o;if(i instanceof B||(e.has("Dest")?i=e.get("Dest"):(i=e.get("AA"),i instanceof B&&(i.has("D")?i=i.get("D"):i.has("U")&&(i=i.get("U"))))),i instanceof B){const f=i.get("S");if(!(f instanceof J)){H("parseDestDictionary: Invalid type in Action dictionary.");return}const l=f.name;switch(l){case"ResetForm":const c=i.get("Flags"),h=((typeof c=="number"?c:0)&1)===0,u=[],d=[];for(const F of i.get("Fields")||[])F instanceof Q?d.push(F.toString()):typeof F=="string"&&u.push(Xe(F));n.resetForm={fields:u,refs:d,include:h};break;case"URI":r=i.get("URI"),r instanceof J&&(r="/"+r.name);break;case"GoTo":o=i.get("D");break;case"Launch":case"GoToR":const p=i.get("F");if(p instanceof B)r=new Sn(p).filename;else if(typeof p=="string")r=p;else break;const m=uc(i);m&&(r=r.split("#",1)[0]+"#"+m);const b=i.get("NewWindow");typeof b=="boolean"&&(n.newWindow=b);break;case"GoToE":const w=i.get("T");let x=null;if(w instanceof B){const F=w.get("R"),M=w.get("N");ze(F,"C")&&typeof M=="string"&&(x=Xe(M,!0))}if(a&&x){n.attachmentId=x,n.attachment=a.get(x);const F=uc(i);F&&(n.attachmentDest=F)}else H('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":const j=i.get("N");j instanceof J&&(n.action=j.name);break;case"SetOCGState":const k=i.get("State"),y=i.get("PreserveRB");if(!Array.isArray(k)||k.length===0)break;const q=[];for(const F of k)if(F instanceof J)switch(F.name){case"ON":case"OFF":case"Toggle":q.push(F.name);break}else F instanceof Q&&q.push(F.toString());if(q.length!==k.length)break;n.setOCGState={state:q,preserveRB:typeof y=="boolean"?y:!0};break;case"JavaScript":const v=i.get("JS");let A;v instanceof Pe?A=v.getString():typeof v=="string"&&(A=v);const S=A&&Vc(Xe(A,!0));if(S){r=S.url,n.newWindow=S.newWindow;break}default:if(l==="JavaScript"||l==="SubmitForm")break;H(`parseDestDictionary - unsupported action: "${l}".`);break}}else e.has("Dest")&&(o=e.get("Dest"));if(typeof r=="string"){const f=x0(r,s,{addDefaultProtocol:!0,tryConvertEncoding:!0});f&&(n.url=f.href),n.unsafeUrl=r}if(o&&(o instanceof J&&(o=o.name),typeof o=="string"?n.dest=Xe(o,!0):A0(o)&&(n.dest=o)),!n.dest&&!n.url&&!n.action&&!n.attachment&&!n.setOCGState&&!n.resetForm){const f=e.getRaw("SE");if(f instanceof Q)try{const l=_a.#p(e.xref,f);l&&(n.dest=l)}catch(l){if(l instanceof kt)throw l;ut("SE parsing failed.")}}}}const hg=16384;function t0(t,e,n,s){const a=new B(t);return a.set("Type",J.get("XObject")),a.set("Subtype",J.get("Image")),a.set("BitsPerComponent",8),a.setIfName("ColorSpace",s),a.set("Width",e),a.set("Height",n),a}function rr(t,e){return new yt(t,0,t.length,e)}function ug(t,e,n){const s=t+e-n,a=Math.abs(s-t),i=Math.abs(s-e),r=Math.abs(s-n);return a<=i&&a<=r?t:i<=r?e:n}function dg(t,e,n,s){const a=e*s,i=new Uint8Array(n*(a+1)),r=[new Uint8Array(a),new Uint8Array(a),new Uint8Array(a),new Uint8Array(a),new Uint8Array(a)];for(let o=0;o=s?t[p-s]:0,w=o>0?t[l+d]:0,x=o>0&&d>=s?t[l+d-s]:0;r[0][d]=m,r[1][d]=m-b&255,r[2][d]=m-w&255,r[3][d]=m-(b+w>>1)&255,r[4][d]=m-ug(b,w,x)&255;for(let j=0;j<5;j++){const k=r[j][d];c[j]+=k<128?k:256-k}}let h=0;for(let d=1;d<5;d++)c[d]{try{await n.ready,await n.write(t),await n.ready,await n.close()}catch(i){throw await n.abort(i).catch(()=>{}),i}})(),[a]=await Promise.all([new Response(e.readable).bytes(),s.then(()=>null)]);return a}async function dc(t,e,n,s){const a=t.length/(e*n);let i;if(typeof CompressionStream=="function")try{const o=dg(t,e,n,a);i=await mg(o)}catch{}if(!i)return rr(t,s);s.setIfName("Filter","FlateDecode");const r=new B(s.xref);return r.set("Predictor",15),r.set("Columns",e),r.set("Colors",a),r.set("BitsPerComponent",8),s.set("DecodeParms",r),rr(i,s)}async function _h(t,e,{closeBitmap:n=!1}={}){const{width:s,height:a}=t;if(!Number.isInteger(s)||!Number.isInteger(a)||s<=0||a<=0)throw n&&t.close?.(),new Error(`createImage: invalid bitmap dimensions ${s}x${a}`);const i=new OffscreenCanvas(s,a),r=i.getContext("2d",{alpha:!0,willReadFrequently:!0});let o;try{r.drawImage(t,0,0),o=r.getImageData(0,0,s,a).data}finally{n&&t.close?.()}const f=new Uint32Array(o.buffer,o.byteOffset,o.byteLength>>2),l=Tn.isLittleEndian,c=l?16777215:4294967040,h=new Set;let u=!1,d=!0;for(const y of f){if((l?y>>>24:y&255)!==255){u=!0;break}d&&(h.add((y&c)>>>0),h.size>hg&&(d=!1,h.clear()))}u&&(d=!0);const p=t0(e,s,a,"DeviceRGB");let m,b=null;if(d){const y=new Uint8Array(s*a*3);for(let q=0,v=0,A=o.length;qy.bytes()).then(y=>rr(y,p));let w=Promise.resolve(null),x=null;if(u){const y=new Uint8Array(f.length);if(l)for(let A=0,S=f.length;A>>24;else for(let A=0,S=f.length;At.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:t=>t==="http://ns.adobe.com/xdp/pdf/"},signature:{id:6,check:t=>t==="http://www.w3.org/2000/09/xmldsig#"},sourceSet:{id:7,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:t=>t==="http://www.w3.org/1999/XSL/Transform"},template:{id:9,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:t=>t.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:t=>t==="http://ns.adobe.com/xdp/"},xfdf:{id:12,check:t=>t==="http://ns.adobe.com/xfdf/"},xhtml:{id:13,check:t=>t==="http://www.w3.org/1999/xhtml"},xmpmeta:{id:14,check:t=>t==="http://ns.adobe.com/xmpmeta/"}},wg={pt:t=>t,cm:t=>t/2.54*72,mm:t=>t/(10*2.54)*72,in:t=>t*72,px:t=>t},xg=/([+-]?\d+\.?\d*)(.*)/;function X0(t){return t.startsWith("'")||t.startsWith('"')?t.slice(1,-1):t}function Ve({data:t,defaultValue:e,validate:n}){if(!t)return e;t=t.trim();const s=parseInt(t,10);return!isNaN(s)&&n(s)?s:e}function I0({data:t,defaultValue:e,validate:n}){if(!t)return e;t=t.trim();const s=parseFloat(t);return!isNaN(s)&&n(s)?s:e}function Y0({data:t,defaultValue:e,validate:n}){return t?(t=t.trim(),n(t)?t:e):e}function re(t,e){return Y0({data:t,defaultValue:e[0],validate:n=>e.includes(n)})}function Se(t,e="0"){if(e||="0",!t)return Se(e);const n=t.trim().match(xg);if(!n)return Se(e);const[,s,a]=n,i=parseFloat(s);if(isNaN(i))return Se(e);if(i===0)return 0;const r=wg[a];return r?r(i):i}function mc(t){if(!t)return{num:1,den:1};const e=t.split(":",2).map(a=>parseFloat(a.trim())).filter(a=>!isNaN(a));if(e.length===1&&e.push(1),e.length===0)return{num:1,den:1};const[n,s]=e;return{num:n,den:s}}function ws(t){return t?t.trim().split(/\s+/).map(e=>({excluded:e[0]==="-",viewname:e.substring(1)})):[]}function jg(t,e=[0,0,0]){let[n,s,a]=e;if(!t)return{r:n,g:s,b:a};const i=t.split(",",3).map(r=>(r=parseInt(r.trim(),10),isNaN(r)?0:Tt(r,0,255)));return i.length<3?{r:n,g:s,b:a}:([n,s,a]=i,{r:n,g:s,b:a})}function kg(t){if(!t)return{x:-1,y:-1,width:-1,height:-1};const n=t.split(",",4).map(o=>Se(o.trim(),"-1"));if(n.length<4||n[2]<0||n[3]<0)return{x:-1,y:-1,width:-1,height:-1};const[s,a,i,r]=n;return{x:s,y:a,width:i,height:r}}class Re{static get FAILURE(){return ue(this,"FAILURE",new Re(!1,null,null,null))}static get EMPTY(){return ue(this,"EMPTY",new Re(!0,null,null,null))}constructor(e,n,s,a){this.success=e,this.html=n,this.bbox=s,this.breakNode=a}isBreak(){return!!this.breakNode}static breakNode(e){return new Re(!1,null,null,e)}static success(e,n=null){return new Re(!0,e,n,null)}}class yg{constructor(e){this.fonts=new Map,this.cache=new Map,this.warned=new Set,this.defaultFont=null,this.add(e)}add(e,n=null){for(const a of e)this.addPdfFont(a);for(const a of this.fonts.values())a.regular||=a.italic||a.bold||a.bolditalic;if(!n||n.size===0)return;const s=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const a of n)this.fonts.set(a,s)}addPdfFont(e){const n=e.cssFontInfo,s=n.fontFamily,a=this.fonts.getOrInsertComputed(s,$u);this.defaultFont??=a;let i="";const r=parseFloat(n.fontWeight);parseFloat(n.italicAngle)!==0?i=r>=700?"bolditalic":"italic":r>=700&&(i="bold"),i||((e.name.includes("Bold")||e.psName?.includes("Bold"))&&(i="bold"),(e.name.includes("Italic")||e.name.endsWith("It")||e.psName?.includes("Italic")||e.psName?.endsWith("It"))&&(i+="italic")),i||="regular",a[i]=e}getDefault(){return this.defaultFont}find(e,n=!0){let s=this.fonts.get(e)||this.cache.get(e);if(s)return s;const a=/[,\-_ ]|bolditalic|bold|italic|regular|it/gi;let i=e.replaceAll(a,"");if(s=this.fonts.get(i),s)return this.cache.set(e,s),s;i=i.toLowerCase();const r=[];for(const[o,f]of this.fonts)o.replaceAll(a,"").toLowerCase().startsWith(i)&&r.push(f);if(r.length===0)for(const o of this.fonts.values())o.regular.name?.replaceAll(a,"").toLowerCase().startsWith(i)&&r.push(o);if(r.length===0){i=i.replaceAll(/psmt|mt/gi,"");for(const[o,f]of this.fonts)o.replaceAll(a,"").toLowerCase().startsWith(i)&&r.push(f)}if(r.length===0)for(const o of this.fonts.values())o.regular.name?.replaceAll(a,"").toLowerCase().startsWith(i)&&r.push(o);return r.length>=1?(r.length!==1&&n&&H(`XFA - Too many choices to guess the correct font: ${e}`),this.cache.set(e,r[0]),r[0]):(n&&!this.warned.has(e)&&(this.warned.add(e),H(`XFA - Cannot find the font: ${e}`)),null)}}function Of(t,e){return t.posture==="italic"?t.weight==="bold"?e.bolditalic:e.italic:t.weight==="bold"?e.bold:e.regular}function qg(t,e=!1){let n=null;if(t){const r=X0(t.typeface),o=t[qt].fontFinder.find(r);n=Of(t,o)}if(!n)return{lineHeight:12,lineGap:2,lineNoGap:10};const s=t.size||10,a=n.lineHeight?Math.max(e?0:1.2,n.lineHeight):1.2,i=n.lineGap===void 0?.2:n.lineGap;return{lineHeight:a*s,lineGap:i*s,lineNoGap:Math.max(1,a-i)*s}}const vg=1.02;class pc{constructor(e,n,s,a){if(this.lineHeight=s,this.paraMargin=n||{top:0,bottom:0,left:0,right:0},!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 i=a.find(e.typeface);if(!i){[this.pdfFont,this.xfaFont]=this.defaultFont(a);return}this.pdfFont=Of(e,i),this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(a))}defaultFont(e){const n=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(n?.regular){const a=n.regular,r={typeface:a.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0};return[a,r]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class Sg{constructor(e,n,s,a){this.fontFinder=a,this.stack=[new pc(e,n,s,a)]}pushData(e,n,s){const a=this.stack.at(-1);for(const r of["typeface","posture","weight","size","letterSpacing"])e[r]||=a.xfaFont[r];for(const r of["top","bottom","left","right"])isNaN(n[r])&&(n[r]=a.paraMargin[r]);const i=new pc(e,n,s||a.lineHeight,this.fontFinder);i.pdfFont||=a.pdfFont,this.stack.push(i)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}class Ag{constructor(e,n,s,a){this.glyphs=[],this.fontSelector=new Sg(e,n,s,a),this.extraHeight=0}pushData(e,n,s){this.fontSelector.pushData(e,n,s)}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 n=this.fontSelector.topFont(),s=n.xfaFont.size;if(n.pdfFont){const a=n.xfaFont.letterSpacing,i=n.pdfFont,r=i.lineHeight||1.2,o=n.lineHeight||Math.max(1.2,r)*s,f=i.lineGap===void 0?.2:i.lineGap,l=r-f,c=Math.max(1,l)*s,h=s/1e3,u=i.defaultWidth||i.charsToGlyphs(" ")[0].width;for(const d of e.split(/[\u2029\n]/)){const p=i.encodeString(d).join(""),m=i.charsToGlyphs(p);for(const b of m){const w=b.width||u;this.glyphs.push([w*h+a,o,c,b.unicode,!1])}this.glyphs.push([0,0,0,` +`,!0])}this.glyphs.pop();return}for(const a of e.split(/[\u2029\n]/)){for(const i of a.split(""))this.glyphs.push([s,1.2*s,s,i,!1]);this.glyphs.push([0,0,0,` +`,!0])}this.glyphs.pop()}compute(e){let n=-1,s=0,a=0,i=0,r=0,o=0,f=!1,l=!0;for(let c=0,h=this.glyphs.length;ce?(a=Math.max(a,r),r=0,i+=o,o=x,n=-1,s=0,f=!0,l=!1):(o=Math.max(x,o),s=r,r+=u,n=c);continue}if(r+u>e){i+=o,o=x,n!==-1?(c=n,a=Math.max(a,s),r=0,n=-1,s=0):(a=Math.max(a,r),r=u),f=!0,l=!1;continue}r+=u,o=Math.max(x,o)}return a=Math.max(a,r),i+=o+this.extraHeight,{width:vg*a,height:i,isBroken:f}}}const gc=/^[^.[]+/,Ig=/^[^\]]+/,Gn={dot:0,dotDot:1,dotHash:2,dotBracket:3,dotParen:4},zh=new Map([["$data",(t,e)=>t.datasets?t.datasets.data:t],["$record",(t,e)=>(t.datasets?t.datasets.data:t)[xn]()[0]],["$template",(t,e)=>t.template],["$connectionSet",(t,e)=>t.connectionSet],["$form",(t,e)=>t.form],["$layout",(t,e)=>t.layout],["$host",(t,e)=>t.host],["$dataWindow",(t,e)=>t.dataWindow],["$event",(t,e)=>t.event],["!",(t,e)=>t.datasets],["$xfa",(t,e)=>t],["xfa",(t,e)=>t],["$",(t,e)=>e]]),Cg=new WeakMap;function Tg(t){return t=t.trim(),t==="*"?1/0:parseInt(t,10)||0}function Uh(t,e,n=!0){let s=t.match(gc);if(!s)return null;let[a]=s;const i=[{name:a,cacheName:"."+a,index:0,js:null,formCalc:null,operator:Gn.dot}];let r=a.length;for(;r0&&p.push(b)}if(p.length===0&&!f&&o===0){if(e=e[Ye](),!e)return null;o=-1,t=[e];continue}t=isFinite(d)?p.filter(m=>dm[d]):p.flat()}return t.length===0?null:t}function Bg(t,e,n){const s=Uh(n);if(!s||s.some(r=>r.operator===Gn.dotDot))return null;const a=zh.get(s[0].name);let i=0;a?(t=a(t,e),i=1):t=e||t;for(let r=s.length;ie[Xt]()).join("")}get[ri](){const e=Object.getPrototypeOf(this);if(!e._attributes){const n=e._attributes=new Set;for(const s of Object.getOwnPropertyNames(this)){if(this[s]===null||this[s]instanceof V||this[s]instanceof E)break;n.add(s)}}return ue(this,ri,e._attributes)}[sa](e){let n=this;for(;n;){if(n===e)return!0;n=n[Ye]()}return!1}[Ye](){return this[Yn]}[Ot](){return this[Ye]()}[vi](){const e=Object.create(null);this[se]&&(e.$content=this[se]);for(const n of Object.getOwnPropertyNames(this)){const s=this[n];s!==null&&(s instanceof V?e[n]=s[vi]():s instanceof E?s.isEmpty()||(e[n]=s.dump()):e[n]=s)}return e}[dt](){return null}[Oe](){return Re.EMPTY}*[Si](){for(const e of this[xn]())yield e}*[bc](e,n){for(const s of this[Si]())if(!e||n===e.has(s[gt])){const a=this[Na](),i=s[Oe](a);i.success||(this[U].failingNode=s),yield i}}[Hr](){return null}[Pa](e,n){this[U].children.push(e)}[Na](){}[pa]({filter:e=null,include:n=!0}){if(!this[U].generator)this[U].generator=this[bc](e,n);else{const s=this[Na](),a=this[U].failingNode[Oe](s);if(!a.success)return a;a.html&&this[Pa](a.html,a.bbox),delete this[U].failingNode}for(;;){const s=this[U].generator.next();if(s.done)break;const a=s.value;if(!a.success)return a;a.html&&this[Pa](a.html,a.bbox)}return this[U].generator=null,Re.EMPTY}[Oh](e){this[$i]=new Set(Object.keys(e))}[wc](e){const n=this[ri],s=this[$i];return e.keys().filter(a=>n.has(a)&&!s.has(a)).toArray()}[er](e,n=new Set){for(const s of this[rt])s[Vi](e,n)}[Vi](e,n){const s=this[Co](e,n);s?this[n0](s,e,n):this[er](e,n)}[Co](e,n){const{use:s,usehref:a}=this;if(!s&&!a)return null;let i=null,r=null,o=null,f=s;if(a?(f=a,a.startsWith("#som(")&&a.endsWith(")")?r=a.slice(5,-1):a.startsWith(".#som(")&&a.endsWith(")")?r=a.slice(6,-1):a.startsWith("#")?o=a.slice(1):a.startsWith(".#")&&(o=a.slice(2))):s.startsWith("#")?o=s.slice(1):r=s,this.use=this.usehref="",o?i=e.get(o):(i=ta(e.get(Nh),this,r,!0,!1),i&&=i[0]),!i)return H(`XFA - Invalid prototype reference: ${f}.`),null;if(i[gt]!==this[gt])return H(`XFA - Incompatible prototype: ${i[gt]} !== ${this[gt]}.`),null;if(n.has(i))return H("XFA - Cycle detected in prototypes use."),null;n.add(i);const l=i[Co](e,n);return l&&i[n0](l,e,n),i[er](e,n),n.delete(i),i}[n0](e,n,s){if(s.has(e)){H("XFA - Cycle detected in prototypes use.");return}!this[se]&&e[se]&&(this[se]=e[se]),new Set(s).add(e);for(const i of this[wc](e[$i]))this[i]=e[i],this[$i]&&this[$i].add(i);for(const i of Object.getOwnPropertyNames(this)){if(this[ri].has(i))continue;const r=this[i],o=e[i];if(r instanceof E){for(const f of r[rt])f[Vi](n,s);for(let f=r[rt].length,l=o[rt].length;fV[Ao](n)):typeof e=="object"&&e!==null?Object.assign({},e):e}[ds](){const e=Object.create(Object.getPrototypeOf(this));for(const n of Object.getOwnPropertySymbols(this))try{e[n]=this[n]}catch{ue(e,n,this[n])}e[wt]=`${e[gt]}${cf++}`,e[rt]=[];for(const n of Object.getOwnPropertyNames(this)){if(this[ri].has(n)){e[n]=V[Ao](this[n]);continue}const s=this[n];e[n]=s instanceof E?new E(s[tr]):null}for(const n of this[rt]){const s=n[gt],a=n[ds]();e[rt].push(a),a[Yn]=e,e[s]===null?e[s]=a:e[s][rt].push(a)}return e}[xn](e=null){return e?this[rt].filter(n=>n[gt]===e):this[rt]}[$0](e){return this[e]}[vr](e,n,s=!0){return Array.from(this[or](e,n,s))}*[or](e,n,s=!0){if(e==="parent"){yield this[Yn];return}for(const a of this[rt])a[gt]===e&&(yield a),a.name===e&&(yield a),(n||a[Ar]())&&(yield*a[or](e,n,!1));s&&this[ri].has(e)&&(yield new Lf(this,e,this[e]))}}class E{constructor(e=1/0){this[tr]=e,this[rt]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){return this[rt].length<=this[tr]?(this[rt].push(e),!0):(H(`XFA - node "${e[gt]}" accepts no more than ${this[tr]} children`),!1)}isEmpty(){return this[rt].length===0}dump(){return this[rt].length===1?this[rt][0][vi]():this[rt].map(e=>e[vi]())}[ds](){const e=new E(this[tr]);return e[rt]=this[rt].map(n=>n[ds]()),e}get children(){return this[rt]}clear(){this[rt].length=0}}class Lf{constructor(e,n,s){this[Yn]=e,this[gt]=n,this[se]=s,this[vs]=!1,this[wt]=`attribute${cf++}`}[Ye](){return this[Yn]}[di](){return!0}[Pf](){return this[se].trim()}[Pn](e){e=e.value||"",this[se]=e.toString()}[Xt](){return this[se]}[sa](e){return this[Yn]===e||this[Yn][sa](e)}}class As extends V{constructor(e,n,s={}){if(super(e,n),this[se]="",this[Js]=null,n!=="#text"){const a=new Map;this[Sa]=a;for(const[i,r]of Object.entries(s))a.set(i,new Lf(this,i,r));if(Object.hasOwn(s,Ha)){const i=s[Ha].xfa.dataNode;i!==void 0&&(i==="dataGroup"?this[Js]=!1:i==="dataValue"&&(this[Js]=!0))}}this[vs]=!1}[cr](e){const n=this[gt];if(n==="#text"){e.push(mi(this[se]));return}const s=Po(n),a=this[Nt]===Gh?"xfa:":"";e.push(`<${a}${s}`);for(const[i,r]of this[Sa]){const o=Po(i);e.push(` ${o}="${mi(r[se])}"`)}if(this[Js]!==null&&(this[Js]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"')),!this[se]&&this[rt].length===0){e.push("/>");return}if(e.push(">"),this[se])typeof this[se]=="string"?e.push(mi(this[se])):this[se][cr](e);else for(const i of this[rt])i[cr](e);e.push(``)}[Ss](e){if(this[se]){const n=new As(this[Nt],"#text");this[Ht](n),n[se]=this[se],this[se]=""}return this[Ht](e),!0}[Gs](e){this[se]+=e}[vt](){if(this[se]&&this[rt].length>0){const e=new As(this[Nt],"#text");this[Ht](e),e[se]=this[se],delete this[se]}}[Oe](){return this[gt]==="#text"?Re.success({name:"#text",value:this[se]}):Re.EMPTY}[Ph](){return this[Sa]}[$0](e){const n=this[Sa].get(e);return n!==void 0?n:this[xn](e)}*[or](e,n){const s=this[Sa].get(e);s&&(yield s);for(const a of this[rt])a[gt]===e&&(yield a),n&&(yield*a[or](e,n))}*[rf](e,n){const s=this[Sa].get(e);s&&(!n||!s[vs])&&(yield s);for(const a of this[rt])yield*a[rf](e,n)}*[fr](e,n,s){for(const a of this[rt])a[gt]===e&&(!s||!a[vs])&&(yield a),n&&(yield*a[fr](e,n,s))}[di](){return this[Js]===null?this[rt].length===0||this[rt][0][Nt]===Yt.xhtml.id:this[Js]}[Pf](){return this[Js]===null?this[rt].length===0?this[se].trim():this[rt][0][Nt]===Yt.xhtml.id?this[rt][0][Xt]().trim():null:this[se].trim()}[Pn](e){e=e.value||"",this[se]=e.toString()}[vi](e=!1){const n=Object.create(null);e&&(n.$ns=this[Nt]),this[se]&&(n.$content=this[se]),n.$name=this[gt],n.children=[];for(const s of this[rt])n.children.push(s[vi](e));n.attributes=Object.create(null);for(const[s,a]of this[Sa])n.attributes[s]=a[se];return n}}class Et extends V{constructor(e,n){super(e,n),this[se]=""}[Gs](e){this[se]+=e}[vt](){}}class xt extends Et{constructor(e,n,s){super(e,n),this[s0]=s}[vt](){this[se]=Y0({data:this[se],defaultValue:this[s0][0],validate:e=>this[s0].includes(e)})}[ts](e){super[ts](e),delete this[s0]}}class it extends Et{[vt](){this[se]=this[se].trim()}}class xs extends Et{constructor(e,n,s,a){super(e,n),this[Io]=s,this[Bo]=a}[vt](){this[se]=Ve({data:this[se],defaultValue:this[Io],validate:this[Bo]})}[ts](e){super[ts](e),delete this[Io],delete this[Bo]}}class Jt extends xs{constructor(e,n){super(e,n,0,s=>s===1)}}class Wh extends xs{constructor(e,n){super(e,n,1,s=>s===0)}}function Ke(t){return typeof t=="string"?"0px":Number.isInteger(t)?`${t}px`:`${t.toFixed(2)}px`}const xc={anchorType(t,e){const n=t[Ot]();if(!(!n||n.layout&&n.layout!=="position"))switch("transform"in e||(e.transform=""),t.anchorType){case"bottomCenter":e.transform+="translate(-50%, -100%)";break;case"bottomLeft":e.transform+="translate(0,-100%)";break;case"bottomRight":e.transform+="translate(-100%,-100%)";break;case"middleCenter":e.transform+="translate(-50%,-50%)";break;case"middleLeft":e.transform+="translate(0,-50%)";break;case"middleRight":e.transform+="translate(-100%,-50%)";break;case"topCenter":e.transform+="translate(-50%,0)";break;case"topRight":e.transform+="translate(-100%,0)";break}},dimensions(t,e){const n=t[Ot]();let s=t.w;const a=t.h;if(n.layout?.includes("row")){const i=n[U],r=t.colSpan;let o;r===-1?(o=Math.sumPrecise(i.columnWidths.slice(i.currentColumn)),i.currentColumn=0):(o=Math.sumPrecise(i.columnWidths.slice(i.currentColumn,i.currentColumn+r)),i.currentColumn=(i.currentColumn+t.colSpan)%i.columnWidths.length),isNaN(o)||(s=t.w=o)}e.width=s!==""?Ke(s):"auto",e.height=a!==""?Ke(a):"auto"},position(t,e){const n=t[Ot]();n?.layout&&n.layout!=="position"||(e.position="absolute",e.left=Ke(t.x),e.top=Ke(t.y))},rotate(t,e){t.rotate&&("transform"in e||(e.transform=""),e.transform+=`rotate(-${t.rotate}deg)`,e.transformOrigin="top left")},presence(t,e){switch(t.presence){case"invisible":e.visibility="hidden";break;case"hidden":case"inactive":e.display="none";break}},hAlign(t,e){if(t[gt]==="para")switch(t.hAlign){case"justifyAll":e.textAlign="justify-all";break;case"radix":e.textAlign="left";break;default:e.textAlign=t.hAlign}else switch(t.hAlign){case"left":e.alignSelf="start";break;case"center":e.alignSelf="center";break;case"right":e.alignSelf="end";break}},margin(t,e){t.margin&&(e.margin=t.margin[dt]().margin)}};function Kh(t,e){t[Ot]().layout==="position"&&(t.minW>0&&(e.minWidth=Ke(t.minW)),t.maxW>0&&(e.maxWidth=Ke(t.maxW)),t.minH>0&&(e.minHeight=Ke(t.minH)),t.maxH>0&&(e.maxHeight=Ke(t.maxH)))}function jc(t,e,n,s,a,i){const r=new Ag(e,n,s,a);return typeof t=="string"?r.addString(t):t[Bs](r),r.compute(i)}function zf(t,e){let n=null,s=null,a=!1;if((!t.w||!t.h)&&t.value){let i=0,r=0;t.margin&&(i=t.margin.leftInset+t.margin.rightInset,r=t.margin.topInset+t.margin.bottomInset);let o=null,f=null;t.para&&(f=Object.create(null),o=t.para.lineHeight===""?null:t.para.lineHeight,f.top=t.para.spaceAbove===""?0:t.para.spaceAbove,f.bottom=t.para.spaceBelow===""?0:t.para.spaceBelow,f.left=t.para.marginLeft===""?0:t.para.marginLeft,f.right=t.para.marginRight===""?0:t.para.marginRight);let l=t.font;if(!l){const u=t[_t]();let d=t[Ye]();for(;d&&d!==u;){if(d.font){l=d.font;break}d=d[Ye]()}}const c=(t.w||e.width)-i,h=t[qt].fontFinder;if(t.value.exData&&t.value.exData[se]&&t.value.exData.contentType==="text/html"){const u=jc(t.value.exData[se],l,f,o,h,c);s=u.width,n=u.height,a=u.isBroken}else{const u=t.value[Xt]();if(u){const d=jc(u,l,f,o,h,c);s=d.width,n=d.height,a=d.isBroken}}s!==null&&!t.w&&(s+=i),n!==null&&!t.h&&(n+=r)}return{w:s,h:n,isBroken:a}}function Vh(t,e,n){let s;if(t.w!==""&&t.h!=="")s=[t.x,t.y,t.w,t.h];else{if(!n)return null;let a=t.w;if(a===""){if(t.maxW===0){const r=t[Ot]();a=r.layout==="position"&&r.w!==""?0:t.minW}else a=Math.min(t.maxW,n.width);e.attributes.style.width=Ke(a)}let i=t.h;if(i===""){if(t.maxH===0){const r=t[Ot]();i=r.layout==="position"&&r.h!==""?0:t.minH}else i=Math.min(t.maxH,n.height);e.attributes.style.height=Ke(i)}s=[t.x,t.y,a,i]}return s}function J0(t){const e=t[Ot]();if(e.layout?.includes("row")){const n=e[U],s=t.colSpan;let a;s===-1?a=Math.sumPrecise(n.columnWidths.slice(n.currentColumn)):a=Math.sumPrecise(n.columnWidths.slice(n.currentColumn,n.currentColumn+s)),isNaN(a)||(t.w=a)}e.layout&&e.layout!=="position"&&(t.x=t.y=0),t.layout==="table"&&t.w===""&&Array.isArray(t.columnWidths)&&(t.w=Math.sumPrecise(t.columnWidths))}function $h(t){switch(t.layout){case"position":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";default:return"xfaPosition"}}function Fn(t,...e){const n=Object.create(null);for(const s of e){const a=t[s];if(a!==null){if(Object.hasOwn(xc,s)){xc[s](t,n);continue}if(a instanceof V){const i=a[dt]();i?Object.assign(n,i):H(`(DEBUG) - XFA - style for ${s} not implemented yet`)}}}return n}function Oa(t,e){const{attributes:n}=e,{style:s}=n,a={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};if(n.class.push("xfaWrapped"),t.border){const{widths:i,insets:r}=t.border[U];let o,f,l=r[0],c=r[3];const h=r[0]+r[2],u=r[1]+r[3];switch(t.border.hand){case"even":l-=i[0]/2,c-=i[3]/2,o=`calc(100% + ${(i[1]+i[3])/2-u}px)`,f=`calc(100% + ${(i[0]+i[2])/2-h}px)`;break;case"left":l-=i[0],c-=i[3],o=`calc(100% + ${i[1]+i[3]-u}px)`,f=`calc(100% + ${i[0]+i[2]-h}px)`;break;case"right":o=u?`calc(100% - ${u}px)`:"100%",f=h?`calc(100% - ${h}px)`:"100%";break}const d=["xfaBorder"];Bi(t.border)&&d.push("xfaPrintOnly");const p={name:"div",attributes:{class:d,style:{top:`${l}px`,left:`${c}px`,width:o,height:f}},children:[]};for(const m of["border","borderWidth","borderColor","borderRadius","borderStyle"])s[m]!==void 0&&(p.attributes.style[m]=s[m],delete s[m]);a.children.push(p,e)}else a.children.push(e);for(const i of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])s[i]!==void 0&&(a.attributes.style[i]=s[i],delete s[i]);return a.attributes.style.position=s.position==="absolute"?"absolute":"relative",delete s.position,s.alignSelf&&(a.attributes.style.alignSelf=s.alignSelf,delete s.alignSelf),a}function Xh(t){const e=Se(t.textIndent,"0px");if(e>=0)return;const s="padding"+((t.textAlign==="right"?"right":"left")==="left"?"Left":"Right"),a=Se(t[s],"0px");t[s]=`${a-e}px`}function Uf(t,e){switch(t.access){case"nonInteractive":e.push("xfaNonInteractive");break;case"readOnly":e.push("xfaReadOnly");break;case"protected":e.push("xfaDisabled");break}}function Bi(t){return t.relevant.length>0&&!t.relevant[0].excluded&&t.relevant[0].viewname==="print"}function Yh(t){const e=t[_t]()[U].paraStack;return e.length?e.at(-1):null}function Jh(t,e,n){if(n.attributes.class?.includes("xfaRich")){e&&(t.h===""&&(e.height="auto"),t.w===""&&(e.width="auto"));const s=Yh(t);if(s){const a=n.attributes.style;switch(a.display="flex",a.flexDirection="column",s.vAlign){case"top":a.justifyContent="start";break;case"bottom":a.justifyContent="end";break;case"middle":a.justifyContent="center";break}const i=s[dt]();for(const[r,o]of Object.entries(i))r in a||(a[r]=o)}}}function Qh(t,e,n,s){if(!n){delete s.fontFamily;return}const a=X0(t.typeface);s.fontFamily=hl(a);const i=n.find(a);if(i){const{fontFamily:r}=i.regular.cssFontInfo;r!==a&&(s.fontFamily=hl(r));const o=Yh(e);if(o&&o.lineHeight!==""||s.lineHeight)return;const f=Of(t,i);f&&(s.lineHeight=Math.max(1.2,f.lineHeight))}}function Zh(t){const e=x0(t,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return e?e.href:null}function eu(t,e){return{name:"div",attributes:{class:[t.layout==="lr-tb"?"xfaLr":"xfaRl"]},children:e}}function tu(t){if(!t[U])return null;const n={name:"div",attributes:t[U].attributes,children:t[U].children};if(t[U].failingNode){const s=t[U].failingNode[Hr]();s&&(t.layout.endsWith("-tb")?n.children.push(eu(t,[s])):n.children.push(s))}return n.children.length===0?null:n}function nu(t,e,n){const s=t[U],a=s.availableSpace,[i,r,o,f]=n;switch(t.layout){case"position":{s.width=Math.max(s.width,i+o),s.height=Math.max(s.height,r+f),s.children.push(e);break}case"lr-tb":case"rl-tb":(!s.line||s.attempt===1)&&(s.line=eu(t,[]),s.children.push(s.line),s.numberInLine=0),s.numberInLine+=1,s.line.children.push(e),s.attempt===0?(s.currentWidth+=o,s.height=Math.max(s.height,s.prevHeight+f)):(s.currentWidth=o,s.prevHeight=s.height,s.height+=f,s.attempt=0),s.width=Math.max(s.width,s.currentWidth);break;case"rl-row":case"row":{s.children.push(e),s.width+=o,s.height=Math.max(s.height,f);const l=Ke(s.height);for(const c of s.children)c.attributes.style.height=l;break}case"table":{s.width=Tt(o,s.width,a.width),s.height+=f,s.children.push(e);break}case"tb":{s.width=Tt(o,s.width,a.width),s.height+=f,s.children.push(e);break}}}function su(t){const e=t[U].availableSpace,n=t.margin?t.margin.topInset+t.margin.bottomInset:0,s=t.margin?t.margin.leftInset+t.margin.rightInset:0;switch(t.layout){case"lr-tb":case"rl-tb":return t[U].attempt===0?{width:e.width-s-t[U].currentWidth,height:e.height-n-t[U].prevHeight}:{width:e.width-s,height:e.height-n-t[U].height};case"rl-row":case"row":return{width:Math.sumPrecise(t[U].columnWidths.slice(t[U].currentColumn)),height:e.height-s};case"table":case"tb":return{width:e.width-s,height:e.height-n-t[U].height};default:return e}}function Fg(t){let e=t.w===""?NaN:t.w,n=t.h===""?NaN:t.h,[s,a]=[0,0];switch(t.anchorType||""){case"bottomCenter":[s,a]=[e/2,n];break;case"bottomLeft":[s,a]=[0,n];break;case"bottomRight":[s,a]=[e,n];break;case"middleCenter":[s,a]=[e/2,n/2];break;case"middleLeft":[s,a]=[0,n/2];break;case"middleRight":[s,a]=[e,n/2];break;case"topCenter":[s,a]=[e/2,0];break;case"topRight":[s,a]=[e,0];break}let i,r;switch(t.rotate||0){case 0:[i,r]=[-s,-a];break;case 90:[i,r]=[-a,s],[e,n]=[n,-e];break;case 180:[i,r]=[s,a],[e,n]=[-e,-n];break;case 270:[i,r]=[a,-s],[e,n]=[-n,e];break}return[t.x+i+Math.min(0,e),t.y+r+Math.min(0,n),Math.abs(e),Math.abs(n)]}function Q0(t,e){if(t[_t]()[U].firstUnsplittable===null||t.w===0||t.h===0)return!0;const n=2,s=t[Ot](),a=s[U]?.attempt||0,[,i,r,o]=Fg(t);switch(s.layout){case"lr-tb":case"rl-tb":return a===0?t[_t]()[U].noLayoutFailure?t.w!==""?Math.round(r-e.width)<=n:e.width>n:t.h!==""&&Math.round(o-e.height)>n?!1:t.w!==""?Math.round(r-e.width)<=n?!0:s[U].numberInLine===0?e.height>n:!1:e.width>n:t[_t]()[U].noLayoutFailure?!0:t.h!==""&&Math.round(o-e.height)>n?!1:t.w===""||Math.round(r-e.width)<=n?e.height>n:s[Ws]()?!1:e.height>n;case"table":case"tb":return t[_t]()[U].noLayoutFailure?!0:t.h!==""&&!t[Us]()?Math.round(o-e.height)<=n:t.w===""||Math.round(r-e.width)<=n?e.height>n:s[Ws]()?!1:e.height>n;case"position":if(t[_t]()[U].noLayoutFailure||t.h===""||Math.round(o+i-e.height)<=n)return!0;const f=t[_t]()[U].currentContentArea;return o+i>f.h;case"rl-row":case"row":return t[_t]()[U].noLayoutFailure?!0:t.h!==""?Math.round(o-e.height)<=n:!0;default:return!0}}const pe=Yt.template.id,C0=2,Rg=3,Hg=5e3,Eg=/^H(\d+)$/,Mg=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"]),Dg=[[[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 kc(t){if(!t||!t.border)return{w:0,h:0};const e=t.border[cn]();return e?{w:e.widths[0]+e.widths[2]+e.insets[0]+e.insets[2],h:e.widths[1]+e.widths[3]+e.insets[1]+e.insets[3]}:{w:0,h:0}}function Gf(t){return t.margin&&(t.margin.topInset||t.margin.rightInset||t.margin.bottomInset||t.margin.leftInset)}function Wf(t,e){if(!t.value){const n=new Qf({});t[Ht](n),t.value=n}t.value[Pn](e)}function*Kf(t){for(const e of t[xn]()){if(e instanceof Xf){yield*e[Si]();continue}yield e}}function Er(t){return t.validate?.nullTest==="error"}function Z0(t){for(;t;){if(!t.traversal){t[fs]=t[Ye]()[fs];return}if(t[fs])return;let e=null;for(const a of t.traversal[xn]())if(a.operation==="next"){e=a;break}if(!e||!e.ref){t[fs]=t[Ye]()[fs];return}const n=t[_t]();t[fs]=++n[fs];const s=n[Ns](e.ref,t);if(!s)return;t=s[0]}}function eo(t,e){const n=t.assist;if(n){const s=n[Oe]();s&&(e.title=s);const i=n.role.match(Eg);if(i){const r="heading",o=i[1];e.role=r,e["aria-level"]=o}}if(t.layout==="table")e.role="table";else if(t.layout==="row")e.role="row";else{const s=t[Ye]();s.layout==="row"&&(e.role=s.assist?.role==="TH"?"columnheader":"cell")}}function Wa(t){if(!t.assist)return null;const e=t.assist;return e.speak&&e.speak[se]!==""?e.speak[se]:e.toolTip?e.toolTip[se]:null}function ba(t){return Re.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:t}]})}function to(t){const e=t[_t]();e[U].firstUnsplittable===null&&(e[U].firstUnsplittable=t,e[U].noLayoutFailure=!0)}function no(t){const e=t[_t]();e[U].firstUnsplittable===t&&(e[U].noLayoutFailure=!1)}function yc(t){if(t[U]||(t[U]=Object.create(null),t.targetType==="auto"))return!1;const e=t[_t]();let n=null;if(t.target){if(n=e[Ns](t.target,t[Ye]()),!n)return!1;n=n[0]}const{currentPageArea:s,currentContentArea:a}=e[U];if(t.targetType==="pageArea")return n instanceof Ai||(n=null),t.startNew?(t[U].target=n||s,!0):n&&n!==s?(t[U].target=n,!0):!1;n instanceof Vf||(n=null);const i=n&&n[Ye]();let r,o=i;if(t.startNew)if(n){const f=i.contentArea.children,l=f.indexOf(a),c=f.indexOf(n);l!==-1&&lt,s[U].noLayoutFailure=!0;const r=e[Oe](n);t[Pa](r.html,r.bbox),s[U].noLayoutFailure=a,e[Ot]=i}class _g extends it{constructor(e){super(pe,"appearanceFilter"),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class au extends V{constructor(e){super(pe,"arc",!0),this.circular=Ve({data:e.circular,defaultValue:0,validate:n=>n===1}),this.hand=re(e.hand,["even","left","right"]),this.id=e.id||"",this.startAngle=I0({data:e.startAngle,defaultValue:0,validate:n=>!0}),this.sweepAngle=I0({data:e.sweepAngle,defaultValue:360,validate:n=>!0}),this.use=e.use||"",this.usehref=e.usehref||"",this.edge=null,this.fill=null}[Oe](){const e=this.edge||new Mr({}),n=e[dt](),s=Object.create(null);this.fill?.presence==="visible"?Object.assign(s,this.fill[dt]()):s.fill="transparent",s.strokeWidth=Ke(e.presence==="visible"?e.thickness:0),s.stroke=n.color;let a;const i={xmlns:Ma,style:{width:"100%",height:"100%",overflow:"visible"}};if(this.sweepAngle===360)a={name:"ellipse",attributes:{xmlns:Ma,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:s}};else{const f=this.startAngle*Math.PI/180,l=this.sweepAngle*Math.PI/180,c=this.sweepAngle>180?1:0,[h,u,d,p]=[50*(1+Math.cos(f)),50*(1-Math.sin(f)),50*(1+Math.cos(f+l)),50*(1-Math.sin(f+l))];a={name:"path",attributes:{xmlns:Ma,d:`M ${h} ${u} A 50 50 0 ${c} 0 ${d} ${p}`,vectorEffect:"non-scaling-stroke",style:s}},Object.assign(i,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const r={name:"svg",children:[a],attributes:i},o=this[Ye]()[Ye]();return Gf(o)?Re.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[r]}):(r.attributes.style.position="absolute",Re.success(r))}}class Pg extends V{constructor(e){super(pe,"area",!0),this.colSpan=Ve({data:e.colSpan,defaultValue:1,validate:n=>n>=1||n===-1}),this.id=e.id||"",this.name=e.name||"",this.relevant=ws(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.x=Se(e.x,"0pt"),this.y=Se(e.y,"0pt"),this.desc=null,this.extras=null,this.area=new E,this.draw=new E,this.exObject=new E,this.exclGroup=new E,this.field=new E,this.subform=new E,this.subformSet=new E}*[Si](){yield*Kf(this)}[Ar](){return!0}[Va](){return!0}[Pa](e,n){const[s,a,i,r]=n;this[U].width=Math.max(this[U].width,s+i),this[U].height=Math.max(this[U].height,a+r),this[U].children.push(e)}[Na](){return this[U].availableSpace}[Oe](e){const n=Fn(this,"position"),s={style:n,id:this[wt],class:["xfaArea"]};Bi(this)&&s.class.push("xfaPrintOnly"),this.name&&(s.xfaName=this.name);const a=[];this[U]={children:a,width:0,height:0,availableSpace:e};const i=this[pa]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!i.success)return i.isBreak()?i:(delete this[U],Re.FAILURE);n.width=Ke(this[U].width),n.height=Ke(this[U].height);const r={name:"div",attributes:s,children:a},o=[this.x,this.y,this[U].width,this[U].height];return delete this[U],Re.success(r,o)}}class Ng extends V{constructor(e){super(pe,"assist",!0),this.id=e.id||"",this.role=e.role||"",this.use=e.use||"",this.usehref=e.usehref||"",this.speak=null,this.toolTip=null}[Oe](){return this.toolTip?.[se]||null}}class Og extends V{constructor(e){super(pe,"barcode",!0),this.charEncoding=Y0({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:n=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(n)||n.match(/iso-8859-\d{2}/)}),this.checksum=re(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]),this.dataColumnCount=Ve({data:e.dataColumnCount,defaultValue:-1,validate:n=>n>=0}),this.dataLength=Ve({data:e.dataLength,defaultValue:-1,validate:n=>n>=0}),this.dataPrep=re(e.dataPrep,["none","flateCompress"]),this.dataRowCount=Ve({data:e.dataRowCount,defaultValue:-1,validate:n=>n>=0}),this.endChar=e.endChar||"",this.errorCorrectionLevel=Ve({data:e.errorCorrectionLevel,defaultValue:-1,validate:n=>n>=0&&n<=8}),this.id=e.id||"",this.moduleHeight=Se(e.moduleHeight,"5mm"),this.moduleWidth=Se(e.moduleWidth,"0.25mm"),this.printCheckDigit=Ve({data:e.printCheckDigit,defaultValue:0,validate:n=>n===1}),this.rowColumnRatio=mc(e.rowColumnRatio),this.startChar=e.startChar||"",this.textLocation=re(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]),this.truncate=Ve({data:e.truncate,defaultValue:0,validate:n=>n===1}),this.type=re(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=re(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]),this.use=e.use||"",this.usehref=e.usehref||"",this.wideNarrowRatio=mc(e.wideNarrowRatio),this.encrypt=null,this.extras=null}}class Lg extends V{constructor(e){super(pe,"bind",!0),this.match=re(e.match,["once","dataRef","global","none"]),this.ref=e.ref||"",this.picture=null}}class hf extends V{constructor(e){super(pe,"bindItems"),this.connection=e.connection||"",this.labelRef=e.labelRef||"",this.ref=e.ref||"",this.valueRef=e.valueRef||""}}class zg extends V{constructor(e){super(pe,"bookend"),this.id=e.id||"",this.leader=e.leader||"",this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Ug extends Jt{constructor(e){super(pe,"boolean"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[Oe](e){return ba(this[se]===1?"1":"0")}}class iu extends V{constructor(e){super(pe,"border",!0),this.break=re(e.break,["close","open"]),this.hand=re(e.hand,["even","left","right"]),this.id=e.id||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=ws(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.corner=new E(4),this.edge=new E(4),this.extras=null,this.fill=null,this.margin=null}[cn](){if(!this[U]){const e=this.edge.children.slice();if(e.length<4){const a=e.at(-1)||new Mr({});for(let i=e.length;i<4;i++)e.push(a)}const n=e.map(a=>a.thickness),s=[0,0,0,0];this.margin&&(s[0]=this.margin.topInset,s[1]=this.margin.rightInset,s[2]=this.margin.bottomInset,s[3]=this.margin.leftInset),this[U]={widths:n,insets:s,edges:e}}return this[U]}[dt](){const{edges:e}=this[cn](),n=e.map(a=>{const i=a[dt]();return i.color||="#000000",i}),s=Object.create(null);if(this.margin&&Object.assign(s,this.margin[dt]()),this.fill?.presence==="visible"&&Object.assign(s,this.fill[dt]()),this.corner.children.some(a=>a.radius!==0)){const a=this.corner.children.map(i=>i[dt]());if(a.length===2||a.length===3){const i=a.at(-1);for(let r=a.length;r<4;r++)a.push(i)}s.borderRadius=a.map(i=>i.radius).join(" ")}switch(this.presence){case"invisible":case"hidden":s.borderStyle="";break;case"inactive":s.borderStyle="none";break;default:s.borderStyle=n.map(a=>a.style).join(" ");break}return s.borderWidth=n.map(a=>a.width).join(" "),s.borderColor=n.map(a=>a.color).join(" "),s}}class Gg extends V{constructor(e){super(pe,"break",!0),this.after=re(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]),this.afterTarget=e.afterTarget||"",this.before=re(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=Ve({data:e.startNew,defaultValue:0,validate:n=>n===1}),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class ru extends V{constructor(e){super(pe,"breakAfter",!0),this.id=e.id||"",this.leader=e.leader||"",this.startNew=Ve({data:e.startNew,defaultValue:0,validate:n=>n===1}),this.target=e.target||"",this.targetType=re(e.targetType,["auto","contentArea","pageArea"]),this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||"",this.script=null}}class ou extends V{constructor(e){super(pe,"breakBefore",!0),this.id=e.id||"",this.leader=e.leader||"",this.startNew=Ve({data:e.startNew,defaultValue:0,validate:n=>n===1}),this.target=e.target||"",this.targetType=re(e.targetType,["auto","contentArea","pageArea"]),this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||"",this.script=null}[Oe](e){return this[U]={},Re.FAILURE}}class Wg extends V{constructor(e){super(pe,"button",!0),this.highlight=re(e.highlight,["inverted","none","outline","push"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[Oe](e){const s=this[Ye]()[Ye](),a={name:"button",attributes:{id:this[wt],class:["xfaButton"],style:{}},children:[]};for(const i of s.event.children){if(i.activity!=="click"||!i.script)continue;const r=Vc(i.script[se]);if(!r)continue;const o=Zh(r.url);o&&a.children.push({name:"a",attributes:{id:"link"+this[wt],href:o,newWindow:r.newWindow,class:["xfaLink"],style:{}},children:[]})}return Re.success(a)}}class Kg extends V{constructor(e){super(pe,"calculate",!0),this.id=e.id||"",this.override=re(e.override,["disabled","error","ignore","warning"]),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.message=null,this.script=null}}class Vg extends V{constructor(e){super(pe,"caption",!0),this.id=e.id||"",this.placement=re(e.placement,["left","bottom","inline","right","top"]),this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.reserve=Math.ceil(Se(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}[Pn](e){Wf(this,e)}[cn](e){if(!this[U]){let{width:n,height:s}=e;switch(this.placement){case"left":case"right":case"inline":n=this.reserve<=0?n:this.reserve;break;case"top":case"bottom":s=this.reserve<=0?s:this.reserve;break}this[U]=zf(this,{width:n})}return this[U]}[Oe](e){if(!this.value)return Re.EMPTY;this[Ti]();const n=this.value[Oe](e).html;if(!n)return this[_n](),Re.EMPTY;const s=this.reserve;if(this.reserve<=0){const{w:r,h:o}=this[cn](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=r;break;case"top":case"bottom":this.reserve=o;break}}const a=[];typeof n=="string"?a.push({name:"#text",value:n}):a.push(n);const i=Fn(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(i.width=Ke(this.reserve));break;case"top":case"bottom":this.reserve>0&&(i.height=Ke(this.reserve));break}return Jh(this,null,n),this[_n](),this.reserve=s,Re.success({name:"div",attributes:{style:i,class:["xfaCaption"]},children:a})}}class $g extends it{constructor(e){super(pe,"certificate"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Xg extends V{constructor(e){super(pe,"certificates",!0),this.credentialServerPolicy=re(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 fu extends V{constructor(e){super(pe,"checkButton",!0),this.id=e.id||"",this.mark=re(e.mark,["default","check","circle","cross","diamond","square","star"]),this.shape=re(e.shape,["square","round"]),this.size=Se(e.size,"10pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}[Oe](e){const n=Fn(this,"margin"),s=Ke(this.size);n.width=n.height=s;let a,i,r;const o=this[Ye]()[Ye](),f=o.items.children.length&&o.items.children[0][Oe]().html||[],l={on:(f[0]!==void 0?f[0]:"on").toString(),off:(f[1]!==void 0?f[1]:"off").toString()},h=(o.value?.[Xt]()||"off")===l.on||void 0,u=o[Ot](),d=o[wt];let p;u instanceof uu?(r=u[wt],a="radio",i="xfaRadio",p=u[Qn]?.[wt]||u[wt]):(a="checkbox",i="xfaCheckbox",p=o[Qn]?.[wt]||o[wt]);const m={name:"input",attributes:{class:[i],style:n,fieldId:d,dataId:p,type:a,checked:h,xfaOn:l.on,xfaOff:l.off,"aria-label":Wa(o),"aria-required":!1}};return r&&(m.attributes.name=r),Er(o)&&(m.attributes["aria-required"]=!0,m.attributes.required=!0),Re.success({name:"label",attributes:{class:["xfaLabel"]},children:[m]})}}class lu extends V{constructor(e){super(pe,"choiceList",!0),this.commitOn=re(e.commitOn,["select","exit"]),this.id=e.id||"",this.open=re(e.open,["userControl","always","multiSelect","onEntry"]),this.textEntry=Ve({data:e.textEntry,defaultValue:0,validate:n=>n===1}),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}[Oe](e){const n=Fn(this,"border","margin"),a=this[Ye]()[Ye](),r={fontSize:`calc(${a.font?.size||10}px * var(--total-scale-factor))`},o=[];if(a.items.children.length>0){const l=a.items;let c=0,h=0;l.children.length===2&&(c=l.children[0].save,h=1-c);const u=l.children[c][Oe]().html,d=l.children[h][Oe]().html;let p=!1;const m=a.value?.[Xt]()||"";for(let b=0,w=u.length;bn>=0}),this.use=e.use||"",this.usehref=e.usehref||""}}class Qg extends V{constructor(e){super(pe,"connect",!0),this.connection=e.connection||"",this.id=e.id||"",this.ref=e.ref||"",this.usage=re(e.usage,["exportAndImport","exportOnly","importOnly"]),this.use=e.use||"",this.usehref=e.usehref||"",this.picture=null}}class Vf extends V{constructor(e){super(pe,"contentArea",!0),this.h=Se(e.h),this.id=e.id||"",this.name=e.name||"",this.relevant=ws(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.w=Se(e.w),this.x=Se(e.x,"0pt"),this.y=Se(e.y,"0pt"),this.desc=null,this.extras=null}[Oe](e){const n=Ke(this.x),s=Ke(this.y),a={left:n,top:s,width:Ke(this.w),height:Ke(this.h)},i=["xfaContentarea"];return Bi(this)&&i.push("xfaPrintOnly"),Re.success({name:"div",children:[],attributes:{style:a,class:i,id:this[wt]}})}}class cu extends V{constructor(e){super(pe,"corner",!0),this.id=e.id||"",this.inverted=Ve({data:e.inverted,defaultValue:0,validate:n=>n===1}),this.join=re(e.join,["square","round"]),this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.radius=Se(e.radius),this.stroke=re(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]),this.thickness=Se(e.thickness,"0.5pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](){const e=Fn(this,"visibility");return e.radius=Ke(this.join==="square"?0:this.radius),e}}class Zg extends Et{constructor(e){super(pe,"date"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=this[se].trim();this[se]=e?new Date(e):null}[Oe](e){return ba(this[se]?this[se].toString():"")}}class eb extends Et{constructor(e){super(pe,"dateTime"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=this[se].trim();this[se]=e?new Date(e):null}[Oe](e){return ba(this[se]?this[se].toString():"")}}class tb extends V{constructor(e){super(pe,"dateTimeEdit",!0),this.hScrollPolicy=re(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.picker=re(e.picker,["host","none"]),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.comb=null,this.extras=null,this.margin=null}[Oe](e){const n=Fn(this,"border","font","margin"),s=this[Ye]()[Ye](),a={name:"input",attributes:{type:"text",fieldId:s[wt],dataId:s[Qn]?.[wt]||s[wt],class:["xfaTextfield"],style:n,"aria-label":Wa(s),"aria-required":!1}};return Er(s)&&(a.attributes["aria-required"]=!0,a.attributes.required=!0),Re.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class nb extends Et{constructor(e){super(pe,"decimal"),this.fracDigits=Ve({data:e.fracDigits,defaultValue:2,validate:n=>!0}),this.id=e.id||"",this.leadDigits=Ve({data:e.leadDigits,defaultValue:-1,validate:n=>!0}),this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=parseFloat(this[se].trim());this[se]=isNaN(e)?null:e}[Oe](e){return ba(this[se]!==null?this[se].toString():"")}}class sb extends V{constructor(e){super(pe,"defaultUi",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class ab extends V{constructor(e){super(pe,"desc",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new E,this.date=new E,this.dateTime=new E,this.decimal=new E,this.exData=new E,this.float=new E,this.image=new E,this.integer=new E,this.text=new E,this.time=new E}}class ib extends xt{constructor(e){super(pe,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class rb extends V{constructor(e){super(pe,"digestMethods",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.digestMethod=new E}}class hu extends V{constructor(e){super(pe,"draw",!0),this.anchorType=re(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=Ve({data:e.colSpan,defaultValue:1,validate:n=>n>=1||n===-1}),this.h=e.h?Se(e.h):"",this.hAlign=re(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.locale=e.locale||"",this.maxH=Se(e.maxH,"0pt"),this.maxW=Se(e.maxW,"0pt"),this.minH=Se(e.minH,"0pt"),this.minW=Se(e.minW,"0pt"),this.name=e.name||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=ws(e.relevant),this.rotate=Ve({data:e.rotate,defaultValue:0,validate:n=>n%90===0}),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?Se(e.w):"",this.x=Se(e.x,"0pt"),this.y=Se(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 E}[Pn](e){Wf(this,e)}[Oe](e){if(Z0(this),this.presence==="hidden"||this.presence==="inactive")return Re.EMPTY;J0(this),this[Ti]();const n=this.w,s=this.h,{w:a,h:i,isBroken:r}=zf(this,e);if(a&&this.w===""){if(r&&this[Ot]()[Ws]())return this[_n](),Re.FAILURE;this.w=a}if(i&&this.h===""&&(this.h=i),to(this),!Q0(this,e))return this.w=n,this.h=s,this[_n](),Re.FAILURE;no(this);const o=Fn(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");Kh(this,o),o.margin&&(o.padding=o.margin,delete o.margin);const f=["xfaDraw"];this.font&&f.push("xfaFont"),Bi(this)&&f.push("xfaPrintOnly");const l={style:o,id:this[wt],class:f};this.name&&(l.xfaName=this.name);const c={name:"div",attributes:l,children:[]};eo(this,l);const h=Vh(this,c,e),u=this.value?this.value[Oe](e).html:null;return u===null?(this.w=n,this.h=s,this[_n](),Re.success(Oa(this,c),h)):(c.children.push(u),Jh(this,o,u),this.w=n,this.h=s,this[_n](),Re.success(Oa(this,c),h))}}class Mr extends V{constructor(e){super(pe,"edge",!0),this.cap=re(e.cap,["square","butt","round"]),this.id=e.id||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.stroke=re(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]),this.thickness=Se(e.thickness,"0.5pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](){const e=Fn(this,"visibility");if(Object.assign(e,{linecap:this.cap,width:Ke(this.thickness),color:this.color?this.color[dt]():"#000000",style:""}),this.presence!=="visible")e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":e.style="dashed";break;case"dashDotDot":e.style="dashed";break;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";break}return e}}class ob extends xt{constructor(e){super(pe,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class fb extends V{constructor(e){super(pe,"encodings",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.encoding=new E}}class lb extends V{constructor(e){super(pe,"encrypt",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=null}}class cb extends V{constructor(e){super(pe,"encryptData",!0),this.id=e.id||"",this.operation=re(e.operation,["encrypt","decrypt"]),this.target=e.target||"",this.use=e.use||"",this.usehref=e.usehref||"",this.filter=null,this.manifest=null}}class hb extends V{constructor(e){super(pe,"encryption",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new E}}class ub extends xt{constructor(e){super(pe,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class db extends V{constructor(e){super(pe,"encryptionMethods",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.encryptionMethod=new E}}class mb extends V{constructor(e){super(pe,"event",!0),this.activity=re(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=re(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 pb extends Et{constructor(e){super(pe,"exData"),this.contentType=e.contentType||"",this.href=e.href||"",this.id=e.id||"",this.maxLength=Ve({data:e.maxLength,defaultValue:-1,validate:n=>n>=-1}),this.name=e.name||"",this.rid=e.rid||"",this.transferEncoding=re(e.transferEncoding,["none","base64","package"]),this.use=e.use||"",this.usehref=e.usehref||""}[Nf](){return this.contentType==="text/html"}[Ss](e){return this.contentType==="text/html"&&e[Nt]===Yt.xhtml.id?(this[se]=e,!0):this.contentType==="text/xml"?(this[se]=e,!0):!1}[Oe](e){return this.contentType!=="text/html"||!this[se]?Re.EMPTY:this[se][Oe](e)}}class gb extends V{constructor(e){super(pe,"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 E,this.date=new E,this.dateTime=new E,this.decimal=new E,this.exData=new E,this.exObject=new E,this.float=new E,this.image=new E,this.integer=new E,this.text=new E,this.time=new E}}class uu extends V{constructor(e){super(pe,"exclGroup",!0),this.access=re(e.access,["open","nonInteractive","protected","readOnly"]),this.accessKey=e.accessKey||"",this.anchorType=re(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=Ve({data:e.colSpan,defaultValue:1,validate:n=>n>=1||n===-1}),this.h=e.h?Se(e.h):"",this.hAlign=re(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.layout=re(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]),this.maxH=Se(e.maxH,"0pt"),this.maxW=Se(e.maxW,"0pt"),this.minH=Se(e.minH,"0pt"),this.minW=Se(e.minW,"0pt"),this.name=e.name||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=ws(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?Se(e.w):"",this.x=Se(e.x,"0pt"),this.y=Se(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 E,this.event=new E,this.field=new E,this.setProperty=new E}[Va](){return!0}[Sr](){return!0}[Pn](e){for(const n of this.field.children){if(!n.value){const s=new Qf({});n[Ht](s),n.value=s}n.value[Pn](e)}}[Ws](){return this.layout.endsWith("-tb")&&this[U].attempt===0&&this[U].numberInLine>0||this[Ye]()[Ws]()}[Us](){const e=this[Ot]();return e[Us]()?this[U]._isSplittable!==void 0?this[U]._isSplittable:this.layout==="position"||this.layout.includes("row")?(this[U]._isSplittable=!1,!1):e.layout?.endsWith("-tb")&&e[U].numberInLine!==0?!1:(this[U]._isSplittable=!0,!0):!1}[Hr](){return tu(this)}[Pa](e,n){nu(this,e,n)}[Na](){return su(this)}[Oe](e){if(Z0(this),this.presence==="hidden"||this.presence==="inactive"||this.h===0||this.w===0)return Re.EMPTY;J0(this);const n=[],s={id:this[wt],class:[]};Uf(this,s.class),this[U]||=Object.create(null),Object.assign(this[U],{children:n,attributes:s,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[Us]();if(a||to(this),!Q0(this,e))return Re.FAILURE;const i=new Set(["field"]);if(this.layout.includes("row")){const w=this[Ot]().columnWidths;Array.isArray(w)&&w.length>0&&(this[U].columnWidths=w,this[U].currentColumn=0)}const r=Fn(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),o=["xfaExclgroup"],f=$h(this);f&&o.push(f),Bi(this)&&o.push("xfaPrintOnly"),s.style=r,s.class=o,this.name&&(s.xfaName=this.name),this[Ti]();const l=this.layout==="lr-tb"||this.layout==="rl-tb",c=l?C0:1;for(;this[U].attemptn>=1||n===-1}),this.h=e.h?Se(e.h):"",this.hAlign=re(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.locale=e.locale||"",this.maxH=Se(e.maxH,"0pt"),this.maxW=Se(e.maxW,"0pt"),this.minH=Se(e.minH,"0pt"),this.minW=Se(e.minW,"0pt"),this.name=e.name||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=ws(e.relevant),this.rotate=Ve({data:e.rotate,defaultValue:0,validate:n=>n%90===0}),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?Se(e.w):"",this.x=Se(e.x,"0pt"),this.y=Se(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 E(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 E,this.connect=new E,this.event=new E,this.setProperty=new E}[Va](){return!0}[Pn](e){Wf(this,e)}[Oe](e){if(Z0(this),!this.ui){this.ui=new Jf({}),this.ui[qt]=this[qt],this[Ht](this.ui);let w;switch(this.items.children.length){case 0:w=new wu({}),this.ui.textEdit=w;break;case 1:w=new fu({}),this.ui.checkButton=w;break;case 2:w=new lu({}),this.ui.choiceList=w;break}this.ui[Ht](w)}if(!this.ui||this.presence==="hidden"||this.presence==="inactive"||this.h===0||this.w===0)return Re.EMPTY;this.caption&&delete this.caption[U],this[Ti]();const n=this.caption?this.caption[Oe](e).html:null,s=this.w,a=this.h;let i=0,r=0;this.margin&&(i=this.margin.leftInset+this.margin.rightInset,r=this.margin.topInset+this.margin.bottomInset);let o=null;if(this.w===""||this.h===""){let w=null,x=null,j=0,k=0;if(this.ui.checkButton)j=k=this.ui.checkButton.size;else{const{w:y,h:q}=zf(this,e);y!==null?(j=y,k=q):k=qg(this.font,!0).lineNoGap}if(o=kc(this.ui[cn]()),j+=o.w,k+=o.h,this.caption){const{w:y,h:q,isBroken:v}=this.caption[cn](e);if(v&&this[Ot]()[Ws]())return this[_n](),Re.FAILURE;switch(w=y,x=q,this.caption.placement){case"left":case"right":case"inline":w+=j;break;case"top":case"bottom":x+=k;break}}else w=j,x=k;w&&this.w===""&&(w+=i,this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1n>=1&&n<=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 kb extends Et{constructor(e){super(pe,"float"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=parseFloat(this[se].trim());this[se]=isNaN(e)?null:e}[Oe](e){return ba(this[se]!==null?this[se].toString():"")}}class yb extends V{constructor(e){super(pe,"font",!0),this.baselineShift=Se(e.baselineShift),this.fontHorizontalScale=I0({data:e.fontHorizontalScale,defaultValue:100,validate:n=>n>=0}),this.fontVerticalScale=I0({data:e.fontVerticalScale,defaultValue:100,validate:n=>n>=0}),this.id=e.id||"",this.kerningMode=re(e.kerningMode,["none","pair"]),this.letterSpacing=Se(e.letterSpacing,"0"),this.lineThrough=Ve({data:e.lineThrough,defaultValue:0,validate:n=>n===1||n===2}),this.lineThroughPeriod=re(e.lineThroughPeriod,["all","word"]),this.overline=Ve({data:e.overline,defaultValue:0,validate:n=>n===1||n===2}),this.overlinePeriod=re(e.overlinePeriod,["all","word"]),this.posture=re(e.posture,["normal","italic"]),this.size=Se(e.size,"10pt"),this.typeface=e.typeface||"Courier",this.underline=Ve({data:e.underline,defaultValue:0,validate:n=>n===1||n===2}),this.underlinePeriod=re(e.underlinePeriod,["all","word"]),this.use=e.use||"",this.usehref=e.usehref||"",this.weight=re(e.weight,["normal","bold"]),this.extras=null,this.fill=null}[ts](e){super[ts](e),this[qt].usedTypefaces.add(this.typeface)}[dt](){const e=Fn(this,"fill"),n=e.color;return n&&(n==="#000000"?delete e.color:n.startsWith("#")||(e.background=n,e.backgroundClip="text",e.color="transparent")),this.baselineShift&&(e.verticalAlign=Ke(this.baselineShift)),e.fontKerning=this.kerningMode==="none"?"none":"normal",e.letterSpacing=Ke(this.letterSpacing),this.lineThrough!==0&&(e.textDecoration="line-through",this.lineThrough===2&&(e.textDecorationStyle="double")),this.overline!==0&&(e.textDecoration="overline",this.overline===2&&(e.textDecorationStyle="double")),e.fontStyle=this.posture,e.fontSize=Ke(.99*this.size),Qh(this,this,this[qt].fontFinder,e),this.underline!==0&&(e.textDecoration="underline",this.underline===2&&(e.textDecorationStyle="double")),e.fontWeight=this.weight,e}}class qb extends V{constructor(e){super(pe,"format",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.picture=null}}class vb extends it{constructor(e){super(pe,"handler"),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Sb extends V{constructor(e){super(pe,"hyphenation"),this.excludeAllCaps=Ve({data:e.excludeAllCaps,defaultValue:0,validate:n=>n===1}),this.excludeInitialCap=Ve({data:e.excludeInitialCap,defaultValue:0,validate:n=>n===1}),this.hyphenate=Ve({data:e.hyphenate,defaultValue:0,validate:n=>n===1}),this.id=e.id||"",this.pushCharacterCount=Ve({data:e.pushCharacterCount,defaultValue:3,validate:n=>n>=0}),this.remainCharacterCount=Ve({data:e.remainCharacterCount,defaultValue:3,validate:n=>n>=0}),this.use=e.use||"",this.usehref=e.usehref||"",this.wordCharacterCount=Ve({data:e.wordCharacterCount,defaultValue:7,validate:n=>n>=0})}}class du extends it{constructor(e){super(pe,"image"),this.aspect=re(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=re(e.transferEncoding,["base64","none","package"]),this.use=e.use||"",this.usehref=e.usehref||""}[Oe](){if(this.contentType&&!Mg.has(this.contentType.toLowerCase()))return Re.EMPTY;let e=this[qt].images?.get(this.href);if(!e&&(this.href||!this[se])||(!e&&this.transferEncoding==="base64"&&(e=Uint8Array.fromBase64(this[se])),!e))return Re.EMPTY;if(!this.contentType){for(const[i,r]of Dg)if(e.length>i.length&&i.every((o,f)=>o===e[f])){this.contentType=r;break}if(!this.contentType)return Re.EMPTY}const n=new Blob([e],{type:this.contentType});let s;switch(this.aspect){case"fit":case"actual":break;case"height":s={height:"100%",objectFit:"fill"};break;case"none":s={width:"100%",height:"100%",objectFit:"fill"};break;case"width":s={width:"100%",objectFit:"fill"};break}const a=this[Ye]();return Re.success({name:"img",attributes:{class:["xfaImage"],style:s,src:URL.createObjectURL(n),alt:a?Wa(a[Ye]()):null}})}}class Ab extends V{constructor(e){super(pe,"imageEdit",!0),this.data=re(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}[Oe](e){return this.data==="embed"?Re.success({name:"div",children:[],attributes:{}}):Re.EMPTY}}class Ib extends Et{constructor(e){super(pe,"integer"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=parseInt(this[se].trim(),10);this[se]=isNaN(e)?null:e}[Oe](e){return ba(this[se]!==null?this[se].toString():"")}}class Cb extends V{constructor(e){super(pe,"issuers",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new E}}class uf extends V{constructor(e){super(pe,"items",!0),this.id=e.id||"",this.name=e.name||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.ref=e.ref||"",this.save=Ve({data:e.save,defaultValue:0,validate:n=>n===1}),this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new E,this.date=new E,this.dateTime=new E,this.decimal=new E,this.exData=new E,this.float=new E,this.image=new E,this.integer=new E,this.text=new E,this.time=new E}[Oe](){const e=[];for(const n of this[xn]())e.push(n[Xt]());return Re.success(e)}}class Tb extends V{constructor(e){super(pe,"keep",!0),this.id=e.id||"";const n=["none","contentArea","pageArea"];this.intact=re(e.intact,n),this.next=re(e.next,n),this.previous=re(e.previous,n),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class Bb extends V{constructor(e){super(pe,"keyUsage");const n=["","yes","no"];this.crlSign=re(e.crlSign,n),this.dataEncipherment=re(e.dataEncipherment,n),this.decipherOnly=re(e.decipherOnly,n),this.digitalSignature=re(e.digitalSignature,n),this.encipherOnly=re(e.encipherOnly,n),this.id=e.id||"",this.keyAgreement=re(e.keyAgreement,n),this.keyCertSign=re(e.keyCertSign,n),this.keyEncipherment=re(e.keyEncipherment,n),this.nonRepudiation=re(e.nonRepudiation,n),this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Fb extends V{constructor(e){super(pe,"line",!0),this.hand=re(e.hand,["even","left","right"]),this.id=e.id||"",this.slope=re(e.slope,["\\","/"]),this.use=e.use||"",this.usehref=e.usehref||"",this.edge=null}[Oe](){const e=this[Ye]()[Ye](),n=this.edge||new Mr({}),s=n[dt](),a=Object.create(null),i=n.presence==="visible"?n.thickness:0;a.strokeWidth=Ke(i),a.stroke=s.color;let r,o,f,l,c="100%",h="100%";e.w<=i?([r,o,f,l]=["50%",0,"50%","100%"],c=a.strokeWidth):e.h<=i?([r,o,f,l]=[0,"50%","100%","50%"],h=a.strokeWidth):this.slope==="\\"?[r,o,f,l]=[0,0,"100%","100%"]:[r,o,f,l]=[0,"100%","100%",0];const d={name:"svg",children:[{name:"line",attributes:{xmlns:Ma,x1:r,y1:o,x2:f,y2:l,style:a}}],attributes:{xmlns:Ma,width:c,height:h,style:{overflow:"visible"}}};return Gf(e)?Re.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[d]}):(d.attributes.style.position="absolute",Re.success(d))}}class Rb extends V{constructor(e){super(pe,"linear",!0),this.id=e.id||"",this.type=re(e.type,["toRight","toBottom","toLeft","toTop"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](e){e=e?e[dt]():"#FFFFFF";const n=this.type.replace(/([RBLT])/," $1").toLowerCase(),s=this.color?this.color[dt]():"#000000";return`linear-gradient(${n}, ${e}, ${s})`}}class Hb extends Et{constructor(e){super(pe,"lockDocument"),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}[vt](){this[se]=re(this[se],["auto","0","1"])}}class Eb extends V{constructor(e){super(pe,"manifest",!0),this.action=re(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 E}}class Mb extends V{constructor(e){super(pe,"margin",!0),this.bottomInset=Se(e.bottomInset,"0"),this.id=e.id||"",this.leftInset=Se(e.leftInset,"0"),this.rightInset=Se(e.rightInset,"0"),this.topInset=Se(e.topInset,"0"),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[dt](){return{margin:Ke(this.topInset)+" "+Ke(this.rightInset)+" "+Ke(this.bottomInset)+" "+Ke(this.leftInset)}}}class Db extends V{constructor(e){super(pe,"mdp"),this.id=e.id||"",this.permissions=Ve({data:e.permissions,defaultValue:2,validate:n=>n===1||n===3}),this.signatureType=re(e.signatureType,["filler","author"]),this.use=e.use||"",this.usehref=e.usehref||""}}class _b extends V{constructor(e){super(pe,"medium"),this.id=e.id||"",this.imagingBBox=kg(e.imagingBBox),this.long=Se(e.long),this.orientation=re(e.orientation,["portrait","landscape"]),this.short=Se(e.short),this.stock=e.stock||"",this.trayIn=re(e.trayIn,["auto","delegate","pageFront"]),this.trayOut=re(e.trayOut,["auto","delegate"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Pb extends V{constructor(e){super(pe,"message",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.text=new E}}class Nb extends V{constructor(e){super(pe,"numericEdit",!0),this.hScrollPolicy=re(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}[Oe](e){const n=Fn(this,"border","font","margin"),s=this[Ye]()[Ye](),a={name:"input",attributes:{type:"text",fieldId:s[wt],dataId:s[Qn]?.[wt]||s[wt],class:["xfaTextfield"],style:n,"aria-label":Wa(s),"aria-required":!1}};return Er(s)&&(a.attributes["aria-required"]=!0,a.attributes.required=!0),Re.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Ob extends V{constructor(e){super(pe,"occur",!0),this.id=e.id||"",this.initial=e.initial!==""?Ve({data:e.initial,defaultValue:"",validate:n=>!0}):"",this.max=e.max!==""?Ve({data:e.max,defaultValue:-1,validate:n=>!0}):"",this.min=e.min!==""?Ve({data:e.min,defaultValue:1,validate:n=>!0}):"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[ts](){const e=this[Ye](),n=this.min;this.min===""&&(this.min=e instanceof Ai||e instanceof Cr?0:1),this.max===""&&(n===""?this.max=e instanceof Ai||e instanceof Cr?-1:1:this.max=this.min),this.max!==-1&&this.max!0}),this.name=e.name||"",this.numbered=Ve({data:e.numbered,defaultValue:1,validate:n=>!0}),this.oddOrEven=re(e.oddOrEven,["any","even","odd"]),this.pagePosition=re(e.pagePosition,["any","first","last","only","rest"]),this.relevant=ws(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 E,this.contentArea=new E,this.draw=new E,this.exclGroup=new E,this.field=new E,this.subform=new E}[Ir](){return this[U]?!this.occur||this.occur.max===-1||this[U].numberOfUsei.oddOrEven===n&&i.pagePosition===s);return a||(a=this.pageArea.children.find(i=>i.oddOrEven==="any"&&i.pagePosition===s),a)||(a=this.pageArea.children.find(i=>i.oddOrEven==="any"&&i.pagePosition==="any"),a)?a:this.pageArea.children[0]}}class Ub extends V{constructor(e){super(pe,"para",!0),this.hAlign=re(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.lineHeight=e.lineHeight?Se(e.lineHeight,"0pt"):"",this.marginLeft=e.marginLeft?Se(e.marginLeft,"0pt"):"",this.marginRight=e.marginRight?Se(e.marginRight,"0pt"):"",this.orphans=Ve({data:e.orphans,defaultValue:0,validate:n=>n>=0}),this.preserve=e.preserve||"",this.radixOffset=e.radixOffset?Se(e.radixOffset,"0pt"):"",this.spaceAbove=e.spaceAbove?Se(e.spaceAbove,"0pt"):"",this.spaceBelow=e.spaceBelow?Se(e.spaceBelow,"0pt"):"",this.tabDefault=e.tabDefault?Se(this.tabDefault):"",this.tabStops=(e.tabStops||"").trim().split(/\s+/).map((n,s)=>s%2===1?Se(n):n),this.textIndent=e.textIndent?Se(e.textIndent,"0pt"):"",this.use=e.use||"",this.usehref=e.usehref||"",this.vAlign=re(e.vAlign,["top","bottom","middle"]),this.widows=Ve({data:e.widows,defaultValue:0,validate:n=>n>=0}),this.hyphenation=null}[dt](){const e=Fn(this,"hAlign");return this.marginLeft!==""&&(e.paddingLeft=Ke(this.marginLeft)),this.marginRight!==""&&(e.paddingRight=Ke(this.marginRight)),this.spaceAbove!==""&&(e.paddingTop=Ke(this.spaceAbove)),this.spaceBelow!==""&&(e.paddingBottom=Ke(this.spaceBelow)),this.textIndent!==""&&(e.textIndent=Ke(this.textIndent),Xh(e)),this.lineHeight>0&&(e.lineHeight=Ke(this.lineHeight)),this.tabDefault!==""&&(e.tabSize=Ke(this.tabDefault)),this.tabStops.length>0,this.hyphenatation&&Object.assign(e,this.hyphenatation[dt]()),e}}class Gb extends V{constructor(e){super(pe,"passwordEdit",!0),this.hScrollPolicy=re(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 Wb extends V{constructor(e){super(pe,"pattern",!0),this.id=e.id||"",this.type=re(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](e){e=e?e[dt]():"#FFFFFF";const n=this.color?this.color[dt]():"#000000",s=5,a="repeating-linear-gradient",i=`${e},${e} ${s}px,${n} ${s}px,${n} ${2*s}px`;switch(this.type){case"crossHatch":return`${a}(to top,${i}) ${a}(to right,${i})`;case"crossDiagonal":return`${a}(45deg,${i}) ${a}(-45deg,${i})`;case"diagonalLeft":return`${a}(45deg,${i})`;case"diagonalRight":return`${a}(-45deg,${i})`;case"horizontal":return`${a}(to top,${i})`;case"vertical":return`${a}(to right,${i})`}return""}}class Kb extends it{constructor(e){super(pe,"picture"),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Vb extends V{constructor(e){super(pe,"proto",!0),this.appearanceFilter=new E,this.arc=new E,this.area=new E,this.assist=new E,this.barcode=new E,this.bindItems=new E,this.bookend=new E,this.boolean=new E,this.border=new E,this.break=new E,this.breakAfter=new E,this.breakBefore=new E,this.button=new E,this.calculate=new E,this.caption=new E,this.certificate=new E,this.certificates=new E,this.checkButton=new E,this.choiceList=new E,this.color=new E,this.comb=new E,this.connect=new E,this.contentArea=new E,this.corner=new E,this.date=new E,this.dateTime=new E,this.dateTimeEdit=new E,this.decimal=new E,this.defaultUi=new E,this.desc=new E,this.digestMethod=new E,this.digestMethods=new E,this.draw=new E,this.edge=new E,this.encoding=new E,this.encodings=new E,this.encrypt=new E,this.encryptData=new E,this.encryption=new E,this.encryptionMethod=new E,this.encryptionMethods=new E,this.event=new E,this.exData=new E,this.exObject=new E,this.exclGroup=new E,this.execute=new E,this.extras=new E,this.field=new E,this.fill=new E,this.filter=new E,this.float=new E,this.font=new E,this.format=new E,this.handler=new E,this.hyphenation=new E,this.image=new E,this.imageEdit=new E,this.integer=new E,this.issuers=new E,this.items=new E,this.keep=new E,this.keyUsage=new E,this.line=new E,this.linear=new E,this.lockDocument=new E,this.manifest=new E,this.margin=new E,this.mdp=new E,this.medium=new E,this.message=new E,this.numericEdit=new E,this.occur=new E,this.oid=new E,this.oids=new E,this.overflow=new E,this.pageArea=new E,this.pageSet=new E,this.para=new E,this.passwordEdit=new E,this.pattern=new E,this.picture=new E,this.radial=new E,this.reason=new E,this.reasons=new E,this.rectangle=new E,this.ref=new E,this.script=new E,this.setProperty=new E,this.signData=new E,this.signature=new E,this.signing=new E,this.solid=new E,this.speak=new E,this.stipple=new E,this.subform=new E,this.subformSet=new E,this.subjectDN=new E,this.subjectDNs=new E,this.submit=new E,this.text=new E,this.textEdit=new E,this.time=new E,this.timeStamp=new E,this.toolTip=new E,this.traversal=new E,this.traverse=new E,this.ui=new E,this.validate=new E,this.value=new E,this.variables=new E}}class $b extends V{constructor(e){super(pe,"radial",!0),this.id=e.id||"",this.type=re(e.type,["toEdge","toCenter"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](e){e=e?e[dt]():"#FFFFFF";const n=this.color?this.color[dt]():"#000000";return`radial-gradient(circle at center, ${this.type==="toEdge"?`${e},${n}`:`${n},${e}`})`}}class Xb extends it{constructor(e){super(pe,"reason"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Yb extends V{constructor(e){super(pe,"reasons",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.reason=new E}}class pu extends V{constructor(e){super(pe,"rectangle",!0),this.hand=re(e.hand,["even","left","right"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.corner=new E(4),this.edge=new E(4),this.fill=null}[Oe](){const e=this.edge.children.length?this.edge.children[0]:new Mr({}),n=e[dt](),s=Object.create(null);this.fill?.presence==="visible"?Object.assign(s,this.fill[dt]()):s.fill="transparent",s.strokeWidth=Ke(e.presence==="visible"?e.thickness:0),s.stroke=n.color;const i=(this.corner.children.length?this.corner.children[0]:new cu({}))[dt](),o={name:"svg",children:[{name:"rect",attributes:{xmlns:Ma,width:"100%",height:"100%",x:0,y:0,rx:i.radius,ry:i.radius,style:s}}],attributes:{xmlns:Ma,style:{overflow:"visible"},width:"100%",height:"100%"}},f=this[Ye]()[Ye]();return Gf(f)?Re.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[o]}):(o.attributes.style.position="absolute",Re.success(o))}}class Jb extends it{constructor(e){super(pe,"ref"),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Qb extends it{constructor(e){super(pe,"script"),this.binding=e.binding||"",this.contentType=e.contentType||"",this.id=e.id||"",this.name=e.name||"",this.runAt=re(e.runAt,["client","both","server"]),this.use=e.use||"",this.usehref=e.usehref||""}}class df extends V{constructor(e){super(pe,"setProperty"),this.connection=e.connection||"",this.ref=e.ref||"",this.target=e.target||""}}class Zb extends V{constructor(e){super(pe,"signData",!0),this.id=e.id||"",this.operation=re(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 ew extends V{constructor(e){super(pe,"signature",!0),this.id=e.id||"",this.type=re(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 tw extends V{constructor(e){super(pe,"signing",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new E}}class nw extends V{constructor(e){super(pe,"solid",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[dt](e){return e?e[dt]():"#FFFFFF"}}class sw extends it{constructor(e){super(pe,"speak"),this.disable=Ve({data:e.disable,defaultValue:0,validate:n=>n===1}),this.id=e.id||"",this.priority=re(e.priority,["custom","caption","name","toolTip"]),this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}}class aw extends V{constructor(e){super(pe,"stipple",!0),this.id=e.id||"",this.rate=Ve({data:e.rate,defaultValue:50,validate:n=>n>=0&&n<=100}),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](e){const n=this.rate/100;return ft.makeHexColor(Math.round(e.value.r*(1-n)+this.value.r*n),Math.round(e.value.g*(1-n)+this.value.g*n),Math.round(e.value.b*(1-n)+this.value.b*n))}}class gu extends V{constructor(e){super(pe,"subform",!0),this.access=re(e.access,["open","nonInteractive","protected","readOnly"]),this.allowMacro=Ve({data:e.allowMacro,defaultValue:0,validate:n=>n===1}),this.anchorType=re(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=Ve({data:e.colSpan,defaultValue:1,validate:n=>n>=1||n===-1}),this.columnWidths=(e.columnWidths||"").trim().split(/\s+/).map(n=>n==="-1"?-1:Se(n)),this.h=e.h?Se(e.h):"",this.hAlign=re(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.layout=re(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]),this.locale=e.locale||"",this.maxH=Se(e.maxH,"0pt"),this.maxW=Se(e.maxW,"0pt"),this.mergeMode=re(e.mergeMode,["consumeData","matchTemplate"]),this.minH=Se(e.minH,"0pt"),this.minW=Se(e.minW,"0pt"),this.name=e.name||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=ws(e.relevant),this.restoreState=re(e.restoreState,["manual","auto"]),this.scope=re(e.scope,["name","none"]),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?Se(e.w):"",this.x=Se(e.x,"0pt"),this.y=Se(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 E,this.breakAfter=new E,this.breakBefore=new E,this.connect=new E,this.draw=new E,this.event=new E,this.exObject=new E,this.exclGroup=new E,this.field=new E,this.proto=new E,this.setProperty=new E,this.subform=new E,this.subformSet=new E}[Ot](){const e=this[Ye]();return e instanceof Xf?e[Ot]():e}[Va](){return!0}[Ws](){return this.layout.endsWith("-tb")&&this[U].attempt===0&&this[U].numberInLine>0||this[Ye]()[Ws]()}*[Si](){yield*Kf(this)}[Hr](){return tu(this)}[Pa](e,n){nu(this,e,n)}[Na](){return su(this)}[Us](){const e=this[Ot]();return e[Us]()?this[U]._isSplittable!==void 0?this[U]._isSplittable:this.layout==="position"||this.layout.includes("row")?(this[U]._isSplittable=!1,!1):this.keep&&this.keep.intact!=="none"?(this[U]._isSplittable=!1,!1):e.layout?.endsWith("-tb")&&e[U].numberInLine!==0?!1:(this[U]._isSplittable=!0,!0):!1}[Oe](e){if(Z0(this),this.break){if(this.break.after!=="auto"||this.break.afterTarget!==""){const k=new ru({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});k[qt]=this[qt],this[Ht](k),this.breakAfter.push(k)}if(this.break.before!=="auto"||this.break.beforeTarget!==""){const k=new ou({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});k[qt]=this[qt],this[Ht](k),this.breakBefore.push(k)}if(this.break.overflowTarget!==""){const k=new mu({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});k[qt]=this[qt],this[Ht](k),this.overflow.push(k)}this[fa](this.break),this.break=null}if(this.presence==="hidden"||this.presence==="inactive")return Re.EMPTY;if((this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&H("XFA - Several breakBefore or breakAfter in subforms: please file a bug."),this.breakBefore.children.length>=1){const k=this.breakBefore.children[0];if(yc(k))return Re.breakNode(k)}if(this[U]?.afterBreakAfter)return Re.EMPTY;J0(this);const n=[],s={id:this[wt],class:[]};Uf(this,s.class),this[U]||=Object.create(null),Object.assign(this[U],{children:n,line:null,attributes:s,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[_t](),i=a[U].noLayoutFailure,r=this[Us]();if(r||to(this),!Q0(this,e))return Re.FAILURE;const o=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const k=this[Ot]().columnWidths;Array.isArray(k)&&k.length>0&&(this[U].columnWidths=k,this[U].currentColumn=0)}const f=Fn(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),l=["xfaSubform"],c=$h(this);if(c&&l.push(c),s.style=f,s.class=l,this.name&&(s.xfaName=this.name),this.overflow){const k=this.overflow[cn]();k.addLeader&&(k.addLeader=!1,qc(this,k.leader,e))}this[Ti]();const h=this.layout==="lr-tb"||this.layout==="rl-tb",u=h?C0:1;for(;this[U].attempt=1){const k=this.breakAfter.children[0];if(yc(k))return this[U].afterBreakAfter=j,Re.breakNode(k)}return delete this[U],j}}class Xf extends V{constructor(e){super(pe,"subformSet",!0),this.id=e.id||"",this.name=e.name||"",this.relation=re(e.relation,["ordered","choice","unordered"]),this.relevant=ws(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 E,this.breakBefore=new E,this.subform=new E,this.subformSet=new E}*[Si](){yield*Kf(this)}[Ot](){let e=this[Ye]();for(;!(e instanceof gu);)e=e[Ye]();return e}[Va](){return!0}}class iw extends Et{constructor(e){super(pe,"subjectDN"),this.delimiter=e.delimiter||",",this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){this[se]=new Map(this[se].split(this.delimiter).map(e=>(e=e.split("=",2),e[0]=e[0].trim(),e)))}}class rw extends V{constructor(e){super(pe,"subjectDNs",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.subjectDN=new E}}class ow extends V{constructor(e){super(pe,"submit",!0),this.embedPDF=Ve({data:e.embedPDF,defaultValue:0,validate:n=>n===1}),this.format=re(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]),this.id=e.id||"",this.target=e.target||"",this.textEncoding=Y0({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:n=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(n)||n.match(/iso-8859-\d{2}/)}),this.use=e.use||"",this.usehref=e.usehref||"",this.xdpContent=e.xdpContent||"",this.encrypt=null,this.encryptData=new E,this.signData=new E}}class Yf extends V{constructor(e){super(pe,"template",!0),this.baseProfile=re(e.baseProfile,["full","interactiveForms"]),this.extras=null,this.subform=new E}[vt](){this.subform.children.length===0&&H("XFA - No subforms in template node."),this.subform.children.length>=2&&H("XFA - Several subforms in template node: please file a bug."),this[fs]=Hg}[Us](){return!0}[Ns](e,n){return e.startsWith("#")?[this[ci].get(e.slice(1))]:ta(this,n,e,!0,!0)}*[Lh](){if(!this.subform.children.length)return Re.success({name:"div",children:[]});this[U]={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[ui]();const n=e.pageSet.pageArea.children,s={name:"div",children:[]};let a=null,i=null,r=null;if(e.breakBefore.children.length>=1?(i=e.breakBefore.children[0],r=i.target):e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1?(i=e.subform.children[0].breakBefore.children[0],r=i.target):e.break?.beforeTarget?(i=e.break,r=i.beforeTarget):e.subform.children.length>=1&&e.subform.children[0].break?.beforeTarget&&(i=e.subform.children[0].break,r=i.beforeTarget),i){const p=this[Ns](r,i[Ye]());p instanceof Ai&&(a=p,i[U]={})}a||=n[0],a[U]={numberOfUse:1};const o=a[Ye]();o[U]={numberOfUse:1,pageIndex:o.pageArea.children.indexOf(a),pageSetIndex:0};let f,l=null,c=null,h=!0,u=0,d=0;for(;;){if(h)u=0;else if(s.children.pop(),++u===Rg)return H("XFA - Something goes wrong: please file a bug."),s;f=null,this[U].currentPageArea=a;const p=a[Oe]().html;s.children.push(p),l&&(this[U].noLayoutFailure=!0,p.children.push(l[Oe](a[U].space).html),l=null),c&&(this[U].noLayoutFailure=!0,p.children.push(c[Oe](a[U].space).html),c=null);const m=a.contentArea.children,b=p.children.filter(x=>x.attributes.class.includes("xfaContentarea"));h=!1,this[U].firstUnsplittable=null,this[U].noLayoutFailure=!1;const w=x=>{const j=e[Hr]();j&&(h||=j.children?.length>0,b[x].children.push(j))};for(let x=d,j=m.length;x0,b[x].children.push(q.html)):!h&&s.children.length>1&&s.children.pop(),s;if(q.isBreak()){const v=q.breakNode;if(w(x),v.targetType==="auto")continue;v.leader&&(l=this[Ns](v.leader,v[Ye]()),l=l?l[0]:null),v.trailer&&(c=this[Ns](v.trailer,v[Ye]()),c=c?c[0]:null),v.targetType==="pageArea"?(f=v[U].target,x=1/0):v[U].target?(f=v[U].target,d=v[U].index+1,x=1/0):x=v[U].index;continue}if(this[U].overflowNode){const v=this[U].overflowNode;this[U].overflowNode=null;const A=v[cn](),S=A.target;A.addLeader=A.leader!==null,A.addTrailer=A.trailer!==null,w(x);const F=x;if(x=1/0,S instanceof Ai)f=S;else if(S instanceof Vf){const M=m.indexOf(S);M!==-1?M>F?x=M-1:d=M:(f=S[Ye](),d=f.contentArea.children.indexOf(S))}continue}w(x)}this[U].pageNumber+=1,f&&(f[Ir]()?f[U].numberOfUse+=1:f=null),a=f||a[_s](),yield null}}}class bu extends Et{constructor(e){super(pe,"text"),this.id=e.id||"",this.maxChars=Ve({data:e.maxChars,defaultValue:0,validate:n=>n>=0}),this.name=e.name||"",this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}[V0](){return!0}[Ss](e){return e[Nt]===Yt.xhtml.id?(this[se]=e,!0):(H(`XFA - Invalid content in Text: ${e[gt]}.`),!1)}[Gs](e){this[se]instanceof V||super[Gs](e)}[vt](){typeof this[se]=="string"&&(this[se]=this[se].replaceAll(`\r +`,` +`))}[cn](){return typeof this[se]=="string"?this[se].split(/[\u2029\u2028\n]/).filter(Boolean).join(` +`):this[se][Xt]()}[Oe](e){if(typeof this[se]=="string"){const n=ba(this[se]).html;return this[se].includes("\u2029")?(n.name="div",n.children=[],this[se].split("\u2029").map(s=>s.split(/[\u2028\n]/).flatMap(a=>[{name:"span",value:a},{name:"br"}])).forEach(s=>{n.children.push({name:"p",children:s})})):/[\u2028\n]/.test(this[se])&&(n.name="div",n.children=[],this[se].split(/[\u2028\n]/).forEach(s=>{n.children.push({name:"span",value:s},{name:"br"})})),Re.success(n)}return this[se][Oe](e)}}class wu extends V{constructor(e){super(pe,"textEdit",!0),this.allowRichText=Ve({data:e.allowRichText,defaultValue:0,validate:n=>n===1}),this.hScrollPolicy=re(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.multiLine=Ve({data:e.multiLine,defaultValue:"",validate:n=>n===0||n===1}),this.use=e.use||"",this.usehref=e.usehref||"",this.vScrollPolicy=re(e.vScrollPolicy,["auto","off","on"]),this.border=null,this.comb=null,this.extras=null,this.margin=null}[Oe](e){const n=Fn(this,"border","font","margin");let s;const a=this[Ye]()[Ye]();return this.multiLine===""&&(this.multiLine=a instanceof hu?1:0),this.multiLine===1?s={name:"textarea",attributes:{dataId:a[Qn]?.[wt]||a[wt],fieldId:a[wt],class:["xfaTextfield"],style:n,"aria-label":Wa(a),"aria-required":!1}}:s={name:"input",attributes:{type:"text",dataId:a[Qn]?.[wt]||a[wt],fieldId:a[wt],class:["xfaTextfield"],style:n,"aria-label":Wa(a),"aria-required":!1}},Er(a)&&(s.attributes["aria-required"]=!0,s.attributes.required=!0),Re.success({name:"label",attributes:{class:["xfaLabel"]},children:[s]})}}class fw extends it{constructor(e){super(pe,"time"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=this[se].trim();this[se]=e?new Date(e):null}[Oe](e){return ba(this[se]?this[se].toString():"")}}class lw extends V{constructor(e){super(pe,"timeStamp"),this.id=e.id||"",this.server=e.server||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class cw extends it{constructor(e){super(pe,"toolTip"),this.id=e.id||"",this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}}class hw extends V{constructor(e){super(pe,"traversal",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.traverse=new E}}class uw extends V{constructor(e){super(pe,"traverse",!0),this.id=e.id||"",this.operation=re(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}[Ar](){return!1}}class Jf extends V{constructor(e){super(pe,"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}[cn](){if(this[U]===void 0){for(const e of Object.getOwnPropertyNames(this)){if(e==="extras"||e==="picture")continue;const n=this[e];if(n instanceof V)return this[U]=n,n}this[U]=null}return this[U]}[Oe](e){const n=this[cn]();return n?n[Oe](e):Re.EMPTY}}class dw extends V{constructor(e){super(pe,"validate",!0),this.formatTest=re(e.formatTest,["warning","disabled","error"]),this.id=e.id||"",this.nullTest=re(e.nullTest,["disabled","error","warning"]),this.scriptTest=re(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 Qf extends V{constructor(e){super(pe,"value",!0),this.id=e.id||"",this.override=Ve({data:e.override,defaultValue:0,validate:n=>n===1}),this.relevant=ws(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}[Pn](e){const n=this[Ye]();if(n instanceof $f&&n.ui?.imageEdit){this.image||(this.image=new du({}),this[Ht](this.image)),this.image[se]=e[se];return}const s=e[gt];if(this[s]!==null){this[s][se]=e[se];return}for(const a of Object.getOwnPropertyNames(this)){const i=this[a];i instanceof V&&(this[a]=null,this[fa](i))}this[e[gt]]=e,this[Ht](e)}[Xt](){if(this.exData)return typeof this.exData[se]=="string"?this.exData[se].trim():this.exData[se][Xt]().trim();for(const e of Object.getOwnPropertyNames(this)){if(e==="image")continue;const n=this[e];if(n instanceof V)return(n[se]||"").toString().trim()}return null}[Oe](e){for(const n of Object.getOwnPropertyNames(this)){const s=this[n];if(s instanceof V)return s[Oe](e)}return Re.EMPTY}}class mw extends V{constructor(e){super(pe,"variables",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new E,this.date=new E,this.dateTime=new E,this.decimal=new E,this.exData=new E,this.float=new E,this.image=new E,this.integer=new E,this.manifest=new E,this.script=new E,this.text=new E,this.time=new E}[Ar](){return!0}}class T0{static[bs](e,n){if(Object.hasOwn(T0,e)){const s=T0[e](n);return s[Oh](n),s}}static appearanceFilter(e){return new _g(e)}static arc(e){return new au(e)}static area(e){return new Pg(e)}static assist(e){return new Ng(e)}static barcode(e){return new Og(e)}static bind(e){return new Lg(e)}static bindItems(e){return new hf(e)}static bookend(e){return new zg(e)}static boolean(e){return new Ug(e)}static border(e){return new iu(e)}static break(e){return new Gg(e)}static breakAfter(e){return new ru(e)}static breakBefore(e){return new ou(e)}static button(e){return new Wg(e)}static calculate(e){return new Kg(e)}static caption(e){return new Vg(e)}static certificate(e){return new $g(e)}static certificates(e){return new Xg(e)}static checkButton(e){return new fu(e)}static choiceList(e){return new lu(e)}static color(e){return new Yg(e)}static comb(e){return new Jg(e)}static connect(e){return new Qg(e)}static contentArea(e){return new Vf(e)}static corner(e){return new cu(e)}static date(e){return new Zg(e)}static dateTime(e){return new eb(e)}static dateTimeEdit(e){return new tb(e)}static decimal(e){return new nb(e)}static defaultUi(e){return new sb(e)}static desc(e){return new ab(e)}static digestMethod(e){return new ib(e)}static digestMethods(e){return new rb(e)}static draw(e){return new hu(e)}static edge(e){return new Mr(e)}static encoding(e){return new ob(e)}static encodings(e){return new fb(e)}static encrypt(e){return new lb(e)}static encryptData(e){return new cb(e)}static encryption(e){return new hb(e)}static encryptionMethod(e){return new ub(e)}static encryptionMethods(e){return new db(e)}static event(e){return new mb(e)}static exData(e){return new pb(e)}static exObject(e){return new gb(e)}static exclGroup(e){return new uu(e)}static execute(e){return new bb(e)}static extras(e){return new wb(e)}static field(e){return new $f(e)}static fill(e){return new xb(e)}static filter(e){return new jb(e)}static float(e){return new kb(e)}static font(e){return new yb(e)}static format(e){return new qb(e)}static handler(e){return new vb(e)}static hyphenation(e){return new Sb(e)}static image(e){return new du(e)}static imageEdit(e){return new Ab(e)}static integer(e){return new Ib(e)}static issuers(e){return new Cb(e)}static items(e){return new uf(e)}static keep(e){return new Tb(e)}static keyUsage(e){return new Bb(e)}static line(e){return new Fb(e)}static linear(e){return new Rb(e)}static lockDocument(e){return new Hb(e)}static manifest(e){return new Eb(e)}static margin(e){return new Mb(e)}static mdp(e){return new Db(e)}static medium(e){return new _b(e)}static message(e){return new Pb(e)}static numericEdit(e){return new Nb(e)}static occur(e){return new Ob(e)}static oid(e){return new Lb(e)}static oids(e){return new zb(e)}static overflow(e){return new mu(e)}static pageArea(e){return new Ai(e)}static pageSet(e){return new Cr(e)}static para(e){return new Ub(e)}static passwordEdit(e){return new Gb(e)}static pattern(e){return new Wb(e)}static picture(e){return new Kb(e)}static proto(e){return new Vb(e)}static radial(e){return new $b(e)}static reason(e){return new Xb(e)}static reasons(e){return new Yb(e)}static rectangle(e){return new pu(e)}static ref(e){return new Jb(e)}static script(e){return new Qb(e)}static setProperty(e){return new df(e)}static signData(e){return new Zb(e)}static signature(e){return new ew(e)}static signing(e){return new tw(e)}static solid(e){return new nw(e)}static speak(e){return new sw(e)}static stipple(e){return new aw(e)}static subform(e){return new gu(e)}static subformSet(e){return new Xf(e)}static subjectDN(e){return new iw(e)}static subjectDNs(e){return new rw(e)}static submit(e){return new ow(e)}static template(e){return new Yf(e)}static text(e){return new bu(e)}static textEdit(e){return new wu(e)}static time(e){return new fw(e)}static timeStamp(e){return new lw(e)}static toolTip(e){return new cw(e)}static traversal(e){return new hw(e)}static traverse(e){return new uw(e)}static ui(e){return new Jf(e)}static validate(e){return new dw(e)}static value(e){return new Qf(e)}static variables(e){return new mw(e)}}const a0=Yt.datasets.id;function i0(t){const e=new bu({});return e[se]=t,e}class pw{constructor(e){this.root=e,this.datasets=e.datasets,this.data=e.datasets?.data||new As(a0,"data"),this.emptyMerge=this.data[xn]().length===0,this.root.form=this.form=e.template[ds]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){return this._bindElement(this.form,this.data),this.form}getData(){return this.data}_bindValue(e,n,s){if(e[Qn]=n,e[Sr]())if(n[di]()){const a=n[Pf]();e[Pn](i0(a))}else if(e instanceof $f&&e.ui?.choiceList?.open==="multiSelect"){const a=n[xn]().map(i=>i[se].trim()).join(` +`);e[Pn](i0(a))}else this._isConsumeData()&&H("XFA - Nodes haven't the same type.");else!n[di]()||this._isMatchTemplate()?this._bindElement(e,n):H("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,n,s,a){if(!e)return null;let i,r;for(let o=0;o<3;o++){for(i=s[fr](e,!1,!0);r=i.next().value,!!r;)if(n===r[di]())return r;if(s[Nt]===a0&&s[gt]==="data")break;s=s[Ye]()}return a?(i=this.data[fr](e,!0,!1),r=i.next().value,r||(i=this.data[rf](e,!0),r=i.next().value,r?.[di]())?r:null):null}_setProperties(e,n){if(Object.hasOwn(e,"setProperty"))for(const{ref:s,target:a,connection:i}of e.setProperty.children){if(i||!s)continue;const r=ta(this.root,n,s,!1,!1);if(!r){H(`XFA - Invalid reference: ${s}.`);continue}const[o]=r;if(!o[sa](this.data)){H("XFA - Invalid node: must be a data node.");continue}const f=ta(this.root,e,a,!1,!1);if(!f){H(`XFA - Invalid target: ${a}.`);continue}const[l]=f;if(!l[sa](e)){H("XFA - Invalid target: must be a property or subproperty.");continue}const c=l[Ye]();if(l instanceof df||c instanceof df){H("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(l instanceof hf||c instanceof hf){H("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const h=o[Xt](),u=l[gt];if(l instanceof Lf){const d=Object.create(null);d[u]=h;const p=Reflect.construct(Object.getPrototypeOf(c).constructor,[d]);c[u]=p[u];continue}if(!Object.hasOwn(l,se)){H("XFA - Invalid node to use in setProperty");continue}l[Qn]=o,l[se]=h,l[vt]()}}_bindItems(e,n){if(!Object.hasOwn(e,"items")||!Object.hasOwn(e,"bindItems")||e.bindItems.isEmpty())return;for(const i of e.items.children)e[fa](i);e.items.clear();const s=new uf({}),a=new uf({});e[Ht](s),e.items.push(s),e[Ht](a),e.items.push(a);for(const{ref:i,labelRef:r,valueRef:o,connection:f}of e.bindItems.children){if(f||!i)continue;const l=ta(this.root,n,i,!1,!1);if(!l){H(`XFA - Invalid reference: ${i}.`);continue}for(const c of l){if(!c[sa](this.datasets)){H(`XFA - Invalid ref (${i}): must be a datasets child.`);continue}const h=ta(this.root,c,r,!0,!1);if(!h){H(`XFA - Invalid label: ${r}.`);continue}const[u]=h;if(!u[sa](this.datasets)){H("XFA - Invalid label: must be a datasets child.");continue}const d=ta(this.root,c,o,!0,!1);if(!d){H(`XFA - Invalid value: ${o}.`);continue}const[p]=d;if(!p[sa](this.datasets)){H("XFA - Invalid value: must be a datasets child.");continue}const m=i0(u[Xt]()),b=i0(p[Xt]());s[Ht](m),s.text.push(m),a[Ht](b),a.text.push(b)}}}_bindOccurrences(e,n,s){let a;if(n.length>1&&(a=e[ds](),a[fa](a.occur),a.occur=null),this._bindValue(e,n[0],s),this._setProperties(e,n[0]),this._bindItems(e,n[0]),n.length===1)return;const i=e[Ye](),r=e[gt],o=i[of](e);for(let f=1,l=n.length;ff.name===e.name).length:i=s[a].children.length;const r=s[of](e)+1,o=n.initial-i;if(o){const f=e[ds]();f[fa](f.occur),f.occur=null,s[a].push(f),s[b0](r,f);for(let l=1;l0)this._bindOccurrences(a,[h[0]],null);else if(this.emptyMerge){const u=n[Nt]===a0?-1:n[Nt],d=a[Qn]=new As(u,a.name||"root");n[Ht](d),this._bindElement(a,d)}continue}if(!a[Va]())continue;let i=!1,r=null,o=null,f=null;if(a.bind){switch(a.bind.match){case"none":this._setAndBind(a,n);continue;case"global":i=!0;break;case"dataRef":if(!a.bind.ref){H(`XFA - ref is empty in node ${a[gt]}.`),this._setAndBind(a,n);continue}o=a.bind.ref;break}a.bind.picture&&(r=a.bind.picture[se])}const[l,c]=this._getOccurInfo(a);if(o)if(f=ta(this.root,n,o,!0,!1),f===null){if(f=Bg(this.data,n,o),!f)continue;this._isConsumeData()&&(f[vs]=!0),this._setAndBind(a,f);continue}else this._isConsumeData()&&(f=f.filter(h=>!h[vs])),f.length>c?f=f.slice(0,c):f.length===0&&(f=null),f&&this._isConsumeData()&&f.forEach(h=>{h[vs]=!0});else{if(!a.name){this._setAndBind(a,n);continue}if(this._isConsumeData()){const h=[];for(;h.length0?h:null}else{if(f=n[fr](a.name,!1,this.emptyMerge).next().value,!f){if(l===0){s.push(a);continue}const h=n[Nt]===a0?-1:n[Nt];f=a[Qn]=new As(h,a.name),this.emptyMerge&&(f[vs]=!0),n[Ht](f),this._setAndBind(a,f);continue}this.emptyMerge&&(f[vs]=!0),f=[f]}}f?this._bindOccurrences(a,f,r):l>0?this._setAndBind(a,n):s.push(a)}s.forEach(a=>a[Ye]()[fa](a))}}class gw{constructor(e,n){this.data=n,this.dataset=e.datasets||null}serialize(e){const n=[[-1,this.data[xn]()]];for(;n.length>0;){const a=n.at(-1),[i,r]=a;if(i+1===r.length){n.pop();continue}const o=r[++a[0]],f=e.get(o[wt]);if(f)o[Pn](f);else{const c=o[Ph]();for(const h of c.values()){const u=e.get(h[wt]);if(u){h[Pn](u);break}}}const l=o[xn]();l.length>0&&n.push([-1,l])}const s=[''];if(this.dataset)for(const a of this.dataset[xn]())a[gt]!=="data"&&a[cr](s);return this.data[cr](s),s.push(""),s.join("")}}const fe=Yt.config.id;class bw extends V{constructor(e){super(fe,"acrobat",!0),this.acrobat7=null,this.autoSave=null,this.common=null,this.validate=null,this.validateApprovalSignatures=null,this.submitUrl=new E}}class ww extends V{constructor(e){super(fe,"acrobat7",!0),this.dynamicRender=null}}class xw extends xt{constructor(e){super(fe,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class jw extends xt{constructor(e){super(fe,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class kw extends Jt{constructor(e){super(fe,"addSilentPrint")}}class yw extends Jt{constructor(e){super(fe,"addViewerPreferences")}}class qw extends Wh{constructor(e){super(fe,"adjustData")}}class vw extends xs{constructor(e){super(fe,"adobeExtensionLevel",0,n=>n>=1&&n<=8)}}class Sw extends V{constructor(e){super(fe,"agent",!0),this.name=e.name?e.name.trim():"",this.common=new E}}class Aw extends Et{constructor(e){super(fe,"alwaysEmbed")}}class Iw extends it{constructor(e){super(fe,"amd")}}class Cw extends V{constructor(e){super(fe,"area"),this.level=Ve({data:e.level,defaultValue:0,validate:n=>n>=1&&n<=3}),this.name=re(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class Tw extends xt{constructor(e){super(fe,"attributes",["preserve","delegate","ignore"])}}class Bw extends xt{constructor(e){super(fe,"autoSave",["disabled","enabled"])}}class Fw extends it{constructor(e){super(fe,"base")}}class Rw extends V{constructor(e){super(fe,"batchOutput"),this.format=re(e.format,["none","concat","zip","zipCompress"])}}class Hw extends Et{constructor(e){super(fe,"behaviorOverride")}[vt](){this[se]=new Map(this[se].trim().split(/\s+/).filter(e=>e.includes(":")).map(e=>e.split(":",2)))}}class Ew extends V{constructor(e){super(fe,"cache",!0),this.templateCache=null}}class Mw extends Jt{constructor(e){super(fe,"change")}}class Dw extends V{constructor(e){super(fe,"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 E}}class _w extends V{constructor(e){super(fe,"compress"),this.scope=re(e.scope,["imageOnly","document"])}}class Pw extends Jt{constructor(e){super(fe,"compressLogicalStructure")}}class Nw extends Wh{constructor(e){super(fe,"compressObjectStream")}}class Ow extends V{constructor(e){super(fe,"compression",!0),this.compressLogicalStructure=null,this.compressObjectStream=null,this.level=null,this.type=null}}class Lw extends V{constructor(e){super(fe,"config",!0),this.acrobat=null,this.present=null,this.trace=null,this.agent=new E}}class zw extends xt{constructor(e){super(fe,"conformance",["A","B"])}}class Uw extends Jt{constructor(e){super(fe,"contentCopy")}}class Gw extends xs{constructor(e){super(fe,"copies",1,n=>n>=1)}}class Ww extends it{constructor(e){super(fe,"creator")}}class Kw extends xs{constructor(e){super(fe,"currentPage",0,n=>n>=0)}}class Vw extends V{constructor(e){super(fe,"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 E,this.transform=new E}}class $w extends V{constructor(e){super(fe,"debug",!0),this.uri=null}}class Xw extends Et{constructor(e){super(fe,"defaultTypeface"),this.writingScript=re(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class Yw extends xt{constructor(e){super(fe,"destination",["pdf","pcl","ps","webClient","zpl"])}}class Jw extends Jt{constructor(e){super(fe,"documentAssembly")}}class Qw extends V{constructor(e){super(fe,"driver",!0),this.name=e.name?e.name.trim():"",this.fontInfo=null,this.xdc=null}}class Zw extends xt{constructor(e){super(fe,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class ex extends xt{constructor(e){super(fe,"dynamicRender",["forbidden","required"])}}class tx extends Jt{constructor(e){super(fe,"embed")}}class nx extends Jt{constructor(e){super(fe,"encrypt")}}class sx extends V{constructor(e){super(fe,"encryption",!0),this.encrypt=null,this.encryptionLevel=null,this.permissions=null}}class ax extends xt{constructor(e){super(fe,"encryptionLevel",["40bit","128bit"])}}class ix extends it{constructor(e){super(fe,"enforce")}}class rx extends V{constructor(e){super(fe,"equate"),this.force=Ve({data:e.force,defaultValue:1,validate:n=>n===0}),this.from=e.from||"",this.to=e.to||""}}class ox extends V{constructor(e){super(fe,"equateRange"),this.from=e.from||"",this.to=e.to||"",this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],n=/U\+([0-9a-fA-F]+)/,s=this._unicodeRange;for(let a of s.split(",").map(i=>i.trim()).filter(Boolean))a=a.split("-",2).map(i=>{const r=i.match(n);return r?parseInt(r[1],16):0}),a.length===1&&a.push(a[0]),e.push(a);return ue(this,"unicodeRange",e)}}class fx extends Et{constructor(e){super(fe,"exclude")}[vt](){this[se]=this[se].trim().split(/\s+/).filter(e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e))}}class lx extends it{constructor(e){super(fe,"excludeNS")}}class cx extends xt{constructor(e){super(fe,"flipLabel",["usePrinterSetting","on","off"])}}class hx extends V{constructor(e){super(fe,"fontInfo",!0),this.embed=null,this.map=null,this.subsetBelow=null,this.alwaysEmbed=new E,this.defaultTypeface=new E,this.neverEmbed=new E}}class ux extends Jt{constructor(e){super(fe,"formFieldFilling")}}class dx extends it{constructor(e){super(fe,"groupParent")}}class mx extends xt{constructor(e){super(fe,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class px extends it{constructor(e){super(fe,"includeXDPContent")}}class gx extends xt{constructor(e){super(fe,"incrementalLoad",["none","forwardOnly"])}}class bx extends Jt{constructor(e){super(fe,"incrementalMerge")}}class wx extends Jt{constructor(e){super(fe,"interactive")}}class xx extends xt{constructor(e){super(fe,"jog",["usePrinterSetting","none","pageSet"])}}class jx extends V{constructor(e){super(fe,"labelPrinter",!0),this.name=re(e.name,["zpl","dpl","ipl","tcpl"]),this.batchOutput=null,this.flipLabel=null,this.fontInfo=null,this.xdc=null}}class kx extends xt{constructor(e){super(fe,"layout",["paginate","panel"])}}class yx extends xs{constructor(e){super(fe,"level",0,n=>n>0)}}class qx extends Jt{constructor(e){super(fe,"linearized")}}class vx extends it{constructor(e){super(fe,"locale")}}class Sx extends it{constructor(e){super(fe,"localeSet")}}class Ax extends V{constructor(e){super(fe,"log",!0),this.mode=null,this.threshold=null,this.to=null,this.uri=null}}class Ix extends V{constructor(e){super(fe,"map",!0),this.equate=new E,this.equateRange=new E}}class Cx extends V{constructor(e){super(fe,"mediumInfo",!0),this.map=null}}class Tx extends V{constructor(e){super(fe,"message",!0),this.msgId=null,this.severity=null}}class Bx extends V{constructor(e){super(fe,"messaging",!0),this.message=new E}}class Fx extends xt{constructor(e){super(fe,"mode",["append","overwrite"])}}class Rx extends Jt{constructor(e){super(fe,"modifyAnnots")}}class Hx extends xs{constructor(e){super(fe,"msgId",1,n=>n>=1)}}class Ex extends it{constructor(e){super(fe,"nameAttr")}}class Mx extends Et{constructor(e){super(fe,"neverEmbed")}}class Dx extends xs{constructor(e){super(fe,"numberOfCopies",null,n=>n>=2&&n<=5)}}class _x extends V{constructor(e){super(fe,"openAction",!0),this.destination=null}}class Px extends V{constructor(e){super(fe,"output",!0),this.to=null,this.type=null,this.uri=null}}class Nx extends it{constructor(e){super(fe,"outputBin")}}class Ox extends V{constructor(e){super(fe,"outputXSL",!0),this.uri=null}}class Lx extends xt{constructor(e){super(fe,"overprint",["none","both","draw","field"])}}class zx extends it{constructor(e){super(fe,"packets")}[vt](){this[se]!=="*"&&(this[se]=this[se].trim().split(/\s+/).filter(e=>["config","datasets","template","xfdf","xslt"].includes(e)))}}class Ux extends V{constructor(e){super(fe,"pageOffset"),this.x=Ve({data:e.x,defaultValue:"useXDCSetting",validate:n=>!0}),this.y=Ve({data:e.y,defaultValue:"useXDCSetting",validate:n=>!0})}}class Gx extends it{constructor(e){super(fe,"pageRange")}[vt](){const e=this[se].trim().split(/\s+/).map(s=>parseInt(s,10)),n=[];for(let s=0,a=e.length;s!1)}}class $x extends V{constructor(e){super(fe,"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 Xx extends V{constructor(e){super(fe,"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 Yx extends V{constructor(e){super(fe,"pdfa",!0),this.amd=null,this.conformance=null,this.includeXDPContent=null,this.part=null}}class Jx extends V{constructor(e){super(fe,"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 Qx extends Jt{constructor(e){super(fe,"pickTrayByPDFSize")}}class Zx extends it{constructor(e){super(fe,"picture")}}class e2 extends Jt{constructor(e){super(fe,"plaintextMetadata")}}class t2 extends xt{constructor(e){super(fe,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class n2 extends V{constructor(e){super(fe,"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 E,this.labelPrinter=new E,this.pcl=new E,this.pdf=new E,this.ps=new E,this.submitUrl=new E,this.webClient=new E,this.zpl=new E}}class s2 extends Jt{constructor(e){super(fe,"print")}}class a2 extends Jt{constructor(e){super(fe,"printHighQuality")}}class i2 extends xt{constructor(e){super(fe,"printScaling",["appdefault","noScaling"])}}class r2 extends it{constructor(e){super(fe,"printerName")}}class o2 extends it{constructor(e){super(fe,"producer")}}class f2 extends V{constructor(e){super(fe,"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 l2 extends Et{constructor(e){super(fe,"range")}[vt](){this[se]=this[se].split(",",2).map(e=>e.split("-").map(n=>parseInt(n.trim(),10))).filter(e=>e.every(n=>!isNaN(n))).map(e=>(e.length===1&&e.push(e[0]),e))}}class c2 extends Et{constructor(e){super(fe,"record")}[vt](){this[se]=this[se].trim();const e=parseInt(this[se],10);!isNaN(e)&&e>=0&&(this[se]=e)}}class h2 extends Et{constructor(e){super(fe,"relevant")}[vt](){this[se]=this[se].trim().split(/\s+/)}}class u2 extends Et{constructor(e){super(fe,"rename")}[vt](){this[se]=this[se].trim(),(this[se].toLowerCase().startsWith("xml")||/[\p{L}_][\p{L}\d._\p{M}-]*/u.test(this[se]))&&H("XFA - Rename: invalid XFA name")}}class d2 extends xt{constructor(e){super(fe,"renderPolicy",["server","client"])}}class m2 extends xt{constructor(e){super(fe,"runScripts",["both","client","none","server"])}}class p2 extends V{constructor(e){super(fe,"script",!0),this.currentPage=null,this.exclude=null,this.runScripts=null}}class g2 extends xt{constructor(e){super(fe,"scriptModel",["XFA","none"])}}class b2 extends xt{constructor(e){super(fe,"severity",["ignore","error","information","trace","warning"])}}class w2 extends V{constructor(e){super(fe,"silentPrint",!0),this.addSilentPrint=null,this.printerName=null}}class x2 extends V{constructor(e){super(fe,"staple"),this.mode=re(e.mode,["usePrinterSetting","on","off"])}}class j2 extends it{constructor(e){super(fe,"startNode")}}class k2 extends xs{constructor(e){super(fe,"startPage",0,n=>!0)}}class y2 extends xt{constructor(e){super(fe,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class q2 extends it{constructor(e){super(fe,"submitUrl")}}class v2 extends xs{constructor(e){super(fe,"subsetBelow",100,n=>n>=0&&n<=100)}}class S2 extends Jt{constructor(e){super(fe,"suppressBanner")}}class A2 extends Jt{constructor(e){super(fe,"tagged")}}class I2 extends V{constructor(e){super(fe,"template",!0),this.base=null,this.relevant=null,this.startPage=null,this.uri=null,this.xsl=null}}class C2 extends xt{constructor(e){super(fe,"threshold",["trace","error","information","warning"])}}class T2 extends xt{constructor(e){super(fe,"to",["null","memory","stderr","stdout","system","uri"])}}class B2 extends V{constructor(e){super(fe,"templateCache"),this.maxEntries=Ve({data:e.maxEntries,defaultValue:5,validate:n=>n>=0})}}class F2 extends V{constructor(e){super(fe,"trace",!0),this.area=new E}}class R2 extends V{constructor(e){super(fe,"transform",!0),this.groupParent=null,this.ifEmpty=null,this.nameAttr=null,this.picture=null,this.presence=null,this.rename=null,this.whitespace=null}}class H2 extends xt{constructor(e){super(fe,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class E2 extends it{constructor(e){super(fe,"uri")}}class M2 extends xt{constructor(e){super(fe,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class D2 extends Et{constructor(e){super(fe,"validateApprovalSignatures")}[vt](){this[se]=this[se].trim().split(/\s+/).filter(e=>["docReady","postSign"].includes(e))}}class _2 extends xt{constructor(e){super(fe,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class P2 extends xt{constructor(e){super(fe,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class N2 extends V{constructor(e){super(fe,"VersionControl"),this.outputBelow=re(e.outputBelow,["warn","error","update"]),this.sourceAbove=re(e.sourceAbove,["warn","error"]),this.sourceBelow=re(e.sourceBelow,["update","maintain"])}}class O2 extends V{constructor(e){super(fe,"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 L2 extends V{constructor(e){super(fe,"webClient",!0),this.name=e.name?e.name.trim():"",this.fontInfo=null,this.xdc=null}}class z2 extends xt{constructor(e){super(fe,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class U2 extends Et{constructor(e){super(fe,"window")}[vt](){const e=this[se].split(",",2).map(n=>parseInt(n.trim(),10));if(e.some(n=>isNaN(n))){this[se]=[0,0];return}e.length===1&&e.push(e[0]),this[se]=e}}class G2 extends V{constructor(e){super(fe,"xdc",!0),this.uri=new E,this.xsl=new E}}class W2 extends V{constructor(e){super(fe,"xdp",!0),this.packets=null}}class K2 extends V{constructor(e){super(fe,"xsl",!0),this.debug=null,this.uri=null}}class V2 extends V{constructor(e){super(fe,"zpl",!0),this.name=e.name?e.name.trim():"",this.batchOutput=null,this.flipLabel=null,this.fontInfo=null,this.xdc=null}}class B0{static[bs](e,n){if(Object.hasOwn(B0,e))return B0[e](n)}static acrobat(e){return new bw(e)}static acrobat7(e){return new ww(e)}static ADBE_JSConsole(e){return new xw(e)}static ADBE_JSDebugger(e){return new jw(e)}static addSilentPrint(e){return new kw(e)}static addViewerPreferences(e){return new yw(e)}static adjustData(e){return new qw(e)}static adobeExtensionLevel(e){return new vw(e)}static agent(e){return new Sw(e)}static alwaysEmbed(e){return new Aw(e)}static amd(e){return new Iw(e)}static area(e){return new Cw(e)}static attributes(e){return new Tw(e)}static autoSave(e){return new Bw(e)}static base(e){return new Fw(e)}static batchOutput(e){return new Rw(e)}static behaviorOverride(e){return new Hw(e)}static cache(e){return new Ew(e)}static change(e){return new Mw(e)}static common(e){return new Dw(e)}static compress(e){return new _w(e)}static compressLogicalStructure(e){return new Pw(e)}static compressObjectStream(e){return new Nw(e)}static compression(e){return new Ow(e)}static config(e){return new Lw(e)}static conformance(e){return new zw(e)}static contentCopy(e){return new Uw(e)}static copies(e){return new Gw(e)}static creator(e){return new Ww(e)}static currentPage(e){return new Kw(e)}static data(e){return new Vw(e)}static debug(e){return new $w(e)}static defaultTypeface(e){return new Xw(e)}static destination(e){return new Yw(e)}static documentAssembly(e){return new Jw(e)}static driver(e){return new Qw(e)}static duplexOption(e){return new Zw(e)}static dynamicRender(e){return new ex(e)}static embed(e){return new tx(e)}static encrypt(e){return new nx(e)}static encryption(e){return new sx(e)}static encryptionLevel(e){return new ax(e)}static enforce(e){return new ix(e)}static equate(e){return new rx(e)}static equateRange(e){return new ox(e)}static exclude(e){return new fx(e)}static excludeNS(e){return new lx(e)}static flipLabel(e){return new cx(e)}static fontInfo(e){return new hx(e)}static formFieldFilling(e){return new ux(e)}static groupParent(e){return new dx(e)}static ifEmpty(e){return new mx(e)}static includeXDPContent(e){return new px(e)}static incrementalLoad(e){return new gx(e)}static incrementalMerge(e){return new bx(e)}static interactive(e){return new wx(e)}static jog(e){return new xx(e)}static labelPrinter(e){return new jx(e)}static layout(e){return new kx(e)}static level(e){return new yx(e)}static linearized(e){return new qx(e)}static locale(e){return new vx(e)}static localeSet(e){return new Sx(e)}static log(e){return new Ax(e)}static map(e){return new Ix(e)}static mediumInfo(e){return new Cx(e)}static message(e){return new Tx(e)}static messaging(e){return new Bx(e)}static mode(e){return new Fx(e)}static modifyAnnots(e){return new Rx(e)}static msgId(e){return new Hx(e)}static nameAttr(e){return new Ex(e)}static neverEmbed(e){return new Mx(e)}static numberOfCopies(e){return new Dx(e)}static openAction(e){return new _x(e)}static output(e){return new Px(e)}static outputBin(e){return new Nx(e)}static outputXSL(e){return new Ox(e)}static overprint(e){return new Lx(e)}static packets(e){return new zx(e)}static pageOffset(e){return new Ux(e)}static pageRange(e){return new Gx(e)}static pagination(e){return new Wx(e)}static paginationOverride(e){return new Kx(e)}static part(e){return new Vx(e)}static pcl(e){return new $x(e)}static pdf(e){return new Xx(e)}static pdfa(e){return new Yx(e)}static permissions(e){return new Jx(e)}static pickTrayByPDFSize(e){return new Qx(e)}static picture(e){return new Zx(e)}static plaintextMetadata(e){return new e2(e)}static presence(e){return new t2(e)}static present(e){return new n2(e)}static print(e){return new s2(e)}static printHighQuality(e){return new a2(e)}static printScaling(e){return new i2(e)}static printerName(e){return new r2(e)}static producer(e){return new o2(e)}static ps(e){return new f2(e)}static range(e){return new l2(e)}static record(e){return new c2(e)}static relevant(e){return new h2(e)}static rename(e){return new u2(e)}static renderPolicy(e){return new d2(e)}static runScripts(e){return new m2(e)}static script(e){return new p2(e)}static scriptModel(e){return new g2(e)}static severity(e){return new b2(e)}static silentPrint(e){return new w2(e)}static staple(e){return new x2(e)}static startNode(e){return new j2(e)}static startPage(e){return new k2(e)}static submitFormat(e){return new y2(e)}static submitUrl(e){return new q2(e)}static subsetBelow(e){return new v2(e)}static suppressBanner(e){return new S2(e)}static tagged(e){return new A2(e)}static template(e){return new I2(e)}static templateCache(e){return new B2(e)}static threshold(e){return new C2(e)}static to(e){return new T2(e)}static trace(e){return new F2(e)}static transform(e){return new R2(e)}static type(e){return new H2(e)}static uri(e){return new E2(e)}static validate(e){return new M2(e)}static validateApprovalSignatures(e){return new D2(e)}static validationMessaging(e){return new _2(e)}static version(e){return new P2(e)}static versionControl(e){return new N2(e)}static viewerPreferences(e){return new O2(e)}static webClient(e){return new L2(e)}static whitespace(e){return new z2(e)}static window(e){return new U2(e)}static xdc(e){return new G2(e)}static xdp(e){return new W2(e)}static xsl(e){return new K2(e)}static zpl(e){return new V2(e)}}const ns=Yt.connectionSet.id;class $2 extends V{constructor(e){super(ns,"connectionSet",!0),this.wsdlConnection=new E,this.xmlConnection=new E,this.xsdConnection=new E}}class X2 extends V{constructor(e){super(ns,"effectiveInputPolicy"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Y2 extends V{constructor(e){super(ns,"effectiveOutputPolicy"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class J2 extends it{constructor(e){super(ns,"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 Q2 extends it{constructor(e){super(ns,"rootElement"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Z2 extends it{constructor(e){super(ns,"soapAction"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class e9 extends it{constructor(e){super(ns,"soapAddress"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class t9 extends it{constructor(e){super(ns,"uri"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class n9 extends it{constructor(e){super(ns,"wsdlAddress"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class s9 extends V{constructor(e){super(ns,"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 a9 extends V{constructor(e){super(ns,"xmlConnection",!0),this.dataDescription=e.dataDescription||"",this.name=e.name||"",this.uri=null}}class i9 extends V{constructor(e){super(ns,"xsdConnection",!0),this.dataDescription=e.dataDescription||"",this.name=e.name||"",this.rootElement=null,this.uri=null}}class F0{static[bs](e,n){if(Object.hasOwn(F0,e))return F0[e](n)}static connectionSet(e){return new $2(e)}static effectiveInputPolicy(e){return new X2(e)}static effectiveOutputPolicy(e){return new Y2(e)}static operation(e){return new J2(e)}static rootElement(e){return new Q2(e)}static soapAction(e){return new Z2(e)}static soapAddress(e){return new e9(e)}static uri(e){return new t9(e)}static wsdlAddress(e){return new n9(e)}static wsdlConnection(e){return new s9(e)}static xmlConnection(e){return new a9(e)}static xsdConnection(e){return new i9(e)}}const mf=Yt.datasets.id;class r9 extends As{constructor(e){super(mf,"data",e)}[lr](){return!0}}class o9 extends V{constructor(e){super(mf,"datasets",!0),this.data=null,this.Signature=null}[Ss](e){const n=e[gt];(n==="data"&&e[Nt]===mf||n==="Signature"&&e[Nt]===Yt.signature.id)&&(this[n]=e),this[Ht](e)}}class R0{static[bs](e,n){if(Object.hasOwn(R0,e))return R0[e](n)}static datasets(e){return new o9(e)}static data(e){return new r9(e)}}const Mt=Yt.localeSet.id;class f9 extends V{constructor(e){super(Mt,"calendarSymbols",!0),this.name="gregorian",this.dayNames=new E(2),this.eraNames=null,this.meridiemNames=null,this.monthNames=new E(2)}}class l9 extends it{constructor(e){super(Mt,"currencySymbol"),this.name=re(e.name,["symbol","isoname","decimal"])}}class c9 extends V{constructor(e){super(Mt,"currencySymbols",!0),this.currencySymbol=new E(3)}}class h9 extends it{constructor(e){super(Mt,"datePattern"),this.name=re(e.name,["full","long","med","short"])}}class u9 extends V{constructor(e){super(Mt,"datePatterns",!0),this.datePattern=new E(4)}}class d9 extends Et{constructor(e){super(Mt,"dateTimeSymbols")}}class m9 extends it{constructor(e){super(Mt,"day")}}class p9 extends V{constructor(e){super(Mt,"dayNames",!0),this.abbr=Ve({data:e.abbr,defaultValue:0,validate:n=>n===1}),this.day=new E(7)}}class g9 extends it{constructor(e){super(Mt,"era")}}class b9 extends V{constructor(e){super(Mt,"eraNames",!0),this.era=new E(2)}}class w9 extends V{constructor(e){super(Mt,"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 x9 extends V{constructor(e){super(Mt,"localeSet",!0),this.locale=new E}}class j9 extends it{constructor(e){super(Mt,"meridiem")}}class k9 extends V{constructor(e){super(Mt,"meridiemNames",!0),this.meridiem=new E(2)}}class y9 extends it{constructor(e){super(Mt,"month")}}class q9 extends V{constructor(e){super(Mt,"monthNames",!0),this.abbr=Ve({data:e.abbr,defaultValue:0,validate:n=>n===1}),this.month=new E(12)}}class v9 extends it{constructor(e){super(Mt,"numberPattern"),this.name=re(e.name,["full","long","med","short"])}}class S9 extends V{constructor(e){super(Mt,"numberPatterns",!0),this.numberPattern=new E(4)}}class A9 extends it{constructor(e){super(Mt,"numberSymbol"),this.name=re(e.name,["decimal","grouping","percent","minus","zero"])}}class I9 extends V{constructor(e){super(Mt,"numberSymbols",!0),this.numberSymbol=new E(5)}}class C9 extends it{constructor(e){super(Mt,"timePattern"),this.name=re(e.name,["full","long","med","short"])}}class T9 extends V{constructor(e){super(Mt,"timePatterns",!0),this.timePattern=new E(4)}}class B9 extends V{constructor(e){super(Mt,"typeFace",!0),this.name=e.name|""}}class F9 extends V{constructor(e){super(Mt,"typeFaces",!0),this.typeFace=new E}}class H0{static[bs](e,n){if(Object.hasOwn(H0,e))return H0[e](n)}static calendarSymbols(e){return new f9(e)}static currencySymbol(e){return new l9(e)}static currencySymbols(e){return new c9(e)}static datePattern(e){return new h9(e)}static datePatterns(e){return new u9(e)}static dateTimeSymbols(e){return new d9(e)}static day(e){return new m9(e)}static dayNames(e){return new p9(e)}static era(e){return new g9(e)}static eraNames(e){return new b9(e)}static locale(e){return new w9(e)}static localeSet(e){return new x9(e)}static meridiem(e){return new j9(e)}static meridiemNames(e){return new k9(e)}static month(e){return new y9(e)}static monthNames(e){return new q9(e)}static numberPattern(e){return new v9(e)}static numberPatterns(e){return new S9(e)}static numberSymbol(e){return new A9(e)}static numberSymbols(e){return new I9(e)}static timePattern(e){return new C9(e)}static timePatterns(e){return new T9(e)}static typeFace(e){return new B9(e)}static typeFaces(e){return new F9(e)}}const R9=Yt.signature.id;class H9 extends V{constructor(e){super(R9,"signature",!0)}}class E0{static[bs](e,n){if(Object.hasOwn(E0,e))return E0[e](n)}static signature(e){return new H9(e)}}const E9=Yt.stylesheet.id;class M9 extends V{constructor(e){super(E9,"stylesheet",!0)}}class M0{static[bs](e,n){if(Object.hasOwn(M0,e))return M0[e](n)}static stylesheet(e){return new M9(e)}}const D9=Yt.xdp.id;class _9 extends V{constructor(e){super(D9,"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 E,this.template=null}[ff](e){const n=Yt[e[gt]];return n&&e[Nt]===n.id}}class D0{static[bs](e,n){if(Object.hasOwn(D0,e))return D0[e](n)}static xdp(e){return new _9(e)}}const P9=Yt.xhtml.id,r0=Symbol(),N9=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"]),O9=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",t=>t==="none"?"none":"normal"],["xfa-font-horizontal-scale",t=>`scaleX(${Math.max(0,parseInt(t,10)/100).toFixed(2)})`],["xfa-font-vertical-scale",t=>`scaleY(${Math.max(0,parseInt(t,10)/100).toFixed(2)})`],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(t,e)=>(t=e.fontSize=Math.abs(Se(t)),Ke(.99*t))],["letter-spacing",t=>Ke(Se(t))],["line-height",t=>Ke(Se(t))],["margin",t=>Ke(Se(t))],["margin-bottom",t=>Ke(Se(t))],["margin-left",t=>Ke(Se(t))],["margin-right",t=>Ke(Se(t))],["margin-top",t=>Ke(Se(t))],["text-indent",t=>Ke(Se(t))],["font-family",t=>t],["vertical-align",t=>Ke(Se(t))]]),L9=/\s+/g,z9=/[\r\n]+/g,U9=/\r\n?/g;function G9(t,e,n){const s=Object.create(null);if(!t)return s;const a=Object.create(null);for(const[i,r]of t.split(";").map(o=>o.split(":",2))){const o=O9.get(i);if(o==="")continue;let f=r;o&&(f=typeof o=="string"?o:o(r,a)),i.endsWith("scale")?s.transform=s.transform?`${s[i]} ${f}`:f:s[i.replaceAll(/-([a-z])/gi,(l,c)=>c.toUpperCase())]=f}if(s.fontFamily&&Qh({typeface:s.fontFamily,weight:s.fontWeight||"normal",posture:s.fontStyle||"normal",size:a.fontSize||0},e,e[qt].fontFinder,s),n&&s.verticalAlign&&s.verticalAlign!=="0px"&&s.fontSize){const o=Se(s.fontSize);s.fontSize=Ke(o*.583),s.verticalAlign=Ke(Math.sign(Se(s.verticalAlign))*o*.333)}return n&&s.fontSize&&(s.fontSize=`calc(${s.fontSize} * var(--total-scale-factor))`),Xh(s),s}function W9(t){return t.style?t.style.split(";").filter(e=>!!e.trim()).map(e=>e.split(":",2).map(n=>n.trim())).filter(([e,n])=>(e==="font-family"&&t[qt].usedTypefaces.add(n),N9.has(e))).map(e=>e.join(":")).join(";"):""}const K9=new Set(["body","html"]);class Wn extends As{constructor(e,n){super(P9,n),this[r0]=!1,this.style=e.style||""}[ts](e){super[ts](e),this.style=W9(this)}[V0](){return!K9.has(this[gt])}[Gs](e,n=!1){n?this[r0]=!0:(e=e.replaceAll(z9,""),this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll(L9," "))),e&&(this[se]+=e)}[Bs](e,n=!0){const s=Object.create(null),a={top:NaN,bottom:NaN,left:NaN,right:NaN};let i=null;for(const[r,o]of this.style.split(";").map(f=>f.split(":",2)))switch(r){case"font-family":s.typeface=X0(o);break;case"font-size":s.size=Se(o);break;case"font-weight":s.weight=o;break;case"font-style":s.posture=o;break;case"letter-spacing":s.letterSpacing=Se(o);break;case"margin":const f=o.split(/ \t/).map(Se);switch(f.length){case 1:a.top=a.bottom=a.left=a.right=f[0];break;case 2:a.top=a.bottom=f[0],a.left=a.right=f[1];break;case 3:a.top=f[0],a.bottom=f[2],a.left=a.right=f[1];break;case 4:a.top=f[0],a.left=f[1],a.bottom=f[2],a.right=f[3];break}break;case"margin-top":a.top=Se(o);break;case"margin-bottom":a.bottom=Se(o);break;case"margin-left":a.left=Se(o);break;case"margin-right":a.right=Se(o);break;case"line-height":i=Se(o);break}if(e.pushData(s,a,i),this[se])e.addString(this[se]);else for(const r of this[xn]()){if(r[gt]==="#text"){e.addString(r[se]);continue}r[Bs](e)}n&&e.popFont()}[Oe](e){const n=[];if(this[U]={children:n},this[pa]({}),n.length===0&&!this[se])return Re.EMPTY;let s;return this[r0]?s=this[se]?this[se].replaceAll(U9,` +`):void 0:s=this[se]||void 0,Re.success({name:this[gt],attributes:{href:this.href,style:G9(this.style,this,this[r0])},children:n,value:s})}}class V9 extends Wn{constructor(e){super(e,"a"),this.href=Zh(e.href)||""}}class $9 extends Wn{constructor(e){super(e,"b")}[Bs](e){e.pushFont({weight:"bold"}),super[Bs](e),e.popFont()}}class X9 extends Wn{constructor(e){super(e,"body")}[Oe](e){const n=super[Oe](e),{html:s}=n;return s?(s.name="div",s.attributes.class=["xfaRich"],n):Re.EMPTY}}class Y9 extends Wn{constructor(e){super(e,"br")}[Xt](){return` +`}[Bs](e){e.addString(` +`)}[Oe](e){return Re.success({name:"br"})}}class J9 extends Wn{constructor(e){super(e,"html")}[Oe](e){const n=[];if(this[U]={children:n},this[pa]({}),n.length===0)return Re.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[se]||""});if(n.length===1){const s=n[0];if(s.attributes?.class.includes("xfaRich"))return Re.success(s)}return Re.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:n})}}class Q9 extends Wn{constructor(e){super(e,"i")}[Bs](e){e.pushFont({posture:"italic"}),super[Bs](e),e.popFont()}}class Z9 extends Wn{constructor(e){super(e,"li")}}class e3 extends Wn{constructor(e){super(e,"ol")}}class t3 extends Wn{constructor(e){super(e,"p")}[Bs](e){super[Bs](e,!1),e.addString(` +`),e.addPara(),e.popFont()}[Xt](){return this[Ye]()[xn]().at(-1)===this?super[Xt]():super[Xt]()+` +`}}class n3 extends Wn{constructor(e){super(e,"span")}}class s3 extends Wn{constructor(e){super(e,"sub")}}class a3 extends Wn{constructor(e){super(e,"sup")}}class i3 extends Wn{constructor(e){super(e,"ul")}}class Ii{static[bs](e,n){if(Object.hasOwn(Ii,e))return Ii[e](n)}static a(e){return new V9(e)}static b(e){return new $9(e)}static body(e){return new X9(e)}static br(e){return new Y9(e)}static html(e){return new J9(e)}static i(e){return new Q9(e)}static li(e){return new Z9(e)}static ol(e){return new e3(e)}static p(e){return new t3(e)}static span(e){return new n3(e)}static sub(e){return new s3(e)}static sup(e){return new a3(e)}static ul(e){return new i3(e)}}const vc={config:B0,connection:F0,datasets:R0,localeSet:H0,signature:E0,stylesheet:M0,template:T0,xdp:D0,xhtml:Ii};class Sc{constructor(e){this.namespaceId=e}[bs](e,n){return new As(this.namespaceId,e,n)}}class r3 extends V{constructor(e){super(-1,"root",Object.create(null)),this.element=null,this[ci]=e}[Ss](e){return this.element=e,!0}[vt](){super[vt](),this.element.template instanceof Yf&&(this[ci].set(Nh,this.element),this.element.template[er](this[ci]),this.element.template[ci]=this[ci])}}class o3 extends V{constructor(){super(-1,"",Object.create(null))}[Ss](e){return!1}}class f3{constructor(e=null){this._namespaceStack=[],this._nsAgnosticLevel=0,this._namespacePrefixes=new Map,this._namespaces=new Map,this._nextNsId=Math.max(...Object.values(Yt).map(({id:n})=>n)),this._currentNamespace=e||new Sc(++this._nextNsId)}buildRoot(e){return new r3(e)}build({nsPrefix:e,name:n,attributes:s,namespace:a,prefixes:i}){const r=a!==null;if(r&&(this._namespaceStack.push(this._currentNamespace),this._currentNamespace=this._searchNamespace(a)),i&&this._addNamespacePrefix(i),Object.hasOwn(s,Ha)){const l=vc.datasets,c=s[Ha];let h=null;for(const[u,d]of Object.entries(c))if(this._getNamespaceToUse(u)===l){h={xfa:d};break}h?s[Ha]=h:delete s[Ha]}const f=this._getNamespaceToUse(e)?.[bs](n,s)||new o3;return f[lr]()&&this._nsAgnosticLevel++,(r||i||f[lr]())&&(f[g0]={hasNamespace:r,prefixes:i,nsAgnostic:f[lr]()}),f}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let n=this._namespaces.get(e);if(n)return n;for(const[s,{check:a}]of Object.entries(Yt))if(a(e)){if(n=vc[s],n)return this._namespaces.set(e,n),n;break}return n=new Sc(++this._nextNsId),this._namespaces.set(e,n),n}_addNamespacePrefix(e){for(const{prefix:n,value:s}of e){const a=this._searchNamespace(s);this._namespacePrefixes.getOrInsertComputed(n,ha).push(a)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const n=this._namespacePrefixes.get(e);return n?.length>0?n.at(-1):(H(`Unknown namespace prefix: ${e}.`),null)}clean(e){const{hasNamespace:n,prefixes:s,nsAgnostic:a}=e;n&&(this._currentNamespace=this._namespaceStack.pop()),s?.forEach(({prefix:i})=>{this._namespacePrefixes.get(i).pop()}),a&&this._nsAgnosticLevel--}}class _0 extends W0{constructor(e=null,n=!1){super(),this._builder=new f3(e),this._stack=[],this._globalData={usedTypefaces:new Set},this._ids=new Map,this._current=this._builder.buildRoot(this._ids),this._errorCode=Dn.NoError,this._whiteRegex=/^\s+$/,this._nbsps=/\xa0+/g,this._richText=n}parse(e){if(this.parseXml(e),this._errorCode===Dn.NoError)return this._current[vt](),this._current.element}onText(e){if(e=e.replace(this._nbsps,n=>n.slice(1)+" "),this._richText||this._current[V0]()){this._current[Gs](e,this._richText);return}this._whiteRegex.test(e)||this._current[Gs](e.trim())}onCdata(e){this._current[Gs](e)}_mkAttributes(e,n){let s=null,a=null;const i=Object.create({});for(const{name:r,value:o}of e)if(r==="xmlns")s?H(`XFA - multiple namespace definition in <${n}>`):s=o;else if(r.startsWith("xmlns:")){const f=r.substring(6);a??=[],a.push({prefix:f,value:o})}else{const f=r.indexOf(":");if(f===-1)i[r]=o;else{const l=i[Ha]??=Object.create(null),[c,h]=[r.slice(0,f),r.slice(f+1)],u=l[c]||=Object.create(null);u[h]=o}}return[s,a,i]}_getNameAndPrefix(e,n){const s=e.indexOf(":");return s===-1?[e,null]:[e.substring(s+1),n?"":e.substring(0,s)]}onBeginElement(e,n,s){const[a,i,r]=this._mkAttributes(n,e),[o,f]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),l=this._builder.build({nsPrefix:f,name:o,attributes:r,namespace:a,prefixes:i});if(l[qt]=this._globalData,s){l[vt](),this._current[Ss](l)&&l[lf](this._ids),l[ts](this._builder);return}this._stack.push(this._current),this._current=l}onEndElement(e){const n=this._current;if(n[Nf]()&&typeof n[se]=="string"){const s=new _0;s._globalData=this._globalData;const a=s.parse(n[se]);n[se]=null,n[Ss](a)}n[vt](),this._current=this._stack.pop(),this._current[Ss](n)&&n[lf](this._ids),n[ts](this._builder)}onError(e){this._errorCode=e}}class Dr{constructor(e){try{this.root=new _0().parse(Dr._createDocument(e));const n=new pw(this.root);this.form=n.bind(),this.dataHandler=new gw(this.root,n.getData()),this.form[qt].template=this.form}catch(n){H(`XFA - an error occurred during parsing and binding: ${n}`)}}isValid(){return!!(this.root&&this.form)}_createPagesHelper(){const e=this.form[Lh]();return new Promise((n,s)=>{const a=()=>{try{const i=e.next();i.done?n(i.value):setTimeout(a,0)}catch(i){s(i)}};setTimeout(a,0)})}async _createPages(){try{this.pages=await this._createPagesHelper(),this.dims=this.pages.children.map(e=>{const{width:n,height:s}=e.attributes.style;return[0,0,parseInt(n,10),parseInt(s,10)]})}catch(e){H(`XFA - an error occurred during layout: ${e}`)}}getBoundingBox(e){return this.dims[e]}async getNumPages(){return this.pages||await this._createPages(),this.dims.length}setImages(e){this.form[qt].images=e}setFonts(e){this.form[qt].fontFinder=new yg(e);const n=[];for(let s of this.form[qt].usedTypefaces)s=X0(s),this.form[qt].fontFinder.find(s)||n.push(s);return n.length>0?n:null}appendFonts(e,n){this.form[qt].fontFinder.add(e,n)}async getPages(){this.pages||await this._createPages();const e=this.pages;return this.pages=null,e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e.get("/xdp:xdp")?e.values().join(""):e.get("xdp:xdp")}static getRichTextAsHtml(e){if(!e||typeof e!="string")return null;try{let n=new _0(Ii,!0).parse(e);if(!["body","xhtml"].includes(n[gt])){const r=Ii.body({});r[Ht](n),n=r}const s=n[Oe]();if(!s.success)return null;const{html:a}=s,{attributes:i}=a;return i&&(i.class&&=i.class.filter(r=>!r.startsWith("xfa")),i.dir="auto"),{html:a,str:n[Xt]()}}catch(n){H(`XFA - an error occurred during parsing of rich text: ${n}`)}return null}}class hs{static createGlobals(e){return Promise.all([e.ensureCatalog("acroForm"),e.ensureDoc("xfaDatasets"),e.ensureCatalog("structTreeRoot"),e.ensureCatalog("baseUrl"),e.ensureCatalog("attachments"),e.ensureCatalog("globalColorSpaceCache")]).then(([n,s,a,i,r,o])=>({pdfManager:e,catalog:e.pdfDocument.catalog,acroForm:n instanceof B?n:B.empty,xfaDatasets:s,structTreeRoot:a,baseUrl:i,attachments:r,globalColorSpaceCache:o}),n=>(H(`createGlobals: "${n}".`),null))}static async create(e,n,s,a,i,r,o,f){const l=i?await this._getPageIndex(e,n,s.pdfManager):null;return s.pdfManager.ensure(this,"_create",[e,n,s,a,i,r,o,l,f])}static _create(e,n,s,a,i=!1,r=null,o=null,f=null,l=null){const c=e.fetchIfRef(n);if(!(c instanceof B))return;let h=c.get("Subtype");if(h=h instanceof J?h.name:null,o&&!o.has(_c[h?.toUpperCase()]))return null;const{acroForm:u,pdfManager:d}=s,p=n instanceof Q?n.toString():`annot_${a.createObjId()}`,m={xref:e,ref:n,dict:c,subtype:h,id:p,annotationGlobals:s,collectFields:i,orphanFields:r,needAppearances:!i&&u.get("NeedAppearances")===!0,pageIndex:f,evaluatorOptions:d.evaluatorOptions,pageRef:l};switch(h){case"Link":return new m3(m);case"Text":return new d3(m);case"Widget":let b=rn({dict:c,key:"FT"});switch(b=b instanceof J?b.name:null,b){case"Tx":return new c3(m);case"Btn":return new h3(m);case"Ch":return new u3(m);case"Sig":return new xu(m)}return H(`Unimplemented widget field type "${b}", falling back to base field type.`),new ps(m);case"Popup":return new Zf(m);case"FreeText":return new Fo(m);case"Line":return new p3(m);case"Square":return new g3(m);case"Circle":return new b3(m);case"PolyLine":return new ju(m);case"Polygon":return new ku(m);case"Caret":return new w3(m);case"Ink":return new Xi(m);case"Highlight":return new Ro(m);case"Underline":return new x3(m);case"Squiggly":return new j3(m);case"StrikeOut":return new k3(m);case"Stamp":return new Yi(m);case"FileAttachment":return new y3(m);case"RichMedia":return new el(m);case"Screen":return new tl(m);case"Sound":return new q3(m);default:return i||H(h?`Unimplemented annotation type "${h}", falling back to base annotation.`:"Annotation is missing the required /Subtype."),new Fi(m)}}static async _getPageIndex(e,n,s){try{const a=await e.fetchIfRefAsync(n);if(!(a instanceof B))return-1;const i=a.getRaw("P");if(i instanceof Q)try{return await s.ensureCatalog("getPageIndex",[i])}catch(o){ut(`_getPageIndex -- not a valid page reference: "${o}".`)}if(a.has("Kids"))return-1;const r=await s.ensureDoc("numPages");for(let o=0;on/255)||e}function _r(t,e){const n=t.getArray("QuadPoints");if(!Rt(n,null)||n.length===0||n.length%8>0)return null;const s=new Float32Array(n.length);for(let a=0,i=n.length;ae[2]||be[3]))return null;s.set([p,w,m,w,p,b,m,b],a)}return s}function pf(t,e,n){const s=w0.slice();ft.axialAlignedBoundingBox(e,n,s);const[a,i,r,o]=s;if(a===r||i===o)return[1,0,0,1,t[0],t[1]];const f=(t[2]-t[0])/(r-a),l=(t[3]-t[1])/(o-i);return[f,0,0,l,t[0]-a*f,t[1]-i*l]}function gf(t,e,n=!1){e.push(`${jt(t[4])} ${jt(t[5])} m`);for(let s=6,a=t.length;s=0?d:-1,n.structTreeRoot.addAnnotationIdToPage(e.pageRef,d,this.ref)}if(e.collectFields){const d=s.get("Kids");if(Array.isArray(d)){const p=[];for(const m of d)m instanceof Q&&p.push(m.toString());p.length!==0&&(this.data.kidIds=p)}this.data.actions=N0(o,s,Pc),this.data.fieldName=this._constructFieldName(s),this.data.pageIndex=e.pageIndex}const u=s.get("IT");u instanceof J&&(this.data.it=u.name),this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported,this._fallbackFontDict=null,this._needAppearances=!1}_getOperatorListNoAppearance(){return{opList:new Cn,separateForm:!1,separateCanvas:!1}}_hasFlag(e,n){return!!(e&n)}_buildFlags(e,n){let{flags:s}=this;return e===void 0?n===void 0?void 0:n?s&-5:s&-3|Kt.PRINT:e?(s|=Kt.PRINT,n?s&-33|Kt.HIDDEN:s&-3|Kt.NOVIEW):(s&=-35,n?s&-5:s|Kt.PRINT)}_isViewable(e){return!this._hasFlag(e,Kt.INVISIBLE)&&!this._hasFlag(e,Kt.NOVIEW)}_isPrintable(e){return this._hasFlag(e,Kt.PRINT)&&!this._hasFlag(e,Kt.HIDDEN)&&!this._hasFlag(e,Kt.INVISIBLE)}mustBeViewed(e,n){const s=e?.get(this.data.id)?.noView;return s!==void 0?!s:this.viewable&&!this._hasFlag(this.flags,Kt.HIDDEN)}mustBePrinted(e){const n=e?.get(this.data.id)?.noPrint;return n!==void 0?!n:this.printable}mustBeViewedWhenEditing(e,n=null){return e?!this.data.isEditable:!n?.has(this.data.id)}get viewable(){return this.data.quadPoints===null?!1:this.flags===0?!0:this._isViewable(this.flags)}get printable(){return this.data.quadPoints===null||this.flags===0?!1:this._isPrintable(this.flags)}_parseStringHelper(e){const n=typeof e=="string"?Xe(e):"",s=n&&Mf(n).dir==="rtl"?"rtl":"ltr";return{str:n,dir:s}}setDefaultAppearance(e){const{dict:n,annotationGlobals:s}=e,a=rn({dict:n,key:"DA"})||s.acroForm.get("DA");this._defaultAppearance=typeof a=="string"?a:"",this.data.defaultAppearanceData=Df(this._defaultAppearance)}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate=typeof e=="string"?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0,this.flags&Kt.INVISIBLE&&this.constructor.name!=="Annotation"&&(this.flags^=Kt.INVISIBLE)}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){this.rectangle=Cs(e,[0,0,0,0])}setColor(e){this.color=La(e)}setLineEndings(e){if(this.lineEndings=["None","None"],Array.isArray(e)&&e.length===2)for(let n=0;n<2;n++){const s=e[n];if(s instanceof J)switch(s.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[n]=s.name;continue}H(`Ignoring invalid lineEnding: ${s}`)}}setRotation(e,n){this.rotation=0;let s=e instanceof B?e.get("R")||0:n.get("Rotate")||0;Number.isInteger(s)&&s!==0&&(s%=360,s<0&&(s+=360),s%90===0&&(this.rotation=s))}setBorderAndBackgroundColors(e){e instanceof B?(this.borderColor=La(e.getArray("BC"),null),this.backgroundColor=La(e.getArray("BG"),null)):this.borderColor=this.backgroundColor=null}setBorderStyle(e){if(this.borderStyle=new l3,e instanceof B)if(e.has("BS")){const n=e.get("BS");if(n instanceof B){const s=n.get("Type");(!s||ze(s,"Border"))&&(this.borderStyle.setWidth(n.get("W"),this.rectangle),this.borderStyle.setStyle(n.get("S")),this.borderStyle.setDashArray(n.getArray("D")))}}else if(e.has("Border")){const n=e.getArray("Border");Array.isArray(n)&&(n.length>=3?(this.borderStyle.setHorizontalCornerRadius(n[0]),this.borderStyle.setVerticalCornerRadius(n[1]),this.borderStyle.setWidth(n[2],this.rectangle),n.length===4&&this.borderStyle.setDashArray(n[3],!0)):n.length===0&&this.borderStyle.setWidth(0))}else this.borderStyle.setWidth(0)}setAppearance(e){const n=e.get("AP");if(!(n instanceof B))return;const s=n.get("N");if(s instanceof Pe){this.appearance=s;return}if(!(s instanceof B))return;const a=e.get("AS");if(!(a instanceof J))return;const i=s.get(a.name);i instanceof Pe&&(this.appearance=i)}#e(e,n){if(n.has("OC"))try{this._oc=Bh(e,n.get("OC"),null)}catch(s){if(s instanceof kt)throw s;H(`#setOptionalContent: ${s}`)}}async loadResources(e,n){const s=await n.dict.getAsync("Resources");return s&&await qi.load(s,e,s.xref),s}get _ownCanvasRequiresForms(){return!1}async getOperatorList(e,n,s,a){const{hasOwnCanvas:i,id:r,rect:o}=this.data;let f=this.appearance;const l=!!(i&&s&an.DISPLAY&&(!this._ownCanvasRequiresForms||s&an.ANNOTATIONS_FORMS));if(l&&(this.width===0||this.height===0))return this.data.hasOwnCanvas=!1,this._getOperatorListNoAppearance();if(!f){if(!l)return this._getOperatorListNoAppearance();f=new hn("",new B)}const c=f.dict,h=await this.loadResources(Oo,f),u=dr(c.getArray("BBox"),[0,0,this.width,this.height]),d=Ps(c.getArray("Matrix"),Zn),p=pf(o,u,d),m=new Cn,b=this._oc;return b!==void 0&&m.addOp(C.beginMarkedContentProps,["OC",b]),m.addOp(C.beginAnnotation,[r,o,p,d,l]),await e.getOperatorList({stream:f,task:n,resources:h,operatorList:m,fallbackFontDict:this._fallbackFontDict}),m.addOp(C.endAnnotation,[]),b!==void 0&&m.addOp(C.endMarkedContent,[]),this.reset(),{opList:m,separateForm:!1,separateCanvas:l}}async save(e,n,s,a){return null}get overlaysTextContent(){return!1}get hasTextContent(){return!1}async extractTextContent(e,n,s){if(!this.appearance)return;const a=await this.loadResources(Lo,this.appearance),i=[],r=[];let o=1/0,f=1/0,l=null;const c={desiredSize:Math.Infinity,ready:!0,enqueue(h,u){for(const d of h.items)d.str!==void 0&&(o=Math.min(o,d.transform[4]),f=Math.min(f,d.transform[5]),r.push(d.str),d.hasEOL&&(i.push(r.join("").trimEnd()),r.length=0))}};if(await e.getTextContent({stream:this.appearance,task:n,resources:a,includeMarkedContent:!0,keepWhiteSpace:!0,sink:c,viewBox:s}),this.reset(),o!==1/0&&(l=[o,f]),r.length&&i.push(r.join("").trimEnd()),i.length>1||i[0]){const h=this.appearance.dict,u=dr(h.getArray("BBox"),null),d=Ps(h.getArray("Matrix"),null);this.data.textPosition=this._transformPoint(l,u,d),this.data.textContent=i}}_transformPoint(e,n,s){const{rect:a}=this.data;n||=[0,0,1,1],s||=[1,0,0,1,0,0];const i=pf(a,n,s);i[4]-=a[0],i[5]-=a[1];const r=e.slice();return ft.applyTransform(r,i),ft.applyTransform(r,s),r}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"))return H("Unknown field name, falling back to empty field name."),"";if(!e.has("Parent"))return Xe(e.get("T"));const n=[];e.has("T")&&n.unshift(Xe(e.get("T")));let s=e;const a=new bt;for(e.objId&&a.put(e.objId);s.has("Parent")&&(s=s.get("Parent"),!(!(s instanceof B)||s.objId&&a.has(s.objId)));)s.objId&&a.put(s.objId),s.has("T")&&n.unshift(Xe(s.get("T")));return n.join(".")}_getAttachmentId(e,n,s,a=!1){if(e instanceof B)return n instanceof Q||(n=Sn.pickPlatformItem(e.get("EF"),!0)),n instanceof Q?s.catalog.getAttachmentIdForAnnotation(n,a):void 0}get width(){return this.data.rect[2]-this.data.rect[0]}get height(){return this.data.rect[3]-this.data.rect[1]}}class l3{width=1;rawWidth=1;style=Ja.SOLID;dashArray=[3];horizontalCornerRadius=0;verticalCornerRadius=0;setWidth(e,n=[0,0,0,0]){if(e instanceof J){this.width=0;return}if(typeof e=="number"){if(e>0){this.rawWidth=e;const s=(n[2]-n[0])/2,a=(n[3]-n[1])/2;s>0&&a>0&&(e>s||e>a)&&(H(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`),e=1)}this.width=e}}setStyle(e){if(e instanceof J)switch(e.name){case"S":this.style=Ja.SOLID;break;case"D":this.style=Ja.DASHED;break;case"B":this.style=Ja.BEVELED;break;case"I":this.style=Ja.INSET;break;case"U":this.style=Ja.UNDERLINE;break}}setDashArray(e,n=!1){if(Array.isArray(e)){let s=!0,a=!0;for(const i of e)if(+i>=0)i>0&&(a=!1);else{s=!1;break}e.length===0||s&&!a?(this.dashArray=e,n&&this.setStyle(J.get("D"))):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 Nn extends Fi{constructor(e){super(e);const{dict:n}=e;if(n.has("IRT")){const a=n.getRaw("IRT");this.data.inReplyTo=a instanceof Q?a.toString():null;const i=n.get("RT");this.data.replyType=i instanceof J?i.name:_o.REPLY}let s=null;if(this.data.replyType===_o.GROUP){const a=n.get("IRT");this.setTitle(a.get("T")),this.data.titleObj=this._title,this.setContents(a.get("Contents")),this.data.contentsObj=this._contents,a.has("CreationDate")?(this.setCreationDate(a.get("CreationDate")),this.data.creationDate=this.creationDate):this.data.creationDate=null,a.has("M")?(this.setModificationDate(a.get("M")),this.data.modificationDate=this.modificationDate):this.data.modificationDate=null,s=a.getRaw("Popup"),a.has("C")?(this.setColor(a.getArray("C")),this.data.color=this.color):this.data.color=null}else this.data.titleObj=this._title,this.setCreationDate(n.get("CreationDate")),this.data.creationDate=this.creationDate,s=n.getRaw("Popup"),n.has("C")||(this.data.color=null);this.data.popupRef=s instanceof Q?s.toString():null,n.has("RC")&&(this.data.richText=Dr.getRichTextAsHtml(n.get("RC")))}setCreationDate(e){this.creationDate=typeof e=="string"?e:null}_setDefaultAppearance({xref:e,extra:n,strokeColor:s,fillColor:a,blendMode:i,strokeAlpha:r,fillAlpha:o,pointsCallback:f}){const l=this.data.rect=ca.slice(),c=["q"];n&&c.push(n),s&&c.push(`${s[0]} ${s[1]} ${s[2]} RG`),a&&c.push(`${a[0]} ${a[1]} ${a[2]} rg`);const h=this.data.quadPoints||Float32Array.from([this.rectangle[0],this.rectangle[3],this.rectangle[2],this.rectangle[3],this.rectangle[0],this.rectangle[1],this.rectangle[2],this.rectangle[1]]);for(let j=0,k=h.length;jthis._decodeFormValue(s)).filter(s=>s!==null);return n.length>0?n:null}else{if(e instanceof J)return e.name;if(typeof e=="string")return Xe(e)}return null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}_isViewable(e){return!0}mustBeViewed(e,n){return n?this.viewable:super.mustBeViewed(e,n)&&!this._hasFlag(this.flags,Kt.NOVIEW)}getRotationMatrix(e){let n=e?.get(this.data.id)?.rotation;return n===void 0&&(n=this.rotation),n===0?Zn:k0(n,this.width,this.height)}getBorderAndBackgroundAppearances(e){let n=e?.get(this.data.id)?.rotation;if(n===void 0&&(n=this.rotation),!this.backgroundColor&&!this.borderColor)return"";const s=n===0||n===180?`0 0 ${this.width} ${this.height} re`:`0 0 ${this.height} ${this.width} re`;let a="";if(this.backgroundColor&&(a=`${Ts(this.backgroundColor,!0)} ${s} f `),this.borderColor){const i=this.borderStyle.width||1;a+=`${i} w ${Ts(this.borderColor,!1)} ${s} S `}return a}async getOperatorList(e,n,s,a){if(s&an.ANNOTATIONS_FORMS&&!(this instanceof xu)&&!this.data.noHTML&&!this.data.hasOwnCanvas){const d=this._getOperatorListNoAppearance();return d.separateForm=!0,d}if(!this._hasText)return super.getOperatorList(e,n,s,a);const i=await this._getAppearance(e,n,s,a);if(this.appearance&&i===null)return super.getOperatorList(e,n,s,a);const r=new Cn;if(!this._defaultAppearance||i===null)return{opList:r,separateForm:!1,separateCanvas:!1};const o=!!(this.data.hasOwnCanvas&&s&an.DISPLAY),f=[1,0,0,1,0,0],l=[0,0,this.width,this.height],c=pf(this.data.rect,l,f),h=this._oc;h!==void 0&&r.addOp(C.beginMarkedContentProps,["OC",h]),r.addOp(C.beginAnnotation,[this.data.id,this.data.rect,c,this.getRotationMatrix(a),o]);const u=new hn(i);return await e.getOperatorList({stream:u,task:n,resources:this._fieldResources.mergedResources,operatorList:r}),r.addOp(C.endAnnotation,[]),h!==void 0&&r.addOp(C.endMarkedContent,[]),{opList:r,separateForm:!1,separateCanvas:o}}_getMKDict(e){const n=new B(null);return e&&n.set("R",e),n.setIfArray("BC",un(this.borderColor)),n.setIfArray("BG",un(this.backgroundColor)),n.size>0?n:null}amendSavedDict(e,n){}setValue(e,n,s,a){const{dict:i,ref:r}=n1(e,this.ref,s);if(!i)e.set("V",n);else if(!a.has(r)){const o=i.clone();return o.set("V",n),a.put(r,{data:o}),o}return null}async save(e,n,s,a){const i=s?.get(this.data.id),r=this._buildFlags(i?.noView,i?.noPrint);let o=i?.value,f=i?.rotation;if(o===this.data.fieldValue||o===void 0){if(!this._hasValueFromXFA&&f===void 0&&r===void 0)return;o||=this.data.fieldValue}if(f===void 0&&!this._hasValueFromXFA&&Array.isArray(o)&&Array.isArray(this.data.fieldValue)&&za(o,this.data.fieldValue)&&r===void 0)return;f===void 0&&(f=this.rotation);let l=null;if(!this._needAppearances&&(l=await this._getAppearance(e,n,an.SAVE,s),l===null&&r===void 0))return;let c=!1;l?.needAppearances&&(c=!0,l=null);const{xref:h}=e,u=h.fetchIfRef(this.ref);if(!(u instanceof B))return;const d=new B(h);for(const[w,x]of u.getRawEntries())w!=="AP"&&d.set(w,x);if(r!==void 0&&(d.set("F",r),l===null&&!c)){const w=u.getRaw("AP");w&&d.set("AP",w)}const p={path:this.data.fieldName,value:o},m=this.setValue(d,Array.isArray(o)?o.map(Zt):Zt(o),h,a);this.amendSavedDict(s,m||d);const b=this._getMKDict(f);if(b&&d.set("MK",b),a.put(this.ref,{data:d,xfa:p,needAppearances:c}),l!==null){const w=h.getNewTemporaryRef(),x=new B(h);d.set("AP",x),x.set("N",w);const j=this._getSaveFieldResources(h),k=new B(h);k.setIfName("Subtype","Form"),k.set("Resources",j);const y=f%180===0?[0,0,this.width,this.height]:[0,0,this.height,this.width];k.set("BBox",y);const q=new hn(l,k),v=this.getRotationMatrix(s);v!==Zn&&k.set("Matrix",v),a.put(w,{data:q,xfa:null,needAppearances:!1})}d.set("M",`D:${ua()}`)}async _getAppearance(e,n,s,a){if(this.data.password)return null;const i=a?.get(this.data.id);let r,o;if(i&&(r=i.formattedValue||i.value,o=i.rotation),o===void 0&&r===void 0&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const f=this.getBorderAndBackgroundAppearances(a);if(r===void 0&&(r=this.data.fieldValue,!r))return`/Tx BMC q ${f}Q EMC`;if(Array.isArray(r)&&r.length===1&&(r=r[0]),Ct(typeof r=="string","Expected `value` to be a string."),r=r.trimEnd(),this.data.combo&&(r=this.data.options.find(({exportValue:K})=>r===K)?.displayValue||r),r==="")return`/Tx BMC q ${f}Q EMC`;o===void 0&&(o=this.rotation);let l=-1,c;this.data.multiLine?(c=r.split(/\r\n?|\n/).map($=>$.normalize("NFC")),l=c.length):c=[r.replace(/\r\n?|\n/,"").normalize("NFC")];const h=1,u=2;let{width:d,height:p}=this;(o===90||o===270)&&([d,p]=[p,d]),this._defaultAppearance||(this.data.defaultAppearanceData=Df(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let m=await ps._getFontData(e,n,this.data.defaultAppearanceData,this._fieldResources.mergedResources),b,w,x;const j=[];let k=!1;for(const $ of c){const K=m.encodeString($);K.length>1&&(k=!0),j.push(K.join(""))}if(k&&s&an.SAVE)return{needAppearances:!0};if(k&&this._isOffscreenCanvasSupported){const $=this.data.comb?"monospace":"sans-serif",K=new ra(e.xref,$),oe=K.createFontResources(c.join("")),me=oe.getRaw("Font");if(this._fieldResources.mergedResources.has("Font")){const ye=this._fieldResources.mergedResources.get("Font");for(const[Be,ae]of me.getRawEntries())ye.set(Be,ae)}else this._fieldResources.mergedResources.set("Font",me);const X=K.fontName.name;m=await ps._getFontData(e,n,{fontName:X,fontSize:0},oe);for(let ye=0,Be=j.length;ye2)return`/Tx BMC q ${f}BT `+b+` 1 0 0 1 ${jt(u)} ${jt(M)} Tm (${ji(j[0])}) Tj ET Q EMC`;const N={shift:0},D=this._renderText(j[0],m,w,d,v,N,u,M);return`/Tx BMC q ${f}BT `+b+` 1 0 0 1 0 0 Tm ${D} ET Q EMC`}static async _getFontData(e,n,s,a){const i=new Cn,r={font:null,clone(){return this}},{fontName:o,fontSize:f}=s;return await e.handleSetFont(a,[o&&J.get(o),f],null,i,n,r,null),r.font}_getTextWidth(e,n){return Math.sumPrecise(n.charsToGlyphs(e).map(s=>s.width))/1e3}_computeFontSize(e,n,s,a,i){let{fontSize:r}=this.data.defaultAppearanceData,o=(r||12)*1.35,f=Math.round(e/o);if(!r){const l=u=>Math.floor(u*100)/100;if(i===-1){const u=this._getTextWidth(s,a);r=l(Math.min(e/1.35,n/u)),f=1}else{const u=s.split(/\r\n?|\n/),d=[];for(const m of u){const b=a.encodeString(m).join(""),w=a.charsToGlyphs(b),x=a.getCharPositions(b);d.push({line:b,glyphs:w,positions:x})}const p=m=>{let b=0;for(const w of d){const x=this._splitLine(null,a,m,n,w);if(b+=x.length*m,b>e)return!0}return!1};for(f=Math.max(f,i);;){if(o=e/f,r=l(o/1.35),p(r)){f++;continue}break}}const{fontName:c,fontColor:h}=this.data.defaultAppearanceData;this._defaultAppearance=ng({fontSize:r,fontName:c,fontColor:h})}return[this._defaultAppearance,r,e/f]}_renderText(e,n,s,a,i,r,o,f){let l;if(i===1){const h=this._getTextWidth(e,n)*s;l=(a-h)/2}else if(i===2){const h=this._getTextWidth(e,n)*s;l=a-h-o}else l=o;const c=jt(l-r.shift);return r.shift=l,f=jt(f),`${c} ${f} Td (${ji(e)}) Tj`}_getSaveFieldResources(e){const{localResources:n,appearanceResources:s,acroFormResources:a}=this._fieldResources,i=this.data.defaultAppearanceData?.fontName;if(!i)return n||B.empty;for(const r of[n,s])if(r instanceof B){const o=r.get("Font");if(o instanceof B&&o.has(i))return r}if(a instanceof B){const r=a.get("Font");if(r instanceof B&&r.has(i)){const o=new B(e);o.set(i,r.getRaw(i));const f=new B(e);return f.set("Font",o),B.merge({xref:e,dictArray:[f,n],mergeSubDicts:!0})}}return n||B.empty}getFieldObject(){return null}}class c3 extends ps{constructor(e){super(e);const{dict:n}=e;n.has("PMD")&&(this.flags|=Kt.HIDDEN,this.data.hidden=!0,H("Barcodes are not supported")),this.data.hasOwnCanvas=this.data.readOnly&&!this.data.noHTML,this._hasText=!0,typeof this.data.fieldValue!="string"&&(this.data.fieldValue="");let s=rn({dict:n,key:"Q"});(!Number.isInteger(s)||s<0||s>2)&&(s=null),this.data.textAlignment=s;let a=rn({dict:n,key:"MaxLen"});(!Number.isInteger(a)||a<0)&&(a=0),this.data.maxLen=a,this.data.multiLine=this.hasFieldFlag(ms.MULTILINE),this.data.comb=this.hasFieldFlag(ms.COMB)&&!this.data.multiLine&&!this.data.password&&!this.hasFieldFlag(ms.FILESELECT)&&this.data.maxLen!==0,this.data.doNotScroll=this.hasFieldFlag(ms.DONOTSCROLL);const{actions:i}=this.data;if(!i)return;const r=/^AF(Date|Time)_(?:Keystroke|Format)(?:Ex)?\(['"]?([^'"]+)['"]?\);$/;let o=!1;const f=i.get("Format"),l=i.get("Keystroke");(f?.length===1&&l?.length===1&&r.test(f[0])&&r.test(l[0])||f?.length===0&&l?.length===1&&r.test(l[0])||l?.length===0&&f?.length===1&&r.test(f[0]))&&(o=!0);const c=[];f&&c.push(...f),l&&c.push(...l),o&&(i.delete("Keystroke"),i.set("Format",c));for(const h of c){const u=h.match(r);if(!u)continue;const d=u[1]==="Date";let p=u[2];const m=parseInt(p,10);if(!isNaN(m)&&Math.floor(Math.log10(m))+1===u[2].length&&(p=(d?sg:ag)[m]??p),this.data.datetimeFormat=p,!o)break;if(d){/HH|MM|ss|h/.test(p)?(this.data.datetimeType="datetime-local",this.data.timeStep=/ss/.test(p)?1:60):this.data.datetimeType="date";break}this.data.datetimeType="time",this.data.timeStep=/ss/.test(p)?1:60;break}}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,n,s,a,i,r,o,f,l){const c=i/this.data.maxLen,h=this.getBorderAndBackgroundAppearances(l),u=n.getCharPositions(s).map(([x,j])=>{const k=s.substring(x,j);return{glyph:k,width:this._getTextWidth(k,n)*a}});f&&u.reverse();const d=c*u.length;let p=0;o===1?p+=Math.floor((i-d)/(2*c))*c:o===2&&(p+=i-d);const m=[];let b=0;for(let x=0,j=u.length;xa?(l.push(e.substring(d,w)),d=w,p=k,c=-1,u=-1):(p+=k,c=w,h=x,u=m):p+k>a?c!==-1?(l.push(e.substring(d,h)),d=h,m=u+1,c=-1,p=0):(l.push(e.substring(d,w)),d=w,p=k):p+=k}return df?`\\${f}`:"\\s+");new RegExp(`^\\s*${r}\\s*$`).test(this.data.fieldValue)&&(this.data.textContent=this.data.fieldValue.split(` +`))}getFieldObject(){return{id:this.data.id,value:this.data.fieldValue,defaultValue:this.data.defaultFieldValue||"",multiline:this.data.multiLine,password:this.data.password,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,datetimeFormat:this.data.datetimeFormat,hasDatetimeHTML:!!this.data.datetimeType,type:"text"}}}class h3 extends ps{constructor(e){super(e),this.checkedAppearance=null,this.uncheckedAppearance=null;const n=this.hasFieldFlag(ms.RADIO),s=this.hasFieldFlag(ms.PUSHBUTTON);this.data.checkBox=!n&&!s,this.data.radioButton=n&&!s,this.data.pushButton=s,this.data.isTooltipOnly=!1,this.data.hasOwnCanvas=!0,this.data.noHTML=!1,this.data.checkBox?this._processCheckBox(e):this.data.radioButton?this._processRadioButton(e):this.data.pushButton?this._processPushButton(e):H("Invalid field flags for button widget annotation")}get _ownCanvasRequiresForms(){return this.data.checkBox||this.data.radioButton}#e(e,n,s,a,i,r){if(!r)return this._getOperatorListNoAppearance();const o=this.appearance,f=Ps(r.dict.getArray("Matrix"),Zn);i&&r.dict.set("Matrix",this.getRotationMatrix(a)),this.appearance=r;const l=super.getOperatorList(e,n,s,a);return this.appearance=o,r.dict.set("Matrix",f),l}async getOperatorList(e,n,s,a){if(this.data.pushButton)return super.getOperatorList(e,n,s,!1,a);if(s&an.DISPLAY&&s&an.ANNOTATIONS_FORMS&&(this.data.checkBox||this.data.radioButton)){const o=(c,h)=>{const u=c.fnArray.indexOf(C.beginAnnotation);u!==-1&&c.argsArray[u].push(h)},f=await this.#e(e,n,s,a,null,this.checkedAppearance);o(f.opList,"checked");const l=await this.#e(e,n,s,a,null,this.uncheckedAppearance);return o(l.opList,"unchecked"),f.opList.addOpList(l.opList),f.separateForm||=l.separateForm,f.separateCanvas||=l.separateCanvas,f}let i=null,r=null;if(a){const o=a.get(this.data.id);i=o?o.value:null,r=o?o.rotation:null}return i===null&&this.appearance?super.getOperatorList(e,n,s,a):(i??=this.data.checkBox?this.data.fieldValue===this.data.exportValue:this.data.fieldValue===this.data.buttonValue,this.#e(e,n,s,a,r,i?this.checkedAppearance:this.uncheckedAppearance))}async save(e,n,s,a){if(this.data.checkBox){this._saveCheckbox(e,n,s,a);return}this.data.radioButton&&this._saveRadioButton(e,n,s,a)}async _saveCheckbox(e,n,s,a){if(!s)return;const i=s.get(this.data.id),r=this._buildFlags(i?.noView,i?.noPrint);let o=i?.rotation,f=i?.value;if(o===void 0&&r===void 0&&(f===void 0||this.data.fieldValue===this.data.exportValue===f))return;let l=e.xref.fetchIfRef(this.ref);if(!(l instanceof B))return;l=l.clone(),o===void 0&&(o=this.rotation),f===void 0&&(f=this.data.fieldValue===this.data.exportValue);const c={path:this.data.fieldName,value:f?this.data.exportValue:""},h=J.get(f?this._onStateName:"Off");this.setValue(l,h,e.xref,a),l.set("AS",h),l.set("M",`D:${ua()}`),r!==void 0&&l.set("F",r);const u=this._getMKDict(o);u&&l.set("MK",u),a.put(this.ref,{data:l,xfa:c,needAppearances:!1})}async _saveRadioButton(e,n,s,a){if(!s)return;const i=s.get(this.data.id),r=this._buildFlags(i?.noView,i?.noPrint);let o=i?.rotation,f=i?.value;if(o===void 0&&r===void 0&&(f===void 0||this.data.fieldValue===this.data.buttonValue===f))return;let l=e.xref.fetchIfRef(this.ref);if(!(l instanceof B))return;l=l.clone(),f===void 0&&(f=this.data.fieldValue===this.data.buttonValue),o===void 0&&(o=this.rotation);const c={path:this.data.fieldName,value:f?this.data.buttonValue:""},h=J.get(f?this._onStateName:"Off");f&&this.setValue(l,h,e.xref,a),l.set("AS",h),l.set("M",`D:${ua()}`),r!==void 0&&l.set("F",r);const u=this._getMKDict(o);u&&l.set("MK",u),a.put(this.ref,{data:l,xfa:c,needAppearances:!1})}_getDefaultCheckedAppearance(e,n){const{width:s,height:a}=this,i=[0,0,s,a],o=Math.min(s,a)*.8;let f,l;n==="check"?(f={width:.755*o,height:.705*o},l="3"):n==="disc"?(f={width:.791*o,height:.705*o},l="l"):st(`_getDefaultCheckedAppearance - unsupported type: ${n}`);const c=jt((s-f.width)/2),h=jt((a-f.height)/2),u=`q BT /PdfJsZaDb ${o} Tf 0 g ${c} ${h} Td (${l}) Tj ET Q`,d=new B(e.xref);d.set("FormType",1),d.setIfName("Subtype","Form"),d.setIfName("Type","XObject"),d.set("BBox",i),d.set("Matrix",[1,0,0,1,0,0]),d.set("Length",u.length);const p=new B(e.xref),m=new B(e.xref);m.set("PdfJsZaDb",this.fallbackFontDict),p.set("Font",m),d.set("Resources",p),this.checkedAppearance=new hn(u,d),this._streams.push(this.checkedAppearance)}_getOnStateName(e){const n=e.get("AP");if(!(n instanceof B))return null;const s=n.get("N");if(!(s instanceof B))return null;for(const a of s.getKeys())if(a!=="Off")return a;return null}_getExportValueForOptIndex(e,n,s){if(Number.isInteger(e)&&e>=0&&ed!=="Off");r.length=0,r.push("Off",u)}const o=r[1];this._onStateName=o;const f=rn({dict:e.dict,key:"Opt"}),l=this._getOptInfo(e.dict,o,f,e.xref);this.data.exportValue=this._getExportValue(o,l,e.xref),!r.includes(this.data.fieldValue)&&this.data.fieldValue!==this.data.exportValue&&(this.data.fieldValue="Off"),this.data.fieldValue=this._getExportValue(this.data.fieldValue,l,e.xref),this.data.defaultFieldValue=this._getExportValue(this.data.defaultFieldValue,l,e.xref);const c=s?.get(o);this.checkedAppearance=c instanceof Pe?c:null;const h=s?.get("Off");this.uncheckedAppearance=h instanceof Pe?h:null,this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check"),this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance),this._fallbackFontDict=this.fallbackFontDict,this.data.defaultFieldValue===null&&(this.data.defaultFieldValue="Off")}_processRadioButton(e){this.data.buttonValue=null;const n=e.dict.get("Parent");if(n instanceof B){this.parent=e.dict.getRaw("Parent");const c=n.get("V");c instanceof J&&(this.data.fieldValue=this._decodeFormValue(c))}const s=e.dict.get("AP");if(!(s instanceof B))return;const a=s.get("N");if(!(a instanceof B))return;let i=null;for(const c of a.getKeys())if(c!=="Off"){i=c;break}this._onStateName=i;const r=rn({dict:e.dict,key:"Opt"}),o=this._getOptInfo(e.dict,i,r,e.xref);this.data.buttonValue=this._getExportValue(i,o,e.xref),this.data.fieldValue=this._getExportValue(this.data.fieldValue,o,e.xref),this.data.defaultFieldValue=this._getExportValue(this.data.defaultFieldValue,o,e.xref);const f=a.get(i);this.checkedAppearance=f instanceof Pe?f:null;const l=a.get("Off");this.uncheckedAppearance=l instanceof Pe?l:null,this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc"),this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance),this._fallbackFontDict=this.fallbackFontDict,this.data.defaultFieldValue===null&&(this.data.defaultFieldValue="Off")}_processPushButton(e){const{dict:n,annotationGlobals:s}=e;if(!n.has("A")&&!n.has("AA")&&!this.data.alternativeText){H("Push buttons without action dictionaries are not supported");return}this.data.isTooltipOnly=!n.has("A")&&!n.has("AA"),_a.parseDestDictionary({destDict:n,resultObj:this.data,docBaseUrl:s.baseUrl,docAttachments:s.attachments})}getFieldObject(){let e="button",n;return this.data.checkBox?(e="checkbox",n=this.data.exportValue):this.data.radioButton&&(e="radiobutton",n=this.data.buttonValue),{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:n,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:e}}get fallbackFontDict(){const e=new B;return e.setIfName("BaseFont","ZapfDingbats"),e.setIfName("Type","FallbackType"),e.setIfName("Subtype","FallbackType"),e.setIfName("Encoding","ZapfDingbatsEncoding"),ue(this,"fallbackFontDict",e)}}class u3 extends ps{constructor(e){super(e);const{dict:n,xref:s}=e;this.indices=n.getArray("I"),this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0,this.data.options=[];const a=rn({dict:n,key:"Opt"});if(Array.isArray(a))for(let i=0,r=a.length;i=0&&r0&&(this.data.options=this.data.fieldValue.map(i=>({exportValue:i,displayValue:i}))),this.data.combo=this.hasFieldFlag(ms.COMBO),this.data.multiSelect=this.hasFieldFlag(ms.MULTISELECT),this._hasText=!0}getFieldObject(){const e=this.data.combo?"combobox":"listbox",n=this.data.fieldValue.length>0?this.data.fieldValue[0]:null;return{id:this.data.id,value:n,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,n){if(!this.hasIndices)return;let s=e?.get(this.data.id)?.value;Array.isArray(s)||(s=[s]);const a=[],{options:i}=this.data;for(let r=0,o=0,f=i.length;rS&&(S=N,F=M)}[m,b]=this._computeFontSize(A,c-2*l,F,p,-1)}const w=b*1.35,x=(w-b)/2,j=Math.floor(h/w);let k=0;if(d.length>0){const A=Math.min(...d),S=Math.max(...d);k=Tt(S-j+1,0,A)}const y=Math.min(k+j+1,u),q=["/Tx BMC q",`1 1 ${c} ${h} re W n`];if(d.length){q.push("0.600006 0.756866 0.854904 rg");for(const A of d)k<=A&&Al.trimEnd());const{coords:r,bbox:o,matrix:f}=ra.getFirstPositionInfo(this.rectangle,this.rotation,i);this.data.textPosition=this._transformPoint(r,o,f)}if(this._isOffscreenCanvasSupported){const r=e.dict.get("CA"),o=new ra(s,"sans-serif");this.appearance=o.createAppearance(this._contents.str,this.rectangle,this.rotation,i,a,r),this._streams.push(this.appearance)}else H("FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.")}}get hasTextContent(){return this._hasAppearance}static createNewDict(e,n,{apRef:s,ap:a}){const{color:i,date:r,fontSize:o,oldAnnotation:f,rect:l,rotation:c,user:h,value:u}=e,d=f||new B(n);d.setIfNotExists("Type",J.get("Annot")),d.setIfNotExists("Subtype",J.get("FreeText")),d.set(f?"M":"CreationDate",`D:${ua(r)}`),f&&d.delete("RC"),d.setIfArray("Rect",l);const p=`/Helv ${o} Tf ${Ts(i,!0)}`;if(d.set("DA",p),d.setIfDefined("Contents",Zt(u)),d.setIfNotExists("F",4),d.setIfNotExists("Border",[0,0,0]),d.setIfNumber("Rotate",c),d.setIfDefined("T",Zt(h)),s||a){const m=new B(n);d.set("AP",m),m.set("N",s||a)}return d}static async createNewAppearanceStream(e,n,s){const{baseFontRef:a,evaluator:i,task:r}=s,{color:o,fontSize:f,rect:l,rotation:c,value:h}=e;if(!o)return null;const u=new B(n),d=new B(n);if(a)d.set("Helv",a);else{const $e=new B(n);$e.setIfName("BaseFont","Helvetica"),$e.setIfName("Type","Font"),$e.setIfName("Subtype","Type1"),$e.setIfName("Encoding","WinAnsiEncoding"),d.set("Helv",$e)}u.set("Font",d);const p=await ps._getFontData(i,r,{fontName:"Helv",fontSize:f},u),[m,b,w,x]=l;let j=w-m,k=x-b;c%180!==0&&([j,k]=[k,j]);const y=h.split(` +`),q=f/1e3;let v=-1/0;const A=[];for(let $e of y){const tt=p.encodeString($e);if(tt.length>1)return null;$e=tt.join(""),A.push($e);let G=0;const _=p.charsToGlyphs($e);for(const L of _)G+=L.width*q;v=Math.max(v,G)}const S=v>j?j/v:1;let F=1;const M=1.35*f,N=(1.35-.35)*f,D=M*y.length;D>k&&(F=k/D);const $=Math.min(S,F),K=f*$;let oe,me,X;switch(c){case 0:X=[1,0,0,1],me=[l[0],l[1],j,k],oe=[l[0],l[3]-N];break;case 90:X=[0,1,-1,0],me=[l[1],-l[2],j,k],oe=[l[1],-l[0]-N];break;case 180:X=[-1,0,0,-1],me=[-l[2],-l[3],j,k],oe=[-l[2],-l[1]-N];break;case 270:X=[0,-1,1,0],me=[-l[3],l[0],j,k],oe=[-l[3],l[2]-N];break}const ee=["q",`${X.join(" ")} 0 0 cm`,`${me.join(" ")} re W n`,"BT",`${Ts(o,!0)}`,`0 Tc /Helv ${jt(K)} Tf`];ee.push(`${oe.join(" ")} Td (${ji(A[0])}) Tj`);const ye=jt(M);for(let $e=1,tt=A.length;$e(d.push(`${a[0]} ${a[1]} m`,`${a[2]} ${a[3]} l`,"S"),[p[0]-c,p[7]-c,p[2]+c,p[3]+c])})}}}class g3 extends Nn{constructor(e){super(e);const{dict:n,xref:s}=e;if(this.data.hasOwnCanvas=this.data.noRotate,this.data.noHTML=!1,!this.appearance){const a=un(this.color,[0,0,0]),i=n.get("CA"),r=La(n.getArray("IC"),null),o=un(r),f=o?i:null;if(this.borderStyle.width===0&&!o)return;this._setDefaultAppearance({xref:s,extra:`${this.borderStyle.width} w`,strokeColor:a,fillColor:o,strokeAlpha:i,fillAlpha:f,pointsCallback:(l,c)=>{const h=c[4]+this.borderStyle.width/2,u=c[5]+this.borderStyle.width/2,d=c[6]-c[4]-this.borderStyle.width,p=c[3]-c[7]-this.borderStyle.width;return l.push(`${h} ${u} ${d} ${p} re`),o?l.push("B"):l.push("S"),[c[0],c[7],c[2],c[3]]}})}}}class b3 extends Nn{constructor(e){super(e);const{dict:n,xref:s}=e;if(!this.appearance){const a=un(this.color,[0,0,0]),i=n.get("CA"),r=La(n.getArray("IC"),null),o=un(r),f=o?i:null;if(this.borderStyle.width===0&&!o)return;const l=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:s,extra:`${this.borderStyle.width} w`,strokeColor:a,fillColor:o,strokeAlpha:i,fillAlpha:f,pointsCallback:(c,h)=>{const u=h[0]+this.borderStyle.width/2,d=h[1]-this.borderStyle.width/2,p=h[6]-this.borderStyle.width/2,m=h[7]+this.borderStyle.width/2,b=u+(p-u)/2,w=d+(m-d)/2,x=(p-u)/2*l,j=(m-d)/2*l;return c.push(`${b} ${m} m`,`${b+x} ${m} ${p} ${w+j} ${p} ${w} c`,`${p} ${w-j} ${b+x} ${d} ${b} ${d} c`,`${b-x} ${d} ${u} ${w-j} ${u} ${w} c`,`${u} ${w+j} ${b-x} ${m} ${b} ${m} c`,"h"),o?c.push("B"):c.push("S"),[h[0],h[7],h[2],h[3]]}})}}}class ju extends Nn{constructor(e){super(e);const{dict:n,xref:s}=e;this.data.hasOwnCanvas=this.data.noRotate,this.data.noHTML=!1,this.data.vertices=null,this instanceof ku||(this.setLineEndings(n.getArray("LE")),this.data.lineEndings=this.lineEndings);const a=n.getArray("Vertices");if(!Rt(a,null))return;const i=this.data.vertices=Float32Array.from(a);if(!this.appearance){const r=un(this.color,[0,0,0]),o=n.get("CA");let f=La(n.getArray("IC"),null);f&&=un(f);let l;f?this.color?l=f.every((d,p)=>d===r[p])?"f":"B":l="f":l="S";const c=this.borderStyle.width||1,h=2*c,u=ca.slice();for(let d=0,p=i.length;d{for(let m=0,b=i.length;m{for(const u of this.data.inkLists){for(let d=0,p=u.length;d0){const b=new B(n);m.set("BS",b),b.set("W",d)}if(m.setIfArray("C",un(r)),m.setIfNumber("CA",f),a||s){const b=new B(n);m.set("AP",b),b.set("N",s||a)}return m}static async createNewAppearanceStream(e,n,s){if(e.outlines)return this.createNewAppearanceStreamForHighlight(e,n,s);const{color:a,rect:i,paths:r,thickness:o,opacity:f}=e;if(!a)return null;const l=[`${o} w 1 J 1 j`,`${Ts(a,!1)}`];f!==1&&l.push("/R0 gs");for(const u of r.lines)gf(u,l,!0);l.push("S");const c=l.join(` +`),h=new B(n);if(h.set("FormType",1),h.setIfName("Subtype","Form"),h.setIfName("Type","XObject"),h.set("BBox",i),h.set("Length",c.length),f!==1){const u=new B(n),d=new B(n),p=new B(n);p.set("CA",f),p.setIfName("Type","ExtGState"),d.set("R0",p),u.set("ExtGState",d),h.set("Resources",u)}return new hn(c,h)}static async createNewAppearanceStreamForHighlight(e,n,s){const{color:a,rect:i,outlines:{outline:r},opacity:o}=e;if(!a)return null;const f=[`${Ts(a,!0)}`,"/R0 gs"];gf(r,f),f.push("h f");const l=f.join(` +`),c=new B(n);c.set("FormType",1),c.setIfName("Subtype","Form"),c.setIfName("Type","XObject"),c.set("BBox",i),c.set("Length",l.length);const h=new B(n),u=new B(n);h.set("ExtGState",u),c.set("Resources",h);const d=new B(n);return u.set("R0",d),d.setIfName("BM","Multiply"),o!==1&&(d.set("ca",o),d.setIfName("Type","ExtGState")),new hn(l,c)}}class Ro extends Nn{constructor(e){super(e);const{dict:n,xref:s}=e;if(this.data.isEditable=!this.data.noHTML,this.data.noHTML=!1,this.data.opacity=n.get("CA")||1,this.data.quadPoints=_r(n,null)){if(!this.appearance){const i=un(this.color,[1,1,0]),r=n.get("CA");this._setDefaultAppearance({xref:s,fillColor:i,blendMode:"Multiply",fillAlpha:r,pointsCallback:(o,f)=>(o.push(`${f[0]} ${f[1]} m`,`${f[2]} ${f[3]} l`,`${f[6]} ${f[7]} l`,`${f[4]} ${f[5]} l`,"f"),[f[0],f[7],f[2],f[3]])})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}static createNewDict(e,n,{apRef:s,ap:a}){const{color:i,date:r,oldAnnotation:o,opacity:f,rect:l,rotation:c,user:h,quadPoints:u}=e,d=o||new B(n);if(d.setIfNotExists("Type",J.get("Annot")),d.setIfNotExists("Subtype",J.get("Highlight")),d.set(o?"M":"CreationDate",`D:${ua(r)}`),d.setIfArray("Rect",l),d.setIfNotExists("F",4),d.setIfNotExists("Border",[0,0,0]),d.setIfNumber("Rotate",c),d.setIfArray("QuadPoints",u),d.setIfArray("C",un(i)),d.setIfNumber("CA",f),d.setIfDefined("T",Zt(h)),s||a){const p=new B(n);d.set("AP",p),p.set("N",s||a)}return d}static async createNewAppearanceStream(e,n,s){const{color:a,rect:i,outlines:r,opacity:o}=e;if(!a)return null;const f=[`${Ts(a,!0)}`,"/R0 gs"],l=[];for(const m of r){l.length=0,l.push(`${jt(m[0])} ${jt(m[1])} m`);for(let b=2,w=m.length;b(o.push(`${f[4]} ${f[5]+1.3} m`,`${f[6]} ${f[7]+1.3} l`,"S"),[f[0],f[7],f[2],f[3]])})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}}class j3 extends Nn{constructor(e){super(e);const{dict:n,xref:s}=e;if(this.data.quadPoints=_r(n,null)){if(!this.appearance){const i=un(this.color,[0,0,0]),r=n.get("CA");this._setDefaultAppearance({xref:s,extra:"[] 0 d 1 w",strokeColor:i,strokeAlpha:r,pointsCallback:(o,f)=>{const l=(f[1]-f[5])/6;let c=l,h=f[4];const u=f[5],d=f[6];o.push(`${h} ${u+c} m`);do h+=2,c=c===0?l:0,o.push(`${h} ${u+c} l`);while(h(o.push(`${(f[0]+f[4])/2} ${(f[1]+f[5])/2} m`,`${(f[2]+f[6])/2} ${(f[3]+f[7])/2} l`,"S"),[f[0],f[7],f[2],f[3]])})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}}class Yi extends Nn{#e=null;constructor(e){super(e),this.data.hasOwnCanvas=this.data.noRotate,this.data.isEditable=!this.data.noHTML,this.data.noHTML=!1}mustBeViewedWhenEditing(e,n=null){return e?(this.data.isEditable&&(this.#e??=this.data.hasOwnCanvas,this.data.hasOwnCanvas=!0),!0):(this.#e!==null&&(this.data.hasOwnCanvas=this.#e,this.#e=null),!n?.has(this.data.id))}static createNewDict(e,n,{apRef:s,ap:a}){const{date:i,oldAnnotation:r,rect:o,rotation:f,user:l}=e,c=r||new B(n);if(c.setIfNotExists("Type",J.get("Annot")),c.setIfNotExists("Subtype",J.get("Stamp")),c.set(r?"M":"CreationDate",`D:${ua(i)}`),c.setIfArray("Rect",o),c.setIfNotExists("F",4),c.setIfNotExists("Border",[0,0,0]),c.setIfNumber("Rotate",f),c.setIfDefined("T",Zt(l)),s||a){const h=new B(n);c.set("AP",h),h.set("N",s||a)}return c}static async#t(e,n){const{areContours:s,color:a,rect:i,lines:r,thickness:o}=e;if(!a)return null;const f=[`${o} w 1 J 1 j`,`${Ts(a,s)}`];for(const h of r)gf(h,f,!0);f.push(s?"F":"S");const l=f.join(` +`),c=new B(n);return c.set("FormType",1),c.setIfName("Subtype","Form"),c.setIfName("Type","XObject"),c.set("BBox",i),c.set("Length",l.length),new hn(l,c)}static async createNewAppearanceStream(e,n,s){if(e.oldAnnotation)return null;if(e.isSignature)return this.#t(e,n);const{rotation:a}=e,{imageRef:i,width:r,height:o}=s.image,f=new B(n),l=new B(n);f.set("XObject",l),l.set("Im0",i);const c=`q ${r} 0 0 ${o} 0 0 cm /Im0 Do Q`,h=new B(n);if(h.set("FormType",1),h.setIfName("Subtype","Form"),h.setIfName("Type","XObject"),h.set("BBox",[0,0,r,o]),h.set("Resources",f),a){const u=k0(a,r,o);h.set("Matrix",u)}return new hn(c,h)}}class y3 extends Nn{constructor(e){super(e);const{annotationGlobals:n,dict:s}=e,a=s.get("FS");this.data.hasOwnCanvas=this.data.noRotate,this.data.noHTML=!1,this.data.fileId=this._getAttachmentId(a,s.getRaw("FS"),n),this.data.file=new Sn(a).serializable;const i=s.get("Name");this.data.name=i instanceof J?Xe(i.name):"PushPin";const r=s.get("ca");this.data.fillAlpha=typeof r=="number"&&r>=0&&r<=1?r:null}}class ga extends Fi{static#e=/^(?:video|audio)\//;constructor(e){super(e),this.data.noHTML=!0}_setMediaData({assetRef:e,assetDict:n,filename:s,contentType:a,wrapSound:i=!1},r){this.data.noHTML=!1,this.data.richMedia={fileId:this._getAttachmentId(n,e,r,i),filename:s,contentType:a}}static _getContentType(e,n,s=null){if(typeof s=="string"&&ga.#e.test(s))return s;const a=Sn.pickPlatformItem(e.get("EF")),i=a instanceof Pe?a.dict?.get("Subtype"):null;if(i instanceof J&&ga.#e.test(i.name))return i.name;switch(n.split(".").at(-1)?.toLowerCase()){case"mp4":case"m4v":return"video/mp4";case"webm":return"video/webm";case"ogv":return"video/ogg";case"mov":return"video/quicktime";case"mp3":return"audio/mpeg";case"m4a":return"audio/mp4";case"wav":return"audio/wav";case"oga":case"ogg":return"audio/ogg";default:return null}}}class el extends ga{constructor(e){super(e);const{dict:n,xref:s,annotationGlobals:a}=e,i=n.get("RichMediaContent");if(!(i instanceof B))return;const r=el.#e(i,s);if(!r){H("RichMedia annotation has no playable asset.");return}this._setMediaData(r,a)}static#e(e,n){const s=e.get("Configurations");if(!Array.isArray(s))return null;for(const a of s){const i=n.fetchIfRef(a);if(!(i instanceof B))continue;const r=i.get("Instances");if(Array.isArray(r))for(const o of r){const f=n.fetchIfRef(o);if(!(f instanceof B)||ze(f.get("Subtype"),"Flash"))continue;const l=f.getRaw("Asset"),c=n.fetchIfRef(l);if(!(c instanceof B)||!Sn.hasEmbeddedFile(c))continue;const{filename:h}=new Sn(c).serializable,u=ga._getContentType(c,h);if(u)return{assetRef:l instanceof Q?l:null,assetDict:c,filename:h,contentType:u}}}return null}}class tl extends ga{constructor(e){super(e);const{dict:n,xref:s,annotationGlobals:a}=e,i=tl.#e(n,s);i&&this._setMediaData(i,a)}static#e(e,n){for(const s of this.#t(e)){const a=this.#a(s.get("R"),n,new bt);if(a)return a}return null}static*#t(e){const n=e.get("A");n instanceof B&&ze(n.get("S"),"Rendition")&&this.#s(n)&&(yield n);const s=e.get("AA");if(s instanceof B)for(const[,a]of s)a instanceof B&&ze(a.get("S"),"Rendition")&&this.#s(a)&&(yield a)}static#s(e){const n=e.get("OP");return n===void 0||n===fl.PLAY_OR_RESUME||n===fl.PLAY}static#a(e,n,s){if(!(e instanceof B))return null;const a=e.get("S");if(ze(a,"MR"))return this.#n(e.get("C"),n);if(ze(a,"SR")){const i=e.get("R");if(Array.isArray(i))for(const r of i){if(r instanceof Q){if(s.has(r))continue;s.put(r)}const o=this.#a(n.fetchIfRef(r),n,s);if(o)return o}}return null}static#n(e,n){if(!(e instanceof B)||!ze(e.get("S"),"MCD"))return null;const s=e.getRaw("D"),a=n.fetchIfRef(s),i=e.get("CT");let r=typeof i=="string"?i:null,o,f;if(a instanceof Pe){o=a.dict;const c=e.get("N");if(f=typeof c=="string"?Xe(c):"",!r){const h=a.dict.get("Subtype");h instanceof J&&(r=h.name)}}else if(a instanceof B){if(!Sn.hasEmbeddedFile(a))return null;o=a,{filename:f}=new Sn(a).serializable}else return null;const l=ga._getContentType(o,f,r);return l?{assetRef:s instanceof Q?s:null,assetDict:o,filename:f,contentType:l}:null}}class q3 extends ga{constructor(e){super(e);const{dict:n,xref:s,annotationGlobals:a}=e,i=n.getRaw("Sound");if(!(i instanceof Q))return;let r;try{r=s.fetch(i)}catch(o){if(o instanceof kt)throw o;H(`SoundAnnotation: "${o}".`);return}!(r instanceof Pe)||!Mh(r.dict)||this._setMediaData({assetRef:i,assetDict:r.dict,filename:"sound.wav",contentType:"audio/wav",wrapSound:!0},a)}}const v3={get r(){return ue(this,"r",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]))},get k(){return ue(this,"k",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]))}};function na(t,e,n){let s=1732584193,a=-271733879,i=-1732584194,r=271733878;const o=n+72&-64,f=new Uint8Array(o);let l,c;for(l=0;l>5&255,f[l++]=n>>13&255,f[l++]=n>>21&255,f[l++]=n>>>29&255,l+=3;const u=new Int32Array(16),{k:d,r:p}=v3;for(l=0;l>>32-v)|0,m=y}s=s+m|0,a=a+b|0,i=i+w|0,r=r+x|0}return new Uint8Array([s&255,s>>8&255,s>>16&255,s>>>24&255,a&255,a>>8&255,a>>16&255,a>>>24&255,i&255,i>>8&255,i>>16&255,i>>>24&255,r&255,r>>8&255,r>>16&255,r>>>24&255])}function Ac(t){try{return bi(t)}catch(e){return H(`UTF-8 decoding failed: "${e}".`),t}}class S3 extends K0{node=null;onEndElement(e){const n=super.onEndElement(e);if(n&&e==="xfa:datasets")throw this.node=n,new Error("Aborting DatasetXMLParser.")}}class A3{constructor(e){if(e.datasets)this.node=new K0({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const n=new S3({hasAttributes:!0});try{n.parseFromString(e["xdp:xdp"])}catch{}this.node=n.node}}getValue(e){if(!this.node||!e)return"";const n=this.node.searchNode(Kc(e),0);return n?n.firstChild?.nodeName==="value"?n.children.map(a=>Ac(a.textContent)):Ac(n.textContent):""}}class I3{#e;minX=1/0;minY=1/0;maxX=-1/0;maxY=-1/0;#t=null;#s=[];#a=[];#n=-1;#i=!1;constructor(e){this.#e=e;const n=e.data.quadPoints;if(!n){[this.minX,this.minY,this.maxX,this.maxY]=e.data.rect;return}for(let s=0,a=n.length;s8&&(this.#t=n)}#r(e,n){if(this.minX>=e||this.maxX<=e||this.minY>=n||this.maxY<=n)return!1;const s=this.#t;if(!s)return!0;if(this.#n>=0){const a=this.#n;if(!(s[a]>=e||s[a+2]<=e||s[a+5]>=n||s[a+1]<=n))return!0;this.#n=-1}for(let a=0,i=s.length;a=e||s[a+2]<=e||s[a+5]>=n||s[a+1]<=n))return this.#n=a,!0;return!1}addGlyph(e,n,s){return this.#r(e,n)?(this.#a.length>0&&(this.#s.push(this.#a.join("")),this.#a.length=0),this.#s.push(s),this.#i=!0,!0):(this.disableExtraChars(),!1)}addExtraChar(e){this.#i&&this.#a.push(e)}disableExtraChars(){this.#i&&(this.#i=!1,this.#a.length=0)}setText(){this.#e.data.overlaidText=this.#s.join("")}}const Aa=64;class C3{#e=[];#t=[];#s;#a;#n;#i;#r;#f;constructor(e){let n=1/0,s=1/0,a=-1/0,i=-1/0;const r=this.#e;for(const o of e){if(!o.data.quadPoints&&!o.data.rect)continue;const f=new I3(o);r.push(f),n=Math.min(n,f.minX),s=Math.min(s,f.minY),a=Math.max(a,f.maxX),i=Math.max(i,f.maxY)}this.#s=n,this.#n=s,this.#a=a,this.#i=i,this.#r=(Aa-1)/(a-n),this.#f=(Aa-1)/(i-s);for(const o of r){const f=this.#o(o.minX,o.minY),l=this.#o(o.maxX,o.maxY),c=(l-f)%Aa,h=Math.floor((l-f)/Aa);for(let u=f;u<=f+h*Aa;u+=Aa)for(let d=0;d<=c;d++)(this.#t[u+d]??=[]).push(o)}}#o(e,n){const s=Math.floor((e-this.#s)*this.#r),a=Math.floor((n-this.#n)*this.#f);return s+a*Aa}addGlyph(e,n,s,a){const i=e[4]+n/2,r=e[5]+s/2;if(ithis.#a||r>this.#i)return;const o=this.#t[this.#o(i,r)];if(o)for(const f of o)f.addGlyph(i,r,a)}addExtraChar(e){for(const n of this.#e)n.addExtraChar(e)}setText(){for(const e of this.#e)e.setText()}}class be{constructor(e,n){this.high=e|0,this.low=n|0}and(e){this.high&=e.high,this.low&=e.low}xor(e){this.high^=e.high,this.low^=e.low}shiftRight(e){this.low=this.low>>>e|this.high<<32-e,this.high=this.high>>>e|0}rotateRight(e){let n,s;e&32?(s=this.low,n=this.high):(n=this.low,s=this.high),e&=31,this.low=n>>>e|s<<32-e,this.high=s>>>e|n<<32-e}not(){this.high=~this.high,this.low=~this.low}add(e){const n=(this.low>>>0)+(e.low>>>0);let s=(this.high>>>0)+(e.high>>>0);n>4294967295&&(s+=1),this.low=n|0,this.high=s|0}copyTo(e,n){e[n]=this.high>>>24&255,e[n+1]=this.high>>16&255,e[n+2]=this.high>>8&255,e[n+3]=this.high&255,e[n+4]=this.low>>>24&255,e[n+5]=this.low>>16&255,e[n+6]=this.low>>8&255,e[n+7]=this.low&255}assign(e){this.high=e.high,this.low=e.low}}const T3={get k(){return ue(this,"k",[new be(1116352408,3609767458),new be(1899447441,602891725),new be(3049323471,3964484399),new be(3921009573,2173295548),new be(961987163,4081628472),new be(1508970993,3053834265),new be(2453635748,2937671579),new be(2870763221,3664609560),new be(3624381080,2734883394),new be(310598401,1164996542),new be(607225278,1323610764),new be(1426881987,3590304994),new be(1925078388,4068182383),new be(2162078206,991336113),new be(2614888103,633803317),new be(3248222580,3479774868),new be(3835390401,2666613458),new be(4022224774,944711139),new be(264347078,2341262773),new be(604807628,2007800933),new be(770255983,1495990901),new be(1249150122,1856431235),new be(1555081692,3175218132),new be(1996064986,2198950837),new be(2554220882,3999719339),new be(2821834349,766784016),new be(2952996808,2566594879),new be(3210313671,3203337956),new be(3336571891,1034457026),new be(3584528711,2466948901),new be(113926993,3758326383),new be(338241895,168717936),new be(666307205,1188179964),new be(773529912,1546045734),new be(1294757372,1522805485),new be(1396182291,2643833823),new be(1695183700,2343527390),new be(1986661051,1014477480),new be(2177026350,1206759142),new be(2456956037,344077627),new be(2730485921,1290863460),new be(2820302411,3158454273),new be(3259730800,3505952657),new be(3345764771,106217008),new be(3516065817,3606008344),new be(3600352804,1432725776),new be(4094571909,1467031594),new be(275423344,851169720),new be(430227734,3100823752),new be(506948616,1363258195),new be(659060556,3750685593),new be(883997877,3785050280),new be(958139571,3318307427),new be(1322822218,3812723403),new be(1537002063,2003034995),new be(1747873779,3602036899),new be(1955562222,1575990012),new be(2024104815,1125592928),new be(2227730452,2716904306),new be(2361852424,442776044),new be(2428436474,593698344),new be(2756734187,3733110249),new be(3204031479,2999351573),new be(3329325298,3815920427),new be(3391569614,3928383900),new be(3515267271,566280711),new be(3940187606,3454069534),new be(4118630271,4000239992),new be(116418474,1914138554),new be(174292421,2731055270),new be(289380356,3203993006),new be(460393269,320620315),new be(685471733,587496836),new be(852142971,1086792851),new be(1017036298,365543100),new be(1126000580,2618297676),new be(1288033470,3409855158),new be(1501505948,4234509866),new be(1607167915,987167468),new be(1816402316,1246189591)])}};function B3(t,e,n,s,a){t.assign(e),t.and(n),a.assign(e),a.not(),a.and(s),t.xor(a)}function F3(t,e,n,s,a){t.assign(e),t.and(n),a.assign(e),a.and(s),t.xor(a),a.assign(n),a.and(s),t.xor(a)}function R3(t,e,n){t.assign(e),t.rotateRight(28),n.assign(e),n.rotateRight(34),t.xor(n),n.assign(e),n.rotateRight(39),t.xor(n)}function H3(t,e,n){t.assign(e),t.rotateRight(14),n.assign(e),n.rotateRight(18),t.xor(n),n.assign(e),n.rotateRight(41),t.xor(n)}function E3(t,e,n){t.assign(e),t.rotateRight(1),n.assign(e),n.rotateRight(8),t.xor(n),n.assign(e),n.shiftRight(7),t.xor(n)}function M3(t,e,n){t.assign(e),t.rotateRight(19),n.assign(e),n.rotateRight(61),t.xor(n),n.assign(e),n.shiftRight(6),t.xor(n)}function yu(t,e,n,s=!1){let a,i,r,o,f,l,c,h;s?(a=new be(3418070365,3238371032),i=new be(1654270250,914150663),r=new be(2438529370,812702999),o=new be(355462360,4144912697),f=new be(1731405415,4290775857),l=new be(2394180231,1750603025),c=new be(3675008525,1694076839),h=new be(1203062813,3204075428)):(a=new be(1779033703,4089235720),i=new be(3144134277,2227873595),r=new be(1013904242,4271175723),o=new be(2773480762,1595750129),f=new be(1359893119,2917565137),l=new be(2600822924,725511199),c=new be(528734635,4215389547),h=new be(1541459225,327033209));const u=Math.ceil((n+17)/128)*128,d=new Uint8Array(u);let p,m;for(p=0;p>>29&255,d[p++]=n>>21&255,d[p++]=n>>13&255,d[p++]=n>>5&255,d[p++]=n<<3&255;const w=new Array(80);for(p=0;p<80;p++)w[p]=new be(0,0);const{k:x}=T3;let j=new be(0,0),k=new be(0,0),y=new be(0,0),q=new be(0,0),v=new be(0,0),A=new be(0,0),S=new be(0,0),F=new be(0,0);const M=new be(0,0),N=new be(0,0),D=new be(0,0),$=new be(0,0);let K;for(p=0;p>>e|t<<32-e}function P3(t,e,n){return t&e^~t&n}function N3(t,e,n){return t&e^t&n^e&n}function O3(t){return Is(t,2)^Is(t,13)^Is(t,22)}function L3(t){return Is(t,6)^Is(t,11)^Is(t,25)}function z3(t){return Is(t,7)^Is(t,18)^t>>>3}function U3(t){return Is(t,17)^Is(t,19)^t>>>10}function bf(t,e,n){let s=1779033703,a=3144134277,i=1013904242,r=2773480762,o=1359893119,f=2600822924,l=528734635,c=1541459225;const h=Math.ceil((n+9)/64)*64,u=new Uint8Array(h);let d,p;for(d=0;d>>29&255,u[d++]=n>>21&255,u[d++]=n>>13&255,u[d++]=n>>5&255,u[d++]=n<<3&255;const b=new Uint32Array(64),{k:w}=_3;for(d=0;d>24&255,s>>16&255,s>>8&255,s&255,a>>24&255,a>>16&255,a>>8&255,a&255,i>>24&255,i>>16&255,i>>8&255,i&255,r>>24&255,r>>16&255,r>>8&255,r&255,o>>24&255,o>>16&255,o>>8&255,o&255,f>>24&255,f>>16&255,f>>8&255,f&255,l>>24&255,l>>16&255,l>>8&255,l&255,c>>24&255,c>>16&255,c>>8&255,c&255])}const Ic=512;class G3 extends jn{#e=null;constructor(e,n,s){super(n),this.stream=e,this.dict=e.dict,this.decrypt=s}readBlock(){let e=this.#e??this.stream.getBytes(Ic);if(!e.length){this.eof=!0;return}this.#e=this.stream.getBytes(Ic);const n=this.#e.length>0,s=this.decrypt;e=s(e,!n);const a=this.bufferLength,i=a+e.length;this.ensureBuffer(i).set(e,a),this.bufferLength=i}getOriginalStream(){return this}}const W3=new Set([160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8239,8287,12288]),K3=new Set([173,847,6150,6155,6156,6157,8203,8204,8205,8288,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279]);function V3(t){let e="";for(const n of t){const s=n.codePointAt(0);W3.has(s)?e+=" ":K3.has(s)||(e+=n)}return e.normalize("NFKC")}class Ia{a=0;b=0;constructor(e){const n=new Uint8Array(256),s=e.length;for(let a=0;a<256;++a)n[a]=a;for(let a=0,i=0;a<256;++a){const r=n[a];i=i+r+e[a%s]&255,n[a]=n[i],n[i]=r}this.s=n}encryptBlock(e){let n=this.a,s=this.b;const a=this.s,i=e.length,r=new Uint8Array(i);for(let o=0;on<128?n<<1:n<<1^27);constructor(){this.buffer=new Uint8Array(16),this.bufferPosition=0}_expandKey(e){st("Cannot call `_expandKey` on the base class")}_decrypt(e,n){let s,a,i;const r=new Uint8Array(16);r.set(e);for(let o=0,f=this._keySize;o<16;++o,++f)r[o]^=n[f];for(let o=this._cyclesOfRepetition-1;o>=1;--o){s=r[13],r[13]=r[9],r[9]=r[5],r[5]=r[1],r[1]=s,s=r[14],a=r[10],r[14]=r[6],r[10]=r[2],r[6]=s,r[2]=a,s=r[15],a=r[11],i=r[7],r[15]=r[3],r[11]=s,r[7]=a,r[3]=i;for(let f=0;f<16;++f)r[f]=this._inv_s[r[f]];for(let f=0,l=o*16;f<16;++f,++l)r[f]^=n[l];for(let f=0;f<16;f+=4){const l=this._mix[r[f]],c=this._mix[r[f+1]],h=this._mix[r[f+2]],u=this._mix[r[f+3]];s=l^c>>>8^c<<24^h>>>16^h<<16^u>>>24^u<<8,r[f]=s>>>24&255,r[f+1]=s>>16&255,r[f+2]=s>>8&255,r[f+3]=s&255}}s=r[13],r[13]=r[9],r[9]=r[5],r[5]=r[1],r[1]=s,s=r[14],a=r[10],r[14]=r[6],r[10]=r[2],r[6]=s,r[2]=a,s=r[15],a=r[11],i=r[7],r[15]=r[3],r[11]=s,r[7]=a,r[3]=i;for(let o=0;o<16;++o)r[o]=this._inv_s[r[o]],r[o]^=n[o];return r}_encrypt(e,n){const s=this._s;let a,i,r;const o=new Uint8Array(16);o.set(e);for(let f=0;f<16;++f)o[f]^=n[f];for(let f=1;f=d;--u)if(c[u]!==h){h=0;break}f-=h,r[r.length-1]=c.subarray(0,16-h)}}const l=new Uint8Array(f);for(let c=0,h=0,u=r.length;c=256&&(i=(i^27)&255));for(let u=0;u<4;++u)a[c]=r^=a[c-32],c++,a[c]=o^=a[c-32],c++,a[c]=f^=a[c-32],c++,a[c]=l^=a[c-32],c++}return a}}class vu{_hash(e,n,s){st("Abstract method `_hash` called")}checkOwnerPassword(e,n,s,a){const i=new Uint8Array(e.length+56);i.set(e,0),i.set(n,e.length),i.set(s,e.length+n.length);const r=this._hash(e,i,s);return za(r,a)}checkUserPassword(e,n,s){const a=new Uint8Array(e.length+8);a.set(e,0),a.set(n,e.length);const i=this._hash(e,a,[]);return za(i,s)}getOwnerKey(e,n,s,a){const i=new Uint8Array(e.length+56);i.set(e,0),i.set(n,e.length),i.set(s,e.length+n.length);const r=this._hash(e,i,s);return new wf(r).decryptBlock(a,!1,new Uint8Array(16))}getUserKey(e,n,s){const a=new Uint8Array(e.length+8);a.set(e,0),a.set(n,e.length);const i=this._hash(e,a,[]);return new wf(i).decryptBlock(s,!1,new Uint8Array(16))}}class X3 extends vu{_hash(e,n,s){return bf(n,0,n.length)}}class Y3 extends vu{_hash(e,n,s){let a=bf(n,0,n.length).subarray(0,32),i=[0],r=0;for(;r<64||i.at(-1)>r-32;){const o=e.length+a.length+s.length,f=new Uint8Array(o);let l=0;f.set(e,l),l+=e.length,f.set(a,l),l+=a.length,f.set(s,l);const c=new Uint8Array(o*64);for(let d=0,p=0;d<64;d++,p+=o)c.set(f,p);i=new qu(a.subarray(0,16)).encrypt(c,a.subarray(16,32));const u=Math.sumPrecise(i.slice(0,16))%3;u===0?a=bf(i,0,i.length):u===1?a=D3(i,0,i.length):u===2&&(a=yu(i,0,i.length)),r++}return a.subarray(0,32)}}class Cc{#e=new Map;embeddedFilterName=null;constructor(e,n=null,s=null){this.resolveCipher=e,this.streamFilterName=s,this.stringFilterName=n}#t(e=null){const n=e instanceof J?e.name:"__default__";return this.#e.getOrInsertComputed(n,()=>this.resolveCipher(e))}createStream(e,n,s=null){const a=this.embeddedFilterName&&wi(e.dict,"EmbeddedFile")?this.embeddedFilterName:this.streamFilterName,i=this.#t(s||a),r=new i;return new G3(e,n,function(f,l){return r.decryptBlock(f,l)})}decryptString(e){const n=this.#t(this.stringFilterName),s=new n;let a=Bt(e);return a=s.decryptBlock(a,!0),An(a)}encryptString(e){const n=this.#t(this.stringFilterName),s=new n;if(s instanceof nl){const r=16-e.length%16;e+=String.fromCharCode(r).repeat(r);const o=new Uint8Array(16);crypto.getRandomValues(o);let f=Bt(e);f=s.encrypt(f,o);const l=new Uint8Array(16+f.length);return l.set(o),l.set(f,16),An(l)}let a=Bt(e);return a=s.encrypt(a),An(a)}}function Ho(t){try{t=Po(t)}catch{H("CipherTransformFactory: Unable to convert UTF8 encoded password.")}return Bt(t)}class Fa{#e;static get _defaultPasswordBytes(){return ue(this,"_defaultPasswordBytes",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]))}#t(e,n,s,a,i,r,o,f,l,c,h,u){if(n){const p=Math.min(127,n.length);n=n.subarray(0,p)}else n=[];const d=e===6?new Y3:new X3;return d.checkUserPassword(n,f,o)?d.getUserKey(n,l,h):n.length&&d.checkOwnerPassword(n,a,r,s)?d.getOwnerKey(n,i,r,c):null}#s(e,n,s,a,i,r,o,f){const l=40+s.length+e.length,c=new Uint8Array(l);let h=0,u,d;if(n)for(d=Math.min(32,n.length);h>8&255,c[h++]=i>>16&255,c[h++]=i>>>24&255,c.set(e,h),h+=e.length,r>=4&&!f&&(c.fill(255,h,h+4),h+=4);let p=na(c,0,h);const m=o>>3;if(r>=3)for(u=0;u<50;++u)p=na(p,0,m);const b=p.subarray(0,m);let w,x;if(r>=3){h=0,c.set(Fa._defaultPasswordBytes,h),h+=32,c.set(e,h),h+=e.length,w=new Ia(b),x=w.encryptBlock(na(c,0,h)),d=b.length;const j=new Uint8Array(d);for(u=1;u<=19;++u){for(let k=0;ka[k]===j)?b:null}#a(e,n,s,a){const i=new Uint8Array(32);let r=0;const o=Math.min(32,e.length);for(;r>3;if(s>=3)for(f=0;f<50;++f)l=na(l,0,l.length);let h,u;if(s>=3){u=n;const d=new Uint8Array(c);for(f=19;f>=0;f--){for(let p=0;p>8&255,r[o++]=e>>16&255,r[o++]=n&255,r[o++]=n>>8&255,a&&(r[o++]=115,r[o++]=65,r[o++]=108,r[o++]=84),na(r,0,o).subarray(0,Math.min(i+5,16))}constructor(e,n,s){const a=e.get("Filter");if(!ze(a,"Standard"))throw new Y("unknown encryption method");this.filterName=a.name,this.dict=e,this.#e=n;const i=e.get("V");if(!Number.isInteger(i)||i!==1&&i!==2&&i!==4&&i!==5)throw new Y("unsupported encryption algorithm");this.algorithm=i;let r=e.get("Length");if(!r)if(i<=3)r=40;else{const q=e.get("CF"),v=e.get("StmF");q instanceof B&&v instanceof J&&(q.suppressEncryption=!0,r=q.get(v.name)?.get("Length")||128,r<40&&(r<<=3))}if(!Number.isInteger(r)||r<40||r%8!==0)throw new Y("invalid key length");let o=null,f=J.get("Identity"),l=J.get("Identity"),c=f;i>=4&&(o=e.get("CF"),o instanceof B&&(o.suppressEncryption=!0),f=e.get("StmF")||J.get("Identity"),l=e.get("StrF")||J.get("Identity"),c=e.get("EFF")||f),this.cf=o,this.stmf=f,this.strf=l,this.eff=c;const h=Bt(e.get("O")),u=Bt(e.get("U")),d=h.subarray(0,32),p=u.subarray(0,32),m=e.get("P"),b=e.get("R"),w=(i===4||i===5)&&e.get("EncryptMetadata")!==!1;this.encryptMetadata=w;const x=Bt(n);let j,k;if(s)if(b===6){const q=V3(s);j=Ho(q),q!==s&&(k=Ho(s))}else i===5?j=Ho(s):j=Bt(s);let y;if(i!==5)y=this.#s(x,j,d,p,m,b,r,w);else{const q=h.subarray(32,40),v=h.subarray(40,48),A=u.subarray(0,48),S=u.subarray(32,40),F=u.subarray(40,48),M=Bt(e.get("OE")),N=Bt(e.get("UE")),D=Bt(e.get("Perms"));for(const $ of k?[j,k]:[j])if(y=this.#t(b,$,d,q,v,A,p,S,F,M,N,D),y)break}if(!y){if(!s){if(this.algorithm>=4&&ze(this.stmf,"Identity")&&ze(this.strf,"Identity")){const A=this.cf?.get(this.eff.name)?.get("AuthEvent");if(ze(A,"EFOpen")){this.encryptionKey=null;return}}throw new Os("No password given",f0.NEED_PASSWORD)}const q=this.#a(j,d,b,r);y=this.#s(x,q,d,p,m,b,r,w)}if(!y)throw new Os("Incorrect Password",f0.INCORRECT_PASSWORD);i===4&&y.length<16?(this.encryptionKey=new Uint8Array(16),this.encryptionKey.set(y)):this.encryptionKey=y}setPassword(e){const n=new Fa(this.dict,this.#e,e);this.encryptionKey=n.encryptionKey}createCipherTransform(e,n){if(this.algorithm===4||this.algorithm===5){const a=r=>{if(!(r instanceof J))throw new Y("Invalid crypt filter name.");const f=this.cf.get(r.name)?.get("CFM");if(!f||f.name==="None")return $3;if(!this.encryptionKey)throw new Os("No password given",f0.NEED_PASSWORD);if(this.algorithm===5||f.name==="AESV3")return wf.bind(null,this.encryptionKey);if(f.name==="V2")return Ia.bind(null,this.#n(e,n,this.encryptionKey,!1));if(f.name==="AESV2")return qu.bind(null,this.#n(e,n,this.encryptionKey,!0));throw new Y("Unknown crypto method")},i=new Cc(a,this.strf,this.stmf);return i.embeddedFilterName=this.eff,i}const s=()=>Ia.bind(null,this.#n(e,n,this.encryptionKey,!1));return new Cc(s)}}class J3{#e=new Map;#t=[];#s=null;#a=null;#n=!1;#i=new bt;#r=null;#f=new Set;#o=!0;#l=new Set;constructor(e,n){this.stream=e,this.pdfManager=n}getNewPersistentRef(e){this.#s===null&&(this.#s=this.#t.length||1);const n=this.#s++;return this.#e.set(n,e),Q.get(n,0)}getNewTemporaryRef(){if(this.#a===null&&(this.#a=this.#t.length||1,this.#s)){this.#r=new Map;for(let e=this.#a;e0;){const[o,f]=r;if(!Number.isInteger(o)||!Number.isInteger(f))throw new Y(`Invalid XRef range fields: ${o}, ${f}`);if(!Number.isInteger(s)||!Number.isInteger(a)||!Number.isInteger(i))throw new Y(`Invalid XRef entry fields length: ${o}, ${f}`);for(let l=n.entryNum;l=F.length);)N+=String.fromCharCode(D),D=F[M];return N}function f(F,M,N){const D=N.length,$=F.length;let K=0;for(;M<$;){let oe=0;for(;oe=D)break;M++,K++}return K}const l=/\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g,c=/\b(startxref|\d+\s+\d+\s+obj)\b/g,h=/^(\d+)\s+(\d+)\s+obj\b/,u=new Uint8Array([116,114,97,105,108,101,114]),d=new Uint8Array([115,116,97,114,116,120,114,101,102]),p=new Uint8Array([47,88,82,101,102]);this.#t.length=0,this.#e.clear();const m=this.stream;m.pos=0;const b=m.getBytes(),w=An(b),x=b.length;let j=m.start;const k=[],y=[];for(;j=x)break;F=b[j]}while(F!==10&&F!==13);continue}const M=o(b,j);let N;if(M.startsWith("xref")&&(M.length===4||/\s/.test(M[4])))j+=f(b,j,u),k.push(j),j+=f(b,j,d);else if(N=h.exec(M)){const D=N[1]|0,$=N[2]|0,K=j+M.length;let oe,me=!1;if(!this.#t[D])me=!0;else if(this.#t[D].gen===$)try{new Zs({lexer:new cs(m.makeSubStream(K))}).getObj(),me=!0}catch(Be){Be instanceof zo?H(`indexObjects -- checking object (${M}): "${Be}".`):me=!0}me&&(this.#t[D]={offset:j-m.start,gen:$,free:!1,uncompressed:!0}),l.lastIndex=K;const X=l.exec(w);X?(oe=l.lastIndex+1-j,X[1]!=="endobj"&&(H(`indexObjects: Found "${X[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`),oe-=X[1].length+1)):oe=x-j;const ee=b.subarray(j,j+oe),ye=f(ee,0,p);ye=n&&!this.#l.has(a)&&s++;return s}getEntry(e){const n=this.#t[e];return n&&!n.free&&n.offset?n:null}fetchIfRef(e,n=!1){return e instanceof Q?this.fetch(e,n):e}fetch(e,n=!1){if(!(e instanceof Q))throw new Error("ref object is not a reference");const s=e.num,a=this.#e.get(s);if(a!==void 0)return a instanceof B&&!a.objId&&(a.objId=e.toString()),a;let i=this.getEntry(s);if(i===null)return i;if(this.#i.has(e))return this.#i.remove(e),H(`Ignoring circular reference: ${e}.`),Xu;this.#i.put(e);try{i=i.uncompressed?this.fetchUncompressed(e,i,n):this.fetchCompressed(e,i,n),this.#i.remove(e)}catch(r){throw this.#i.remove(e),r}return i instanceof B?i.objId=e.toString():i instanceof Pe&&(i.dict.objId=e.toString()),i}fetchUncompressed(e,n,s=!1){const a=e.gen;let i=e.num;if(n.gen!==a){const h=`Inconsistent generation in XRef: ${e}`;if(this._generationFallback&&n.gen0&&n[3]-n[1]>0)return n;H(`Empty, or invalid, /${e} entry.`)}return null}get mediaBox(){return ue(this,"mediaBox",this.getBoundingBox("MediaBox")||Su)}get cropBox(){return ue(this,"cropBox",this.getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){const e=this.pageDict.get("UserUnit");return ue(this,"userUnit",typeof e=="number"&&e>0?e:1)}get view(){const{cropBox:e,mediaBox:n}=this;if(e!==n&&!za(e,n)){const s=ft.intersect(e,n);if(s&&s[2]-s[0]>0&&s[3]-s[1]>0)return ue(this,"view",s);H("Empty /CropBox and /MediaBox intersection.")}return ue(this,"view",n)}get rotate(){let e=this.#t("Rotate")||0;return e%90!==0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360),ue(this,"rotate",e)}#s(e,n){if(this.evaluatorOptions.ignoreErrors){H(`getContentStream - ignoring sub-stream (${n}): "${e}".`);return}throw e}async getContentStream(){const e=await this.pdfManager.ensure(this,"content");if(e instanceof Pe&&!e.isImageStream){if(e.isAsync){const n=await e.asyncGetBytes();if(n)return new yt(n,0,n.length,e.dict)}return e}if(Array.isArray(e)){const n=[];for(let s=0,a=e.length;s{r&&(e[s]=new yt(r,0,r.length,i.dict))}))}return n.length>0&&await Promise.all(n),new N1(e,this.#s.bind(this))}return new Ko}get xfaData(){return ue(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}async#a(e,n,s){const a=[];for(const i of e){if(!i.id)continue;const r=Q.fromString(i.id);if(!r){H(`A non-linked annotation cannot be modified: ${i.id}`);continue}if(i.deleted){if(n.put(r),i.popupRef){const o=Q.fromString(i.popupRef);o&&n.put(o)}continue}if(i.popup?.deleted){const o=Q.fromString(i.popupRef);o&&n.put(o)}s?.put(r),i.ref=r,a.push(this.xref.fetchAsync(r).then(o=>{o instanceof B&&(i.oldAnnotation=o.clone())},()=>{H(`Cannot fetch \`oldAnnotation\` for: ${r}.`)})),delete i.id}await Promise.all(a)}async saveNewAnnotations(e,n,s,a,i){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const r=this._createPartialEvaluator(e),o=new bt,f=new bt;await this.#a(s,o,f);const l=this.pageDict,c=this.annotations.filter(d=>!(d instanceof Q&&o.has(d))),h=await hs.saveNewAnnotations(r,this.xref,n,s,a,i);for(const{ref:d}of h.annotations)d instanceof Q&&!f.has(d)&&c.push(d);const u=l.clone();u.set("Annots",c),i.put(this.ref,{data:u});for(const d of o)i.put(d,{data:null})}async save(e,n,s,a){const i=this._createPartialEvaluator(e),r=await this._parsedAnnotations,o=[];for(const f of r)o.push(f.save(i,n,s,a).catch(function(l){return H(`save - ignoring annotation data during "${n.name}" task: "${l}".`),null}));return Promise.all(o)}async loadResources(e){await(this.#e??=this.pdfManager.ensure(this,"resources")),await qi.load(this.resources,e,this.xref)}async#n(e,n){const s=e?.get("Resources");return s instanceof B&&s.size?(await qi.load(s,n,this.xref),B.merge({xref:this.xref,dictArray:[s,this.resources],mergeSubDicts:!0})):this.resources}async getOperatorList({handler:e,sink:n,task:s,intent:a,cacheKey:i,pageIndex:r=this.pageIndex,annotationStorage:o=null,modifiedIds:f=null}){const l=this.getContentStream(),c=this.loadResources(Oo),h=this._createPartialEvaluator(e,r),d=(this.xfaFactory?null:kf(o))?.get(this.pageIndex);let p=Promise.resolve(null),m=null;if(d){const D=this.pdfManager.ensureDoc("annotationGlobals");let $;const K=new Set;for(const{bitmapId:me,bitmap:X}of d)me&&!X&&!K.has(me)&&K.add(me);const{isOffscreenCanvasSupported:oe}=this.evaluatorOptions;if(K.size>0){const me=d.slice();for(const[X,ee]of o)X.startsWith(Mc)&&ee.bitmap&&K.has(ee.bitmapId)&&me.push(ee);$=hs.generateImages(me,this.xref,oe)}else $=hs.generateImages(d,this.xref,oe);m=new bt,p=Promise.all([D,this.#a(d,m,null)]).then(([me])=>me?hs.printNewAnnotations(me,h,s,d,$):null)}const b=Promise.all([l,c]).then(async([D])=>{const $=await this.#n(D.dict,Oo),K=new Cn(a,n);return e.send("StartRenderPage",{transparency:h.hasBlendModes($,this.nonBlendModesSet),pageIndex:r,cacheKey:i}),await h.getOperatorList({stream:D,task:s,resources:$,operatorList:K}),K});let[w,x,j]=await Promise.all([b,this._parsedAnnotations,p]);if(j){x=x.filter(D=>!(D.ref&&m.has(D.ref)));for(let D=0,$=j.length;D<$;D++){const K=j[D];if(K.refToReplace){const oe=x.findIndex(me=>me.ref&&xi(me.ref,K.refToReplace));oe>=0&&(x.splice(oe,1,K),j.splice(D--,1),$--)}}x=x.concat(j)}if(x.length===0||a&an.ANNOTATIONS_DISABLE)return w.flush(!0),{length:w.totalLength};const k=!!(a&an.ANNOTATIONS_FORMS),y=!!(a&an.IS_EDITING),q=!!(a&an.ANY),v=!!(a&an.DISPLAY),A=!!(a&an.PRINT),S=[];for(const D of x)(q||v&&D.mustBeViewed(o,k)&&D.mustBeViewedWhenEditing(y,f)||A&&D.mustBePrinted(o))&&S.push(D.getOperatorList(h,s,a,o).catch(function($){return H(`getOperatorList - ignoring annotation data during "${s.name}" task: "${$}".`),{opList:null,separateForm:!1,separateCanvas:!1}}));const F=await Promise.all(S);let M=!1,N=!1;for(const{opList:D,separateForm:$,separateCanvas:K}of F)w.addOpList(D),M||=$,N||=K;return w.flush(!0,{form:M,canvas:N}),{length:w.totalLength}}async extractTextContent({handler:e,task:n,includeMarkedContent:s,disableNormalization:a,sink:i,intersector:r=null}){const o=this.getContentStream(),f=this.loadResources(Lo),l=this.pdfManager.ensureCatalog("lang"),[c,,h]=await Promise.all([o,f,l]),u=await this.#n(c.dict,Lo);return this._createPartialEvaluator(e).getTextContent({stream:c,task:n,resources:u,includeMarkedContent:s,disableNormalization:a,sink:i,viewBox:this.view,lang:h,intersector:r})}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;await this._parsedAnnotations;try{const n=await this.pdfManager.ensure(this,"_parseStructTree",[e]);return await this.pdfManager.ensure(n,"serializable")}catch(n){return H(`getStructTree: "${n}".`),null}}_parseStructTree(e){const n=new Dh(e,this.pageDict);return n.parse(this.ref),n}async getAnnotationsData(e,n,s){const a=await this._parsedAnnotations;if(a.length===0)return a;const i=[],r=[];let o;const f=!!(s&an.ANY),l=!!(s&an.DISPLAY),c=!!(s&an.PRINT),h=[];for(const u of a){const d=f||l&&u.viewable;(d||c&&u.printable)&&i.push(u.data),u.hasTextContent&&d?(o??=this._createPartialEvaluator(e),r.push(u.extractTextContent(o,n,[-1/0,-1/0,1/0,1/0]).catch(function(p){H(`getAnnotationsData - ignoring textContent during "${n.name}" task: "${p}".`)}))):u.overlaysTextContent&&d&&h.push(u)}if(h.length>0){const u=new C3(h);r.push(this.extractTextContent({handler:e,task:n,includeMarkedContent:!1,disableNormalization:!1,sink:null,intersector:u}).then(()=>{u.setText()}))}return await Promise.all(r),i}get annotations(){const e=this.#t("Annots");return ue(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){const e=this.pdfManager.ensure(this,"annotations").then(async n=>{if(n.length===0)return n;const[s,a]=await Promise.all([this.pdfManager.ensureDoc("annotationGlobals"),this.pdfManager.ensureDoc("fieldObjects")]);if(!s)return[];const i=a?.orphanFields,r=[];for(const c of n)r.push(hs.create(this.xref,c,s,this._localIdFactory,!1,i,null,this.ref).catch(function(h){return H(`_parsedAnnotations: "${h}".`),null}));const o=[];let f,l;for(const c of await Promise.all(r))if(c){if(c instanceof ps){(l||=[]).push(c);continue}if(c instanceof Zf){(f||=[]).push(c);continue}o.push(c)}return l&&o.push(...l),f&&o.push(...f),o});return ue(this,"_parsedAnnotations",e)}get jsActions(){const e=N0(this.xref,this.pageDict,Ou);return ue(this,"jsActions",e)}async collectAnnotationsByType(e,n,s,a,i){const{pageIndex:r}=this;if(Object.hasOwn(this,"_parsedAnnotations")){const l=await this._parsedAnnotations;for(const{data:c}of l)(!s||s.has(c.annotationType))&&(c.pageIndex=r,a.push(Promise.resolve(c)));return}const o=await this.pdfManager.ensure(this,"annotations");let f;for(const l of o)a.push(hs.create(this.xref,l,i,this._localIdFactory,!1,null,s,this.ref).then(async c=>c?(c.data.pageIndex=r,c.hasTextContent&&c.viewable&&(f??=this._createPartialEvaluator(e),await c.extractTextContent(f,n,[-1/0,-1/0,1/0,1/0])),c.data):null).catch(function(c){return H(`collectAnnotationsByType: "${c}".`),null}))}}const Fc=new Uint8Array([37,80,68,70,45]),Rc=new Uint8Array([115,116,97,114,116,120,114,101,102]),Q3=new Uint8Array([101,110,100,111,98,106]);function Eo(t,e,n=1024,s=!1){const a=e.length,i=t.peekBytes(n),r=i.length-a;if(r<=0)return!1;if(s){const o=a-1;let f=i.length-1;for(;f>=o;){let l=0;for(;l=a)return t.pos+=f-o,!0;f--}}else{let o=0;for(;o<=r;){let f=0;for(;f=a)return t.pos+=o,!0;o++}}return!1}class Au{#e=new Map;#t=null;#s=null;constructor(e,n){if(n.length<=0)throw new ur("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e,this.stream=n,this.xref=new J3(n,e);const s={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return`f${++s.font}`}static createObjId(){st("Abstract method `createObjId` called.")}static getPageObjId(){st("Abstract method `getPageObjId` called.")}}}parse(e){this.xref.parse(e),this.catalog=new _a(this.pdfManager,this.xref)}get linearization(){let e=null;try{e=kd.create(this.stream)}catch(n){if(n instanceof kt)throw n;ut(n)}return ue(this,"linearization",e)}get startXRef(){const e=this.stream;let n=0;if(this.linearization){if(e.reset(),Eo(e,Q3)){e.skip(6);let s=e.peekByte();for(;es(s);)e.pos++,s=e.peekByte();n=e.pos-e.start}}else{const a=Rc.length;let i=!1,r=e.end;for(;!i&&r>0;)r-=1024-a,r<0&&(r=0),e.pos=r,i=Eo(e,Rc,1024,!0);if(i){e.skip(9);let o;do o=e.getByte();while(es(o));let f="";for(;o>=32&&o<=57;)f+=String.fromCharCode(o),o=e.getByte();n=parseInt(f,10),isNaN(n)&&(n=0)}}return ue(this,"startXRef",n)}checkHeader(){const e=this.stream;if(e.reset(),!Eo(e,Fc))return;e.moveStart(),e.skip(Fc.length);let n="",s;for(;(s=e.getByte())>32&&n.length<7;)n+=String.fromCharCode(s);Gc.test(n)?this.#s=n:H(`Invalid PDF header version: ${n}`)}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;return this.catalog.hasActualNumPages?e=this.catalog.numPages:this.xfaFactory?e=this.xfaFactory.getNumPages():this.linearization?e=this.linearization.numPages:e=this.catalog.numPages,ue(this,"numPages",e)}#a(e,n=0){return Array.isArray(e)?e.every(a=>{if(a=this.xref.fetchIfRef(a),!(a instanceof B))return!1;if(a.has("Kids"))return++n>10?(H("#hasOnlyDocumentSignatures: maximum recursion depth reached"),!1):this.#a(a.get("Kids"),n);const i=ze(rn({dict:a,key:"FT"}),"Sig"),r=a.get("Rect"),o=Array.isArray(r)&&r.every(f=>f===0);return i&&o}):!1}get _xfaStreams(){const{acroForm:e}=this.catalog;if(!e)return null;const n=e.get("XFA"),s=new Map(["xdp:xdp","template","datasets","config","connectionSet","localeSet","stylesheet","/xdp:xdp"].map(a=>[a,null]));if(n instanceof Pe&&!n.isEmpty)return s.set("xdp:xdp",n),s;if(!Array.isArray(n)||n.length===0)return null;for(let a=0,i=n.length;ac.handleSetFont(a,[J.get(x),1],null,h,n,d,j,k).catch(y=>(H(`loadXfaFonts: "${y}".`),null)),m=[];for(const[x,j]of i){const k=j.get("FontDescriptor");if(!(k instanceof B))continue;const y=o1(k.get("FontFamily")),q=k.get("FontWeight"),v=-k.get("ItalicAngle"),A={fontFamily:y,fontWeight:q,italicAngle:v};f1(A)&&m.push(p(x,null,A))}await Promise.all(m);const b=this.xfaFactory.setFonts(u);if(!b)return;r.ignoreErrors=!0,m.length=0,u.length=0;const w=new Set;for(const x of b)Hf(`${x}-Regular`)||w.add(x);w.size&&b.push("PdfJS-Fallback");for(const x of b)if(!w.has(x))for(const j 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 k=`${x}-${j.name}`;m.push(p(k,Sh(k),{fontFamily:x,fontWeight:j.fontWeight,italicAngle:j.italicAngle}))}await Promise.all(m),this.xfaFactory.appendFonts(u,w)}loadXfaResources(e,n){return Promise.all([this.#i(e,n).catch(()=>{}),this.#n()])}serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get version(){return this.catalog.version||this.#s}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},{acroForm:n}=this.catalog;if(!n)return ue(this,"formInfo",e);try{const s=n.get("Fields"),a=Array.isArray(s)&&s.length>0;e.hasFields=a;const i=n.get("XFA");e.hasXfa=Array.isArray(i)&&i.length>0||i instanceof Pe&&!i.isEmpty;const o=!!(n.get("SigFlags")&1),f=o&&this.#a(s);e.hasAcroForm=a&&!f,e.hasSignatures=o}catch(s){if(s instanceof kt)throw s;H(`Cannot fetch form information: "${s}".`)}return ue(this,"formInfo",e)}get documentInfo(){const{catalog:e,formInfo:n,xref:s}=this,a={PDFFormatVersion:this.version,Language:e.lang,EncryptFilterName:s.encrypt?.filterName??null,IsLinearized:!!this.linearization,IsAcroFormPresent:n.hasAcroForm,IsXFAPresent:n.hasXfa,IsCollectionPresent:!!e.collection,IsSignaturesPresent:n.hasSignatures};let i;try{i=s.trailer.get("Info")}catch(r){if(r instanceof kt)throw r;ut("The document information dictionary is invalid.")}if(!(i instanceof B))return ue(this,"documentInfo",a);for(const[r,o]of i){switch(r){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if(typeof o=="string"){a[r]=Xe(o);continue}break;case"Trapped":if(o instanceof J){a[r]=o;continue}break;default:let f;switch(typeof o){case"string":f=Xe(o);break;case"number":case"boolean":f=o;break;default:if(o instanceof J){f=o;break}H(`Bad value, for custom key "${r}", in Info: ${o}.`);continue}(a.Custom??=new Map).set(r,f);continue}H(`Bad value, for key "${r}", in Info: ${o}.`)}return ue(this,"documentInfo",a)}get fingerprints(){const n="\0".repeat(16);function s(o){return typeof o=="string"&&o.length===16&&o!==n}const a=this.xref.trailer.get("ID");let i,r;return Array.isArray(a)&&s(a[0])?(i=Bt(a[0]),a[1]!==a[0]&&s(a[1])&&(r=Bt(a[1]))):i=na(this.stream.getByteRange(0,1024),0,1024),ue(this,"fingerprints",[i.toHex(),r?.toHex()??null])}async#r(e){const{catalog:n,linearization:s,xref:a}=this,i=Q.get(s.objectNumberFirst,0);try{const r=await a.fetchAsync(i);if(r instanceof B){let o=r.getRaw("Type");if(o instanceof Q&&(o=await a.fetchAsync(o)),ze(o,"Page")||!r.has("Type")&&!r.has("Kids")&&r.has("Contents"))return n.pageKidsCountCache.has(i)||n.pageKidsCountCache.put(i,1),n.pageIndexCache.has(i)||n.pageIndexCache.put(i,0),[r,i]}throw new Y("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(r){return H(`_getLinearizationPage: "${r.message}".`),n.getPageDict(e)}}getPage(e){const n=this.#e.get(e);if(n)return n;const{catalog:s,linearization:a,xfaFactory:i}=this;let r;return i?r=Promise.resolve([B.empty,null]):a?.pageFirst===e?r=this.#r(e):r=s.getPageDict(e),r=r.then(([o,f])=>new Bc({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:o,ref:f,globalIdFactory:this._globalIdFactory,fontCache:s.fontCache,builtInCMapCache:s.builtInCMapCache,standardFontDataCache:s.standardFontDataCache,globalColorSpaceCache:s.globalColorSpaceCache,globalImageCache:s.globalImageCache,systemFontCache:s.systemFontCache,nonBlendModesSet:s.nonBlendModesSet,xfaFactory:i})),this.#e.set(e,r),r}async checkFirstPage(e=!1){if(!e)try{await this.getPage(0)}catch(n){if(n instanceof aa)throw this.#e.delete(0),await this.cleanup(),new Da}}async checkLastPage(e=!1){const{catalog:n,pdfManager:s}=this;n.setActualNumPages();let a;try{if(await Promise.all([s.ensureDoc("xfaFactory"),s.ensureDoc("linearization"),s.ensureCatalog("numPages")]),this.xfaFactory)return;if(this.linearization?a=this.linearization.numPages:a=n.numPages,Number.isInteger(a)){if(a<=1)return}else throw new Y("Page count is not an integer.");await this.getPage(a-1)}catch(i){if(this.#e.delete(a-1),await this.cleanup(),i instanceof aa&&!e)throw new Da;H(`checkLastPage - invalid /Pages tree /Count: ${a}.`);let r;try{r=await n.getAllPageDicts(e)}catch(o){if(o instanceof aa&&!e)throw new Da;n.setActualNumPages(1);return}for(const[o,[f,l]]of r){let c;f instanceof Error?(c=Promise.reject(f),c.catch(()=>{})):c=Promise.resolve(new Bc({pdfManager:s,xref:this.xref,pageIndex:o,pageDict:f,ref:l,globalIdFactory:this._globalIdFactory,fontCache:n.fontCache,builtInCMapCache:n.builtInCMapCache,standardFontDataCache:n.standardFontDataCache,globalColorSpaceCache:this.globalColorSpaceCache,globalImageCache:n.globalImageCache,systemFontCache:n.systemFontCache,nonBlendModesSet:n.nonBlendModesSet,xfaFactory:null})),this.#e.set(o,c)}n.setActualNumPages(r.size)}}async fontFallback(e,n){const{catalog:s,pdfManager:a}=this;for(const i of await Promise.all(s.fontCache))if(i.loadedName===e){i.fallback(n,a.evaluatorOptions);return}}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):_f()}async#f(e,n,s,a,i,r,o){const{xref:f}=this;if(!(s instanceof Q)||r.has(s))return;r.put(s);const l=await f.fetchAsync(s);if(!(l instanceof B))return;let c=await l.getAsync("Subtype");if(c=c instanceof J?c.name:null,c==="Link")return;if(l.has("T")){const u=Xe(await l.getAsync("T"));e=e===""?u:`${e}.${u}`}else{let u=l;const d=new bt;for(;;){if(u=u.getRaw("Parent")||n,u instanceof Q){if(r.has(u)||d.has(u))break;d.put(u),u=await f.fetchAsync(u)}if(!(u instanceof B))break;if(u.has("T")){const p=Xe(await u.getAsync("T"));e=e===""?p:`${e}.${p}`;break}}}if(n&&!l.has("Parent")&&ze(l.get("Subtype"),"Widget")&&o.put(s,n),a.getOrInsertComputed(e,ha).push(hs.create(f,s,i,null,!0,o,null,null).then(u=>u?.getFieldObject()).catch(function(u){return H(`#collectFieldObjects: "${u}".`),null})),!l.has("Kids"))return;const h=await l.getAsync("Kids");if(Array.isArray(h))for(const u of h)await this.#f(e,s,u,a,i,r,o)}get fieldObjects(){const e=this.pdfManager.ensureDoc("formInfo").then(async n=>{if(!n.hasFields)return null;const s=await this.annotationGlobals;if(!s)return null;const{acroForm:a}=s,i=new bt,r=new Map,o=new Map,f=new $t;for(const c of a.get("Fields"))await this.#f("",null,c,o,s,i,f);const l=[];for(const[c,h]of o)l.push(Promise.all(h).then(u=>{u=u.filter(Boolean),u.length>0&&r.set(c,u)}));return await Promise.all(l),{allFields:r.size?r:null,orphanFields:f}});return ue(this,"fieldObjects",e)}async#o(e,n,s){if(Array.isArray(e))for(const a of e){if(a instanceof Q){if(s.has(a))continue;s.put(a)}const i=await this.xref.fetchIfRefAsync(a);if(i instanceof B){if(ze(await i.getAsync("FT"),"Sig")){const r=await i.getAsync("V");if(r instanceof B){const o=await this.#c(i,r,a);o&&n.push(o)}}i.has("Kids")&&await this.#o(await i.getAsync("Kids"),n,s)}}}async#l(e,n){try{return this.stream.getByteRange(e,n)}catch(s){if(!(s instanceof kt))throw s;return await this.pdfManager.requestRange(e,n),this.#l(e,n)}}async#u(e,n){if(n>0)return!1;const s=this.stream.end;for(let a=e;a!Number.isInteger(v)||v<0))return null;const[i,r,o,f]=a,l=this.stream.end||0;if(i!==0||r<=0||i+r>o||o+f>l||l===0)return null;const c=await n.getAsync("Contents");if(typeof c!="string"||c.length===0)return null;const[h,u,d,p,m,b,w,x]=await Promise.all([n.getAsync("Filter"),n.getAsync("SubFilter"),e.getAsync("T"),n.getAsync("Name"),n.getAsync("Reason"),n.getAsync("Location"),n.getAsync("ContactInfo"),n.getAsync("M")]),j=h instanceof J?h.name:null,k=u instanceof J?u.name:null;let y=null;return k==="adbe.pkcs7.detached"?y=0:k==="adbe.pkcs7.sha1"&&(y=1),{id:`${s instanceof Q?s.toString():"inline"}:${i}-${r}-${o}-${f}`,fieldName:typeof d=="string"?Xe(d):"",signerName:typeof p=="string"?Xe(p):null,reason:typeof m=="string"?Xe(m):null,location:typeof b=="string"?Xe(b):null,contactInfo:typeof w=="string"?Xe(w):null,signingTime:typeof x=="string"?x:null,filter:j,subFilter:k,signatureType:y,byteRange:a,pkcs7:Bt(c),revisionIndex:0,parentId:null}}get signatures(){const e=this.pdfManager.ensureDoc("formInfo").then(async n=>{if(!n.hasSignatures||!n.hasFields)return null;const s=await this.annotationGlobals;if(!s)return null;const a=s.acroForm.get("Fields"),i=[];await this.#o(a,i,new bt),await Promise.all(i.map(async f=>{const l=f.byteRange[2]+f.byteRange[3];f.modificationsAfterSignature=this.xref.countUpdatesAfter(l),f.coversWholeDocument=await this.#u(l,f.modificationsAfterSignature)})),i.sort((f,l)=>l.byteRange[2]+l.byteRange[3]-(f.byteRange[2]+f.byteRange[3]));for(let f=0,l=i.length;f=0;h--){const u=i[h];if(u.byteRange[2]+u.byteRange[3]>c.byteRange[2]+c.byteRange[3]){c.parentId=u.id;break}}}const r=new Map,o=i.map(f=>{const{pkcs7:l,...c}=f;return r.set(f.id,{byteRange:f.byteRange,pkcs7:l}),c});return this.#t=r,o.length?o:null});return ue(this,"signatures",e)}async getSignatureData(e){await this.signatures;const n=this.#t?.get(e);if(!n)return null;const{byteRange:s,pkcs7:a}=n,[i,r,o,f]=s;return{data:await Promise.all([this.#l(i,i+r),this.#l(o,o+f)]),pkcs7:a}}get hasJSActions(){const e=Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]).then(([n,s])=>n?!0:s?.allFields?s.allFields.values().some(a=>a.some(i=>i.actions!==null)):!1);return ue(this,"hasJSActions",e)}get calculationOrderIds(){const e=this.catalog.acroForm?.get("CO");if(!Array.isArray(e)||e.length===0)return ue(this,"calculationOrderIds",null);const n=[];for(const s of e)s instanceof Q&&n.push(s.toString());return ue(this,"calculationOrderIds",n.length?n:null)}get annotationGlobals(){return ue(this,"annotationGlobals",hs.createGlobals(this.pdfManager))}async toJSObject(e,n=!0){throw new Error("Not implemented: toJSObject")}}function Z3(t){if(t){const e=x0(t);if(e)return e.href;H(`Invalid absolute docBaseUrl: "${t}".`)}return null}class Iu{constructor({docBaseUrl:e,docId:n,enableXfa:s,evaluatorOptions:a,handler:i,password:r}){this._docBaseUrl=Z3(e),this._docId=n,this._password=r,this.enableXfa=s,a.isOffscreenCanvasSupported&&=Tn.isOffscreenCanvasSupported,a.isImageDecoderSupported&&=Tn.isImageDecoderSupported,this.evaluatorOptions=Object.freeze(a),vn.setOptions(a),Ci.setOptions(a),Cn.setOptions(a);const o={...a,handler:i};Ls.setOptions(o),mr.setOptions(o),Rr.setOptions(o),ah.setOptions(o),gn.setOptions(o)}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){return this._docBaseUrl}ensureDoc(e,n){return this.ensure(this.pdfDocument,e,n)}ensureCatalog(e,n){return this.ensure(this.pdfDocument.catalog,e,n)}async initDocument(e){await this.ensureDoc("checkHeader"),await this.ensureDoc("parseStartXRef"),await this.ensureDoc("parse",[e]),await this.ensureDoc("checkFirstPage",[e]),await this.ensureDoc("checkLastPage",[e])}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,n){return this.pdfDocument.fontFallback(e,n)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,n,s){st("Abstract method `ensure` called")}requestRange(e,n){st("Abstract method `requestRange` called")}requestLoadedStream(e=!1){st("Abstract method `requestLoadedStream` called")}sendProgressiveData(e){st("Abstract method `sendProgressiveData` called")}updatePassword(e){this._password=e,this.pdfDocument.xref.encrypt?.setPassword(e)}terminate(e){st("Abstract method `terminate` called")}}class Mo extends Iu{constructor(e){super(e);const n=new yt(e.source);this.pdfDocument=new Au(this,n),this._loadedStreamPromise=Promise.resolve(n)}async ensure(e,n,s){const a=e[n];return typeof a=="function"?a.apply(e,s):a}requestLoadedStream(e=!1){return this._loadedStreamPromise}terminate(e){}}class e5 extends Iu{constructor(e){super(e),this.streamManager=new E1(e.source,{msgHandler:e.handler,length:e.length,disableAutoFetch:e.disableAutoFetch,rangeChunkSize:e.rangeChunkSize}),this.pdfDocument=new Au(this,this.streamManager.getStream())}async ensure(e,n,s){try{const a=e[n];return typeof a=="function"?await a.apply(e,s):a}catch(a){if(!(a instanceof kt))throw a;return await this.requestRange(a.begin,a.end),this.ensure(e,n,s)}}requestRange(e,n){return this.streamManager.requestRange(e,n)}requestLoadedStream(e=!1){return this.streamManager.requestAllChunks(e)}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}terminate(e){this.streamManager.abort(e)}}const o0={DATA:1,ERROR:2},Gt={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function Hc(){}function zn(t){if(t instanceof fn||t instanceof ur||t instanceof Os||t instanceof ll||t instanceof so)return t;switch(t instanceof Error||typeof t=="object"&&t!==null||st('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),t.name){case"AbortException":return new fn(t.message);case"InvalidPDFException":return new ur(t.message);case"PasswordException":return new Os(t.message,t.code);case"ResponseException":return new ll(t.message,t.status,t.missing);case"UnknownErrorException":return new so(t.message,t.details)}return new so(t.message,t.toString())}class Ec{#e=new AbortController;constructor(e,n,s){this.sourceName=e,this.targetName=n,this.comObj=s,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),s.addEventListener("message",this.#t.bind(this),{signal:this.#e.signal})}#t({data:e}){if(e.targetName!==this.sourceName)return;if(e.stream){this.#a(e);return}if(e.callback){const s=e.callbackId,a=this.callbackCapabilities[s];if(!a)throw new Error(`Cannot resolve callback ${s}`);if(delete this.callbackCapabilities[s],e.callback===o0.DATA)a.resolve(e.data);else if(e.callback===o0.ERROR)a.reject(zn(e.reason));else throw new Error("Unexpected callback case");return}const n=this.actionHandler[e.action];if(!n)throw new Error(`Unknown action from worker: ${e.action}`);if(e.callbackId){const s=this.sourceName,a=e.sourceName,i=this.comObj;Promise.try(n,e.data).then(function(r){i.postMessage({sourceName:s,targetName:a,callback:o0.DATA,callbackId:e.callbackId,data:r})},function(r){i.postMessage({sourceName:s,targetName:a,callback:o0.ERROR,callbackId:e.callbackId,reason:zn(r)})});return}if(e.streamId){this.#s(e);return}n(e.data)}on(e,n){const s=this.actionHandler;if(s[e])throw new Error(`There is already an actionName called "${e}"`);s[e]=n}send(e,n,s){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:n},s)}sendWithPromise(e,n,s){const a=this.callbackId++,i=Promise.withResolvers();this.callbackCapabilities[a]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:a,data:n},s)}catch(r){i.reject(r)}return i.promise}sendWithStream(e,n,s,a){const i=this.streamId++,r=this.sourceName,o=this.targetName,f=this.comObj;return new ReadableStream({start:l=>{const c=Promise.withResolvers();return this.streamControllers[i]={controller:l,startCall:c,pullCall:null,cancelCall:null,isClosed:!1},f.postMessage({sourceName:r,targetName:o,action:e,streamId:i,data:n,desiredSize:l.desiredSize},a),c.promise},pull:l=>{const c=Promise.withResolvers();return this.streamControllers[i].pullCall=c,f.postMessage({sourceName:r,targetName:o,stream:Gt.PULL,streamId:i,desiredSize:l.desiredSize}),c.promise},cancel:l=>{Ct(l instanceof Error,"cancel must have a valid reason");const c=Promise.withResolvers();return this.streamControllers[i].cancelCall=c,this.streamControllers[i].isClosed=!0,f.postMessage({sourceName:r,targetName:o,stream:Gt.CANCEL,streamId:i,reason:zn(l)}),c.promise}},s)}#s(e){const n=e.streamId,s=this.sourceName,a=e.sourceName,i=this.comObj,r=this,o=this.actionHandler[e.action],f={enqueue(l,c=1,h){if(this.isCancelled)return;const u=this.desiredSize;this.desiredSize-=c,u>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),i.postMessage({sourceName:s,targetName:a,stream:Gt.ENQUEUE,streamId:n,chunk:l},h)},close(){this.isCancelled||(this.isCancelled=!0,i.postMessage({sourceName:s,targetName:a,stream:Gt.CLOSE,streamId:n}),delete r.streamSinks[n])},error(l){Ct(l instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,i.postMessage({sourceName:s,targetName:a,stream:Gt.ERROR,streamId:n,reason:zn(l)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};f.sinkCapability.resolve(),f.ready=f.sinkCapability.promise,this.streamSinks[n]=f,Promise.try(o,e.data,f).then(function(){i.postMessage({sourceName:s,targetName:a,stream:Gt.START_COMPLETE,streamId:n,success:!0})},function(l){i.postMessage({sourceName:s,targetName:a,stream:Gt.START_COMPLETE,streamId:n,reason:zn(l)})})}#a(e){const n=e.streamId,s=this.sourceName,a=e.sourceName,i=this.comObj,r=this.streamControllers[n],o=this.streamSinks[n];switch(e.stream){case Gt.START_COMPLETE:e.success?r.startCall.resolve():r.startCall.reject(zn(e.reason));break;case Gt.PULL_COMPLETE:e.success?r.pullCall.resolve():r.pullCall.reject(zn(e.reason));break;case Gt.PULL:if(!o){i.postMessage({sourceName:s,targetName:a,stream:Gt.PULL_COMPLETE,streamId:n,success:!0});break}o.desiredSize<=0&&e.desiredSize>0&&o.sinkCapability.resolve(),o.desiredSize=e.desiredSize,Promise.try(o.onPull||Hc).then(function(){i.postMessage({sourceName:s,targetName:a,stream:Gt.PULL_COMPLETE,streamId:n,success:!0})},function(l){i.postMessage({sourceName:s,targetName:a,stream:Gt.PULL_COMPLETE,streamId:n,reason:zn(l)})});break;case Gt.ENQUEUE:if(Ct(r,"enqueue should have stream controller"),r.isClosed)break;r.controller.enqueue(e.chunk);break;case Gt.CLOSE:if(Ct(r,"close should have stream controller"),r.isClosed)break;r.isClosed=!0,r.controller.close(),this.#n(r,n);break;case Gt.ERROR:Ct(r,"error should have stream controller"),r.controller.error(zn(e.reason)),this.#n(r,n);break;case Gt.CANCEL_COMPLETE:e.success?r.cancelCall.resolve():r.cancelCall.reject(zn(e.reason)),this.#n(r,n);break;case Gt.CANCEL:if(!o)break;const f=zn(e.reason);Promise.try(o.onCancel||Hc,f).then(function(){i.postMessage({sourceName:s,targetName:a,stream:Gt.CANCEL_COMPLETE,streamId:n,success:!0})},function(l){i.postMessage({sourceName:s,targetName:a,stream:Gt.CANCEL_COMPLETE,streamId:n,reason:zn(l)})}),o.sinkCapability.reject(f),o.isCancelled=!0,delete this.streamSinks[n];break;default:throw new Error("Unexpected stream case")}}async#n(e,n){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]),delete this.streamControllers[n]}destroy(){this.#e?.abort(),this.#e=null}}async function Cu(t,e,n,{encrypt:s=null,encryptRef:a=null}){const i=s&&a!==t?s.createCipherTransform(t.num,t.gen):null;n.push(`${t.num} ${t.gen} obj +`),await Tr(e,n,i),n.push(` +endobj +`)}async function sl(t,e,n){e.push("<<");for(const[s,a]of t.getRawEntries())e.push(` /${jf(s)} `),await Tr(a,e,n);e.push(">>")}async function t5(t,e,n){t=t.getOriginalStream(),t.reset();let s=t.getBytes();const{dict:a}=t,[i,r]=await Promise.all([a.getAsync("Filter"),a.getAsync("DecodeParms")]),o=Array.isArray(i)?await a.xref.fetchIfRefAsync(i[0]):i,f=ze(o,"FlateDecode"),l=ze(o,"DCTDecode")||ze(o,"JPXDecode")||ze(o,"JBIG2Decode")||ze(o,"CCITTFaxDecode")||ze(o,"LZWDecode");if(!(f||l||ze(o,"BrotliDecode"))&&s.length>=256)try{const d=new CompressionStream("deflate"),p=d.writable.getWriter();await p.ready,p.write(s).then(async()=>{await p.ready,await p.close()}).catch(()=>{}),s=await new Response(d.readable).bytes();let m,b;i?f||(m=Array.isArray(i)?[J.get("FlateDecode"),...i]:[J.get("FlateDecode"),i],r&&(b=Array.isArray(r)?[null,...r]:[null,r])):m=J.get("FlateDecode"),m&&a.set("Filter",m),b&&a.set("DecodeParms",b)}catch(d){ut(`writeStream - cannot compress data: "${d}".`)}let u=An(s);n&&(u=n.encryptString(u)),a.set("Length",u.length),await sl(a,e,n),e.push(` stream +`,u,` +endstream`)}async function n5(t,e,n){e.push("[");for(let s=0,a=t.length;s=1e21)return BigInt(t).toString();const e=t.toFixed(10);let n=e.length;for(;e[n-1]==="0";)n--;return e[n-1]==="."&&n--,e.slice(0,n)}async function Tr(t,e,n){t instanceof J?e.push(`/${jf(t.name)}`):t instanceof Q?e.push(`${t.num} ${t.gen} R`):Array.isArray(t)||ArrayBuffer.isView(t)?await n5(t,e,n):typeof t=="string"?(n&&(t=n.encryptString(t)),e.push(`(${ji(t)})`)):typeof t=="number"?e.push(s5(t)):typeof t=="boolean"?e.push(t.toString()):t instanceof B?await sl(t,e,n):t instanceof Pe?await t5(t,e,n):t===null?e.push("null"):H(`Unhandled value in writer: ${typeof t}, please file a bug.`)}function Do(t,e,n,s){for(let a=e+n-1;a>n-1;a--)s[a]=t&255,t>>=8;return n+e}function Tu(t,e,n){const s=t.length;for(let a=0;af.length)),r=new Uint8Array(i);let o=0;for(const f of a)o=Tu(f,o,r);return An(na(r,0,r.length))}function i5(t,e){const n=new K0({hasAttributes:!0}).parseFromString(t);for(const{xfa:a}of e){if(!a)continue;const{path:i,value:r}=a;if(!i||r===null)continue;const o=Kc(i);let f=n.documentElement.searchNode(o,0);!f&&o.length>1&&(f=n.documentElement.searchNode([o.at(-1)],0)),f?f.childNodes=Array.isArray(r)?r.map(l=>new ir("value",l)):[new ir("#text",r)]:H(`Node not found for path: ${i}`)}const s=[];return n.documentElement.dump(s),s.join("")}async function r5({xref:t,acroForm:e,acroFormRef:n,hasXfa:s,hasXfaDatasetsEntry:a,xfaDatasetsRef:i,needAppearances:r,changes:o}){if(s&&!a&&!i&&H("XFA - Cannot save it"),!r&&(!s||!i||a))return;const f=e.clone();if(s&&!a){const l=e.get("XFA").slice();l.splice(2,0,"datasets"),l.splice(3,0,i),f.set("XFA",l)}r&&f.set("NeedAppearances",!0),o.put(n,{data:f})}function o5({xfaData:t,xfaDatasetsRef:e,changes:n,xref:s}){if(t===null){const i=s.fetchIfRef(e);t=i5(i.getString(),n)}const a=new hn(t,new B(s));a.dict.setIfName("Type","EmbeddedFile"),n.put(e,{data:a})}async function f5(t,e,n,s,a){a.push(`xref +`);const i=Bu(n);let r=0;for(const{ref:o,data:f}of n)o.num===i[r]&&(a.push(`${i[r]} ${i[r+1]} +`),r+=2),f!==null?(a.push(`${e.toString().padStart(10,"0")} ${Math.min(o.gen,65535).toString().padStart(5,"0")} n\r +`),e+=f.length):a.push(`0000000000 ${Math.min(o.gen+1,65535).toString().padStart(5,"0")} f\r +`);Fu(e,t,s),a.push(`trailer +`),await sl(s,a,null),a.push(` +startxref +`,e.toString(),` +%%EOF +`)}function Bu(t){const e=[];for(const{ref:n}of t)n.num===e.at(-2)+e.at(-1)?e[e.length-1]+=1:e.push(n.num,1);return e}async function l5(t,e,n,s,a){const i=[];let r=0,o=0;for(const{ref:m,data:b,objStreamRef:w,index:x}of n){let j;r=Math.max(r,e),w?(j=x,i.push([2,w.num,j])):b!==null?(j=Math.min(m.gen,65535),i.push([1,e,j]),e+=b.length):(j=Math.min(m.gen+1,65535),i.push([0,0,j])),o=Math.max(o,j)}s.set("Index",Bu(n));const f=dl(r),l=dl(o),c=[1,f,l];s.set("W",c),Fu(e,t,s);const h=Math.sumPrecise(c),u=new Uint8Array(h*i.length),d=new yt(u);d.dict=s;let p=0;for(const[m,b,w]of i)p=Do(m,c[0],p,u),p=Do(b,c[1],p,u),p=Do(w,c[2],p,u);await Cu(t.newRef,d,a,{}),a.push(`startxref +`,e.toString(),` +%%EOF +`)}function Fu(t,e,n){if(Array.isArray(e.fileIds)&&e.fileIds.length>0){const s=a5(t,e);n.set("ID",[e.fileIds[0]||s,s])}}function c5(t,e,n){const s=new B(null);s.setIfDefined("Prev",t?.startXRef);const a=t.newRef;return n?(e.put(a,{data:""}),s.set("Size",a.num+1),s.setIfName("Type","XRef")):s.set("Size",a.num),s.setIfDefined("Root",t?.rootRef),s.setIfDefined("Info",t?.infoRef),s.setIfDefined("Encrypt",t?.encryptRef),s}async function h5(t,e,n=[]){const s=[];for(const[a,{data:i,objStreamRef:r,index:o}]of t.items()){if(r){s.push({ref:a,data:i,objStreamRef:r,index:o});continue}if(i===null||typeof i=="string"){s.push({ref:a,data:i});continue}await Cu(a,i,n,e),s.push({ref:a,data:n.join("")}),n.length=0}return s.sort((a,i)=>a.ref.num-i.ref.num)}async function Ru({originalData:t,xrefInfo:e,changes:n,xref:s=null,hasXfa:a=!1,xfaDatasetsRef:i=null,hasXfaDatasetsEntry:r=!1,needAppearances:o,acroFormRef:f=null,acroForm:l=null,xfaData:c=null,useXrefStream:h=!1}){await r5({xref:s,acroForm:l,acroFormRef:f,hasXfa:a,hasXfaDatasetsEntry:r,xfaDatasetsRef:i,needAppearances:o,changes:n}),a&&o5({xfaData:c,xfaDatasetsRef:i,changes:n,xref:s});const u=c5(e,n,h),d=[],p=await h5(n,s,d);let m=t.length;const b=t.at(-1);b!==10&&b!==13&&(d.push(` +`),m+=1);for(const{data:k}of p)k!==null&&d.push(k);await(h?l5(e,m,p,u,d):f5(e,m,p,u,d));const w=t.length+Math.sumPrecise(d.map(k=>k.length)),x=new Uint8Array(w);x.set(t);let j=t.length;for(const k of d)j=Tu(k,j,x);return x}const u5=16,d5=64;class m5{constructor(e,n){this.page=e,this.documentData=n,this.annotations=null,this.pointingNamedDestinations=null,this.copyLevel=0,n.pagesMap.put(e.ref,this)}}class p5{constructor(e){this.document=e,this.destinations=null,this.pageLabels=null,this.pagesMap=new $t,this.oldRefMapping=new $t,this.dedupNamedDestinations=new Map,this.usedNamedDestinations=new Set,this.postponedRefCopies=new $t,this.resourceStreamPromises=new Map,this.usedStructParents=new Set,this.oldStructParentMapping=new Map,this.structTreeRoot=null,this.parentTree=null,this.idTree=null,this.roleMap=null,this.classMap=null,this.namespaces=null,this.structTreeAF=null,this.structTreePronunciationLexicon=[],this.acroForm=null,this.acroFormDefaultAppearance="",this.acroFormDefaultResources=null,this.acroFormQ=0,this.hasSignatureAnnotations=!1,this.fieldToParent=new $t,this.outline=null,this.embeddedFiles=null}}class g5{constructor(e,n){this.entries=e,this._getNewRef=n}getNewTemporaryRef(){return this._getNewRef()}countUpdatesAfter(e){return null}fetchIfRef(e){return e instanceof Q?this.fetch(e):e}fetch(e){if(!(e instanceof Q))throw new Error("ref object is not a reference");return this.entries[e.num]}async fetchIfRefAsync(e){return e instanceof Q?this.fetchAsync(e):e}async fetchAsync(e){return this.fetch(e)}}class b5{isSingleFile=!1;#e=null;#t=null;#s=new Map;currentDocument=null;oldPages=[];newPages=[];xref=[null];xrefWrapper=new g5(this.xref,()=>this.newRef);newRefCount=1;namesDict=null;version="1.7";pageLabels=null;namedDestinations=new Map;parentTree=new Map;structTreeKids=[];idTree=new Map;classMap=new B;roleMap=new B;namespaces=new Map;structTreeAF=[];structTreePronunciationLexicon=[];fields=[];acroFormDefaultAppearance="";acroFormDefaultResources=null;acroFormNeedAppearances=!1;acroFormSigFlags=0;acroFormCalculationOrder=null;acroFormQ=0;outlineItems=null;embeddedFiles=new Map;constructor({useObjectStreams:e=!0,title:n="",author:s=""}={}){[this.rootRef,this.rootDict]=this.newDict,[this.infoRef,this.infoDict]=this.newDict,[this.pagesRef,this.pagesDict]=this.newDict,this.useObjectStreams=e,this.objStreamRefs=e?new Set:null,this.title=n,this.author=s}get newRef(){return Q.get(this.newRefCount++,0)}get newDict(){const e=this.newRef,n=this.xref[e.num]=new B;return[e,n]}async#a(e,n){const s=this.newRef;return this.xref[s.num]=await this.#n(e,!0,n),s}cloneDict(e){const n=e.clone();return n.xref=this.xrefWrapper,n}async#n(e,n,s,a=new bt){if(e instanceof Q){const{currentDocument:{fieldToParent:f,oldRefMapping:l}}=this,c=l.get(e);if(c)return c;const h=e;e=await s.fetchAsync(h);const u=l.get(h);if(u)return u;if(typeof e=="number")return e;if(e instanceof Pe&&this.#i(e.dict))return this.#l(h,e,s,a);const d=this.newRef;l.put(h,d);let p=!0;return f.has(h)&&e instanceof B&&(e=this.cloneDict(e),e.delete("Parent"),p=!1),this.xref[d.num]=await this.#n(e,p,s,a),d}const i=[],{currentDocument:{postponedRefCopies:r}}=this;if(Array.isArray(e)){n&&(e=e.slice());for(let f=0,l=e.length;fe[f]=h);continue}i.push(this.#n(e[f],!0,s,a).then(h=>e[f]=h))}return await Promise.all(i),e}let o;if(e instanceof Pe?({dict:o}=e=e.getOriginalStream().clone(),o.xref=this.xrefWrapper):e instanceof B&&(n&&(e=e.clone(),e.xref=this.xrefWrapper),o=e),o){for(const[f,l]of o.getRawEntries()){const c=l instanceof Q&&r.get(l);if(c){c.push(h=>o.set(f,h));continue}i.push(this.#n(l,!0,s,a).then(h=>o.set(f,h)))}await Promise.all(i)}return e}#i(e){const n=e.get("Subtype");return ze(n,"Image")||e.has("Length1")||ze(n,"Type1C")||ze(n,"CIDFontType0C")||ze(n,"OpenType")}#r(e){const n=e.getOriginalStream();return n.reset(),n.getBytes()}async#f(e){const n=[];return await Tr(e,n,null),n.join("")}#o(e,n){const{length:i}=n,r=new Fh;if(r.update(e),r.update(`#${i}`),i<=256*4)r.update(n);else{const o=Math.floor((i-256)/3);for(let f=0;f<4;f++){const l=Math.min(f*o,i-256);r.update(n.subarray(l,l+256))}}return r.hexdigest()}async#l(e,n,s,a){const{currentDocument:{oldRefMapping:i,resourceStreamPromises:r}}=this;if(a.has(e))return i.getOrPutComputed(e,()=>this.newRef);const o=e.toString(),f=r.get(o);if(f)return f;const l=new bt(a);l.put(e);const c=Promise.resolve().then(async()=>{const h=await this.#n(n,!0,s,l),u=i.get(e);if(u)return this.xref[u.num]=h,u;const d=await this.#u(h);return i.put(e,d),d});r.set(o,c);try{return await c}finally{r.get(o)===c&&r.delete(o)}}async#u(e){const n=await this.#f(e.dict),s=this.#r(e),a=this.#o(n,s),i=this.#s.getOrInsertComputed(a,ha);for(const o of i)if(o.dictStr===n&&za(this.#r(o.stream),s))return o.ref;const r=this.newRef;return this.xref[r.num]=e,i.push({ref:r,dictStr:n,stream:e}),r}async#c(e,n){if(e instanceof Q){const s=await n.fetchAsync(e);return Array.isArray(s)?s:[e]}return Array.isArray(e)?e:[e]}async#h(e,n,s,a,i,r,o,f=new bt){const{currentDocument:{pagesMap:l,oldRefMapping:c}}=this,h=n.getRaw("Pg");if(h instanceof Q&&!l.has(h))return null;const u=n.getRaw("K");if(u instanceof Q&&f.has(u))return null;const d=await this.#c(u,s),p=[],m=[];for(let q of d){const v=q instanceof Q?q:null;if(v){if(f.has(v))continue;f.put(v),q=await s.fetchAsync(v)}if(typeof q=="number"){p.push(q);continue}if(!(q instanceof B))continue;const A=q.getRaw("Pg");if(A instanceof Q&&!l.has(A))continue;const S=q.get("Type");if(!S||ze(S,"StructElem")){let F=!1;if(v&&a.has(v)){if(!ze(q.get("S"),"Link"))continue;F=!0}const M=await this.#h(v,q,s,a,i,r,o,f);M&&(m.push(p.length),p.push(M),v&&c.put(v,M),F&&this.xref[M.num].setIfName("S","Span"));continue}if(ze(S,"OBJR")){if(!v)continue;const F=q.getRaw("Obj");if(F instanceof Q&&!c.get(F))continue;const M=c.get(v)||await this.#n(v,!0,s),D=this.xref[M.num].getRaw("Obj");if(D instanceof Q){const $=this.xref[D.num];if($ instanceof B&&!$.has("StructParent")&&e){const K=this.parentTree.size;this.parentTree.set(K,[c,e]),$.set("StructParent",K)}}p.push(M);continue}if(ze(S,"MCR")){const F=await this.#n(v||q,!0,s);p.push(F);continue}if(v){const F=await this.#n(v,!0,s);p.push(F)}}if(d.length!==0&&p.length===0)return null;const b=this.newRef,w=this.xref[b.num]=this.cloneDict(n);w.delete("ID"),w.delete("C"),w.delete("K"),w.delete("P"),w.delete("S"),await this.#n(w,!1,s);const x=n.get("C");if(x instanceof J){const q=r.get(x.name);w.set("C",q?J.get(q):x)}else if(Array.isArray(x)){const q=[];for(const v of x)if(v instanceof J){const A=r.get(v.name);q.push(A?J.get(A):v)}w.set("C",q)}const j=n.get("S");if(j instanceof J){const q=o.get(j.name);w.set("S",q?J.get(q):j)}const k=n.get("ID");if(typeof k=="string"){const q=Xe(k,!1),v=i.get(q);w.set("ID",v?Zt(v):k)}let y=w.get("A");if(y){Array.isArray(y)||(y=[y]);for(let q of y)if(q=this.xrefWrapper.fetchIfRef(q),q instanceof B&&ze(q.get("O"),"Table")&&q.has("Headers")){const v=this.xrefWrapper.fetchIfRef(q.getRaw("Headers"));if(Array.isArray(v))for(let A=0,S=v.length;A1&&w.set("K",p),b}#d({document:e,includePages:n,excludePages:s}){if(!e)return[];const a=l=>{if(!l?.length)return null;const c=new Set,h=[];for(const u of l)Array.isArray(u)?h.push(u):c.add(u);return{indices:c,ranges:h}},i=(l,{indices:c,ranges:h})=>c.has(l)||h.some(([u,d])=>l>=u&&l<=d),r=a(n),o=a(s),f=[];for(let l=0,c=e.numPages;l!!(f.document||f.image);for(let f=0;ff.insertAfter-l.insertAfter||f.i-l.i),s.length===0&&e.some(f=>i(f)&&f.pageIndices)){const f=e.slice();let l=-1;for(const h of e)if(!(!i(h)||!h.pageIndices))for(const u of h.pageIndices)u>l&&(l=u);let c=0;for(const{i:h,insertAfter:u,count:d}of a){const p=Math.min(Math.max(u,-1)+c,l);for(let w=0;wj<=p)||(f[w]={...x,pageIndices:x.pageIndices.map(j=>j>p?j+d:j)})}const m=[];for(let w=0;w{if(!i(f)||f.pageIndices)return f;const c={...f,pageIndices:o[l]||[]};return delete c.insertAfter,c})}async extractPages(e,n,s,a,i){this.#t=s,e=this.#m(e);const r=[];let o=0;const f=m=>{if(!Number.isInteger(m)||m<0)throw new Error("extractPages: invalid page index.");if(this.oldPages[m]!==void 0)throw new Error("extractPages: overlapping pageIndices.");this.oldPages[m]=null},l=[];n&&(this.#e={handler:a,task:i,newAnnotationsByPage:kf(n),imagesPromises:hs.generateImages(n.values(),this.xrefWrapper,!0)});const c=[];for(const m of e){const{document:b,image:w,includePages:x,excludePages:j,pageIndices:k}=m;if(w){if(k&&(o=-1,k.length>1))throw new Error("extractPages: too many pageIndices.");let A;if(k?.length)A=k[0];else if(o!==-1)A=o++;else for(A=0;this.oldPages[A]!==void 0;A++);f(A),c.push({image:w,slot:A});continue}if(!b)continue;k&&(o=-1);const y=this.#d({document:b,includePages:x,excludePages:j});if(k&&k.length>y.length)throw new Error("extractPages: too many pageIndices.");const q=new p5(b);l.push(q),r.push(this.#p(q));let v=0;for(const A of y){let S;if(k&&(S=k[v++]),S===void 0)if(o!==-1)S=o++;else for(S=0;this.oldPages[S]!==void 0;S++);f(S),r.push(b.getPage(A).then(F=>{this.oldPages[S]=new m5(F,q)}))}}if(await Promise.all(r),this.oldPages.length===0)throw new Error("extractPages: nothing to extract.");const h=new Map,u=new Set;for(let m=0,b=this.oldPages.length;m0?this.#L():null;for(let m=0,b=this.oldPages.length;me.destinations=i),n.ensureCatalog("rawPageLabels").then(i=>e.pageLabels=i),n.ensureCatalog("structTreeRoot").then(i=>e.structTreeRoot=i),n.ensureCatalog("acroForm").then(i=>e.acroForm=i),n.ensureCatalog("documentOutlineForEditor").then(i=>e.outline=i),n.ensureCatalog("rawEmbeddedFiles").then(i=>e.embeddedFiles=i)]);const a=e.structTreeRoot;if(a){const i=a.dict,r=i.get("ParentTree");if(r){const l=new qr(r,s);e.parentTree=l.getAll(!0)}const o=i.get("IDTree");if(o){const l=new Ms(o,s);e.idTree=l.getAll(!0)}e.roleMap=i.get("RoleMap")||null,e.classMap=i.get("ClassMap")||null;let f=i.get("Namespaces")||null;f&&!Array.isArray(f)&&(f=[f]),e.namespaces=f,e.structTreeAF=i.get("AF")||null,e.structTreePronunciationLexicon=i.get("PronunciationLexicon")||null}}async#b(e){const{page:{xref:n,annotations:s},documentData:{pagesMap:a,destinations:i,usedNamedDestinations:r,fieldToParent:o}}=e;if(!s)return;const f=[];let l=[],c=0,{hasSignatureAnnotations:h}=e.documentData;for(const u of s){const d=c++;f.push(n.fetchIfRefAsync(u).then(async p=>{if(!ze(p.get("Subtype"),"Link")){if(ze(p.get("Subtype"),"Widget")){h||=ze(rn({dict:p,key:"FT"}),"Sig");const w=p.getRaw("Parent")||null;o.put(u,w)}l[d]=u;return}const m=p.get("A");if(m instanceof B&&!ze(m.get("S"),"GoTo")){l[d]=u;return}const b=m instanceof B?m.get("D"):p.get("Dest");if(!b||Array.isArray(b)&&(!(b[0]instanceof Q)||a.has(b[0])))l[d]=u;else if(b instanceof J||typeof b=="string"){const w=Xe(b instanceof J?b.name:b,!0);i.has(w)&&(l[d]=u,r.add(w))}}))}await Promise.all(f),l=l.filter(Boolean),e.annotations=l.length>0?l:null,e.documentData.hasSignatureAnnotations||=h}#j(e){for(const{postponedRefCopies:n,pagesMap:s}of e)for(const a of s.keys())n.put(a,[])}#k(e){for(const{postponedRefCopies:n,oldRefMapping:s}of e){for(const[a,i]of n.items()){const r=s.get(a);for(const o of i)o(r)}n.clear()}}#w(e,n,s=new bt){if(e instanceof Q){s.has(e)||(s.put(e),this.#w(this.xref[e.num],n,s));return}if(Array.isArray(e)){for(const i of e)this.#w(i,n,s);return}let a;if(e instanceof Pe?{dict:a}=e:e instanceof B&&(a=e),a){n(a);for(const i of a.getRawValues())this.#w(i,n,s)}}async#y(e){let n=0;const{parentTree:s}=this;for(let h=0,u=this.newPages.length;h{const q=y.get("StructParent")??y.get("StructParents");if(typeof q!="number")return;b.add(q);let v=d.get(q);const A=v instanceof Q?v:null;if(A){const F=w.fetch(A);Array.isArray(F)&&(v=F)}if(Array.isArray(v)&&v.every(F=>F===null)&&(v=null),!v){y.has("StructParent")?y.delete("StructParent"):y.delete("StructParents");return}let S=m.get(q);S===void 0&&(S=n++,m.set(q,S),s.set(S,[p,v])),y.has("StructParent")?y.set("StructParent",S):y.set("StructParents",S)},k)}const{structTreeKids:a,idTree:i,classMap:r,roleMap:o,namespaces:f,structTreeAF:l,structTreePronunciationLexicon:c}=this;for(const h of e){const{document:{xref:u},oldRefMapping:d,parentTree:p,usedStructParents:m,structTreeRoot:b,idTree:w,classMap:x,roleMap:j,namespaces:k,structTreeAF:y,structTreePronunciationLexicon:q}=h;if(!b)continue;this.currentDocument=h;const v=new bt;for(const[D,$]of p||[])!m.has(D)&&$ instanceof Q&&v.put($);const A=new Map;for(const[D,$]of w||[]){let K=D;if(i.has(D))for(let oe=1;;oe++){const me=`${D}_${oe}`;if(!i.has(me)){A.set(D,me),K=me;break}}i.set(K,$)}const S=new Map;if(x?.size>0)for(let[D,$]of x){if($=await this.#n($,!0,u),r.has(D))for(let K=1;;K++){const oe=`${D}_${K}`;if(!r.has(oe)){S.set(D,oe),D=oe;break}}r.set(D,$)}const F=new Map;if(j?.size>0)for(const[D,$]of j){const K=o.get(D);if(!K){o.set(D,$);continue}if(K!==$)for(let oe=1;;oe++){const me=`${D}_${oe}`;if(!o.has(me)){F.set(D,me),o.set(me,$);break}}}if(k?.length>0)for(const D of k){const $=await u.fetchIfRefAsync(D);let K=$.get("NS");if(!K||f.has(K))continue;K=Xe(K,!1);const oe=await this.#n($,!0,u);f.set(K,oe)}if(y)for(const D of y)l.push(await this.#n(D,!0,u));if(q)for(const D of q)c.push(await this.#n(D,!0,u));const M=b.dict.getRaw("K");if(!M)continue;const N=await this.#c(M,u);for(let D of N){const $=D instanceof Q?D:null;if(D=await u.fetchIfRefAsync(D),!(D instanceof B))continue;let K=!1;if($&&v.has($)){if(!ze(D.get("S"),"Link"))continue;K=!0}const oe=await this.#h($,D,u,v,A,S,F);oe&&(a.push(oe),$&&d.put($,oe),K&&this.xref[oe.num].setIfName("S","Span"))}for(const[D,$]of w||[]){const K=$ instanceof Q&&d.get($),oe=A.get(D)||D;K?i.set(oe,K):i.delete(oe)}}for(const[h,[u,d]]of s){if(!d){s.delete(h);continue}if(!Array.isArray(d)){const m=u.get(d);m===void 0?s.delete(h):s.set(h,m);continue}const p=d.map(m=>m instanceof Q&&u.get(m)||null);if(p.length===0||p.every(m=>m===null)){s.delete(h);continue}s.set(h,p)}this.currentDocument=null}#q(e){for(const n of e){if(!n.destinations)continue;const{destinations:s,pagesMap:a}=n,i=n.destinations=new Map;for(const[r,o]of s){const f=o[0],l=f instanceof Q&&a.get(f);l&&((l.pointingNamedDestinations||=new Set).add(r),i.set(r,o))}}}#v(){const{namedDestinations:e}=this,n=s=>{if(!e.has(s))return s;for(let a=1;;a++){const i=`${s}_${a}`;if(!e.has(i))return i}};for(let s=0,a=this.oldPages.length;s{typeof r=="string"&&a.set(i,n.get(Xe(r,!0))||r)};for(const a of e){const i=this.xref[a.num];if(!ze(i.get("Subtype"),"Link"))continue;const r=i.get("A");if(r instanceof B&&r.has("D")){const f=r.get("D");s(r,"D",f);continue}const o=i.get("Dest");s(i,"Dest",o)}}#A(e){const n=(s,a,i)=>{for(const r of s)typeof r.dest=="string"&&a?.has(r.dest)&&i.add(r.dest),r.items.length>0&&n(r.items,a,i)};for(const s of e){const{outline:a,destinations:i,usedNamedDestinations:r}=s;a?.length&&n(a,i,r)}}#I(e,n){const{dest:s,action:a,url:i,unsafeUrl:r,attachment:o,setOCGState:f}=e;if(a||i||r||o||f)return!0;if(!s)return!1;if(typeof s=="string"){const l=n.dedupNamedDestinations.get(s)||s;return this.namedDestinations.has(l)}return Array.isArray(s)&&s[0]instanceof Q?!!n.oldRefMapping.get(s[0]):!1}#x(e,n){const s=[];for(const a of e){const i=this.#x(a.items,n),r=this.#I(a,n);(r||i.length>0)&&s.push({...a,dest:r?a.dest:null,rawDict:r?a.rawDict:null,items:i,_documentData:n})}return s}#C(e){const n=[];for(const s of e){const{outline:a}=s;a?.length&&n.push(...this.#x(a,s))}this.outlineItems=n.length>0?n:null}async#T(e,n){const{dest:s,rawDict:a}=n,i=n._documentData;if(s){if(typeof s=="string"){const o=i.dedupNamedDestinations.get(s)||s;e.set("Dest",Zt(o))}else if(Array.isArray(s)){const o=s.slice();o[0]instanceof Q&&(o[0]=i.oldRefMapping.get(o[0])||o[0]),e.set("Dest",o)}return}const r=a?.get("A");if(r instanceof B){this.currentDocument=i;const o=await this.#a(r,i.document.xref);this.currentDocument=null,e.set("A",o)}}async#B(){const{outlineItems:e}=this;if(!e?.length)return;const[n,s]=this.newDict;s.setIfName("Type","Outlines");const a=o=>{for(const f of o)[f._ref]=this.newDict,f.items.length>0&&a(f.items)};a(e);const i=async(o,f)=>{let l=0;for(let c=0;c0&&u.set("Prev",o[c-1]._ref),c0){u.set("First",h.items[0]._ref),u.set("Last",h.items.at(-1)._ref);const p=await i(h.items,h._ref);h.count!==void 0&&u.set("Count",h.count<0?-p:p),l+=h.count!==void 0&&h.count<0?1:p+1}else l+=1;await this.#T(u,h);const d=(h.bold?2:0)|(h.italic?1:0);d!==0&&u.set("F",d),h.color&&(h.color[0]!==0||h.color[1]!==0||h.color[2]!==0)&&u.set("C",[h.color[0]/255,h.color[1]/255,h.color[2]/255])}return l},r=await i(e,n);s.set("First",e[0]._ref),s.set("Last",e.at(-1)._ref),s.set("Count",r),this.rootDict.set("Outlines",n)}async#F(e){this.#H(e),this.#M(e),this.#R(e),await this.#D(e);const n=this.fields;for(const s of e){let a=s.acroForm?.get("Fields")||null;!a&&s.fieldToParent.size>0&&(a=this.#_(s.fieldToParent,s.document.xref)),Array.isArray(a)&&a.length>0&&(this.currentDocument=s,await this.#P(n,a),this.currentDocument=null)}this.#E(e)}#R(e){let n=0,s=null;for(const a of e){const i=a.acroForm?.get("Q");if(!(typeof i!="number"||i===0)){if(s?.acroFormQ>0){a.acroFormQ=i;continue}if(n===0){n=i,s=a;continue}i!==n&&(s.acroFormQ||=n,a.acroFormQ=i,n=0)}}n>0&&(this.acroFormQ=n)}#H(e){let n=0,s=!1;for(const a of e){if(!a.acroForm)continue;const i=a.acroForm.get("SigFlags");typeof i=="number"&&a.hasSignatureAnnotations&&(n|=i),a.acroForm.get("NeedAppearances")===!0&&(s=!0)}this.acroFormSigFlags=n,this.acroFormNeedAppearances=s}#E(e){const n=[];for(const s of e){const a=s.acroForm?.get("CO")||null;if(!Array.isArray(a))continue;const{oldRefMapping:i}=s;for(const r of a){const o=r instanceof Q&&i.get(r);o&&n.push(o)}}this.acroFormCalculationOrder=n.length>0?n:null}#M(e){let n=null,s=null;for(const a of e){const i=a.acroForm?.get("DA")||null;if(!(!i||typeof i!="string")){if(s?.acroFormDefaultAppearance){a.acroFormDefaultAppearance=i;continue}if(!n){n=i,s=a;continue}i!==n&&(s.acroFormDefaultAppearance||=n,a.acroFormDefaultAppearance=i,n=null)}}n&&(this.acroFormDefaultAppearance=n)}async#D(e){let n=null,s=null,a=null;for(const i of e){const r=i.acroForm?.get("DR")||null;if(!(!r||!(r instanceof B))){if(a?.acroFormDefaultResources){i.acroFormDefaultResources=r;continue}if(!n){n=r,s=i.acroForm.getRaw("DR"),a=i;continue}Go(n,r)||(a.acroFormDefaultResources||=n,i.acroFormDefaultResources=r,n=null,s=null)}}n&&(this.currentDocument=a,this.acroFormDefaultResources=await this.#n(s,!0,a.document.xref),this.currentDocument=null)}#_(e,n){const s=[],a=new bt;for(const[i,r]of e.items()){if(!r){s.push(i);continue}let o=r,f=r;const l=new bt;for(;;){if(o instanceof Q){if(l.has(o))break;l.put(o)}const c=n.fetchIfRef(o);if(!(c instanceof B)||(o=c.getRaw("Parent")||null,!o))break;f=o}f instanceof Q&&!a.has(f)&&(s.push(f),a.put(f))}return s}async#P(e,n){const s=new bt,a=[{kids:n,newKids:e,pos:0,oldParentRef:null,parentRef:null,parent:null}],{document:{xref:i},oldRefMapping:r,fieldToParent:o,acroFormDefaultAppearance:f,acroFormDefaultResources:l,acroFormQ:c}=this.currentDocument,h=[],u=[];for(;a.length>0;){const m=a.at(-1),{kids:b,newKids:w,parent:x,pos:j}=m;if(j===b.length){if(a.pop(),w.length===0||!x)continue;const A=this.xref[m.parentRef.num]=this.cloneDict(x);if(A.delete("Parent"),A.delete("Kids"),await this.#n(A,!1,i),A.set("Kids",w),a.length>0){const S=a.at(-1);if(!S.parentRef&&S.oldParentRef){const F=S.parentRef=this.newRef;A.set("Parent",F),r.put(S.oldParentRef,F)}S.newKids.push(m.parentRef)}continue}const k=b[m.pos++];if(!(k instanceof Q)||s.has(k))continue;s.put(k);const y=i.fetchIfRef(k);if(!(y instanceof B))continue;if(y.has("Kids")){const A=y.get("Kids");if(!Array.isArray(A))continue;a.push({kids:A,newKids:[],pos:0,oldParentRef:k,parentRef:null,parent:y});continue}if(!o.has(k))continue;const q=r.get(k);if(!q)continue;w.push(q),!m.parentRef&&m.oldParentRef&&(m.parentRef=this.newRef,r.put(m.oldParentRef,m.parentRef));const v=this.xref[q.num];m.parentRef&&v.set("Parent",m.parentRef),f&&!v.has("DA")&&h.push(v),l&&!v.has("Kids")&&v.get("AP")instanceof B&&u.push(v),c&&!v.has("Q")&&v.set("Q",c)}for(const m of h){const b=rn({dict:m,key:"FT"});if(!ze(b,"Tx"))continue;rn({dict:m,key:"DA"})||m.set("DA",f)}const d=new Map,p=async m=>{let b=m.dict.getRaw("Resources");if(b&&=this.xrefWrapper.fetchIfRef(b),!(b instanceof B)){const w=await d.getOrInsertComputed(l,()=>this.#a(l,i));m.dict.set("Resources",w);return}for(const[w,x]of l.getRawEntries()){if(b.has(w))continue;let j=x;x instanceof Q?j=await this.#n(x,!0,i):(x instanceof B||x instanceof Pe||Array.isArray(x))&&(j=await d.getOrInsertComputed(x,()=>this.#a(x,i))),b.set(w,j)}};for(const m of u){const b=m.get("AP");for(const[,w]of b)if(w instanceof Pe)await p(w);else if(w instanceof B)for(const[,x]of w)x instanceof Pe&&await p(x)}}async#N(){if(!this.isSingleFile)return;const e=this.oldPages.find(h=>!!h);if(!e)return;const{documentData:{document:n,pageLabels:s}}=e;if(!s)return;const a=n.numPages,i=new Map,r=new Set(this.oldPages.filter(Boolean).map(({page:{pageIndex:h}})=>h));let o=null,f=-1;for(let h=0;h{const u=new B;return u.setIfName("S","D"),u.set("St",h+1),u};o=null;const c=this.pageLabels=[];for(let h=0,u=this.oldPages.length;hq!==h[v])&&m.set(k,y)}const w=n.userUnit;w!==1&&m.set("UserUnit",w),m.setIfDict("Resources",await this.#n(u,!0,l));let x=null;if(a){const k=await this.#n(a,!0,l);this.#S(k,o),Array.isArray(k)&&k.length>0&&(x=k)}const j=s.document===this.#t?this.#e?.newAnnotationsByPage?.get(n.pageIndex)?.filter(({copyLevel:k})=>(k??0)===r):null;if(j?.length){const{handler:k,task:y,imagesPromises:q}=this.#e,v=new $t,A=await hs.saveNewAnnotations(n._createPartialEvaluator(k),this.xrefWrapper,y,j,q,v);for(const[S,{data:F}]of v.items())this.xref[S.num]=F;x||=[];for(const{ref:S}of A.annotations)x.push(S)}if(m.setIfArray("Annots",x),this.useObjectStreams){const k=this.newRefCount,y=[];for(let q=b;qn.count||s.count===n.count&&s.width*s.height>n.width*n.height)&&(n=s);return{width:n.width,height:n.height}}async#z(e,n){const{width:s,height:a}=n,r=s*.1,o=Math.max(1,s-2*r),f=Math.max(1,a-2*r),l=this.newRefCount,{imageStream:c,smaskStream:h,width:u,height:d}=await _h(e,this.xrefWrapper,{closeBitmap:!0}),p=Math.min(o/u,f/d),m=u*p,b=d*p,w=(s-m)/2,x=(a-b)/2;if(h){const M=this.newRef;this.xref[M.num]=h,c.dict.set("SMask",M)}const j=this.newRef;this.xref[j.num]=c;const k=new B(this.xrefWrapper);k.set("Im0",j);const y=new B(this.xrefWrapper);y.set("XObject",k),y.set("ProcSet",[J.get("PDF"),J.get("ImageC")]);const q=`q ${jt(m)} 0 0 ${jt(b)} ${jt(w)} ${jt(x)} cm /Im0 Do Q`,v=new hn(q,new B(this.xrefWrapper)),A=this.newRef;this.xref[A.num]=v;const S=this.newRef,F=this.xref[S.num]=new B(this.xrefWrapper);if(F.setIfName("Type","Page"),F.set("MediaBox",[0,0,s,a]),F.set("Resources",y),F.set("Contents",A),this.useObjectStreams){const M=this.newRefCount,N=[];for(let D=l;D0;){const{dict:o,kids:f,parentRef:l}=r.pop();if(f.length<=i){o.set("Kids",f);for(const d of f)this.xref[d.num].set("Parent",l);continue}const c=Math.max(i,Math.ceil(f.length/i)),h=[];for(let d=0;dlc?1:0:([l],[c])=>l-c),a=d5,[i,r]=this.newDict,o=[{dict:r,entries:s,isRoot:!0}],f=n?"Names":"Nums";for(;o.length>0;){const{dict:l,entries:c,isRoot:h}=o.pop();if(c.length<=a){h||l.set("Limits",[c[0][0],c.at(-1)[0]]),l.set(f,c.flat());continue}const u=[],d=Math.max(a,Math.ceil(c.length/a));for(let m=0;m[Zt(n),s]),!0)))}#$(){const{structTreeKids:e}=this;if(!e?.length)return;const{rootDict:n}=this,s=this.newRef,a=this.xref[s.num]=new B;a.setIfName("Type","StructTreeRoot"),a.setIfArray("K",e);for(const i of e){const r=this.xref[i.num],o=r.get("Type");(!o||ze(o,"StructElem"))&&r.set("P",s)}if(this.parentTree.size>0){const i=this.#g(Array.from(this.parentTree.entries()),!1);this.xref[i.num].setIfName("Type","ParentTree"),a.set("ParentTree",i);let o=0;for(const f of this.parentTree.keys())o=Math.max(o,f+1);a.set("ParentTreeNextKey",o)}if(this.idTree.size>0){const i=this.#g(Array.from(this.idTree.entries()),!0);this.xref[i.num].setIfName("Type","IDTree"),a.set("IDTree",i)}if(this.classMap.size>0){const i=this.newRef;this.xref[i.num]=this.classMap,a.set("ClassMap",i)}if(this.roleMap.size>0){const i=this.newRef;this.xref[i.num]=this.roleMap,a.set("RoleMap",i)}if(this.namespaces.size>0){const i=this.newRef;this.xref[i.num]=Array.from(this.namespaces.values()),a.set("Namespaces",i)}if(this.structTreeAF.length>0){const i=this.newRef;this.xref[i.num]=this.structTreeAF,a.set("AF",i)}if(this.structTreePronunciationLexicon.length>0){const i=this.newRef;this.xref[i.num]=this.structTreePronunciationLexicon,a.set("PronunciationLexicon",i)}n.set("StructTreeRoot",s)}#X(){if(this.fields.length===0)return;const{rootDict:e}=this,n=this.newRef,s=this.xref[n.num]=new B;e.set("AcroForm",n),s.set("Fields",this.fields),this.acroFormNeedAppearances&&s.set("NeedAppearances",!0),this.acroFormSigFlags>0&&s.set("SigFlags",this.acroFormSigFlags),s.setIfArray("CO",this.acroFormCalculationOrder),s.setIfDefined("DR",this.acroFormDefaultResources),this.acroFormDefaultAppearance&&s.set("DA",this.acroFormDefaultAppearance),this.acroFormQ>0&&s.set("Q",this.acroFormQ)}async#Y(){const{rootDict:e}=this;e.setIfName("Type","Catalog"),e.setIfName("Version",this.version),this.#X(),this.#U(),this.#G(),this.#K(),this.#V(),this.#$(),await this.#B()}#J(){const e=new Map;if(this.isSingleFile){const n=this.oldPages.find(i=>!!i),{xref:{trailer:s}}=n.documentData.document,a=s.get("Info");for(const[i,r]of a||[])typeof r=="string"&&e.set(i,Xe(r))}e.delete("ModDate"),e.set("CreationDate",ua()),e.set("Creator","PDF.js"),e.set("Producer","Firefox"),this.author&&e.set("Author",this.author),this.title&&e.set("Title",this.title);for(const[n,s]of e)this.infoDict.set(n,Zt(s));return e}async#Q(){if(!this.isSingleFile)return[null,null,null];const e=this.oldPages.find(o=>!!o),{documentData:n}=e,{document:{xref:{trailer:s,encrypt:a}}}=n;if(!s.has("Encrypt"))return[null,null,null];const i=s.get("Encrypt");if(!(i instanceof B))return[null,null,null];this.currentDocument=n;const r=[await this.#a(i,s.xref),a,s.get("ID")];return this.currentDocument=null,r}async#Z(){const e=new $t;e.put(Q.get(0,65535),{data:null});for(let n=1,s=this.xref.length;n{this._contentLength=a.contentLength,this._isStreamingSupported=a.isStreamingSupported,this._isRangeSupported=a.isRangeSupported,this._headersCapability.resolve()},this._headersCapability.reject)}async read(){const{value:e,done:n}=await this._reader.read();return n?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class q5 extends j5{_reader=null;constructor(e,n,s){super(e,n,s);const{msgHandler:a}=e._source,i=a.sendWithStream("GetRangeReader",{begin:n,end:s});this._reader=i.getReader()}async read(){const{value:e,done:n}=await this._reader.read();return n?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class Es{#e=Promise.withResolvers();terminated=!1;constructor(e){this.name=e}get finished(){return this.#e.promise}finish(){this.#e.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}const al=class al{static setup(e,n){let s=!1;e.on("test",a=>{s||(s=!0,e.send("test",a instanceof Uint8Array))}),e.on("configure",a=>{Lu(a.verbosity)}),e.on("GetDocRequest",a=>this.createDocumentHandler(a,n))}static createDocumentHandler(e,n){let s,a=!1,i=null;const r=new Set,o=zu(),{docId:f,apiVersion:l}=e,c="6.3.289";if(l!==c)throw new Error(`The API version "${l}" does not match the Worker version "${c}".`);const h=(y,q)=>`The \`${y}.prototype\` contains unexpected enumerable property "${q}", thus breaking e.g. \`for...in\` iteration of ${y}s.`;for(const y in{})throw new Error(h("Object",y));for(const y in[])throw new Error(h("Array",y));const u=f+"_worker";let d=new Ec(u,f,n);function p(){if(a)throw new Error("Worker was terminated")}function m(y){r.add(y)}function b(y){y.finish(),r.delete(y)}async function w(y){await s.initDocument(y);const q=await s.ensureDoc("isPureXfa");if(q){const F=new Es("loadXfaResources");m(F),await s.ensureDoc("loadXfaResources",[d,F]),b(F)}const[v,A]=await Promise.all([s.ensureDoc("numPages"),s.ensureDoc("fingerprints")]),S=q?await s.ensureDoc("htmlForXfa"):null;return{numPages:v,fingerprints:A,htmlForXfa:S}}async function x({data:y,password:q,disableAutoFetch:v,rangeChunkSize:A,docBaseUrl:S,enableXfa:F,evaluatorOptions:M}){const N={source:null,disableAutoFetch:v,docBaseUrl:S,docId:f,enableXfa:F,evaluatorOptions:M,handler:d,length:0,password:q,rangeChunkSize:A};if(y)return N.source=y,new Mo(N);const D=new k5({msgHandler:d}),$=D.getFullReader(),{promise:K,resolve:oe,reject:me}=Promise.withResolvers();let X,ee=[];i=Be=>D.cancelAllRequests(Be),$.headersReady.then(()=>{if($.isRangeSupported){N.source=D,N.length=$.contentLength,N.disableAutoFetch||=$.isStreamingSupported,X=new e5(N);for(const Be of ee)X.sendProgressiveData(Be);ee=null,oe(X),i=null}}).catch(Be=>{me(Be),i=null});async function ye(){let Be=0;for(;;){const{value:ae,done:$e}=await $.read();if(p(),$e)break;Be+=ae.byteLength,$.isStreamingSupported||d.send("DocProgress",{loaded:Be,total:$.contentLength}),X?X.sendProgressiveData(ae):ee.push(ae)}X||(N.source=Wc(ee),ee=null,X=new Mo(N),oe(X)),i=null}return ye().catch(Be=>{me(Be),i=null}),K}async function j(y){const q=new Es(`PasswordException: response ${y.code}`);m(q);try{return(await d.sendWithPromise("PasswordRequest",y)).password}finally{Promise.resolve().then(()=>{b(q)})}}function k(y){function q(S){p(),d.send("GetDoc",{pdfInfo:S})}function v(S){a||(S instanceof Os?j(S).then(F=>{s.updatePassword(F),A()}).catch(()=>{d.send("DocException",S)}):d.send("DocException",zn(S)))}function A(){p(),w(!1).then(q,function(S){if(p(),!(S instanceof Da)){v(S);return}s.requestLoadedStream().then(function(){p(),w(!0).then(q,v)},v)})}p(),x(y).then(function(S){if(a)throw S.terminate(new fn("Worker was terminated.")),new Error("Worker was terminated");s=S,s.requestLoadedStream(!0).then(F=>{d.send("DataLoaded",{length:F.bytes.byteLength})},()=>{})}).then(A,v)}return d.on("GetPage",async function({pageIndex:y}){const q=await s.getPage(y),[v,A,S,F]=await Promise.all([s.ensure(q,"rotate"),s.ensure(q,"ref"),s.ensure(q,"userUnit"),s.ensure(q,"view")]);return{rotate:v,ref:A,refStr:A?.toString()??null,userUnit:S,view:F}}),d.on("GetPageIndex",function({num:y,gen:q}){return s.ensureCatalog("getPageIndex",[Q.get(y,q)])}),d.on("GetDestinations",function(){return s.ensureCatalog("destinations")}),d.on("GetDestination",function({id:y}){return s.ensureCatalog("getDestination",[y])}),d.on("GetPageLabels",function(){return s.ensureCatalog("pageLabels")}),d.on("GetPageLayout",function(){return s.ensureCatalog("pageLayout")}),d.on("GetPageMode",function(){return s.ensureCatalog("pageMode")}),d.on("GetViewerPreferences",function(){return s.ensureCatalog("viewerPreferences")}),d.on("GetOpenAction",function(){return s.ensureCatalog("openAction")}),d.on("GetAttachments",function(){return s.ensureCatalog("attachments")}),d.on("GetAttachmentContent",async function(y){let q;for(;;){const v=q?await j(q):null;try{return v&&s.updatePassword(v),await s.ensureCatalog("attachmentContent",[y])}catch(A){if(A instanceof Os){q=A;continue}throw A}}}),d.on("GetDocJSActions",function(){return s.ensureCatalog("jsActions")}),d.on("GetPageJSActions",async function({pageIndex:y}){const q=await s.getPage(y);return s.ensure(q,"jsActions")}),d.on("GetAnnotationsByType",async function({types:y,pageIndexesToSkip:q}){const[v,A]=await Promise.all([s.ensureDoc("numPages"),s.ensureDoc("annotationGlobals")]);if(!A)return null;const S=[],F=[];let M=null;try{for(let D=0,$=v;D<$;D++)q?.has(D)||(M||(M=new Es("GetAnnotationsByType"),m(M)),S.push(s.getPage(D).then(K=>K.collectAnnotationsByType(d,M,y,F,A))));return await Promise.all(S),(await Promise.all(F)).filter(Boolean)}finally{M&&b(M)}}),d.on("GetOutline",function(){return s.ensureCatalog("documentOutline")}),d.on("GetOptionalContentConfig",function(){return s.ensureCatalog("optionalContentConfig")}),d.on("GetPermissions",function(){return s.ensureCatalog("permissions")}),d.on("GetMetadata",function(){return Promise.all([s.ensureDoc("documentInfo"),s.ensureCatalog("metadata"),s.ensureCatalog("hasStructTree")])}),d.on("GetMarkInfo",function(){return s.ensureCatalog("markInfo")}),d.on("GetData",async function(){return(await s.requestLoadedStream()).bytes}),d.on("GetAnnotations",async function({pageIndex:y,intent:q}){const v=await s.getPage(y),A=new Es(`GetAnnotations: page ${y}`);m(A);try{return await v.getAnnotationsData(d,A,q)}finally{b(A)}}),d.on("GetFieldObjects",async function(){return(await s.ensureDoc("fieldObjects"))?.allFields||null}),d.on("GetSignatures",function(){return s.ensureDoc("signatures")}),d.on("GetSignatureData",function(y){return s.ensureDoc("getSignatureData",[y])}),d.on("HasJSActions",function(){return s.ensureDoc("hasJSActions")}),d.on("GetCalculationOrderIds",function(){return s.ensureDoc("calculationOrderIds")}),d.on("ExtractPages",async function({pageInfos:y,annotationStorage:q}){if(!y)return H("extractPages: nothing to extract."),null;Array.isArray(y)||(y=[y]);let v=0;for(const S of y)if(!S.image)if(S.document===null)S.document=s.pdfDocument;else if(ArrayBuffer.isView(S.document)){const F=new Mo({source:S.document,docId:`${f}_extractPages_${v++}`,handler:d,password:S.password??null,evaluatorOptions:Object.assign({},s.evaluatorOptions)});let M=!1,N=!0;for(;;)try{await F.requestLoadedStream(),await F.initDocument(M);break}catch($){if($ instanceof Da)if(M===!1){M=!0;continue}else N=!1,H("extractPages: XRefParseException.");else if($ instanceof Os)try{const K=await j($);F.updatePassword(K)}catch{N=!1,H("extractPages: invalid password.")}else N=!1,H("extractPages: invalid document.");if(!N)break}N||(S.document=null),await F.ensureDoc("isPureXfa")?(S.document=null,H("extractPages does not support pure XFA documents.")):S.document=F.pdfDocument}else H("extractPages: invalid document.");let A;try{const S=new b5;return A=new Es(`ExtractPages: ${y.length} page(s)`),m(A),await S.extractPages(y,q,s.pdfDocument,d,A)}catch(S){return H(`extractPages: "${S}".`),null}finally{A&&b(A)}}),d.on("SaveDocument",async function({isPureXfa:y,numPages:q,annotationStorage:v,filename:A}){const S=[s.requestLoadedStream(),s.ensureCatalog("acroForm"),s.ensureCatalog("acroFormRef"),s.ensureDoc("startXRef"),s.ensureDoc("xref"),s.ensureCatalog("structTreeRoot")],F=new $t,M=[],N=y?null:kf(v),[D,$,K,oe,me,X]=await Promise.all(S),ee=me.trailer.getRaw("Root")||null;let ye;if(N){X?await X.canUpdateStructTree({pdfManager:s,newAnnotationsByPage:N})&&(ye=X):await oa.canCreateStructureTree({catalogRef:ee,pdfManager:s,newAnnotationsByPage:N})&&(ye=null);const z=hs.generateImages(v.values(),me,s.evaluatorOptions.isOffscreenCanvasSupported),te=ye===void 0?M:[];for(const[je,he]of N)te.push(s.getPage(je).then(ie=>{const Fe=new Es(`Save (editor): page ${je}`);return m(Fe),ie.saveNewAnnotations(d,Fe,he,z,F).finally(()=>{b(Fe)})}));ye===null?M.push(Promise.all(te).then(async()=>{await oa.createStructureTree({newAnnotationsByPage:N,xref:me,catalogRef:ee,pdfManager:s,changes:F})})):ye&&M.push(Promise.all(te).then(async()=>{await ye.updateStructureTree({newAnnotationsByPage:N,pdfManager:s,changes:F})}))}if(y)M.push(s.ensureDoc("serializeXfaData",[v]));else for(let z=0;z{b(je)})}));const Be=await Promise.all(M);let ae=null;if(y){if(ae=Be[0],!ae)return D.bytes}else if(F.size===0)return D.bytes;const $e=K&&$ instanceof B&&F.values().some(z=>z.needAppearances),tt=$ instanceof B&&$.get("XFA")||null;let G=null,_=!1;if(Array.isArray(tt)){for(let z=0,te=tt.length;z{me.resetNewTemporaryRef()})}),d.on("GetOperatorList",function({pageId:y,pageIndex:q,intent:v,cacheKey:A,annotationStorage:S,modifiedIds:F},M){s.getPage(y).then(function(N){const D=new Es(`GetOperatorList: page ${q}`);m(D);const $=o>=hr.INFOS?Date.now():0;N.getOperatorList({handler:d,sink:M,task:D,intent:v,cacheKey:A,annotationStorage:S,modifiedIds:F,pageIndex:q}).then(K=>{$&&ut(`${D.name}; time=${Date.now()-$}ms, len=${K.length}`),M.close()},K=>{D.terminated||M.error(K)}).finally(()=>{b(D)})})}),d.on("GetTextContent",function({pageId:y,pageIndex:q,includeMarkedContent:v,disableNormalization:A},S){s.getPage(y).then(function(F){const M=new Es("GetTextContent: page "+q);m(M);const N=o>=hr.INFOS?Date.now():0;F.extractTextContent({handler:d,task:M,sink:S,includeMarkedContent:v,disableNormalization:A}).then(()=>{N&&ut(`${M.name}; time=${Date.now()-N}ms`),S.close()},D=>{M.terminated||S.error(D)}).finally(()=>{b(M)})})}),d.on("GetStructTree",async function({pageIndex:y}){const q=await s.getPage(y);return s.ensure(q,"getStructTree")}),d.on("FontFallback",function({id:y}){return s.fontFallback(y,d)}),d.on("Cleanup",function(){return s.cleanup(!0)}),d.on("Terminate",async function(){a=!0;const y=[];if(s){s.terminate(new fn("Worker was terminated."));const q=s.cleanup();y.push(q),s=null}else _f();i?.(new fn("Worker was terminated."));for(const q of r)y.push(q.finished),q.terminate();await Promise.all(y),d.destroy(),d=null}),d.on("Ready",function(){k(e),e=null}),u}static initializeFromPort(e){const n=new Ec("worker","main",e);this.setup(n,e),n.send("ready",null)}};typeof window>"u"&&!Eu&&typeof self<"u"&&typeof self.postMessage=="function"&&"onmessage"in self&&al.initializeFromPort(self);let xf=al;globalThis.pdfjsWorker={WorkerMessageHandler:xf}; +//# sourceMappingURL=pdf.worker.js.map diff --git a/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js.map b/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js.map new file mode 100644 index 000000000..dbfffb03d --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pdf.worker.js","sources":["../node_modules/pdfjs-dist/build/pdf.worker.mjs"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 6.3.289\n * pdfjsBuild = 1c8020a7d\n */\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst BBOX_INIT = [Infinity, Infinity, -Infinity, -Infinity];\nconst F32_BBOX_INIT = new Float32Array(BBOX_INIT);\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = (/* unused pure expression or super */ null && ({\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n}));\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\n};\nconst AnnotationEditorParamsType = (/* unused pure expression or super */ null && ({\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n INK_COLOR_AND_OPACITY: 24,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41\n}));\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst MeshFigureType = {\n TRIANGLES: 1,\n LATTICE: 2,\n PATCH: 3\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n RICHMEDIA: 27\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationRenditionOperation = {\n PLAY_OR_RESUME: 0,\n STOP: 1,\n PAUSE: 2,\n RESUME: 3,\n PLAY: 4\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n quadraticCurveTo: 3,\n closePath: 4\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction stripPath(str) {\n return str.substring(str.lastIndexOf(\"/\") + 1);\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nclass FeatureTest {\n static get isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return shadow(this, \"isLittleEndian\", view32[0] === 1);\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get isFloat16ArraySupported() {\n return shadow(this, \"isFloat16ArraySupported\", typeof Float16Array !== \"undefined\");\n }\n static get isSanitizerSupported() {\n return shadow(this, \"isSanitizerSupported\", typeof Sanitizer !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCanvasFilterSupported() {\n let ctx;\n if (this.isOffscreenCanvasSupported) {\n ctx = new OffscreenCanvas(1, 1).getContext(\"2d\");\n }\n return shadow(this, \"isCanvasFilterSupported\", ctx?.filter !== undefined);\n }\n static get isAlphaColorInputSupported() {\n return shadow(this, \"isAlphaColorInputSupported\", false);\n }\n static get isBackdropFilterSupported() {\n return shadow(this, \"isBackdropFilterSupported\", typeof CSS !== \"undefined\" && CSS.supports(\"backdrop-filter\", \"blur(1px)\"));\n }\n}\nclass Util {\n static get hexNums() {\n return shadow(this, \"hexNums\", Array.from({\n length: 256\n }, (_, n) => n.toString(16).padStart(2, \"0\")));\n }\n static makeHexColor(r, g, b) {\n return `#${this.hexNums[r]}${this.hexNums[g]}${this.hexNums[b]}`;\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\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;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nconst makeArr = () => [];\nconst makeMap = () => new Map();\nconst makeObj = () => Object.create(null);\nconst makeSet = () => new Set();\nif (typeof Iterator.prototype.join !== \"function\") {\n Iterator.prototype.join = function (separator) {\n return [...this].join(separator);\n };\n}\n\n;// ./src/core/primitives.js\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\nlet CmdCache = Object.create(null);\nlet NameCache = Object.create(null);\nlet RefCache = Object.create(null);\nfunction clearPrimitiveCaches() {\n CmdCache = Object.create(null);\n NameCache = Object.create(null);\n RefCache = Object.create(null);\n}\nclass Name {\n constructor(name) {\n this.name = name;\n }\n static get(name) {\n return NameCache[name] ||= new Name(name);\n }\n}\nclass Cmd {\n constructor(cmd) {\n this.cmd = cmd;\n }\n static get(cmd) {\n return CmdCache[cmd] ||= new Cmd(cmd);\n }\n}\nconst nonSerializable = () => nonSerializable;\nclass Dict {\n __nonSerializable__ = nonSerializable;\n #map = new Map();\n objId = null;\n suppressEncryption = false;\n xref;\n constructor(xref = null) {\n this.xref = xref;\n }\n assignXref(newXref) {\n this.xref = newXref;\n }\n get size() {\n return this.#map.size;\n }\n #getValue(isAsync, key1, key2) {\n let value = this.#map.get(key1);\n if (value === undefined && key2 !== undefined) {\n value = this.#map.get(key2);\n }\n if (value instanceof Ref && this.xref) {\n return isAsync ? this.xref.fetchAsync(value, this.suppressEncryption) : this.xref.fetch(value, this.suppressEncryption);\n }\n return value;\n }\n get(key1, key2) {\n return this.#getValue(false, key1, key2);\n }\n async getAsync(key1, key2) {\n return this.#getValue(true, key1, key2);\n }\n getArray(key1, key2) {\n let value = this.#getValue(false, key1, key2);\n if (Array.isArray(value)) {\n value = value.slice();\n for (let i = 0, ii = value.length; i < ii; i++) {\n if (value[i] instanceof Ref && this.xref) {\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n }\n }\n return value;\n }\n getRaw(key) {\n return this.#map.get(key);\n }\n getKeys() {\n return this.#map.keys();\n }\n getRawValues() {\n return this.#map.values();\n }\n getRawEntries() {\n return this.#map.entries();\n }\n set(key, value) {\n this.#map.set(key, value);\n }\n setIfNotExists(key, value) {\n if (!this.has(key)) {\n this.set(key, value);\n }\n }\n setIfNumber(key, value) {\n if (typeof value === \"number\") {\n this.set(key, value);\n }\n }\n setIfArray(key, value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n this.set(key, value);\n }\n }\n setIfDefined(key, value) {\n if (value !== undefined && value !== null) {\n this.set(key, value);\n }\n }\n setIfName(key, value) {\n if (typeof value === \"string\") {\n this.set(key, Name.get(value));\n } else if (value instanceof Name) {\n this.set(key, value);\n }\n }\n setIfDict(key, value) {\n if (value instanceof Dict) {\n this.set(key, value);\n }\n }\n has(key) {\n return this.#map.has(key);\n }\n *[Symbol.iterator]() {\n for (const [key, value] of this.#map) {\n yield [key, value instanceof Ref && this.xref ? this.xref.fetch(value, this.suppressEncryption) : value];\n }\n }\n static get empty() {\n const emptyDict = new Dict(null);\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n static merge({\n xref,\n dictArray,\n mergeSubDicts = false\n }) {\n const mergedDict = new Dict(xref),\n properties = new Map();\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n for (const [key, value] of dict.getRawEntries()) {\n const property = properties.getOrInsertComputed(key, makeArr);\n if (property.length && !(mergeSubDicts && value instanceof Dict)) {\n continue;\n }\n property.push(value);\n }\n }\n for (const [name, values] of properties) {\n if (values.length === 1 || !(values[0] instanceof Dict)) {\n mergedDict.set(name, values[0]);\n continue;\n }\n const subDict = new Dict(xref);\n for (const dict of values) {\n for (const [key, value] of dict.getRawEntries()) {\n subDict.setIfNotExists(key, value);\n }\n }\n if (subDict.size > 0) {\n mergedDict.set(name, subDict);\n }\n }\n properties.clear();\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n clone() {\n const dict = new Dict(this.xref);\n for (const [key, value] of this.#map) {\n dict.set(key, value);\n }\n return dict;\n }\n delete(key) {\n this.#map.delete(key);\n }\n}\nclass Ref {\n #str;\n constructor(str, num, gen) {\n this.#str = str;\n this.num = num;\n this.gen = gen;\n }\n toString() {\n return this.#str;\n }\n static fromString(str) {\n const ref = RefCache[str];\n if (ref) {\n return ref;\n }\n const m = /^(\\d+)R(\\d*)$/.exec(str);\n if (!m || m[1] === \"0\") {\n return null;\n }\n const num = parseInt(m[1], 10),\n gen = !m[2] ? 0 : parseInt(m[2], 10);\n return RefCache[str] = new Ref(str, num, gen);\n }\n static get(num, gen) {\n const str = gen === 0 ? `${num}R` : `${num}R${gen}`;\n return RefCache[str] ||= new Ref(str, num, gen);\n }\n}\nclass RefSet {\n #set = new Set();\n constructor(parent = null) {\n if (parent) {\n for (const refStr of parent) {\n this.#set.add(refStr);\n }\n }\n }\n has(ref) {\n return this.#set.has(ref.toString());\n }\n put(ref) {\n this.#set.add(ref.toString());\n }\n remove(ref) {\n this.#set.delete(ref.toString());\n }\n [Symbol.iterator]() {\n return this.#set.keys();\n }\n clear() {\n this.#set.clear();\n }\n}\nclass RefMap {\n #map = new Map();\n get size() {\n return this.#map.size;\n }\n get(ref) {\n return this.#map.get(ref.toString());\n }\n has(ref) {\n return this.#map.has(ref.toString());\n }\n put(ref, obj) {\n this.#map.set(ref.toString(), obj);\n }\n putAlias(ref, aliasRef) {\n this.#map.set(ref.toString(), this.get(aliasRef));\n }\n getOrPutComputed(ref, callback) {\n const map = this.#map,\n refStr = ref.toString();\n if (!map.has(refStr)) {\n map.set(refStr, callback(ref));\n }\n return map.get(refStr);\n }\n [Symbol.iterator]() {\n return this.#map.values();\n }\n clear() {\n this.#map.clear();\n }\n *values() {\n yield* this.#map.values();\n }\n *items() {\n for (const [ref, value] of this.#map) {\n yield [Ref.fromString(ref), value];\n }\n }\n *keys() {\n for (const ref of this.#map.keys()) {\n yield Ref.fromString(ref);\n }\n }\n}\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\nfunction isDict(v, type) {\n return v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type));\n}\nfunction isRefsEqual(v1, v2) {\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\n;// ./src/core/base_stream.js\n\nclass BaseStream {\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n getBytes(length) {\n unreachable(\"Abstract method `getBytes` called\");\n }\n async getImageData(length, decoderOptions) {\n return this.getBytes(length, decoderOptions);\n }\n async asyncGetBytes() {\n unreachable(\"Abstract method `asyncGetBytes` called\");\n }\n get isAsync() {\n return false;\n }\n get isAsyncDecoder() {\n return false;\n }\n get isImageStream() {\n return false;\n }\n get canAsyncDecodeImageFromBuffer() {\n return false;\n }\n async getTransferableImage(width, height) {\n return null;\n }\n peekByte() {\n const peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.pos--;\n }\n return peekedByte;\n }\n peekBytes(length) {\n const bytes = this.getBytes(length);\n this.pos -= bytes.length;\n return bytes;\n }\n getUint16() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n }\n getInt32() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n const b2 = this.getByte();\n const b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n getString(length) {\n return bytesToString(this.getBytes(length));\n }\n skip(n) {\n this.pos += n || 1;\n }\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n clone() {\n unreachable(\"Abstract method `clone` called\");\n }\n getBaseStreams() {\n return null;\n }\n getOriginalStream() {\n return this.stream?.getOriginalStream() || this;\n }\n}\n\n;// ./src/shared/css_utils.js\nconst CONTROL_CHAR_REGEXP = /\\p{Cc}/u;\nfunction isCSSString(str) {\n const quote = str[0];\n if (str.length < 2 || quote !== `\"` && quote !== `'` || str.at(-1) !== quote) {\n return false;\n }\n const end = str.length - 1;\n for (let i = 1; i < end; i++) {\n const char = str[i];\n if (char === quote || CONTROL_CHAR_REGEXP.test(char)) {\n return false;\n }\n if (char === \"\\\\\") {\n if (++i >= end || CONTROL_CHAR_REGEXP.test(str[i])) {\n return false;\n }\n }\n }\n return true;\n}\nfunction serializeFontFamily(fontFamily) {\n if (isCSSString(fontFamily)) {\n return fontFamily;\n }\n const escaped = fontFamily.replaceAll(/[\"\\\\\\p{Cc}]/gu, char => char === `\"` || char === \"\\\\\" ? `\\\\${char}` : `\\\\${char.codePointAt(0).toString(16)} `);\n return `\"${escaped}\"`;\n}\n\n;// ./src/core/string_utils.js\n\nfunction isAscii(str) {\n return typeof str === \"string\" && (!str || /^[\\x00-\\x7F]*$/.test(str));\n}\nfunction stringToAsciiOrUTF16BE(str) {\n return str === null || str === undefined || isAscii(str) ? str : stringToUTF16String(str, true);\n}\nfunction stringToUTF16HexString(str) {\n const buf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(Util.hexNums[char >> 8 & 0xff], Util.hexNums[char & 0xff]);\n }\n return buf.join(\"\");\n}\nfunction stringToUTF16String(str, bigEndian = false) {\n const buf = [];\n if (bigEndian) {\n buf.push(\"\\xFE\\xFF\");\n }\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));\n }\n return buf.join(\"\");\n}\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 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, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\nconst PDFStringTextDecoders = Object.create(null);\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = PDFStringTextDecoders[encoding] ??= new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (!keepEscapeSequence && charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\n;// ./src/core/core_utils.js\n\n\n\n\n\nconst PDF_VERSION_REGEXP = /^[1-9]\\.\\d$/;\nconst MAX_INT_32 = 2 ** 31 - 1;\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst RESOURCES_KEYS_OPERATOR_LIST = [\"ColorSpace\", \"ExtGState\", \"Font\", \"Pattern\", \"Properties\", \"Shading\", \"XObject\"];\nconst RESOURCES_KEYS_TEXT_CONTENT = [\"ExtGState\", \"Font\", \"Properties\", \"XObject\"];\nfunction getLookupTableFactory(initializer, useArray = false) {\n let lookup;\n return function () {\n if (initializer) {\n lookup = useArray ? [] : Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\nclass MissingDataException extends BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n this.begin = begin;\n this.end = end;\n }\n}\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\nfunction arrayBuffersToBytes(arr) {\n const length = arr.length;\n if (length === 0) {\n return new Uint8Array(0);\n }\n if (length === 1) {\n return new Uint8Array(arr[0]);\n }\n let dataLength = 0;\n for (let i = 0; i < length; i++) {\n dataLength += arr[i].byteLength;\n }\n const data = new Uint8Array(dataLength);\n let pos = 0;\n for (let i = 0; i < length; i++) {\n const item = new Uint8Array(arr[i]);\n data.set(item, pos);\n pos += item.byteLength;\n }\n return data;\n}\nasync function fetchBinaryData(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch file \"${url}\" with \"${response.statusText}\".`);\n }\n return response.bytes();\n}\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true\n}) {\n let values;\n const visited = new RefSet();\n while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n if (dict.objId) {\n visited.put(dict.objId);\n }\n const value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n (values ||= []).push(value);\n }\n dict = dict.get(\"Parent\");\n }\n return values;\n}\nfunction getParentToUpdate(dict, ref, xref) {\n const visited = new RefSet();\n const firstDict = dict;\n const result = {\n dict: null,\n ref: null\n };\n while (dict instanceof Dict && !visited.has(ref)) {\n visited.put(ref);\n if (dict.has(\"T\")) {\n break;\n }\n ref = dict.getRaw(\"Parent\");\n if (!(ref instanceof Ref)) {\n return result;\n }\n dict = xref.fetch(ref);\n }\n if (dict instanceof Dict && dict !== firstDict) {\n result.dict = dict;\n result.ref = ref;\n }\n return result;\n}\nfunction deepCompare(a, b) {\n if (a === b) {\n return true;\n }\n if (a instanceof Ref && b instanceof Ref) {\n return isRefsEqual(a, b);\n }\n if (a instanceof Name && b instanceof Name) {\n return a.name === b.name;\n }\n if (a instanceof Dict && b instanceof Dict) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value1] of a.getRawEntries()) {\n const value2 = b.getRaw(key);\n if (value2 === undefined || !deepCompare(value1, value2)) {\n return false;\n }\n }\n return true;\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0, ii = a.length; i < ii; i++) {\n if (!deepCompare(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\nconst ROMAN_NUMBER_MAP = [\"\", \"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\"];\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(Number.isInteger(number) && number > 0, \"The number should be a positive integer.\");\n const roman = \"M\".repeat(number / 1000 | 0) + ROMAN_NUMBER_MAP[number % 1000 / 100 | 0] + ROMAN_NUMBER_MAP[10 + (number % 100 / 10 | 0)] + ROMAN_NUMBER_MAP[20 + number % 10];\n return lowerCase ? roman.toLowerCase() : roman;\n}\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\nfunction isBooleanArray(arr, len) {\n return Array.isArray(arr) && (len === null || arr.length === len) && arr.every(x => typeof x === \"boolean\");\n}\nfunction isNumberArray(arr, len) {\n if (Array.isArray(arr)) {\n return (len === null || arr.length === len) && arr.every(x => typeof x === \"number\");\n }\n return ArrayBuffer.isView(arr) && !(arr instanceof BigInt64Array || arr instanceof BigUint64Array) && (len === null || arr.length === len);\n}\nfunction lookupMatrix(arr, fallback) {\n return isNumberArray(arr, 6) ? arr : fallback;\n}\nfunction lookupRect(arr, fallback) {\n return isNumberArray(arr, 4) ? arr : fallback;\n}\nfunction lookupNormalRect(arr, fallback) {\n return isNumberArray(arr, 4) ? Util.normalizeRect(arr) : fallback;\n}\nfunction parseXFAPath(path) {\n const positionPattern = /^(.+)\\[(\\d+)\\]$/;\n return path.split(\".\").map(component => {\n const m = component.match(positionPattern);\n if (m) {\n return {\n name: m[1],\n pos: parseInt(m[2], 10)\n };\n }\n return {\n name: component,\n pos: 0\n };\n });\n}\nfunction escapePDFName(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n if (char < 0x21 || char > 0x7e || char === 0x23 || char === 0x28 || char === 0x29 || char === 0x3c || char === 0x3e || char === 0x5b || char === 0x5d || char === 0x7b || char === 0x7d || char === 0x2f || char === 0x25) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`#${char.toString(16).padStart(2, \"0\")}`);\n start = i + 1;\n }\n }\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start));\n }\n return buffer.join(\"\");\n}\nfunction escapeString(str) {\n return str.replaceAll(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\nfunction _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n let parent = null;\n if (entry instanceof Ref) {\n if (parents.has(entry)) {\n return;\n }\n parent = entry;\n parents.put(parent);\n entry = xref.fetch(entry);\n }\n if (Array.isArray(entry)) {\n for (const element of entry) {\n _collectJS(element, xref, list, parents);\n }\n } else if (entry instanceof Dict) {\n if (isName(entry.get(\"S\"), \"JavaScript\")) {\n const js = entry.get(\"JS\");\n let code;\n if (js instanceof BaseStream) {\n code = js.getString();\n } else if (typeof js === \"string\") {\n code = js;\n }\n code &&= stringToPDFString(code, true).replaceAll(\"\\x00\", \"\");\n if (code) {\n list.push(code.trim());\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n if (parent) {\n parents.remove(parent);\n }\n}\nfunction collectActions(xref, dict, eventType) {\n const actions = new Map();\n const additionalActionsDicts = getInheritableProperty({\n dict,\n key: \"AA\",\n stopWhenFound: false\n });\n if (additionalActionsDicts) {\n for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n const additionalActions = additionalActionsDicts[i];\n if (!(additionalActions instanceof Dict)) {\n continue;\n }\n for (const [key, rawActionDict] of additionalActions.getRawEntries()) {\n const action = eventType[key];\n if (!action) {\n continue;\n }\n const parents = new RefSet();\n const list = [];\n _collectJS(rawActionDict, xref, list, parents);\n if (list.length > 0) {\n actions.set(action, list);\n }\n }\n }\n }\n if (dict.has(\"A\")) {\n const actionDict = dict.get(\"A\");\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions.set(\"Action\", list);\n }\n }\n return actions.size ? actions : null;\n}\nconst XMLEntities = {\n 0x3c: \"<\",\n 0x3e: \">\",\n 0x26: \"&\",\n 0x22: \""\",\n 0x27: \"'\"\n};\nfunction* codePointIter(str) {\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n i++;\n }\n yield char;\n }\n}\nfunction encodeToXmlString(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (0x20 <= char && char <= 0x7e) {\n const entity = XMLEntities[char];\n if (entity) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(entity);\n start = i + 1;\n }\n } else {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n if (char > 0xffff) {\n i++;\n }\n start = i + 1;\n }\n }\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start));\n }\n return buffer.join(\"\");\n}\nfunction validateFontName(fontFamily, mustWarn = false) {\n const m = /^(\"|').*(\"|')$/.exec(fontFamily);\n if (m && m[1] === m[2]) {\n const re = new RegExp(`[^\\\\\\\\]${m[1]}`);\n if (re.test(fontFamily.slice(1, -1))) {\n if (mustWarn) {\n warn(`FontFamily contains unescaped ${m[1]}: ${fontFamily}.`);\n }\n return false;\n }\n if (CONTROL_CHAR_REGEXP.test(fontFamily)) {\n if (mustWarn) {\n warn(`FontFamily contains control characters: ${fontFamily}.`);\n }\n return false;\n }\n } else {\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(?:\\d|-[\\d-])/.test(ident) || !/^[\\w\\\\-]+$/.test(ident)) {\n if (mustWarn) {\n warn(`FontFamily contains invalid : ${fontFamily}.`);\n }\n return false;\n }\n }\n }\n return true;\n}\nfunction normalizeCSSFontFamily(fontFamily) {\n return fontFamily.replaceAll(/( +)(\\d)?/g, (_, spaces, digit) => digit ?? \" \");\n}\nfunction validateCSSFont(cssFontInfo) {\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"1000\", \"normal\", \"bold\", \"bolder\", \"lighter\"]);\n const {\n fontFamily,\n fontWeight,\n italicAngle\n } = cssFontInfo;\n if (!validateFontName(fontFamily, true)) {\n return false;\n }\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight) ? weight : DEFAULT_CSS_FONT_WEIGHT;\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle = isNaN(angle) || angle < -90 || angle > 90 ? DEFAULT_CSS_FONT_OBLIQUE : italicAngle.toString();\n return true;\n}\nfunction recoverJsURL(str) {\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n const regex = new RegExp(\"^\\\\s*(\" + URL_OPEN_METHODS.join(\"|\").replaceAll(\".\", \"\\\\.\") + \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\", \"i\");\n const jsUrl = regex.exec(str);\n if (jsUrl?.[2]) {\n return {\n url: jsUrl[2],\n newWindow: jsUrl[1] === \"app.launchURL\" && jsUrl[3] === \"true\"\n };\n }\n return null;\n}\nfunction numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const roundedValue = Math.round(value * 100);\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n return value.toFixed(2);\n}\nfunction getNewAnnotationsMap(annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const newAnnotationsByPage = new Map();\n for (const [key, value] of annotationStorage) {\n if (!key.startsWith(AnnotationEditorPrefix)) {\n continue;\n }\n newAnnotationsByPage.getOrInsertComputed(value.pageIndex, makeArr).push(value);\n }\n return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;\n}\nfunction getModificationDate(date = new Date()) {\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nfunction getRotationMatrix(rotation, width, height) {\n switch (rotation) {\n case 90:\n return [0, 1, -1, 0, width, 0];\n case 180:\n return [-1, 0, 0, -1, width, height];\n case 270:\n return [0, -1, 1, 0, 0, height];\n default:\n throw new Error(\"Invalid rotation\");\n }\n}\nfunction getSizeInBytes(x) {\n return Math.ceil(Math.ceil(Math.log2(1 + x)) / 8);\n}\n\n;// ./external/qcms/qcms_utils.js\nconst ALPHA_MASK = new Uint8Array(new Uint32Array([1]).buffer)[0] === 1 ? 0xff000000 : 0x000000ff;\nconst RGB_MASK = ~ALPHA_MASK;\nclass QCMS {\n static #memoryArray = null;\n static _memory = null;\n static _destBuffer = null;\n static _destOffset = 0;\n static _keepAlpha = false;\n static get _memoryArray() {\n const array = this.#memoryArray;\n if (array?.byteLength) {\n return array;\n }\n return this.#memoryArray = new Uint8Array(this._memory.buffer);\n }\n}\nfunction copy_result(ptr, len) {\n const {\n _destBuffer,\n _destOffset,\n _keepAlpha,\n _memoryArray\n } = QCMS;\n if (!_keepAlpha) {\n _destBuffer.set(_memoryArray.subarray(ptr, ptr + len), _destOffset);\n return;\n }\n const count = len >> 2;\n const destStart = _destBuffer.byteOffset + _destOffset;\n if (((destStart | ptr) & 3) === 0) {\n const dest32 = new Uint32Array(_destBuffer.buffer, destStart, count);\n const src32 = new Uint32Array(QCMS._memory.buffer, ptr, count);\n for (let i = 0; i < count; i++) {\n dest32[i] = dest32[i] & ALPHA_MASK | src32[i] & RGB_MASK;\n }\n return;\n }\n for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 4, j += 4) {\n _destBuffer[j] = _memoryArray[i];\n _destBuffer[j + 1] = _memoryArray[i + 1];\n _destBuffer[j + 2] = _memoryArray[i + 2];\n }\n}\n\n;// ./external/qcms/qcms.js\n\nconst DataType = Object.freeze({\n RGB8: 0,\n \"0\": \"RGB8\",\n RGBA8: 1,\n \"1\": \"RGBA8\",\n BGRA8: 2,\n \"2\": \"BGRA8\",\n Gray8: 3,\n \"3\": \"Gray8\",\n GrayA8: 4,\n \"4\": \"GrayA8\",\n CMYK: 5,\n \"5\": \"CMYK\"\n});\nconst Intent = Object.freeze({\n Perceptual: 0,\n \"0\": \"Perceptual\",\n RelativeColorimetric: 1,\n \"1\": \"RelativeColorimetric\",\n Saturation: 2,\n \"2\": \"Saturation\",\n AbsoluteColorimetric: 3,\n \"3\": \"AbsoluteColorimetric\"\n});\nfunction qcms_convert_array(transformer, src, add_alpha) {\n const ptr0 = passArray8ToWasm0(src, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.qcms_convert_array(transformer, ptr0, len0, add_alpha);\n}\nfunction qcms_convert_four(transformer, src1, src2, src3, src4) {\n const ret = wasm.qcms_convert_four(transformer, src1, src2, src3, src4);\n return ret >>> 0;\n}\nfunction qcms_convert_one(transformer, src) {\n const ret = wasm.qcms_convert_one(transformer, src);\n return ret >>> 0;\n}\nfunction qcms_convert_three(transformer, src1, src2, src3) {\n const ret = wasm.qcms_convert_three(transformer, src1, src2, src3);\n return ret >>> 0;\n}\nfunction qcms_drop_transformer(transformer) {\n wasm.qcms_drop_transformer(transformer);\n}\nfunction qcms_transformer_from_memory(mem, in_type, intent) {\n const ptr0 = passArray8ToWasm0(mem, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.qcms_transformer_from_memory(ptr0, len0, in_type, intent);\n return ret >>> 0;\n}\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg___wbindgen_throw_344f42d3211c4765: function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_copy_result_0d15f3bf9d9012ae: function (arg0, arg1) {\n copy_result(arg0 >>> 0, arg1 >>> 0);\n },\n __wbindgen_init_externref_table: function () {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n }\n };\n return {\n __proto__: null,\n \"./qcms_bg.js\": import0\n };\n}\nfunction getStringFromWasm0(ptr, len) {\n return decodeText(ptr >>> 0, len);\n}\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nlet cachedTextDecoder = new TextDecoder('utf-8', {\n ignoreBOM: true,\n fatal: true\n});\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', {\n ignoreBOM: true,\n fatal: true\n });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\nlet WASM_VECTOR_LEN = 0;\nlet wasmModule, wasmInstance, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasmInstance = instance;\n wasm = instance.exports;\n wasmModule = module;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return {\n instance,\n module\n };\n } else {\n return instance;\n }\n }\n function expectedResponseType(type) {\n switch (type) {\n case 'basic':\n case 'cors':\n case 'default':\n return true;\n }\n return false;\n }\n}\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({\n module\n } = module);\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead');\n }\n }\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({\n module_or_path\n } = module_or_path);\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead');\n }\n }\n const imports = __wbg_get_imports();\n if (typeof module_or_path === 'string' || typeof Request === 'function' && module_or_path instanceof Request || typeof URL === 'function' && module_or_path instanceof URL) {\n module_or_path = fetch(module_or_path);\n }\n const {\n instance,\n module\n } = await __wbg_load(await module_or_path, imports);\n return __wbg_finalize_init(instance, module);\n}\n\n;// ./src/shared/math_clamp.js\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\n;// ./src/core/colorspace.js\n\n\n\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n const COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1 * COMPONENTS;\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const py = Math.floor(i * yRatio) * w1Scanline;\n for (let j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n}\nfunction resizeRgbaImage(src, dest, w1, h1, w2, h2, alpha01) {\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0;\n const xScaled = new Uint16Array(w2);\n if (alpha01 === 1) {\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n const src32 = new Uint32Array(src.buffer);\n const dest32 = new Uint32Array(dest.buffer);\n const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n for (let i = 0; i < h2; i++) {\n const buf = src32.subarray(Math.floor(i * yRatio) * w1);\n for (let j = 0; j < w2; j++) {\n dest32[newIndex++] |= buf[xScaled[j]] & rgbMask;\n }\n }\n } else {\n const COMPONENTS = 4;\n const w1Scanline = w1 * COMPONENTS;\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const buf = src.subarray(Math.floor(i * yRatio) * w1Scanline);\n for (let j = 0; j < w2; j++) {\n const oldIndex = xScaled[j];\n dest[newIndex++] = buf[oldIndex];\n dest[newIndex++] = buf[oldIndex + 1];\n dest[newIndex++] = buf[oldIndex + 2];\n }\n }\n }\n}\nfunction copyRgbaImage(src, dest, alpha01) {\n if (alpha01 === 1) {\n const src32 = new Uint32Array(src.buffer);\n const dest32 = new Uint32Array(dest.buffer);\n const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n for (let i = 0, ii = src32.length; i < ii; i++) {\n dest32[i] |= src32[i] & rgbMask;\n }\n } else {\n let j = 0;\n for (let i = 0, ii = src.length; i < ii; i += 4) {\n dest[j++] = src[i];\n dest[j++] = src[i + 1];\n dest[j++] = src[i + 2];\n }\n }\n}\nfunction isDefaultDecodeHelper(decode, expectedLen) {\n if (!Array.isArray(decode)) {\n return true;\n }\n const decodeLen = decode.length;\n if (decodeLen < expectedLen) {\n warn(\"Decode map length is too short.\");\n return true;\n }\n if (decodeLen > expectedLen) {\n info(\"Truncating too long decode map.\");\n decode.length = expectedLen;\n }\n return false;\n}\nclass ColorSpace {\n static #rgbBuf = new Uint8ClampedArray(3);\n constructor(name, numComps) {\n this.name = name;\n this.numComps = numComps;\n }\n getRgb(src, srcOffset, output = new Uint8ClampedArray(3)) {\n this.getRgbItem(src, srcOffset, output, 0);\n return output;\n }\n getRgbHex(src, srcOffset) {\n const buffer = this.getRgb(src, srcOffset, ColorSpace.#rgbBuf);\n return Util.makeHexColor(buffer[0], buffer[1], buffer[2]);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n unreachable(\"Should not call ColorSpace.getRgbItem\");\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n }\n getRgbItems(src, count, dest, destOffset, alpha01) {\n const {\n numComps\n } = this;\n for (let i = 0, srcOffset = 0; i < count; i++, srcOffset += numComps) {\n this.getRgbItem(src, srcOffset, dest, destOffset);\n destOffset += 3 + alpha01;\n }\n }\n isPassthrough(bits) {\n return false;\n }\n isDefaultDecode(decode, bpc) {\n return ColorSpace.isDefaultDecode(decode, this.numComps);\n }\n fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (this.numComps === 1 && count > numComponentColors && this.name !== \"DeviceGray\" && this.name !== \"DeviceRGB\") {\n const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);\n for (let i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);\n if (!needsResizing) {\n let destPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n let rgbPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else if (!needsResizing) {\n this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);\n }\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);\n } else {\n let destPos = 0,\n rgbPos = 0;\n for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n }\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", true);\n }\n static isDefaultDecode(decode, numComps) {\n if (isDefaultDecodeHelper(decode, numComps * 2)) {\n return true;\n }\n for (let i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n return true;\n }\n}\nclass AlternateCS extends ColorSpace {\n constructor(numComps, base, tintFn) {\n super(\"Alternate\", numComps);\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n getRgbItems(src, count, dest, destOffset, alpha01) {\n const {\n base,\n numComps,\n tintFn\n } = this;\n const baseNumComps = base.numComps;\n const tinted = new Float32Array(count * baseNumComps);\n for (let i = 0, srcOffset = 0, tintedOffset = 0; i < count; i++) {\n tintFn(src, srcOffset, tinted, tintedOffset);\n srcOffset += numComps;\n tintedOffset += baseNumComps;\n }\n base.getRgbItems(tinted, count, dest, destOffset, alpha01);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const tintFn = this.tintFn;\n const base = this.base;\n const scale = 1 / ((1 << bits) - 1);\n const baseNumComps = base.numComps;\n const usesZeroToOneRange = base.usesZeroToOneRange;\n const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n tintFn(scaled, 0, tinted, 0);\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n}\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n isDefaultDecode(decode, bpc) {\n unreachable(\"Should not call PatternCS.isDefaultDecode\");\n }\n}\nclass IndexedCS extends ColorSpace {\n #rgbLookup;\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.highVal = highVal;\n const count = highVal + 1;\n const length = base.numComps * count;\n const palette = new Uint8Array(length);\n if (lookup instanceof BaseStream) {\n palette.set(lookup.getBytes(length));\n } else if (typeof lookup === \"string\") {\n for (let i = 0; i < length; ++i) {\n palette[i] = lookup.charCodeAt(i);\n }\n } else {\n throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n }\n this.#rgbLookup = new Uint8ClampedArray(count * 3);\n base.getRgbBuffer(palette, 0, count, this.#rgbLookup, 0, 8, 0);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n const rgbLookup = this.#rgbLookup;\n const pos = MathClamp(Math.round(src[srcOffset]), 0, this.highVal) * 3;\n dest[destOffset] = rgbLookup[pos];\n dest[destOffset + 1] = rgbLookup[pos + 1];\n dest[destOffset + 2] = rgbLookup[pos + 2];\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const {\n highVal\n } = this;\n const rgbLookup = this.#rgbLookup;\n for (let i = 0; i < count; ++i) {\n const pos = MathClamp(Math.round(src[srcOffset++]), 0, highVal) * 3;\n dest[destOffset++] = rgbLookup[pos];\n dest[destOffset++] = rgbLookup[pos + 1];\n dest[destOffset++] = rgbLookup[pos + 2];\n destOffset += alpha01;\n }\n }\n isDefaultDecode(decode, bpc) {\n if (isDefaultDecodeHelper(decode, 2)) {\n return true;\n }\n if (!Number.isInteger(bpc) || bpc < 1) {\n warn(\"Bits per component is not correct\");\n return true;\n }\n return decode[0] === 0 && decode[1] === (1 << bpc) - 1;\n }\n}\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n const c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n}\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n q += alpha01;\n }\n }\n isPassthrough(bits) {\n return bits === 8;\n }\n}\nclass DeviceRgbaCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGBA\", 4);\n }\n isPassthrough(bits) {\n return bits === 8;\n }\n fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n if (originalHeight !== height || originalWidth !== width) {\n resizeRgbaImage(comps, dest, originalWidth, originalHeight, width, height, alpha01);\n } else {\n copyRgbaImage(comps, dest, alpha01);\n }\n }\n}\nclass DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n #toRgb(src, srcOffset, srcScale, dest, destOffset) {\n const c = src[srcOffset] * srcScale;\n const m = src[srcOffset + 1] * srcScale;\n const y = src[srcOffset + 2] * srcScale;\n const k = src[srcOffset + 3] * srcScale;\n dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, 1, dest, destOffset);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; i++) {\n this.#toRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n}\nclass CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n if (!whitePoint) {\n throw new FormatError(\"WhitePoint missing - required for color space CalGray\");\n }\n [this.XW, this.YW, this.ZW] = whitePoint;\n [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n this.G = gamma || 1;\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n }\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n this.XB = this.YB = this.ZB = 0;\n }\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`);\n }\n if (this.G < 1) {\n info(`Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`);\n this.G = 1;\n }\n }\n #toRgb(src, srcOffset, dest, destOffset, scale) {\n const A = src[srcOffset] * scale;\n const AG = A ** this.G;\n const L = this.YW * AG;\n const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, dest, destOffset, 1);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; ++i) {\n this.#toRgb(src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n}\nclass CalRGBCS extends ColorSpace {\n static #BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);\n static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);\n static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);\n static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n static #tempNormalizeMatrix = new Float32Array(3);\n static #tempConvertMatrix1 = new Float32Array(3);\n static #tempConvertMatrix2 = new Float32Array(3);\n static #DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n if (!whitePoint) {\n throw new FormatError(\"WhitePoint missing - required for color space CalRGB\");\n }\n const [XW, YW, ZW] = this.whitePoint = whitePoint;\n const [XB, YB, ZB] = this.blackPoint = blackPoint || new Float32Array(3);\n [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]);\n [this.MXA, this.MYA, this.MZA, this.MXB, this.MYB, this.MZB, this.MXC, this.MYC, this.MZC] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n }\n if (XB < 0 || YB < 0 || ZB < 0) {\n info(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + \"falling back to default.\");\n this.blackPoint = new Float32Array(3);\n }\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`);\n this.GR = this.GG = this.GB = 1;\n }\n }\n #matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n #toFlat(sourceWhitePoint, LMS, result) {\n result[0] = LMS[0] * 1 / sourceWhitePoint[0];\n result[1] = LMS[1] * 1 / sourceWhitePoint[1];\n result[2] = LMS[2] * 1 / sourceWhitePoint[2];\n }\n #toD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\n result[0] = LMS[0] * D65X / sourceWhitePoint[0];\n result[1] = LMS[1] * D65Y / sourceWhitePoint[1];\n result[2] = LMS[2] * D65Z / sourceWhitePoint[2];\n }\n #sRGBTransferFunction(color) {\n if (color <= 0.0031308) {\n return MathClamp(12.92 * color, 0, 1);\n }\n if (color >= 0.99554525) {\n return 1;\n }\n return MathClamp((1 + 0.055) * color ** (1 / 2.4) - 0.055, 0, 1);\n }\n #decodeL(L) {\n if (L < 0) {\n return -this.#decodeL(-L);\n }\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n return L * CalRGBCS.#DECODE_L_CONSTANT;\n }\n #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n const zeroDecodeL = this.#decodeL(0);\n const X_DST = zeroDecodeL;\n const X_SRC = this.#decodeL(sourceBlackPoint[0]);\n const Y_DST = zeroDecodeL;\n const Y_SRC = this.#decodeL(sourceBlackPoint[1]);\n const Z_DST = zeroDecodeL;\n const Z_SRC = this.#decodeL(sourceBlackPoint[2]);\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n const LMS = result;\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n const LMS_Flat = CalRGBCS.#tempNormalizeMatrix;\n this.#toFlat(sourceWhitePoint, LMS, LMS_Flat);\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n const LMS_D65 = CalRGBCS.#tempNormalizeMatrix;\n this.#toD65(sourceWhitePoint, LMS, LMS_D65);\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n #toRgb(src, srcOffset, dest, destOffset, scale) {\n const A = MathClamp(src[srcOffset] * scale, 0, 1);\n const B = MathClamp(src[srcOffset + 1] * scale, 0, 1);\n const C = MathClamp(src[srcOffset + 2] * scale, 0, 1);\n const AGR = A === 1 ? 1 : A ** this.GR;\n const BGG = B === 1 ? 1 : B ** this.GG;\n const CGB = C === 1 ? 1 : C ** this.GB;\n const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB;\n const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB;\n const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB;\n const XYZ = CalRGBCS.#tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = CalRGBCS.#tempConvertMatrix2;\n this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat);\n const XYZ_Black = CalRGBCS.#tempConvertMatrix1;\n this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black);\n const XYZ_D65 = CalRGBCS.#tempConvertMatrix2;\n this.#normalizeWhitePointToD65(CalRGBCS.#FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n const SRGB = CalRGBCS.#tempConvertMatrix1;\n this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255;\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, dest, destOffset, 1);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; ++i) {\n this.#toRgb(src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n}\nclass LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n if (!whitePoint) {\n throw new FormatError(\"WhitePoint missing - required for color space Lab\");\n }\n [this.XW, this.YW, this.ZW] = whitePoint;\n [this.amin, this.amax, this.bmin, this.bmax] = range || [-100, 100, -100, 100];\n [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\"Invalid WhitePoint components, no fallback available\");\n }\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(\"Invalid BlackPoint, falling back to default\");\n this.XB = this.YB = this.ZB = 0;\n }\n if (this.amin > this.amax || this.bmin > this.bmax) {\n info(\"Invalid Range, falling back to defaults\");\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n #fn_g(x) {\n return x >= 6 / 29 ? x ** 3 : 108 / 841 * (x - 4 / 29);\n }\n #decode(value, high1, low2, high2) {\n return low2 + value * (high2 - low2) / high1;\n }\n #toRgb(src, srcOffset, maxVal, dest, destOffset) {\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = this.#decode(Ls, maxVal, 0, 100);\n as = this.#decode(as, maxVal, this.amin, this.amax);\n bs = this.#decode(bs, maxVal, this.bmin, this.bmax);\n }\n if (as > this.amax) {\n as = this.amax;\n } else if (as < this.amin) {\n as = this.amin;\n }\n if (bs > this.bmax) {\n bs = this.bmax;\n } else if (bs < this.bmin) {\n bs = this.bmin;\n }\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n const X = this.XW * this.#fn_g(L);\n const Y = this.YW * this.#fn_g(M);\n const Z = this.ZW * this.#fn_g(N);\n let r, g, b;\n if (this.ZW < 1) {\n r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n } else {\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n }\n dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, false, dest, destOffset);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const maxVal = (1 << bits) - 1;\n for (let i = 0; i < count; i++) {\n this.#toRgb(src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n isDefaultDecode(decode, bpc) {\n return true;\n }\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", false);\n }\n}\n\n;// ./src/core/icc_colorspace.js\n\n\n\n\nfunction fetchSync(url) {\n const xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return xhr.response;\n}\nclass IccColorSpace extends ColorSpace {\n #transformer;\n #convertPixel;\n static #useWasm = true;\n static #wasmUrl = null;\n static #finalizer = null;\n constructor(iccProfile, name, numComps) {\n if (!IccColorSpace.isUsable) {\n throw new Error(\"No ICC color space support\");\n }\n super(name, numComps);\n let inType;\n switch (numComps) {\n case 1:\n inType = DataType.Gray8;\n this.#convertPixel = (src, srcOffset) => qcms_convert_one(this.#transformer, src[srcOffset] * 255);\n break;\n case 3:\n inType = DataType.RGB8;\n this.#convertPixel = (src, srcOffset) => qcms_convert_three(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255);\n break;\n case 4:\n inType = DataType.CMYK;\n this.#convertPixel = (src, srcOffset) => qcms_convert_four(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255, src[srcOffset + 3] * 255);\n break;\n default:\n throw new Error(`Unsupported number of components: ${numComps}`);\n }\n this.#transformer = qcms_transformer_from_memory(iccProfile, inType, Intent.Perceptual);\n if (!this.#transformer) {\n throw new Error(\"Failed to create ICC color space\");\n }\n IccColorSpace.#finalizer ||= new FinalizationRegistry(transformer => {\n qcms_drop_transformer(transformer);\n });\n IccColorSpace.#finalizer.register(this, this.#transformer);\n }\n getRgbHex(src, srcOffset) {\n const color = this.#convertPixel(src, srcOffset);\n return Util.makeHexColor(color >> 16, color >> 8 & 0xff, color & 0xff);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n const color = this.#convertPixel(src, srcOffset);\n dest[destOffset] = color >> 16;\n dest[destOffset + 1] = color >> 8 & 0xff;\n dest[destOffset + 2] = color & 0xff;\n }\n getRgbItems(src, count, dest, destOffset, alpha01) {\n const {\n numComps\n } = this;\n const length = count * numComps;\n const scaled = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n scaled[i] = src[i] * 255;\n }\n QCMS._destBuffer = dest;\n QCMS._destOffset = destOffset;\n QCMS._keepAlpha = alpha01 === 1;\n qcms_convert_array(this.#transformer, scaled, alpha01 === 1);\n QCMS._destBuffer = null;\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n src = src.subarray(srcOffset, srcOffset + count * this.numComps);\n if (bits !== 8) {\n const scale = 255 / ((1 << bits) - 1);\n for (let i = 0, ii = src.length; i < ii; i++) {\n src[i] *= scale;\n }\n }\n QCMS._destBuffer = dest;\n QCMS._destOffset = destOffset;\n QCMS._keepAlpha = alpha01 === 1 && dest.buffer !== src.buffer;\n qcms_convert_array(this.#transformer, src, alpha01 === 1);\n QCMS._destBuffer = null;\n }\n static setOptions({\n useWasm,\n useWorkerFetch,\n wasmUrl\n }) {\n if (!useWorkerFetch) {\n this.#useWasm = false;\n return;\n }\n this.#useWasm = useWasm;\n this.#wasmUrl = wasmUrl;\n }\n static get isUsable() {\n let isUsable = false;\n if (this.#useWasm) {\n if (this.#wasmUrl) {\n try {\n this._module = initSync({\n module: fetchSync(`${this.#wasmUrl}qcms_bg.wasm`)\n });\n isUsable = !!this._module;\n QCMS._memory = this._module.memory;\n } catch (e) {\n warn(`ICCBased color space: \"${e}\".`);\n }\n } else {\n warn(\"No ICC color space support due to missing `wasmUrl` API option\");\n }\n }\n return shadow(this, \"isUsable\", isUsable);\n }\n}\nclass CmykICCBasedCS extends IccColorSpace {\n static #iccUrl;\n constructor() {\n const iccProfile = new Uint8Array(fetchSync(`${CmykICCBasedCS.#iccUrl}CGATS001Compat-v2-micro.icc`));\n super(iccProfile, \"DeviceCMYK\", 4);\n }\n static setOptions({\n iccUrl\n }) {\n this.#iccUrl = iccUrl;\n }\n static get isUsable() {\n let isUsable = false;\n if (IccColorSpace.isUsable) {\n if (this.#iccUrl) {\n isUsable = true;\n } else {\n warn(\"No CMYK ICC profile support due to missing `iccUrl` API option\");\n }\n }\n return shadow(this, \"isUsable\", isUsable);\n }\n}\n\n;// ./src/core/stream.js\n\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer);\n this.start = start || 0;\n this.pos = this.start;\n this.end = start + length || this.bytes.length;\n this.dict = dict;\n }\n get length() {\n return this.end - this.start;\n }\n get isEmpty() {\n return this.length === 0;\n }\n getByte() {\n return this.pos >= this.end ? -1 : this.bytes[this.pos++];\n }\n getBytes(length) {\n const pos = this.pos;\n const endPos = !length ? this.end : Math.min(pos + length, this.end);\n this.pos = endPos;\n return this.bytes.subarray(pos, endPos);\n }\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n return this.bytes.subarray(begin, end);\n }\n reset() {\n this.pos = this.start;\n }\n moveStart() {\n this.start = this.pos;\n }\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n clone() {\n return new Stream(this.bytes.buffer, this.start, this.length, this.dict?.clone());\n }\n}\nclass StringStream extends Stream {\n constructor(str, dict = null) {\n super(stringToBytes(str), NaN, NaN, dict);\n }\n}\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\n;// ./src/core/chunked_stream.js\n\n\n\n\nclass ChunkedStream extends Stream {\n progressiveDataLength = 0;\n _lastSuccessfulEnsureByteChunk = -1;\n _loadedChunks = new Set();\n constructor(length, chunkSize, manager) {\n super(new Uint8Array(length), 0, length, null);\n this.chunkSize = chunkSize;\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n }\n getMissingChunks() {\n const chunks = [];\n for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n chunks.push(chunk);\n }\n }\n return chunks;\n }\n get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n get isDataLoaded() {\n return this.numChunksLoaded === this.numChunks;\n }\n onReceiveData(begin, chunk) {\n const chunkSize = this.chunkSize;\n if (begin % chunkSize !== 0) {\n throw new Error(`Bad begin offset: ${begin}`);\n }\n const end = begin + chunk.byteLength;\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(`Bad end offset: ${end}`);\n }\n this.bytes.set(new Uint8Array(chunk), begin);\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n this._loadedChunks.add(curChunk);\n }\n }\n onReceiveProgressiveData(data) {\n let position = this.progressiveDataLength;\n const beginChunk = Math.floor(position / this.chunkSize);\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n const endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize);\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n this._loadedChunks.add(curChunk);\n }\n }\n ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\n }\n const chunk = Math.floor(pos / this.chunkSize);\n if (chunk > this.numChunks) {\n return;\n }\n if (chunk === this._lastSuccessfulEnsureByteChunk) {\n return;\n }\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(pos, pos + 1);\n }\n this._lastSuccessfulEnsureByteChunk = chunk;\n }\n ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n if (end <= this.progressiveDataLength) {\n return;\n }\n const beginChunk = Math.floor(begin / this.chunkSize);\n if (beginChunk > this.numChunks) {\n return;\n }\n const endChunk = Math.min(Math.floor((end - 1) / this.chunkSize) + 1, this.numChunks);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(begin, end);\n }\n }\n }\n nextEmptyChunk(beginChunk) {\n const numChunks = this.numChunks;\n for (let i = 0; i < numChunks; ++i) {\n const chunk = (beginChunk + i) % numChunks;\n if (!this._loadedChunks.has(chunk)) {\n return chunk;\n }\n }\n return null;\n }\n hasChunk(chunk) {\n return this._loadedChunks.has(chunk);\n }\n getByte() {\n const pos = this.pos;\n if (pos >= this.end) {\n return -1;\n }\n if (pos >= this.progressiveDataLength) {\n this.ensureByte(pos);\n }\n return this.bytes[this.pos++];\n }\n getBytes(length) {\n const pos = this.pos;\n const endPos = !length ? this.end : Math.min(pos + length, this.end);\n if (endPos > this.progressiveDataLength) {\n this.ensureRange(pos, endPos);\n }\n this.pos = endPos;\n return this.bytes.subarray(pos, endPos);\n }\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(begin, end);\n }\n return this.bytes.subarray(begin, end);\n }\n makeSubStream(start, length, dict = null) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\n }\n function ChunkedStreamSubstream() {}\n ChunkedStreamSubstream.prototype = Object.create(this);\n ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n const chunkSize = this.chunkSize;\n const beginChunk = Math.floor(this.start / chunkSize);\n const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n const missingChunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n missingChunks.push(chunk);\n }\n }\n return missingChunks;\n };\n Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n get() {\n return this.numChunksLoaded === this.numChunks || this.getMissingChunks().length === 0;\n },\n configurable: true\n });\n const subStream = new ChunkedStreamSubstream();\n subStream.pos = subStream.start = start;\n subStream.end = start + length || this.end;\n subStream.dict = dict;\n return subStream;\n }\n getBaseStreams() {\n return [this];\n }\n}\nclass ChunkedStreamManager {\n #aborted = false;\n currRequestId = 0;\n _chunksNeededByRequest = new Map();\n #loadedStreamCapability = Promise.withResolvers();\n _promisesByRequest = new Map();\n _requestsByChunk = new Map();\n constructor(pdfStream, args) {\n this.length = args.length;\n this.chunkSize = args.rangeChunkSize;\n this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n this.pdfStream = pdfStream;\n this.disableAutoFetch = args.disableAutoFetch;\n this.msgHandler = args.msgHandler;\n }\n async sendRequest(begin, end) {\n const rangeReader = this.pdfStream.getRangeReader(begin, end);\n let chunks = [];\n while (true) {\n const {\n value,\n done\n } = await rangeReader.read();\n if (this.#aborted) {\n chunks = null;\n return;\n }\n if (done) {\n break;\n }\n chunks.push(value);\n }\n if (chunks.length === 0 && this.disableAutoFetch) {\n return;\n }\n const data = arrayBuffersToBytes(chunks);\n chunks = null;\n this.onReceiveData({\n chunk: data.buffer,\n begin\n });\n }\n requestAllChunks(noFetch = false) {\n if (!noFetch) {\n const missingChunks = this.stream.getMissingChunks();\n this._requestChunks(missingChunks);\n }\n return this.#loadedStreamCapability.promise;\n }\n _requestChunks(chunks) {\n const requestId = this.currRequestId++;\n const chunksNeeded = new Set();\n this._chunksNeededByRequest.set(requestId, chunksNeeded);\n for (const chunk of chunks) {\n if (!this.stream.hasChunk(chunk)) {\n chunksNeeded.add(chunk);\n }\n }\n if (chunksNeeded.size === 0) {\n return Promise.resolve();\n }\n const capability = Promise.withResolvers();\n this._promisesByRequest.set(requestId, capability);\n const chunksToRequest = [];\n for (const chunk of chunksNeeded) {\n const requestIds = this._requestsByChunk.getOrInsertComputed(chunk, () => {\n chunksToRequest.push(chunk);\n return [];\n });\n requestIds.push(requestId);\n }\n if (chunksToRequest.length > 0) {\n const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n for (const groupedChunk of groupedChunksToRequest) {\n const begin = groupedChunk.beginChunk * this.chunkSize;\n const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n this.sendRequest(begin, end).catch(capability.reject);\n }\n }\n return capability.promise.catch(reason => {\n if (this.#aborted) {\n return;\n }\n throw reason;\n });\n }\n getStream() {\n return this.stream;\n }\n requestRange(begin, end) {\n end = Math.min(end, this.length);\n const beginChunk = this.getBeginChunk(begin);\n const endChunk = this.getEndChunk(end);\n const chunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n return this._requestChunks(chunks);\n }\n requestRanges(ranges = []) {\n const chunksToRequest = [];\n for (const range of ranges) {\n const beginChunk = this.getBeginChunk(range.begin);\n const endChunk = this.getEndChunk(range.end);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!chunksToRequest.includes(chunk)) {\n chunksToRequest.push(chunk);\n }\n }\n }\n chunksToRequest.sort((a, b) => a - b);\n return this._requestChunks(chunksToRequest);\n }\n groupChunks(chunks) {\n const groupedChunks = [];\n let beginChunk = -1;\n let prevChunk = -1;\n for (let i = 0, ii = chunks.length; i < ii; ++i) {\n const chunk = chunks[i];\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({\n beginChunk,\n endChunk: prevChunk + 1\n });\n beginChunk = chunk;\n }\n if (i + 1 === chunks.length) {\n groupedChunks.push({\n beginChunk,\n endChunk: chunk + 1\n });\n }\n prevChunk = chunk;\n }\n return groupedChunks;\n }\n onReceiveData(args) {\n const {\n chunkSize,\n length,\n stream\n } = this;\n const chunk = args.chunk;\n const isProgressive = args.begin === undefined;\n const begin = isProgressive ? stream.progressiveDataLength : args.begin;\n const end = begin + chunk.byteLength;\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = end < length ? Math.floor(end / chunkSize) : Math.ceil(end / chunkSize);\n if (isProgressive) {\n stream.onReceiveProgressiveData(chunk);\n } else {\n stream.onReceiveData(begin, chunk);\n }\n if (stream.isDataLoaded) {\n this.#loadedStreamCapability.resolve(stream);\n }\n const loadedRequests = [];\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n const requestIds = this._requestsByChunk.get(curChunk);\n if (!requestIds) {\n continue;\n }\n this._requestsByChunk.delete(curChunk);\n for (const requestId of requestIds) {\n const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n if (chunksNeeded.has(curChunk)) {\n chunksNeeded.delete(curChunk);\n }\n if (chunksNeeded.size > 0) {\n continue;\n }\n loadedRequests.push(requestId);\n }\n }\n if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n let nextEmptyChunk;\n if (stream.numChunksLoaded === 1) {\n const lastChunk = stream.numChunks - 1;\n if (!stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = stream.nextEmptyChunk(endChunk);\n }\n if (Number.isInteger(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n for (const requestId of loadedRequests) {\n const capability = this._promisesByRequest.get(requestId);\n this._promisesByRequest.delete(requestId);\n capability.resolve();\n }\n this.msgHandler.send(\"DocProgress\", {\n loaded: MathClamp(stream.numChunksLoaded * chunkSize, stream.progressiveDataLength, length),\n total: length\n });\n }\n getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n abort(reason) {\n this.#aborted = true;\n this.pdfStream?.cancelAllRequests(reason);\n for (const capability of this._promisesByRequest.values()) {\n capability.reject(reason);\n }\n this.#loadedStreamCapability.reject(reason);\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const xorMask = zeroMapping ^ oneMapping;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; ++i) {\n for (const max = srcPos + widthInSource; srcPos < max; ++srcPos, destPos += 8) {\n const elem = src[srcPos];\n dest[destPos] = zeroMapping ^ -(elem >> 7 & 1) & xorMask;\n dest[destPos + 1] = zeroMapping ^ -(elem >> 6 & 1) & xorMask;\n dest[destPos + 2] = zeroMapping ^ -(elem >> 5 & 1) & xorMask;\n dest[destPos + 3] = zeroMapping ^ -(elem >> 4 & 1) & xorMask;\n dest[destPos + 4] = zeroMapping ^ -(elem >> 3 & 1) & xorMask;\n dest[destPos + 5] = zeroMapping ^ -(elem >> 2 & 1) & xorMask;\n dest[destPos + 6] = zeroMapping ^ -(elem >> 1 & 1) & xorMask;\n dest[destPos + 7] = zeroMapping ^ -(elem & 1) & xorMask;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; ++j, ++destPos) {\n dest[destPos] = zeroMapping ^ -(elem >> 7 - j & 1) & xorMask;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n const alphaMask = FeatureTest.isLittleEndian ? 0xff000000 : 0xff;\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i],\n s2 = src32[i + 1],\n s3 = src32[i + 2];\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | alphaMask;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | alphaMask;\n dest[destPos + 3] = s3 >>> 8 | alphaMask;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | alphaMask;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i],\n s2 = src32[i + 1],\n s3 = src32[i + 2];\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | alphaMask;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | alphaMask;\n dest[destPos + 3] = s3 << 8 | alphaMask;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | alphaMask;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/core/image_resizer.js\n\n\n\nconst MIN_IMAGE_DIM = 2048;\nconst MAX_IMAGE_DIM = 32768;\nconst MAX_ERROR = 128;\nclass ImageResizer {\n static #goodSquareLength = MIN_IMAGE_DIM;\n static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\n constructor(imgData, isMask) {\n this._imgData = imgData;\n this._isMask = isMask;\n }\n static get canUseImageDecoder() {\n return shadow(this, \"canUseImageDecoder\", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported(\"image/bmp\") : Promise.resolve(false));\n }\n static needsToBeResized(width, height) {\n if (width <= this.#goodSquareLength && height <= this.#goodSquareLength) {\n return false;\n }\n const {\n MAX_DIM\n } = this;\n if (width > MAX_DIM || height > MAX_DIM) {\n return true;\n }\n const area = width * height;\n if (this._hasMaxArea) {\n return area > this.MAX_AREA;\n }\n if (area < this.#goodSquareLength ** 2) {\n return false;\n }\n if (this._areGoodDims(width, height)) {\n this.#goodSquareLength = Math.max(this.#goodSquareLength, Math.floor(Math.sqrt(width * height)));\n return false;\n }\n this.#goodSquareLength = this._guessMax(this.#goodSquareLength, MAX_DIM, MAX_ERROR, 0);\n const maxArea = this.MAX_AREA = this.#goodSquareLength ** 2;\n return area > maxArea;\n }\n static getReducePower(width, height, maxArea = Infinity) {\n if (!Number.isInteger(width) || width <= 0 || !Number.isInteger(height) || height <= 0) {\n return 0;\n }\n const area = width * height;\n if (!this.needsToBeResized(width, height)) {\n if (area > maxArea) {\n return Math.ceil(Math.log2(area / maxArea));\n }\n return 0;\n }\n const {\n MAX_DIM,\n MAX_AREA\n } = this;\n const minFactor = Math.max(width / MAX_DIM, height / MAX_DIM, Math.sqrt(area / Math.min(maxArea, MAX_AREA)));\n return Math.max(0, Math.ceil(Math.log2(minFactor)));\n }\n static getReducePowerForJPX(width, height, componentsCount) {\n return this.getReducePower(width, height, 2 ** 30 / (componentsCount * 4));\n }\n static get MAX_DIM() {\n return shadow(this, \"MAX_DIM\", this._guessMax(MIN_IMAGE_DIM, MAX_IMAGE_DIM, 0, 1));\n }\n static get MAX_AREA() {\n this._hasMaxArea = true;\n return shadow(this, \"MAX_AREA\", this._guessMax(this.#goodSquareLength, this.MAX_DIM, MAX_ERROR, 0) ** 2);\n }\n static set MAX_AREA(area) {\n if (area >= 0) {\n this._hasMaxArea = true;\n shadow(this, \"MAX_AREA\", area);\n }\n }\n static setOptions({\n canvasMaxAreaInBytes = -1,\n isImageDecoderSupported = false\n }) {\n if (!this._hasMaxArea) {\n this.MAX_AREA = canvasMaxAreaInBytes >> 2;\n }\n this.#isImageDecoderSupported = isImageDecoderSupported;\n }\n static _areGoodDims(width, height) {\n try {\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n ctx.fillRect(0, 0, 1, 1);\n const opacity = ctx.getImageData(0, 0, 1, 1).data[3];\n canvas.width = canvas.height = 1;\n return opacity !== 0;\n } catch {\n return false;\n }\n }\n static _guessMax(start, end, tolerance, defaultHeight) {\n while (start + tolerance + 1 < end) {\n const middle = Math.floor((start + end) / 2);\n const height = defaultHeight || middle;\n if (this._areGoodDims(middle, height)) {\n start = middle;\n } else {\n end = middle;\n }\n }\n return start;\n }\n static async createImage(imgData, isMask = false) {\n return new ImageResizer(imgData, isMask)._createImage();\n }\n async _createImage() {\n const {\n _imgData: imgData\n } = this;\n const {\n width,\n height\n } = imgData;\n if (width * height * 4 > MAX_INT_32) {\n const result = this.#rescaleImageData();\n if (result) {\n return result;\n }\n }\n const data = this._encodeBMP();\n let decoder, imagePromise;\n if (await ImageResizer.canUseImageDecoder) {\n decoder = new ImageDecoder({\n data,\n type: \"image/bmp\",\n preferAnimation: false,\n transfer: [data.buffer]\n });\n imagePromise = decoder.decode().catch(reason => {\n warn(`BMP image decoding failed: ${reason}`);\n return createImageBitmap(new Blob([this._encodeBMP().buffer], {\n type: \"image/bmp\"\n }));\n }).finally(() => {\n decoder.close();\n });\n } else {\n imagePromise = createImageBitmap(new Blob([data.buffer], {\n type: \"image/bmp\"\n }));\n }\n const {\n MAX_AREA,\n MAX_DIM\n } = ImageResizer;\n const minFactor = Math.max(width / MAX_DIM, height / MAX_DIM, Math.sqrt(width * height / MAX_AREA));\n const firstFactor = Math.max(minFactor, 2);\n const factor = Math.round(10 * (minFactor + 1.25)) / 10 / firstFactor;\n const N = Math.floor(Math.log2(factor));\n const steps = new Array(N + 2).fill(2);\n steps[0] = firstFactor;\n steps.splice(-1, 1, factor / (1 << N));\n let newWidth = width;\n let newHeight = height;\n const result = await imagePromise;\n let bitmap = result.image || result;\n for (const step of steps) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n newWidth = Math.floor(newWidth / step);\n newHeight = Math.floor(newHeight / step);\n const canvas = new OffscreenCanvas(newWidth, newHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap.close();\n bitmap = canvas.transferToImageBitmap();\n }\n imgData.data = null;\n imgData.bitmap = bitmap;\n imgData.width = newWidth;\n imgData.height = newHeight;\n return imgData;\n }\n #rescaleImageData() {\n const {\n _imgData: imgData\n } = this;\n const {\n data,\n width,\n height,\n kind\n } = imgData;\n const rgbaSize = width * height * 4;\n const K = Math.ceil(Math.log2(rgbaSize / MAX_INT_32));\n const newWidth = width >> K;\n const newHeight = height >> K;\n let rgbaData;\n let maxHeight = height;\n try {\n rgbaData = new Uint8Array(rgbaSize);\n } catch {\n let n = Math.floor(Math.log2(rgbaSize + 1));\n while (true) {\n try {\n rgbaData = new Uint8Array(2 ** n - 1);\n break;\n } catch {\n n -= 1;\n }\n }\n maxHeight = Math.floor((2 ** n - 1) / (width * 4));\n const newSize = width * maxHeight * 4;\n if (newSize < rgbaData.length) {\n rgbaData = new Uint8Array(newSize);\n }\n }\n const src32 = new Uint32Array(rgbaData.buffer);\n const dest32 = new Uint32Array(newWidth * newHeight);\n let srcPos = 0;\n let newIndex = 0;\n const step = Math.ceil(height / maxHeight);\n const remainder = height % maxHeight === 0 ? height : height % maxHeight;\n for (let k = 0; k < step; k++) {\n const h = k < step - 1 ? maxHeight : remainder;\n ({\n srcPos\n } = convertToRGBA({\n kind,\n src: data,\n dest: src32,\n width,\n height: h,\n inverseDecode: this._isMask,\n srcPos\n }));\n for (let i = 0, ii = h >> K; i < ii; i++) {\n const buf = src32.subarray((i << K) * width);\n for (let j = 0; j < newWidth; j++) {\n dest32[newIndex++] = buf[j << K];\n }\n }\n }\n if (ImageResizer.needsToBeResized(newWidth, newHeight)) {\n imgData.data = dest32;\n imgData.width = newWidth;\n imgData.height = newHeight;\n imgData.kind = ImageKind.RGBA_32BPP;\n return null;\n }\n const canvas = new OffscreenCanvas(newWidth, newHeight);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.putImageData(new ImageData(new Uint8ClampedArray(dest32.buffer), newWidth, newHeight), 0, 0);\n imgData.data = null;\n imgData.bitmap = canvas.transferToImageBitmap();\n imgData.width = newWidth;\n imgData.height = newHeight;\n return imgData;\n }\n _encodeBMP() {\n const {\n width,\n height,\n kind\n } = this._imgData;\n let data = this._imgData.data;\n let bitPerPixel;\n let colorTable = new Uint8Array(0);\n let maskTable = colorTable;\n let compression = 0;\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n {\n bitPerPixel = 1;\n colorTable = new Uint8Array(this._isMask ? [255, 255, 255, 255, 0, 0, 0, 0] : [0, 0, 0, 0, 255, 255, 255, 255]);\n const rowLen = width + 7 >> 3;\n const rowSize = rowLen + 3 & -4;\n if (rowLen !== rowSize) {\n const newData = new Uint8Array(rowSize * height);\n let k = 0;\n for (let i = 0, ii = height * rowLen; i < ii; i += rowLen, k += rowSize) {\n newData.set(data.subarray(i, i + rowLen), k);\n }\n data = newData;\n }\n break;\n }\n case ImageKind.RGB_24BPP:\n {\n bitPerPixel = 24;\n if (width & 3) {\n const rowLen = 3 * width;\n const rowSize = rowLen + 3 & -4;\n const extraLen = rowSize - rowLen;\n const newData = new Uint8Array(rowSize * height);\n let k = 0;\n for (let i = 0, ii = height * rowLen; i < ii; i += rowLen) {\n const row = data.subarray(i, i + rowLen);\n for (let j = 0; j < rowLen; j += 3) {\n newData[k++] = row[j + 2];\n newData[k++] = row[j + 1];\n newData[k++] = row[j];\n }\n k += extraLen;\n }\n data = newData;\n } else {\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const tmp = data[i];\n data[i] = data[i + 2];\n data[i + 2] = tmp;\n }\n }\n break;\n }\n case ImageKind.RGBA_32BPP:\n bitPerPixel = 32;\n compression = 3;\n maskTable = new Uint8Array(4 + 4 + 4 + 4 + 52);\n const view = new DataView(maskTable.buffer);\n if (FeatureTest.isLittleEndian) {\n view.setUint32(0, 0x000000ff, true);\n view.setUint32(4, 0x0000ff00, true);\n view.setUint32(8, 0x00ff0000, true);\n view.setUint32(12, 0xff000000, true);\n } else {\n view.setUint32(0, 0xff000000, true);\n view.setUint32(4, 0x00ff0000, true);\n view.setUint32(8, 0x0000ff00, true);\n view.setUint32(12, 0x000000ff, true);\n }\n break;\n default:\n throw new Error(\"invalid format\");\n }\n let i = 0;\n const headerLength = 40 + maskTable.length;\n const fileLength = 14 + headerLength + colorTable.length + data.length;\n const bmpData = new Uint8Array(fileLength);\n const view = new DataView(bmpData.buffer);\n view.setUint16(i, 0x4d42, true);\n i += 2;\n view.setUint32(i, fileLength, true);\n i += 4;\n view.setUint32(i, 0, true);\n i += 4;\n view.setUint32(i, 14 + headerLength + colorTable.length, true);\n i += 4;\n view.setUint32(i, headerLength, true);\n i += 4;\n view.setInt32(i, width, true);\n i += 4;\n view.setInt32(i, -height, true);\n i += 4;\n view.setUint16(i, 1, true);\n i += 2;\n view.setUint16(i, bitPerPixel, true);\n i += 2;\n view.setUint32(i, compression, true);\n i += 4;\n view.setUint32(i, 0, true);\n i += 4;\n view.setInt32(i, 0, true);\n i += 4;\n view.setInt32(i, 0, true);\n i += 4;\n view.setUint32(i, colorTable.length / 4, true);\n i += 4;\n view.setUint32(i, 0, true);\n i += 4;\n bmpData.set(maskTable, i);\n i += maskTable.length;\n bmpData.set(colorTable, i);\n i += colorTable.length;\n bmpData.set(data, i);\n return bmpData;\n }\n}\n\n;// ./src/core/decode_stream.js\n\n\n\nconst emptyBuffer = new Uint8Array(0);\nclass DecodeStream extends BaseStream {\n buffer = emptyBuffer;\n bufferLength = 0;\n eof = false;\n minBufferLength = 512;\n pos = 0;\n constructor(maybeMinBufferLength) {\n super();\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n if (maybeMinBufferLength) {\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n readBlock() {\n unreachable(\"Abstract method `readBlock` called\");\n }\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n }\n ensureBuffer(requested) {\n const buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n let size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n const buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return this.buffer = buffer2;\n }\n getByte() {\n const pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n }\n getBytes(length, decoderOptions = null) {\n const pos = this.pos;\n let end;\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n while (!this.eof && this.bufferLength < end) {\n this.readBlock(decoderOptions);\n }\n const bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock(decoderOptions);\n }\n end = this.bufferLength;\n }\n this.pos = end;\n return this.buffer.subarray(pos, end);\n }\n async getImageData(length, decoderOptions) {\n if (!this.canAsyncDecodeImageFromBuffer) {\n return this.isAsyncDecoder ? this.decodeImage(null, length, decoderOptions) : this.getBytes(length, decoderOptions);\n }\n const data = await this.stream.asyncGetBytes();\n return this.decodeImage(data, length, decoderOptions);\n }\n async asyncGetBytesFromDecompressionStream(name) {\n this.stream.reset();\n const bytes = this.stream.isAsync ? await this.stream.asyncGetBytes() : this.stream.getBytes();\n try {\n const {\n readable,\n writable\n } = new DecompressionStream(name);\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n const chunks = [];\n let totalLength = 0;\n for await (const chunk of readable) {\n chunks.push(chunk);\n totalLength += chunk.byteLength;\n }\n const data = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n data.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return {\n decompressed: data,\n compressed: bytes\n };\n } catch {\n return {\n decompressed: null,\n compressed: bytes\n };\n }\n }\n reset() {\n this.pos = 0;\n }\n makeSubStream(start, length, dict = null) {\n if (length === undefined) {\n while (!this.eof) {\n this.readBlock();\n }\n } else {\n const end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n }\n return new Stream(this.buffer, start, length, dict);\n }\n clone() {\n while (!this.eof) {\n this.readBlock();\n }\n return new Stream(this.buffer, 0, this.bufferLength, this.dict?.clone());\n }\n getBaseStreams() {\n return this.stream ? this.stream.getBaseStreams() : null;\n }\n}\nclass StreamsSequenceStream extends DecodeStream {\n constructor(streams, onError = null) {\n streams = streams.filter(s => s instanceof BaseStream && !s.isImageStream);\n let maybeLength = 0;\n for (const stream of streams) {\n maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length;\n }\n super(maybeLength);\n this.streams = streams;\n this._onError = onError;\n }\n readBlock() {\n const streams = this.streams;\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n const stream = streams.shift();\n let chunk;\n try {\n chunk = stream.getBytes();\n } catch (reason) {\n if (this._onError) {\n this._onError(reason, stream.dict?.objId);\n return;\n }\n throw reason;\n }\n const bufferLength = this.bufferLength;\n const newLength = bufferLength + chunk.length;\n const buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n getBaseStreams() {\n const baseStreamsBuf = [];\n for (const stream of this.streams) {\n const baseStreams = stream.getBaseStreams();\n if (baseStreams) {\n baseStreamsBuf.push(...baseStreams);\n }\n }\n return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n }\n}\n\n;// ./src/core/colorspace_utils.js\n\n\n\n\n\n\nclass ColorSpaceUtils {\n static parse({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache,\n asyncIfNotCached = false\n }) {\n const options = {\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n };\n let csName, csRef, parsedCS;\n if (cs instanceof Ref) {\n csRef = cs;\n const cachedCS = globalColorSpaceCache.getByRef(csRef) || localColorSpaceCache.getByRef(csRef);\n if (cachedCS) {\n return cachedCS;\n }\n cs = xref.fetch(cs);\n }\n if (cs instanceof Name) {\n csName = cs.name;\n const cachedCS = localColorSpaceCache.getByName(csName);\n if (cachedCS) {\n return cachedCS;\n }\n }\n try {\n parsedCS = this.#parse(cs, options);\n } catch (ex) {\n if (asyncIfNotCached && !(ex instanceof MissingDataException)) {\n return Promise.reject(ex);\n }\n throw ex;\n }\n if (csName || csRef) {\n localColorSpaceCache.set(csName, csRef, parsedCS);\n if (csRef) {\n globalColorSpaceCache.set(null, csRef, parsedCS);\n }\n }\n return asyncIfNotCached ? Promise.resolve(parsedCS) : parsedCS;\n }\n static #subParse(cs, options) {\n const {\n globalColorSpaceCache\n } = options;\n let csRef;\n if (cs instanceof Ref) {\n csRef = cs;\n const cachedCS = globalColorSpaceCache.getByRef(csRef);\n if (cachedCS) {\n return cachedCS;\n }\n }\n const parsedCS = this.#parse(cs, options);\n if (csRef) {\n globalColorSpaceCache.set(null, csRef, parsedCS);\n }\n return parsedCS;\n }\n static #parse(cs, options) {\n const {\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache\n } = options;\n cs = xref.fetchIfRef(cs);\n if (cs instanceof Name) {\n switch (cs.name) {\n case \"G\":\n case \"DeviceGray\":\n return this.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.rgb;\n case \"DeviceRGBA\":\n return this.rgba;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.cmyk;\n case \"Pattern\":\n return new PatternCS(null);\n default:\n if (resources instanceof Dict) {\n const colorSpaces = resources.get(\"ColorSpace\");\n if (colorSpaces instanceof Dict) {\n const resourcesCS = colorSpaces.get(cs.name);\n if (resourcesCS) {\n if (resourcesCS instanceof Name) {\n return this.#parse(resourcesCS, options);\n }\n cs = resourcesCS;\n break;\n }\n }\n }\n warn(`Unrecognized ColorSpace: ${cs.name}`);\n return this.gray;\n }\n }\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n switch (mode) {\n case \"G\":\n case \"DeviceGray\":\n return this.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.cmyk;\n case \"CalGray\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.get(\"Gamma\");\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n case \"CalRGB\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.getArray(\"Gamma\");\n const matrix = params.getArray(\"Matrix\");\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n case \"ICCBased\":\n const isRef = cs[1] instanceof Ref;\n if (isRef) {\n const cachedCS = globalColorSpaceCache.getByRef(cs[1]);\n if (cachedCS) {\n return cachedCS;\n }\n }\n const stream = xref.fetchIfRef(cs[1]);\n const dict = stream.dict;\n numComps = dict.get(\"N\");\n if (IccColorSpace.isUsable) {\n try {\n const iccCS = new IccColorSpace(stream.getBytes(), \"ICCBased\", numComps);\n if (isRef) {\n globalColorSpaceCache.set(null, cs[1], iccCS);\n }\n return iccCS;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`ICCBased color space (${cs[1]}): \"${ex}\".`);\n }\n }\n const altRaw = dict.getRaw(\"Alternate\");\n if (altRaw) {\n const altCS = this.#subParse(altRaw, options);\n if (altCS.numComps === numComps) {\n return altCS;\n }\n warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n if (numComps === 1) {\n return this.gray;\n } else if (numComps === 3) {\n return this.rgb;\n } else if (numComps === 4) {\n return this.cmyk;\n }\n break;\n case \"Pattern\":\n baseCS = cs[1] || null;\n baseCS &&= this.#subParse(baseCS, options);\n return new PatternCS(baseCS);\n case \"I\":\n case \"Indexed\":\n baseCS = this.#subParse(cs[1], options);\n const hiVal = MathClamp(xref.fetchIfRef(cs[2]), 0, 255);\n const lookup = xref.fetchIfRef(cs[3]);\n return new IndexedCS(baseCS, hiVal, lookup);\n case \"Separation\":\n case \"DeviceN\":\n const name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n baseCS = this.#subParse(cs[2], options);\n const tintFn = pdfFunctionFactory.create(cs[3]);\n return new AlternateCS(numComps, baseCS, tintFn);\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n const range = params.getArray(\"Range\");\n return new LabCS(whitePoint, blackPoint, range);\n default:\n warn(`Unimplemented ColorSpace object: ${mode}`);\n return this.gray;\n }\n }\n warn(`Unrecognized ColorSpace object: ${cs}`);\n return this.gray;\n }\n static get gray() {\n return shadow(this, \"gray\", new DeviceGrayCS());\n }\n static get rgb() {\n return shadow(this, \"rgb\", new DeviceRgbCS());\n }\n static get rgba() {\n return shadow(this, \"rgba\", new DeviceRgbaCS());\n }\n static get cmyk() {\n if (CmykICCBasedCS.isUsable) {\n try {\n return shadow(this, \"cmyk\", new CmykICCBasedCS());\n } catch {\n warn(\"CMYK fallback: DeviceCMYK\");\n }\n }\n return shadow(this, \"cmyk\", new DeviceCmykCS());\n }\n}\n\n;// ./src/core/jpg.js\n\n\n\n\nclass JpegError extends BaseException {\n constructor(msg) {\n super(msg, \"JpegError\");\n }\n}\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\nconst dctZigZag = 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]);\nconst dctCos1 = 4017;\nconst dctSin1 = 799;\nconst dctCos3 = 3406;\nconst dctSin3 = 2276;\nconst dctCos6 = 1567;\nconst dctSin6 = 3784;\nconst dctSqrt2 = 5793;\nconst dctSqrt1d2 = 2896;\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0,\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n const code = [{\n children: [],\n index: 0\n }];\n let p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push(q = {\n children: [],\n index: 0\n });\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n code.push(q = {\n children: [],\n index: 0\n });\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\nfunction decodeScan(data, view, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) {\n const mcusPerLine = frame.mcusPerLine;\n const progressive = frame.progressive;\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return bitsData >> bitsCount & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xff) {\n const nextByte = data[offset++];\n if (nextByte) {\n if (nextByte === 0xdc && parseDNLMarker) {\n offset += 2;\n const scanLines = view.getUint16(offset);\n offset += 2;\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\"Found DNL marker (0xFFDC) while parsing scan data\", scanLines);\n }\n } else if (nextByte === 0xd9) {\n if (parseDNLMarker) {\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 5) {\n throw new DNLMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data, \" + \"possibly caused by incorrect `scanLines` parameter\", maybeScanLines);\n }\n }\n throw new EOIMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data\");\n }\n throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`);\n }\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n function decodeHuffman(tree) {\n let node = tree;\n while (true) {\n node = node[readBit()];\n switch (typeof node) {\n case \"number\":\n return node;\n case \"object\":\n continue;\n }\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n function receive(length) {\n let n = 0;\n while (length > 0) {\n n = n << 1 | readBit();\n length--;\n }\n return n;\n }\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n const n = receive(length);\n if (n >= 1 << length - 1) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n function decodeBaseline(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n function decodeDCFirst(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n let eobrun = 0;\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n let successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, blockOffset) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n let s;\n let rs;\n while (k <= e) {\n const offsetZ = blockOffset + dctZigZag[k];\n const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0:\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError(\"invalid ACn encoding\");\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1:\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n component.blockData[offsetZ] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n let blockRow = 0;\n function decodeMcu(component, decode, mcu, row, col) {\n const mcuRow = mcu / mcusPerLine | 0;\n const mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n const blockCol = mcuCol * component.h + col;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n function decodeBlock(component, decode, mcu) {\n blockRow = mcu / component.blocksPerLine | 0;\n const blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n const componentsLength = components.length;\n let component, i, j, k, n;\n let decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n let mcu = 0,\n fileMarker;\n const mcuExpected = componentsLength === 1 ? components[0].blocksPerLine * components[0].blocksPerColumn : mcusPerLine * frame.mcusPerColumn;\n let h, v;\n while (mcu <= mcuExpected) {\n const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n }\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, view, offset);\n if (!fileMarker) {\n break;\n }\n if (fileMarker.invalid) {\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n warn(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);\n offset = fileMarker.offset;\n }\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n offset += 2;\n } else {\n break;\n }\n }\n return offset - startOffset;\n}\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n const qt = component.quantizationTable,\n blockData = component.blockData;\n let v0, v1, v2, v3, v4, v5, v6, v7;\n let p0, p1, p2, p3, p4, p5, p6, p7;\n let t;\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n for (let row = 0; row < 64; row += 8) {\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n p0 *= qt[row];\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = dctSqrt2 * p0 + 512 >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n v0 = dctSqrt2 * p0 + 128 >> 8;\n v1 = dctSqrt2 * p4 + 128 >> 8;\n v2 = p2;\n v3 = p6;\n v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;\n v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n v0 = v0 + v1 + 1 >> 1;\n v1 = v0 - v1;\n t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;\n v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;\n v3 = t;\n v4 = v4 + v6 + 1 >> 1;\n v6 = v4 - v6;\n v7 = v7 + v5 + 1 >> 1;\n v5 = v7 - v5;\n v0 = v0 + v3 + 1 >> 1;\n v3 = v0 - v3;\n v1 = v1 + v2 + 1 >> 1;\n v2 = v1 - v2;\n t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n v7 = t;\n t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n v6 = t;\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n for (let col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = dctSqrt2 * p0 + 8192 >> 14;\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = t + 2056 >> 4;\n }\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n v0 = dctSqrt2 * p0 + 2048 >> 12;\n v1 = dctSqrt2 * p4 + 2048 >> 12;\n v2 = p2;\n v3 = p6;\n v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;\n v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;\n v5 = p3;\n v6 = p5;\n v0 = (v0 + v1 + 1 >> 1) + 4112;\n v1 = v0 - v1;\n t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;\n v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;\n v3 = t;\n v4 = v4 + v6 + 1 >> 1;\n v6 = v4 - v6;\n v7 = v7 + v5 + 1 >> 1;\n v5 = v7 - v5;\n v0 = v0 + v3 + 1 >> 1;\n v3 = v0 - v3;\n v1 = v1 + v2 + 1 >> 1;\n v2 = v1 - v2;\n t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n v7 = t;\n t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n v6 = t;\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n}\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n const offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n}\nfunction findNextFileMarker(data, view, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let newPos = startPos < currentPos ? startPos : currentPos;\n if (currentPos >= maxPos) {\n return null;\n }\n const currentMarker = view.getUint16(currentPos);\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos\n };\n }\n let newMarker = view.getUint16(newPos);\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null;\n }\n newMarker = view.getUint16(newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos\n };\n}\nfunction prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (const component of frame.components) {\n const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);\n const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n}\nfunction readDataBlock(data, view, offset) {\n const length = view.getUint16(offset);\n offset += 2;\n let endOffset = offset + length - 2;\n const fileMarker = findNextFileMarker(data, view, endOffset, offset);\n if (fileMarker?.invalid) {\n warn(\"readDataBlock - incorrect length, current marker is: \" + fileMarker.invalid);\n endOffset = fileMarker.offset;\n }\n const array = data.subarray(offset, endOffset);\n return {\n appData: array,\n oldOffset: offset,\n newOffset: offset + array.length\n };\n}\nfunction skipData(data, view, offset) {\n const length = view.getUint16(offset);\n offset += 2;\n const endOffset = offset + length - 2;\n const fileMarker = findNextFileMarker(data, view, endOffset, offset);\n if (fileMarker?.invalid) {\n return fileMarker.offset;\n }\n return endOffset;\n}\nclass JpegImage {\n constructor(options) {\n this._colorTransform = options?.colorTransform ?? -1;\n }\n static canUseImageDecoder(data, colorTransform = -1) {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const info = {\n width: 0,\n height: 0,\n exifStart: 0,\n exifEnd: 0\n };\n let offset = 0;\n let numComponents = null;\n let fileMarker = view.getUint16(offset);\n offset += 2;\n if (fileMarker !== 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = view.getUint16(offset);\n offset += 2;\n markerLoop: while (fileMarker !== 0xffd9) {\n switch (fileMarker) {\n case 0xffe1:\n const {\n appData,\n oldOffset,\n newOffset\n } = readDataBlock(data, view, offset);\n offset = newOffset;\n if (appData[0] === 0x45 && appData[1] === 0x78 && appData[2] === 0x69 && appData[3] === 0x66 && appData[4] === 0 && appData[5] === 0) {\n if (info.exifStart) {\n throw new JpegError(\"Duplicate EXIF-blocks found.\");\n }\n info.exifStart = oldOffset + 6;\n info.exifEnd = newOffset;\n }\n fileMarker = view.getUint16(offset);\n offset += 2;\n continue;\n case 0xffc0:\n case 0xffc1:\n case 0xffc2:\n info.height = view.getUint16(offset + (2 + 1));\n info.width = view.getUint16(offset + (2 + 1 + 2));\n numComponents = data[offset + (2 + 1 + 2 + 2)];\n break markerLoop;\n case 0xffff:\n if (data[offset] !== 0xff) {\n offset--;\n }\n break;\n }\n offset = skipData(data, view, offset);\n fileMarker = view.getUint16(offset);\n offset += 2;\n }\n if (numComponents === 4) {\n return null;\n }\n if (numComponents === 3 && colorTransform === 0) {\n return null;\n }\n return info;\n }\n parse(data, {\n dnlScanLines = null\n } = {}) {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const maxOffset = data.length - 1;\n let offset = 0;\n let jfif = null;\n let adobe = null;\n let frame, resetInterval;\n let numSOSMarkers = 0;\n const quantizationTables = [];\n const huffmanTablesAC = [],\n huffmanTablesDC = [];\n let fileMarker = view.getUint16(offset);\n offset += 2;\n if (fileMarker !== 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = view.getUint16(offset);\n offset += 2;\n markerLoop: while (fileMarker !== 0xffd9) {\n let i, j, l;\n switch (fileMarker) {\n case 0xffe0:\n case 0xffe1:\n case 0xffe2:\n case 0xffe3:\n case 0xffe4:\n case 0xffe5:\n case 0xffe6:\n case 0xffe7:\n case 0xffe8:\n case 0xffe9:\n case 0xffea:\n case 0xffeb:\n case 0xffec:\n case 0xffed:\n case 0xffee:\n case 0xffef:\n case 0xfffe:\n const {\n appData,\n newOffset\n } = readDataBlock(data, view, offset);\n offset = newOffset;\n if (fileMarker === 0xffe0) {\n if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {\n jfif = {\n version: {\n major: appData[5],\n minor: appData[6]\n },\n densityUnits: appData[7],\n xDensity: appData[8] << 8 | appData[9],\n yDensity: appData[10] << 8 | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])\n };\n }\n }\n if (fileMarker === 0xffee) {\n if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {\n adobe = {\n version: appData[5] << 8 | appData[6],\n flags0: appData[7] << 8 | appData[8],\n flags1: appData[9] << 8 | appData[10],\n transformCode: appData[11]\n };\n }\n }\n break;\n case 0xffdb:\n const quantizationTablesLength = view.getUint16(offset);\n offset += 2;\n const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n let z;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const tableData = new Uint16Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = view.getUint16(offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n case 0xffc0:\n case 0xffc1:\n case 0xffc2:\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n offset += 2;\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n const sofScanLines = view.getUint16(offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = view.getUint16(offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n const componentsCount = data[offset++];\n let maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n const componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n const qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n case 0xffc4:\n const huffmanLength = view.getUint16(offset);\n offset += 2;\n for (i = 2; i < huffmanLength;) {\n const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n const huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n case 0xffdd:\n offset += 2;\n resetInterval = view.getUint16(offset);\n offset += 2;\n break;\n case 0xffda:\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n offset += 2;\n const selectorsCount = data[offset++],\n components = [];\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n const componentIndex = frame.componentIds[index];\n const component = frame.components[componentIndex];\n component.index = index;\n const tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++],\n spectralEnd = data[offset++],\n successiveApproximation = data[offset++];\n try {\n const processed = decodeScan(data, view, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n return this.parse(data, {\n dnlScanLines: ex.scanLines\n });\n } else if (ex instanceof EOIMarkerError) {\n warn(`${ex.message} -- ignoring the rest of the image data.`);\n break markerLoop;\n }\n throw ex;\n }\n break;\n case 0xffdc:\n offset += 4;\n break;\n case 0xffff:\n if (data[offset] !== 0xff) {\n offset--;\n }\n break;\n default:\n const nextFileMarker = findNextFileMarker(data, view, offset - 2, offset - 3);\n if (nextFileMarker?.invalid) {\n warn(\"JpegImage.parse - unexpected data, current marker is: \" + nextFileMarker.invalid);\n offset = nextFileMarker.offset;\n break;\n }\n if (!nextFileMarker || offset >= maxOffset) {\n warn(\"JpegImage.parse - reached the end of the image data \" + \"without finding an EOI marker (0xFFD9).\");\n break markerLoop;\n }\n throw new JpegError(\"JpegImage.parse - unknown marker: \" + fileMarker.toString(16));\n }\n if (offset < maxOffset) {\n fileMarker = view.getUint16(offset);\n offset += 2;\n } else {\n fileMarker = 0;\n }\n }\n if (!frame) {\n throw new JpegError(\"JpegImage.parse - no frame data found.\");\n }\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (const component of frame.components) {\n const quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n this.components.push({\n index: component.index,\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn\n });\n }\n this.numComponents = this.components.length;\n return undefined;\n }\n #getLinearizedBlockData(width, height) {\n const scaleX = this.width / width,\n scaleY = this.height / height;\n let component, componentScaleX, componentScaleY, blocksPerScanline;\n let x, y, i, j, k;\n let index;\n let offset = 0;\n let output;\n const numComponents = this.components.length;\n const dataLength = width * height * numComponents;\n const data = new Uint8ClampedArray(dataLength);\n const xScaleBlockOffset = new Uint32Array(width);\n const mask3LSB = 0xfffffff8;\n let lastComponentScaleX;\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = component.blocksPerLine + 1 << 3;\n if (componentScaleX !== lastComponentScaleX) {\n for (x = 0; x < width; x++) {\n j = 0 | x * componentScaleX;\n xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;\n }\n lastComponentScaleX = componentScaleX;\n }\n for (y = 0; y < height; y++) {\n j = 0 | y * componentScaleY;\n index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n return data;\n }\n get _isColorConversionNeeded() {\n if (this.adobe) {\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n return false;\n } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) {\n return false;\n }\n return true;\n }\n if (this._colorTransform === 1) {\n return true;\n }\n return false;\n }\n _convertYccToRgb(data) {\n let Y, Cb, Cr;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n return data;\n }\n _convertYccToRgba(data, out) {\n for (let i = 0, j = 0, ii = data.length; i < ii; i += 3, j += 4) {\n const Y = data[i];\n const Cb = data[i + 1];\n const Cr = data[i + 2];\n out[j] = Y - 179.456 + 1.402 * Cr;\n out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n out[j + 2] = Y - 226.816 + 1.772 * Cb;\n out[j + 3] = 255;\n }\n return out;\n }\n _convertYcckToRgb(data) {\n this._convertYcckToCmyk(data);\n return this._convertCmykToRgb(data);\n }\n _convertYcckToRgba(data) {\n this._convertYcckToCmyk(data);\n return this._convertCmykToRgba(data);\n }\n _convertYcckToCmyk(data) {\n let Y, Cb, Cr;\n for (let i = 0, ii = data.length; i < ii; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n }\n return data;\n }\n _convertCmykToRgb(data) {\n const count = data.length / 4;\n ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, count, data, 0, 8, 0);\n return data.subarray(0, count * 3);\n }\n _convertCmykToRgba(data) {\n ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, data.length / 4, data, 0, 8, 1);\n if (ColorSpaceUtils.cmyk instanceof DeviceCmykCS) {\n for (let i = 3, ii = data.length; i < ii; i += 4) {\n data[i] = 255;\n }\n }\n return data;\n }\n getData({\n width,\n height,\n forceRGBA = false,\n forceRGB = false\n }) {\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n const data = this.#getLinearizedBlockData(width, height);\n if (this.numComponents === 1 && (forceRGBA || forceRGB)) {\n const len = data.length * (forceRGBA ? 4 : 3);\n const rgbaData = new Uint8ClampedArray(len);\n let offset = 0;\n if (forceRGBA) {\n grayToRGBA(data, new Uint32Array(rgbaData.buffer));\n } else {\n for (const grayColor of data) {\n rgbaData[offset++] = grayColor;\n rgbaData[offset++] = grayColor;\n rgbaData[offset++] = grayColor;\n }\n }\n return rgbaData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n if (forceRGBA) {\n const rgbaData = new Uint8ClampedArray(data.length / 3 * 4);\n return this._convertYccToRgba(data, rgbaData);\n }\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGBA) {\n return this._convertYcckToRgba(data);\n }\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGBA) {\n return this._convertCmykToRgba(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n }\n}\n\n;// ./src/core/jpeg_stream.js\n\n\n\n\n\nclass JpegStream extends DecodeStream {\n static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n static get canUseImageDecoder() {\n return shadow(this, \"canUseImageDecoder\", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported(\"image/jpeg\") : Promise.resolve(false));\n }\n static setOptions({\n isImageDecoderSupported = false\n }) {\n this.#isImageDecoderSupported = isImageDecoderSupported;\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n ensureBuffer(requested) {}\n readBlock() {\n this.decodeImage();\n }\n get jpegOptions() {\n const jpegOptions = {\n colorTransform: undefined\n };\n if (this.params instanceof Dict) {\n const colorTransform = this.params.get(\"ColorTransform\");\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n return shadow(this, \"jpegOptions\", jpegOptions);\n }\n #skipUselessBytes(data) {\n for (let i = 0, ii = data.length - 1; i < ii; i++) {\n if (data[i] === 0xff && data[i + 1] === 0xd8) {\n if (i > 0) {\n data = data.subarray(i);\n }\n break;\n }\n }\n return data;\n }\n decodeImage(bytes) {\n if (this.eof) {\n return this.buffer;\n }\n bytes = this.#skipUselessBytes(bytes || this.bytes);\n const jpegImage = new JpegImage(this.jpegOptions);\n jpegImage.parse(bytes);\n const data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGBA: this.forceRGBA,\n forceRGB: this.forceRGB\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n return this.buffer;\n }\n get canAsyncDecodeImageFromBuffer() {\n return this.stream.isAsync;\n }\n async getTransferableImage(width, height) {\n if (!(await JpegStream.canUseImageDecoder)) {\n return null;\n }\n const jpegOptions = this.jpegOptions;\n let decoder;\n try {\n const bytes = this.canAsyncDecodeImageFromBuffer && (await this.stream.asyncGetBytes()) || this.bytes;\n if (!bytes) {\n return null;\n }\n let data = this.#skipUselessBytes(bytes);\n const useImageDecoder = JpegImage.canUseImageDecoder(data, jpegOptions.colorTransform);\n if (!useImageDecoder) {\n return null;\n }\n const {\n width: frameWidth,\n height: frameHeight\n } = useImageDecoder;\n const reducePower = ImageResizer.getReducePower(frameWidth, frameHeight);\n if ((frameWidth !== width || frameHeight !== height) && (reducePower || !frameHeight)) {\n return null;\n }\n if (useImageDecoder.exifStart) {\n data = data.slice();\n data.fill(0x00, useImageDecoder.exifStart, useImageDecoder.exifEnd);\n }\n const init = {\n data,\n type: \"image/jpeg\",\n preferAnimation: false\n };\n if (reducePower) {\n const factor = 2 ** reducePower;\n init.desiredWidth = Math.ceil(frameWidth / factor);\n init.desiredHeight = Math.ceil(frameHeight / factor);\n }\n decoder = new ImageDecoder(init);\n return (await decoder.decode()).image;\n } catch (reason) {\n warn(`getTransferableImage - failed: \"${reason}\".`);\n return null;\n } finally {\n decoder?.close();\n }\n }\n get isImageStream() {\n return true;\n }\n}\n\n;// ./src/core/operator_list.js\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n let state = parentState;\n for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n const item = pattern[i];\n state = state[item] ||= [];\n }\n state[pattern.at(-1)] = {\n checkFn,\n iterateFn,\n processFn\n };\n}\nconst InitialState = [];\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore], null, function iterateInlineImageGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintInlineImageXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n}, function foundInlineImageGroup(context, i) {\n const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n const MAX_WIDTH = 1000;\n const IMAGE_PADDING = 1;\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIIXO = curr - 1;\n const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n let maxX = 0;\n const map = [];\n let maxLineHeight = 0;\n let currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n for (let q = 0; q < count; q++) {\n const transform = argsArray[iFirstTransform + (q << 2)];\n const img = argsArray[iFirstPIIXO + (q << 2)][0];\n if (currentX + img.width > MAX_WIDTH) {\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n map.push({\n transform,\n x: currentX,\n y: currentY,\n w: img.width,\n h: img.height\n });\n currentX += img.width + 2 * IMAGE_PADDING;\n maxLineHeight = Math.max(maxLineHeight, img.height);\n }\n const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n const imgData = new Uint8Array(imgWidth * imgHeight * 4);\n const imgRowSize = imgWidth << 2;\n for (let q = 0; q < count; q++) {\n const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n const rowSize = map[q].w << 2;\n let dataOffset = 0;\n let offset = map[q].x + map[q].y * imgWidth << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n for (let k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n while (offset >= 0) {\n data[offset - 4] = data[offset];\n data[offset - 3] = data[offset + 1];\n data[offset - 2] = data[offset + 2];\n data[offset - 1] = data[offset + 3];\n data[offset + rowSize] = data[offset + rowSize - 4];\n data[offset + rowSize + 1] = data[offset + rowSize - 3];\n data[offset + rowSize + 2] = data[offset + rowSize - 2];\n data[offset + rowSize + 3] = data[offset + rowSize - 1];\n offset -= imgRowSize;\n }\n }\n const img = {\n width: imgWidth,\n height: imgHeight\n };\n if (context.isOffscreenCanvasSupported) {\n const canvas = new OffscreenCanvas(imgWidth, imgHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.putImageData(new ImageData(new Uint8ClampedArray(imgData.buffer), imgWidth, imgHeight), 0, 0);\n img.bitmap = canvas.transferToImageBitmap();\n img.data = null;\n } else {\n img.kind = ImageKind.RGBA_32BPP;\n img.data = imgData;\n }\n fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [img, map]);\n return iFirstSave + 1;\n});\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore], null, function iterateImageMaskGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintImageMaskXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n}, function foundImageMaskGroup(context, i) {\n const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIMXO = curr - 1;\n let count = Math.floor((i - iFirstSave) / 4);\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n let isSameImage = false;\n let iTransform, transformArgs;\n const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0],\n firstTransformArg1 = argsArray[iFirstTransform][1],\n firstTransformArg2 = argsArray[iFirstTransform][2],\n firstTransformArg3 = argsArray[iFirstTransform][3];\n if (firstTransformArg1 === firstTransformArg2) {\n isSameImage = true;\n iTransform = iFirstTransform + 4;\n let iPIMXO = iFirstPIMXO + 4;\n for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n break;\n }\n }\n }\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n const positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n const images = [];\n for (let q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({\n data: maskParams.data,\n width: maskParams.width,\n height: maskParams.height,\n interpolate: maskParams.interpolate,\n count: maskParams.count,\n transform: transformArgs\n });\n }\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n return iFirstSave + 1;\n});\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore], function (context) {\n const argsArray = context.argsArray;\n const iFirstTransform = context.iCurr - 2;\n return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;\n}, function iterateImageGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n if (fnArray[i] !== OPS.transform) {\n return false;\n }\n const iFirstTransform = context.iCurr - 2;\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {\n return false;\n }\n return true;\n case 2:\n if (fnArray[i] !== OPS.paintImageXObject) {\n return false;\n }\n const iFirstPIXO = context.iCurr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n if (argsArray[i][0] !== firstPIXOArg0) {\n return false;\n }\n return true;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n}, function (context, i) {\n const MIN_IMAGES_IN_BLOCK = 3;\n const MAX_IMAGES_IN_BLOCK = 1000;\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIXO = curr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n const positions = new Float32Array(count * 2);\n let iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n const transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n const args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n return iFirstSave + 1;\n});\naddState(InitialState, [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText], null, function iterateShowTextGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 4;\n const pos = (i - iFirstSave) % 5;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.beginText;\n case 1:\n return fnArray[i] === OPS.setFont;\n case 2:\n return fnArray[i] === OPS.setTextMatrix;\n case 3:\n if (fnArray[i] !== OPS.showText) {\n return false;\n }\n const iFirstSetFont = context.iCurr - 3;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {\n return false;\n }\n return true;\n case 4:\n return fnArray[i] === OPS.endText;\n }\n throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n}, function (context, i) {\n const MIN_CHARS_IN_BLOCK = 3;\n const MAX_CHARS_IN_BLOCK = 1000;\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstBeginText = curr - 4;\n const iFirstSetFont = curr - 3;\n const iFirstSetTextMatrix = curr - 2;\n const iFirstShowText = curr - 1;\n const iFirstEndText = curr;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n let count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - (i - iFirstBeginText) % 5;\n }\n let iFirst = iFirstBeginText;\n if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n count++;\n iFirst -= 5;\n }\n let iEndText = iFirst + 4;\n for (let q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n return iEndText + 1;\n});\naddState(InitialState, [OPS.save, OPS.transform, OPS.constructPath, OPS.restore], context => {\n const argsArray = context.argsArray;\n const iFirstConstructPath = context.iCurr - 1;\n const op = argsArray[iFirstConstructPath][0];\n if (op !== OPS.stroke && op !== OPS.closeStroke && op !== OPS.fillStroke && op !== OPS.eoFillStroke && op !== OPS.closeFillStroke && op !== OPS.closeEOFillStroke) {\n return true;\n }\n const iFirstTransform = context.iCurr - 2;\n const transform = argsArray[iFirstTransform];\n return transform[0] === 1 && transform[1] === 0 && transform[2] === 0 && transform[3] === 1;\n}, () => false, (context, i) => {\n const {\n fnArray,\n argsArray\n } = context;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstConstructPath = curr - 1;\n const args = argsArray[iFirstConstructPath];\n const transform = argsArray[iFirstTransform];\n const [, [buffer], minMax] = args;\n if (minMax) {\n const newBBox = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox(minMax, transform, newBBox);\n minMax.set(newBBox);\n for (let k = 0, kk = buffer.length; k < kk;) {\n switch (buffer[k++]) {\n case DrawOPS.moveTo:\n case DrawOPS.lineTo:\n Util.applyTransform(buffer, transform, k);\n k += 2;\n break;\n case DrawOPS.curveTo:\n Util.applyTransformToBezier(buffer, transform, k);\n k += 6;\n break;\n }\n }\n }\n fnArray.splice(iFirstSave, 4, OPS.constructPath);\n argsArray.splice(iFirstSave, 4, args);\n return iFirstSave + 1;\n});\nclass NullOptimizer {\n constructor(queue) {\n this.queue = queue;\n }\n _optimize() {}\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n this._optimize();\n }\n flush() {}\n reset() {}\n}\nclass QueueOptimizer extends NullOptimizer {\n constructor(queue) {\n super(queue);\n this.state = null;\n this.context = {\n iCurr: 0,\n fnArray: queue.fnArray,\n argsArray: queue.argsArray,\n isOffscreenCanvasSupported: OperatorList.isOffscreenCanvasSupported\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n _optimize() {\n const fnArray = this.queue.fnArray;\n let i = this.lastProcessed,\n ii = fnArray.length;\n let state = this.state;\n let match = this.match;\n if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n this.lastProcessed = ii;\n return;\n }\n const context = this.context;\n while (i < ii) {\n if (match) {\n const iterate = (0, match.iterateFn)(context, i);\n if (iterate) {\n i++;\n continue;\n }\n i = (0, match.processFn)(context, i + 1);\n ii = fnArray.length;\n match = null;\n state = null;\n if (i >= ii) {\n break;\n }\n }\n state = (state || InitialState)[fnArray[i]];\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n context.iCurr = i;\n i++;\n if (state.checkFn && !(0, state.checkFn)(context)) {\n state = null;\n continue;\n }\n match = state;\n state = null;\n }\n this.state = state;\n this.match = match;\n this.lastProcessed = i;\n }\n flush() {\n while (this.match) {\n const length = this.queue.fnArray.length;\n this.lastProcessed = (0, this.match.processFn)(this.context, length);\n this.match = null;\n this.state = null;\n this._optimize();\n }\n }\n reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n}\nclass OperatorList {\n static CHUNK_SIZE = 1000;\n static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5;\n static isOffscreenCanvasSupported = false;\n constructor(intent = 0, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n this.optimizer = streamSink && !(intent & RenderingIntentFlag.OPLIST) ? new QueueOptimizer(this) : new NullOptimizer(this);\n this.dependencies = new Set();\n this._totalLength = 0;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n static setOptions({\n isOffscreenCanvasSupported\n }) {\n this.isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n }\n get length() {\n return this.argsArray.length;\n }\n get ready() {\n return this._resolved || this._streamSink.ready;\n }\n get totalLength() {\n return this._totalLength + this.length;\n }\n addOp(fn, args) {\n this.optimizer.push(fn, args);\n this.weight++;\n if (this._streamSink) {\n if (this.weight >= OperatorList.CHUNK_SIZE) {\n this.flush();\n } else if (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === OPS.restore || fn === OPS.endText)) {\n this.flush();\n }\n }\n }\n addImageOps(fn, args, optionalContent, hasMask = false) {\n if (hasMask) {\n this.addOp(OPS.save);\n this.addOp(OPS.setGState, [[[\"SMask\", false]]]);\n }\n if (optionalContent !== undefined) {\n this.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n this.addOp(fn, args);\n if (optionalContent !== undefined) {\n this.addOp(OPS.endMarkedContent, []);\n }\n if (hasMask) {\n this.addOp(OPS.restore);\n }\n }\n addDependency(dependency) {\n if (this.dependencies.has(dependency)) {\n return;\n }\n this.dependencies.add(dependency);\n this.addOp(OPS.dependency, [dependency]);\n }\n addDependencies(dependencies) {\n for (const dependency of dependencies) {\n this.addDependency(dependency);\n }\n }\n addOpList(opList) {\n if (!(opList instanceof OperatorList)) {\n warn('addOpList - ignoring invalid \"opList\" parameter.');\n return;\n }\n for (const dependency of opList.dependencies) {\n this.dependencies.add(dependency);\n }\n for (let i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n }\n getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length\n };\n }\n get _transfers() {\n const transfers = [];\n const {\n fnArray,\n argsArray,\n length\n } = this;\n for (let i = 0; i < length; i++) {\n switch (fnArray[i]) {\n case OPS.paintInlineImageXObject:\n case OPS.paintInlineImageXObjectGroup:\n case OPS.paintImageMaskXObject:\n {\n const {\n bitmap,\n data\n } = argsArray[i][0];\n if (bitmap || data?.buffer) {\n transfers.push(bitmap || data.buffer);\n }\n break;\n }\n case OPS.constructPath:\n {\n const [, [data], minMax] = argsArray[i];\n if (data) {\n transfers.push(data.buffer, minMax.buffer);\n }\n break;\n }\n case OPS.paintFormXObjectBegin:\n const [matrix, bbox] = argsArray[i];\n if (matrix) {\n transfers.push(matrix.buffer);\n }\n if (bbox) {\n transfers.push(bbox.buffer);\n }\n break;\n case OPS.setTextMatrix:\n transfers.push(argsArray[i][0].buffer);\n break;\n }\n }\n return transfers;\n }\n flush(lastChunk = false, separateAnnots = null) {\n this.optimizer.flush();\n const length = this.length;\n this._totalLength += length;\n this._streamSink.enqueue({\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n separateAnnots,\n length\n }, 1, this._transfers);\n this.dependencies.clear();\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n this.weight = 0;\n this.optimizer.reset();\n }\n}\nclass CheckedOperatorList extends OperatorList {\n needsIsolation = false;\n hasSoftMask = false;\n addOp(fn, args) {\n if (!this.needsIsolation || !this.hasSoftMask) {\n if (fn === OPS.beginGroup) {\n this.needsIsolation ||= args[0].needsIsolation;\n this.hasSoftMask ||= args[0].hasSoftMask;\n } else if (fn === OPS.setGState) {\n for (const [key, val] of args[0]) {\n if (key === \"BM\" && val !== \"source-over\") {\n this.needsIsolation = true;\n } else if (key === \"SMask\" && val !== false) {\n this.needsIsolation = true;\n this.hasSoftMask = true;\n }\n }\n }\n }\n super.addOp(fn, args);\n }\n}\n\n;// ./src/core/pattern.js\n\n\n\n\n\nconst ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7\n};\nconst MAX_SAMPLED_COLOR_COMPONENTS = 1 << 16;\nfunction getColorConversionBatchSize(count, numComps) {\n return MathClamp(Math.floor(MAX_SAMPLED_COLOR_COMPONENTS / numComps), 1, count);\n}\nclass Pattern {\n static #hasGPU = false;\n constructor() {\n unreachable(\"Cannot initialize Pattern.\");\n }\n static setOptions({\n hasGPU\n }) {\n this.#hasGPU = hasGPU;\n }\n static parseShading(shading, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n const dict = shading instanceof BaseStream ? shading.dict : shading;\n const type = dict.get(\"ShadingType\");\n try {\n switch (type) {\n case ShadingType.FUNCTION_BASED:\n return new FunctionBasedShading(dict, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache);\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache);\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new MeshShading(shading, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache);\n default:\n throw new FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(ex);\n return new DummyShading();\n }\n }\n}\nclass BaseShading {\n static SMALL_NUMBER = 1e-6;\n getIR() {\n unreachable(\"Abstract method `getIR` called.\");\n }\n}\nclass RadialAxialShading extends BaseShading {\n constructor(dict, xref, resources, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n super();\n this.shadingType = dict.get(\"ShadingType\");\n let coordsLen = 0;\n if (this.shadingType === ShadingType.AXIAL) {\n coordsLen = 4;\n } else if (this.shadingType === ShadingType.RADIAL) {\n coordsLen = 6;\n }\n this.coordsArr = dict.getArray(\"Coords\");\n if (!isNumberArray(this.coordsArr, coordsLen)) {\n throw new FormatError(\"RadialAxialShading: Invalid /Coords array.\");\n }\n const cs = ColorSpaceUtils.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n let t0 = 0.0,\n t1 = 1.0;\n const domainArr = dict.getArray(\"Domain\");\n if (isNumberArray(domainArr, 2)) {\n [t0, t1] = domainArr;\n }\n let extendStart = false,\n extendEnd = false;\n const extendArr = dict.getArray(\"Extend\");\n if (isBooleanArray(extendArr, 2)) {\n [extendStart, extendEnd] = extendArr;\n }\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n const fnObj = dict.getRaw(\"Function\");\n const fn = pdfFunctionFactory.create(fnObj, true);\n const NUMBER_OF_SAMPLES = 840;\n const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n const colorStops = this.colorStops = [];\n if (t0 >= t1 || step <= 0) {\n info(\"Bad shading domain.\");\n return;\n }\n const {\n numComps\n } = cs;\n const ratio = new Float32Array(1);\n const batchSize = getColorConversionBatchSize(NUMBER_OF_SAMPLES, numComps);\n const comps = new Float32Array(batchSize * numComps);\n const rgb = new Uint8ClampedArray(NUMBER_OF_SAMPLES * 3);\n for (let start = 0; start < NUMBER_OF_SAMPLES; start += batchSize) {\n const count = Math.min(batchSize, NUMBER_OF_SAMPLES - start);\n for (let i = 0, offset = 0; i < count; i++, offset += numComps) {\n ratio[0] = t0 + (start + i) * step;\n fn(ratio, 0, comps, offset);\n }\n cs.getRgbItems(comps, count, rgb, start * 3, 0);\n }\n let iBase = 0;\n let rBase = rgb[0],\n gBase = rgb[1],\n bBase = rgb[2];\n colorStops.push([0, Util.makeHexColor(rBase, gBase, bBase)]);\n let iPrev = 1;\n let rPrev = rgb[3],\n gPrev = rgb[4],\n bPrev = rgb[5];\n let maxSlopeR = rPrev - rBase + 1;\n let maxSlopeG = gPrev - gBase + 1;\n let maxSlopeB = bPrev - bBase + 1;\n let minSlopeR = rPrev - rBase - 1;\n let minSlopeG = gPrev - gBase - 1;\n let minSlopeB = bPrev - bBase - 1;\n for (let i = 2; i < NUMBER_OF_SAMPLES; i++) {\n const rgbOffset = i * 3;\n const r = rgb[rgbOffset],\n g = rgb[rgbOffset + 1],\n b = rgb[rgbOffset + 2];\n const run = i - iBase;\n maxSlopeR = Math.min(maxSlopeR, (r - rBase + 1) / run);\n maxSlopeG = Math.min(maxSlopeG, (g - gBase + 1) / run);\n maxSlopeB = Math.min(maxSlopeB, (b - bBase + 1) / run);\n minSlopeR = Math.max(minSlopeR, (r - rBase - 1) / run);\n minSlopeG = Math.max(minSlopeG, (g - gBase - 1) / run);\n minSlopeB = Math.max(minSlopeB, (b - bBase - 1) / run);\n const slopesExist = minSlopeR <= maxSlopeR && minSlopeG <= maxSlopeG && minSlopeB <= maxSlopeB;\n if (!slopesExist) {\n const cssColor = Util.makeHexColor(rPrev, gPrev, bPrev);\n colorStops.push([iPrev / NUMBER_OF_SAMPLES, cssColor]);\n maxSlopeR = r - rPrev + 1;\n maxSlopeG = g - gPrev + 1;\n maxSlopeB = b - bPrev + 1;\n minSlopeR = r - rPrev - 1;\n minSlopeG = g - gPrev - 1;\n minSlopeB = b - bPrev - 1;\n iBase = iPrev;\n rBase = rPrev;\n gBase = gPrev;\n bBase = bPrev;\n }\n iPrev = i;\n rPrev = r;\n gPrev = g;\n bPrev = b;\n }\n colorStops.push([1, Util.makeHexColor(rPrev, gPrev, bPrev)]);\n const background = dict.has(\"Background\") ? cs.getRgbHex(dict.get(\"Background\"), 0) : \"transparent\";\n if (!extendStart) {\n colorStops.unshift([0, background]);\n colorStops[1][0] += BaseShading.SMALL_NUMBER;\n }\n if (!extendEnd) {\n colorStops.at(-1)[0] -= BaseShading.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n this.colorStops = colorStops;\n }\n getIR() {\n const {\n coordsArr,\n shadingType\n } = this;\n let type, p0, p1, r0, r1;\n if (shadingType === ShadingType.AXIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[2], coordsArr[3]];\n r0 = null;\n r1 = null;\n type = \"axial\";\n } else if (shadingType === ShadingType.RADIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[3], coordsArr[4]];\n r0 = coordsArr[2];\n r1 = coordsArr[5];\n type = \"radial\";\n } else {\n unreachable(`getPattern type unknown: ${shadingType}`);\n }\n return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n}\nfunction meshUpdateBounds(self) {\n let minX = self.coords[0][0],\n minY = self.coords[0][1],\n maxX = minX,\n maxY = minY;\n for (let i = 1, ii = self.coords.length; i < ii; i++) {\n const x = self.coords[i][0],\n y = self.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n self.bounds = [minX, minY, maxX, maxY];\n}\nfunction meshPackData(self) {\n let i, j, ii;\n const coords = self.coords;\n const coordsPacked = new Float32Array(coords.length * 2);\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n const xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n self.coords = coordsPacked;\n const colors = self.colors;\n const colorsPacked = new Uint8Array(colors.length * 4);\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n const c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n j++;\n }\n self.colors = colorsPacked;\n for (const figure of self.figures) {\n figure.coords = new Uint32Array(figure.coords);\n figure.colors = new Uint32Array(figure.colors);\n }\n}\nfunction buildMeshVertexData(coords, colors, figures) {\n let vertexCount = 0;\n for (const figure of figures) {\n if (figure.type === MeshFigureType.TRIANGLES) {\n vertexCount += figure.coords.length;\n } else if (figure.type === MeshFigureType.LATTICE) {\n const vpr = figure.verticesPerRow;\n vertexCount += (Math.floor(figure.coords.length / vpr) - 1) * (vpr - 1) * 6;\n }\n }\n const posData = new Float32Array(vertexCount * 2);\n const colData = new Uint8Array(vertexCount * 4);\n let pOff = 0,\n cOff = 0;\n const addVertex = (pi, ci) => {\n posData[pOff++] = coords[pi * 2];\n posData[pOff++] = coords[pi * 2 + 1];\n colData[cOff++] = colors[ci * 4];\n colData[cOff++] = colors[ci * 4 + 1];\n colData[cOff++] = colors[ci * 4 + 2];\n cOff++;\n };\n for (const figure of figures) {\n const ps = figure.coords;\n const cs = figure.colors;\n if (figure.type === MeshFigureType.TRIANGLES) {\n for (let i = 0, ii = ps.length; i < ii; i++) {\n addVertex(ps[i], cs[i]);\n }\n } else if (figure.type === MeshFigureType.LATTICE) {\n const vpr = figure.verticesPerRow;\n const rows = Math.floor(ps.length / vpr) - 1;\n const cols = vpr - 1;\n for (let i = 0; i < rows; i++) {\n let q = i * vpr;\n for (let j = 0; j < cols; j++, q++) {\n addVertex(ps[q], cs[q]);\n addVertex(ps[q + 1], cs[q + 1]);\n addVertex(ps[q + vpr], cs[q + vpr]);\n addVertex(ps[q + vpr + 1], cs[q + vpr + 1]);\n addVertex(ps[q + 1], cs[q + 1]);\n addVertex(ps[q + vpr], cs[q + vpr]);\n }\n }\n }\n }\n return {\n posData,\n colData,\n vertexCount\n };\n}\nclass FunctionBasedShading extends BaseShading {\n static MAX_STEP_COUNT = 512;\n constructor(dict, xref, resources, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n super();\n this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n const cs = ColorSpaceUtils.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n this.background = dict.has(\"Background\") ? cs.getRgb(dict.get(\"Background\"), 0) : null;\n const fnObj = dict.getRaw(\"Function\");\n if (!fnObj) {\n throw new FormatError(\"FunctionBasedShading: missing /Function\");\n }\n const fn = pdfFunctionFactory.create(fnObj, true);\n const [x0, x1, y0, y1] = lookupRect(dict.getArray(\"Domain\"), [0, 1, 0, 1]);\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n this.bounds = BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], matrix, this.bounds);\n const bboxW = this.bounds[2] - this.bounds[0];\n const bboxH = this.bounds[3] - this.bounds[1];\n const stepsX = MathClamp(Math.ceil(bboxW), 1, FunctionBasedShading.MAX_STEP_COUNT);\n const stepsY = MathClamp(Math.ceil(bboxH), 1, FunctionBasedShading.MAX_STEP_COUNT);\n const verticesPerRow = stepsX + 1;\n const totalVertices = (stepsY + 1) * verticesPerRow;\n const coords = this.coords = new Float32Array(totalVertices * 2);\n const colors = this.colors = new Uint8ClampedArray(totalVertices * 4);\n const {\n numComps\n } = cs;\n const xyBuf = new Float32Array(2);\n const batchSize = getColorConversionBatchSize(totalVertices, numComps);\n const comps = new Float32Array(batchSize * numComps);\n const rangeX = (x1 - x0) / stepsX;\n const rangeY = (y1 - y0) / stepsY;\n const halfStepX = rangeX / 2;\n const halfStepY = rangeY / 2;\n let coordOffset = 0;\n let compOffset = 0;\n let batchCount = 0;\n let colorOffset = 0;\n for (let row = 0; row <= stepsY; row++) {\n const yDomain = y0 + rangeY * row;\n xyBuf[1] = row === stepsY ? yDomain - halfStepY : yDomain;\n for (let col = 0; col <= stepsX; col++) {\n const xDomain = x0 + rangeX * col;\n xyBuf[0] = col === stepsX ? xDomain - halfStepX : xDomain;\n fn(xyBuf, 0, comps, compOffset);\n compOffset += numComps;\n batchCount++;\n coords[coordOffset] = xDomain;\n coords[coordOffset + 1] = yDomain;\n Util.applyTransform(coords, matrix, coordOffset);\n coordOffset += 2;\n if (batchCount === batchSize) {\n cs.getRgbItems(comps, batchCount, colors, colorOffset, 1);\n colorOffset += batchCount * 4;\n compOffset = batchCount = 0;\n }\n }\n }\n if (batchCount > 0) {\n cs.getRgbItems(comps, batchCount, colors, colorOffset, 1);\n }\n const ps = new Uint32Array(totalVertices);\n for (let i = 0; i < totalVertices; i++) {\n ps[i] = i;\n }\n this.figures = [{\n type: MeshFigureType.LATTICE,\n coords: ps,\n colors: new Uint32Array(ps),\n verticesPerRow\n }];\n }\n getIR() {\n const {\n posData,\n colData,\n vertexCount\n } = buildMeshVertexData(this.coords, this.colors, this.figures);\n return [\"Mesh\", ShadingType.FUNCTION_BASED, posData, colData, vertexCount, this.bounds, this.bbox, this.background];\n }\n}\nclass MeshStreamReader {\n constructor(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n const numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n const csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;\n }\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n if (this.bufferLength > 0) {\n return true;\n }\n const nextByte = this.stream.getByte();\n if (nextByte < 0) {\n return false;\n }\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n }\n readBits(n) {\n const {\n stream\n } = this;\n let {\n buffer,\n bufferLength\n } = this;\n if (n === 32) {\n if (bufferLength === 0) {\n return stream.getInt32() >>> 0;\n }\n buffer = buffer << 24 | stream.getByte() << 16 | stream.getByte() << 8 | stream.getByte();\n const nextByte = stream.getByte();\n this.buffer = nextByte & (1 << bufferLength) - 1;\n return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0;\n }\n if (n === 8 && bufferLength === 0) {\n return stream.getByte();\n }\n while (bufferLength < n) {\n buffer = buffer << 8 | stream.getByte();\n bufferLength += 8;\n }\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & (1 << bufferLength) - 1;\n return buffer >> bufferLength;\n }\n align() {\n this.buffer = 0;\n this.bufferLength = 0;\n }\n readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n }\n readCoordinate() {\n const {\n bitsPerCoordinate,\n decode\n } = this.context;\n const xi = this.readBits(bitsPerCoordinate);\n const yi = this.readBits(bitsPerCoordinate);\n const scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;\n return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];\n }\n readComponents() {\n const {\n bitsPerComponent,\n colorFn,\n colorSpace,\n decode,\n numComps\n } = this.context;\n const scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;\n const components = this.tmpCompsBuf;\n for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n const ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n const color = this.tmpCsCompsBuf;\n colorFn?.(components, 0, color, 0);\n return colorSpace.getRgb(color, 0);\n }\n}\nlet bCache = null;\nfunction getB(count) {\n return (bCache ??= new Map()).getOrInsertComputed(count, () => Array.from({\n length: count + 1\n }, (_, i) => {\n const t = i / count,\n t_ = 1 - t;\n return new Float32Array([t_ ** 3, 3 * t * t_ ** 2, 3 * t ** 2 * t_, t ** 3]);\n }));\n}\nfunction clearPatternCaches() {\n bCache?.clear();\n}\nclass MeshShading extends BaseShading {\n static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n static TRIANGLE_DENSITY = 20;\n constructor(stream, xref, resources, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n super();\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"Mesh data is not a stream\");\n }\n const dict = stream.dict;\n this.shadingType = dict.get(\"ShadingType\");\n this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n const cs = ColorSpaceUtils.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n this.background = dict.has(\"Background\") ? cs.getRgb(dict.get(\"Background\"), 0) : null;\n const fnObj = dict.getRaw(\"Function\");\n const fn = fnObj ? pdfFunctionFactory.create(fnObj, true) : null;\n this.coords = [];\n this.colors = [];\n this.figures = [];\n const decodeContext = {\n bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n bitsPerComponent: dict.get(\"BitsPerComponent\"),\n bitsPerFlag: dict.get(\"BitsPerFlag\"),\n decode: dict.getArray(\"Decode\"),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps\n };\n const reader = new MeshStreamReader(stream, decodeContext);\n let patchMesh = false;\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n this._decodeType4Shading(reader);\n break;\n case ShadingType.LATTICE_FORM_MESH:\n const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n if (verticesPerRow < 2) {\n throw new FormatError(\"Invalid VerticesPerRow\");\n }\n this._decodeType5Shading(reader, verticesPerRow);\n break;\n case ShadingType.COONS_PATCH_MESH:\n this._decodeType6Shading(reader);\n patchMesh = true;\n break;\n case ShadingType.TENSOR_PATCH_MESH:\n this._decodeType7Shading(reader);\n patchMesh = true;\n break;\n default:\n unreachable(\"Unsupported mesh type.\");\n break;\n }\n if (patchMesh) {\n this._updateBounds();\n for (let i = 0, ii = this.figures.length; i < ii; i++) {\n this._buildFigureFromPatch(i);\n }\n }\n this._updateBounds();\n this._packData();\n }\n _decodeType4Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const operators = [];\n const ps = [];\n let verticesLeft = 0;\n while (reader.hasData) {\n const f = reader.readFlag();\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n if (verticesLeft === 0) {\n if (!(0 <= f && f <= 2)) {\n throw new FormatError(\"Unknown type4 flag\");\n }\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n case 1:\n ps.push(ps.at(-2), ps.at(-1));\n verticesLeft = 1;\n break;\n case 2:\n ps.push(ps.at(-3), ps.at(-1));\n verticesLeft = 1;\n break;\n }\n operators.push(f);\n }\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n reader.align();\n }\n this.figures.push({\n type: MeshFigureType.TRIANGLES,\n coords: new Int32Array(ps),\n colors: new Int32Array(ps)\n });\n }\n _decodeType5Shading(reader, verticesPerRow) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = [];\n while (reader.hasData) {\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n this.figures.push({\n type: MeshFigureType.LATTICE,\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow\n });\n }\n _decodeType6Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16);\n const cs = new Int32Array(4);\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type6 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n case 0:\n ps[12] = pi + 3;\n ps[13] = pi + 4;\n ps[14] = pi + 5;\n ps[15] = pi + 6;\n ps[8] = pi + 2;\n ps[11] = pi + 7;\n ps[4] = pi + 1;\n ps[7] = pi + 8;\n ps[0] = pi;\n ps[1] = pi + 11;\n ps[2] = pi + 10;\n ps[3] = pi + 9;\n cs[2] = ci + 1;\n cs[3] = ci + 2;\n cs[0] = ci;\n cs[1] = ci + 3;\n break;\n case 1:\n tmp1 = ps[12];\n tmp2 = ps[13];\n tmp3 = ps[14];\n tmp4 = ps[15];\n ps[12] = tmp4;\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = tmp3;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[2];\n tmp2 = cs[3];\n cs[2] = tmp2;\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[7];\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1];\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 3:\n ps[12] = ps[0];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[1];\n ps[11] = pi + 3;\n ps[4] = ps[2];\n ps[7] = pi + 4;\n ps[0] = ps[3];\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n cs[2] = cs[0];\n cs[3] = ci;\n cs[0] = cs[1];\n cs[1] = ci + 1;\n break;\n }\n ps[5] = coords.length;\n coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);\n ps[6] = coords.length;\n coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]);\n ps[9] = coords.length;\n coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]);\n ps[10] = coords.length;\n coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);\n this.figures.push({\n type: MeshFigureType.PATCH,\n coords: new Int32Array(ps),\n colors: new Int32Array(cs)\n });\n }\n }\n _decodeType7Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16);\n const cs = new Int32Array(4);\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type7 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n case 0:\n ps[12] = pi + 3;\n ps[13] = pi + 4;\n ps[14] = pi + 5;\n ps[15] = pi + 6;\n ps[8] = pi + 2;\n ps[9] = pi + 13;\n ps[10] = pi + 14;\n ps[11] = pi + 7;\n ps[4] = pi + 1;\n ps[5] = pi + 12;\n ps[6] = pi + 15;\n ps[7] = pi + 8;\n ps[0] = pi;\n ps[1] = pi + 11;\n ps[2] = pi + 10;\n ps[3] = pi + 9;\n cs[2] = ci + 1;\n cs[3] = ci + 2;\n cs[0] = ci;\n cs[1] = ci + 3;\n break;\n case 1:\n tmp1 = ps[12];\n tmp2 = ps[13];\n tmp3 = ps[14];\n tmp4 = ps[15];\n ps[12] = tmp4;\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = tmp3;\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[2];\n tmp2 = cs[3];\n cs[2] = tmp2;\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[7];\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1];\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 3:\n ps[12] = ps[0];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[1];\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = ps[2];\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = ps[3];\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n cs[2] = cs[0];\n cs[3] = ci;\n cs[0] = cs[1];\n cs[1] = ci + 1;\n break;\n }\n this.figures.push({\n type: MeshFigureType.PATCH,\n coords: new Int32Array(ps),\n colors: new Int32Array(cs)\n });\n }\n }\n _buildFigureFromPatch(index) {\n const figure = this.figures[index];\n assert(figure.type === MeshFigureType.PATCH, \"Unexpected patch mesh figure\");\n const coords = this.coords,\n colors = this.colors;\n const pi = figure.coords;\n const ci = figure.colors;\n const figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n const figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n let splitXBy = Math.ceil((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0]));\n splitXBy = MathClamp(splitXBy, MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT);\n let splitYBy = Math.ceil((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1]));\n splitYBy = MathClamp(splitYBy, MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT);\n const verticesPerRow = splitXBy + 1;\n const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n let k = 0;\n const cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n const c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n const bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n for (let row = 0; row <= splitYBy; row++) {\n cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0;\n cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0;\n cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0;\n cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0;\n cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;\n cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;\n for (let col = 0; col <= splitXBy; col++, k++) {\n if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {\n continue;\n }\n let x = 0,\n y = 0;\n let q = 0;\n for (let i = 0; i <= 3; i++) {\n for (let j = 0; j <= 3; j++, q++) {\n const m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n const newColor = new Uint8Array(3);\n newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0;\n newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0;\n newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0;\n colors.push(newColor);\n }\n }\n figureCoords[0] = pi[0];\n figureColors[0] = ci[0];\n figureCoords[splitXBy] = pi[3];\n figureColors[splitXBy] = ci[1];\n figureCoords[verticesPerRow * splitYBy] = pi[12];\n figureColors[verticesPerRow * splitYBy] = ci[2];\n figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n this.figures[index] = {\n type: MeshFigureType.LATTICE,\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow\n };\n }\n _updateBounds() {\n meshUpdateBounds(this);\n }\n _packData() {\n meshPackData(this);\n }\n getIR() {\n const {\n posData,\n colData,\n vertexCount\n } = buildMeshVertexData(this.coords, this.colors, this.figures);\n return [\"Mesh\", this.shadingType, posData, colData, vertexCount, this.bounds, this.bbox, this.background];\n }\n}\nclass DummyShading extends BaseShading {\n getIR() {\n return [\"Dummy\"];\n }\n}\nfunction getTilingPatternIR(operatorList, dict, color, needsIsolation = true) {\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n const bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n if (!bbox || bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new FormatError(`Invalid getTilingPatternIR /BBox array.`);\n }\n const xstep = dict.get(\"XStep\");\n if (typeof xstep !== \"number\") {\n throw new FormatError(`Invalid getTilingPatternIR /XStep value.`);\n }\n const ystep = dict.get(\"YStep\");\n if (typeof ystep !== \"number\") {\n throw new FormatError(`Invalid getTilingPatternIR /YStep value.`);\n }\n const paintType = dict.get(\"PaintType\");\n if (!Number.isInteger(paintType)) {\n throw new FormatError(`Invalid getTilingPatternIR /PaintType value.`);\n }\n const tilingType = dict.get(\"TilingType\");\n if (!Number.isInteger(tilingType)) {\n throw new FormatError(`Invalid getTilingPatternIR /TilingType value.`);\n }\n return [\"TilingPattern\", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType, needsIsolation];\n}\n\n;// ./src/core/binary_cmap.js\n\n\nfunction hexToInt(a, size) {\n let n = 0;\n for (let i = 0; i <= size; i++) {\n n = n << 8 | a[i];\n }\n return n >>> 0;\n}\nfunction hexToStr(a, size) {\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n return String.fromCharCode(...a.subarray(0, size + 1));\n}\nfunction addHex(a, b, size) {\n let c = 0;\n for (let i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n}\nfunction incHex(a, size) {\n let c = 1;\n for (let i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n}\nconst MAX_NUM_SIZE = 16;\nconst MAX_ENCODED_NUM_SIZE = 19;\nclass BinaryCMapStream extends Stream {\n tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n constructor(data) {\n super(data, 0, data.length, null);\n }\n readNumber() {\n let n = 0;\n let last;\n do {\n const b = this.getByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n n = n << 7 | b & 0x7f;\n } while (!last);\n return n;\n }\n readSigned() {\n const n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n }\n readHex(num, size) {\n num.set(this.getBytes(size + 1));\n }\n readHexNumber(num, size) {\n let last;\n const stack = this.tmpBuf;\n let sp = 0;\n do {\n const b = this.getByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n stack[sp++] = b & 0x7f;\n } while (!last);\n let i = size,\n buffer = 0,\n bufferSize = 0;\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer |= stack[--sp] << bufferSize;\n bufferSize += 7;\n }\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n }\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n const sign = num[size] & 1 ? 255 : 0;\n let c = 0;\n for (let i = 0; i <= size; i++) {\n c = (c & 1) << 8 | num[i];\n num[i] = c >> 1 ^ sign;\n }\n }\n readString() {\n const len = this.readNumber(),\n buf = new Array(len);\n for (let i = 0; i < len; i++) {\n buf[i] = this.readNumber();\n }\n return String.fromCharCode(...buf);\n }\n}\nclass BinaryCMapReader {\n async process(data, cMap, extend) {\n const stream = new BinaryCMapStream(data);\n const header = stream.getByte();\n cMap.vertical = !!(header & 1);\n let useCMap = null;\n const start = new Uint8Array(MAX_NUM_SIZE);\n const end = new Uint8Array(MAX_NUM_SIZE);\n const char = new Uint8Array(MAX_NUM_SIZE);\n const charCode = new Uint8Array(MAX_NUM_SIZE);\n const tmp = new Uint8Array(MAX_NUM_SIZE);\n let code;\n let b;\n while ((b = stream.getByte()) >= 0) {\n const type = b >> 5;\n if (type === 7) {\n switch (b & 0x1f) {\n case 0:\n stream.readString();\n break;\n case 1:\n useCMap = stream.readString();\n break;\n }\n continue;\n }\n const sequence = !!(b & 0x10);\n const dataSize = b & 15;\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n }\n const ucs2DataSize = 1;\n const subitemsCount = stream.readNumber();\n switch (type) {\n case 0:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n }\n break;\n case 1:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber();\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber();\n }\n break;\n case 2:\n stream.readHex(char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(char, dataSize), code);\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, dataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(char, tmp, dataSize);\n }\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(char, dataSize), code);\n }\n break;\n case 3:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n }\n break;\n case 4:\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(char, tmp, ucs2DataSize);\n }\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n }\n break;\n case 5:\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n }\n break;\n default:\n throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n }\n }\n if (useCMap) {\n return extend(useCMap);\n }\n return cMap;\n }\n}\n\n;// ./src/core/ascii_85_stream.js\n\n\nclass Ascii85Stream extends DecodeStream {\n #input = new Uint8Array(5);\n constructor(str, maybeLength) {\n if (maybeLength) {\n maybeLength *= 0.8;\n }\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n }\n readBlock() {\n const TILDA_CHAR = 0x7e;\n const Z_LOWER_CHAR = 0x7a;\n const EOF = -1;\n const str = this.stream;\n let c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n const bufferLength = this.bufferLength;\n let buffer, i;\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n buffer.fill(0, bufferLength, bufferLength + 4);\n this.bufferLength += 4;\n } else {\n const input = this.#input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n input[i] = c;\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n if (i < 5) {\n input.fill(0x21 + 84, i, 5);\n this.eof = true;\n }\n let t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n }\n}\n\n;// ./src/core/ascii_hex_stream.js\n\nclass AsciiHexStream extends DecodeStream {\n constructor(str, maybeLength) {\n if (maybeLength) {\n maybeLength *= 0.5;\n }\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n this.firstDigit = -1;\n }\n readBlock() {\n const UPSTREAM_BLOCK_SIZE = 8000;\n const bytes = this.stream.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n const maxDecodeLength = bytes.length + 1 >> 1;\n const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n let bufferLength = this.bufferLength;\n let firstDigit = this.firstDigit;\n for (const ch of bytes) {\n let digit;\n if (ch >= 0x30 && ch <= 0x39) {\n digit = ch & 0x0f;\n } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === 0x3e) {\n this.eof = true;\n break;\n } else {\n continue;\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = firstDigit << 4 | digit;\n firstDigit = -1;\n }\n }\n if (firstDigit >= 0 && this.eof) {\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n }\n}\n\n;// ./external/brotli/decode.js\nlet Options;\nlet makeBrotliDecode = () => {\n const MAX_HUFFMAN_TABLE_SIZE = Int32Array.from([256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048, 1080]);\n const CODE_LENGTH_CODE_ORDER = Int32Array.from([1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15]);\n const DISTANCE_SHORT_CODE_INDEX_OFFSET = Int32Array.from([0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3]);\n const DISTANCE_SHORT_CODE_VALUE_OFFSET = Int32Array.from([0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3]);\n const FIXED_TABLE = Int32Array.from([0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040001, 0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040005]);\n const BLOCK_LENGTH_OFFSET = Int32Array.from([1, 5, 9, 13, 17, 25, 33, 41, 49, 65, 81, 97, 113, 145, 177, 209, 241, 305, 369, 497, 753, 1265, 2289, 4337, 8433, 16625]);\n const BLOCK_LENGTH_N_BITS = Int32Array.from([2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 24]);\n const INSERT_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, 0x0E, 0x18]);\n const COPY_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x18]);\n const CMD_LOOKUP = new Int16Array(2816);\n unpackCommandLookupTable(CMD_LOOKUP);\n function log2floor(i) {\n let result = -1;\n let step = 16;\n let v = i;\n while (step > 0) {\n let next = v >> step;\n if (next !== 0) {\n result += step;\n v = next;\n }\n step = step >> 1;\n }\n return result + v;\n }\n function calculateDistanceAlphabetSize(npostfix, ndirect, maxndistbits) {\n return 16 + ndirect + 2 * (maxndistbits << npostfix);\n }\n function calculateDistanceAlphabetLimit(s, maxDistance, npostfix, ndirect) {\n if (maxDistance < ndirect + (2 << npostfix)) {\n return makeError(s, -23);\n }\n const offset = (maxDistance - ndirect >> npostfix) + 4;\n const ndistbits = log2floor(offset) - 1;\n const group = ndistbits - 1 << 1 | offset >> ndistbits & 1;\n return (group - 1 << npostfix) + (1 << npostfix) + ndirect + 16;\n }\n function unpackCommandLookupTable(cmdLookup) {\n const insertLengthOffsets = new Int32Array(24);\n const copyLengthOffsets = new Int32Array(24);\n copyLengthOffsets[0] = 2;\n for (let i = 0; i < 23; ++i) {\n insertLengthOffsets[i + 1] = insertLengthOffsets[i] + (1 << INSERT_LENGTH_N_BITS[i]);\n copyLengthOffsets[i + 1] = copyLengthOffsets[i] + (1 << COPY_LENGTH_N_BITS[i]);\n }\n for (let cmdCode = 0; cmdCode < 704; ++cmdCode) {\n let rangeIdx = cmdCode >> 6;\n let distanceContextOffset = -4;\n if (rangeIdx >= 2) {\n rangeIdx -= 2;\n distanceContextOffset = 0;\n }\n const insertCode = (0x29850 >> rangeIdx * 2 & 0x3) << 3 | cmdCode >> 3 & 7;\n const copyCode = (0x26244 >> rangeIdx * 2 & 0x3) << 3 | cmdCode & 7;\n const copyLengthOffset = copyLengthOffsets[copyCode];\n const distanceContext = distanceContextOffset + Math.min(copyLengthOffset, 5) - 2;\n const index = cmdCode * 4;\n cmdLookup[index] = INSERT_LENGTH_N_BITS[insertCode] | COPY_LENGTH_N_BITS[copyCode] << 8;\n cmdLookup[index + 1] = insertLengthOffsets[insertCode];\n cmdLookup[index + 2] = copyLengthOffsets[copyCode];\n cmdLookup[index + 3] = distanceContext;\n }\n }\n function decodeWindowBits(s) {\n const largeWindowEnabled = s.isLargeWindow;\n s.isLargeWindow = 0;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n if (readFewBits(s, 1) === 0) {\n return 16;\n }\n let n = readFewBits(s, 3);\n if (n !== 0) {\n return 17 + n;\n }\n n = readFewBits(s, 3);\n if (n !== 0) {\n if (n === 1) {\n if (largeWindowEnabled === 0) {\n return -1;\n }\n s.isLargeWindow = 1;\n if (readFewBits(s, 1) === 1) {\n return -1;\n }\n n = readFewBits(s, 6);\n if (n < 10 || n > 30) {\n return -1;\n }\n return n;\n }\n return 8 + n;\n }\n return 17;\n }\n function attachDictionaryChunk(s, data) {\n if (s.runningState !== 1) {\n return makeError(s, -24);\n }\n if (s.cdNumChunks === 0) {\n s.cdChunks = new Array(16);\n s.cdChunkOffsets = new Int32Array(16);\n s.cdBlockBits = -1;\n }\n if (s.cdNumChunks === 15) {\n return makeError(s, -27);\n }\n s.cdChunks[s.cdNumChunks] = data;\n s.cdNumChunks++;\n s.cdTotalSize += data.length;\n s.cdChunkOffsets[s.cdNumChunks] = s.cdTotalSize;\n return 0;\n }\n function initState(s) {\n if (s.runningState !== 0) {\n return makeError(s, -26);\n }\n s.blockTrees = new Int32Array(3091);\n s.blockTrees[0] = 7;\n s.distRbIdx = 3;\n let result = calculateDistanceAlphabetLimit(s, 0x7FFFFFFC, 3, 120);\n if (result < 0) {\n return result;\n }\n const maxDistanceAlphabetLimit = result;\n s.distExtraBits = new Int8Array(maxDistanceAlphabetLimit);\n s.distOffset = new Int32Array(maxDistanceAlphabetLimit);\n result = initBitReader(s);\n if (result < 0) {\n return result;\n }\n s.runningState = 1;\n return 0;\n }\n function close(s) {\n if (s.runningState === 0) {\n return makeError(s, -25);\n }\n if (s.runningState > 0) {\n s.runningState = 11;\n }\n return 0;\n }\n function decodeVarLenUnsignedByte(s) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n if (readFewBits(s, 1) !== 0) {\n const n = readFewBits(s, 3);\n if (n === 0) {\n return 1;\n }\n return readFewBits(s, n) + (1 << n);\n }\n return 0;\n }\n function decodeMetaBlockLength(s) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n s.inputEnd = readFewBits(s, 1);\n s.metaBlockLength = 0;\n s.isUncompressed = 0;\n s.isMetadata = 0;\n if (s.inputEnd !== 0 && readFewBits(s, 1) !== 0) {\n return 0;\n }\n const sizeNibbles = readFewBits(s, 2) + 4;\n if (sizeNibbles === 7) {\n s.isMetadata = 1;\n if (readFewBits(s, 1) !== 0) {\n return makeError(s, -6);\n }\n const sizeBytes = readFewBits(s, 2);\n if (sizeBytes === 0) {\n return 0;\n }\n for (let i = 0; i < sizeBytes; ++i) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const bits = readFewBits(s, 8);\n if (bits === 0 && i + 1 === sizeBytes && sizeBytes > 1) {\n return makeError(s, -8);\n }\n s.metaBlockLength += bits << i * 8;\n }\n } else {\n for (let i = 0; i < sizeNibbles; ++i) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const bits = readFewBits(s, 4);\n if (bits === 0 && i + 1 === sizeNibbles && sizeNibbles > 4) {\n return makeError(s, -8);\n }\n s.metaBlockLength += bits << i * 4;\n }\n }\n s.metaBlockLength++;\n if (s.inputEnd === 0) {\n s.isUncompressed = readFewBits(s, 1);\n }\n return 0;\n }\n function readSymbol(tableGroup, tableIdx, s) {\n let offset = tableGroup[tableIdx];\n const v = s.accumulator32 >>> s.bitOffset;\n offset += v & 0xFF;\n const bits = tableGroup[offset] >> 16;\n const sym = tableGroup[offset] & 0xFFFF;\n if (bits <= 8) {\n s.bitOffset += bits;\n return sym;\n }\n offset += sym;\n const mask = (1 << bits) - 1;\n offset += (v & mask) >>> 8;\n s.bitOffset += (tableGroup[offset] >> 16) + 8;\n return tableGroup[offset] & 0xFFFF;\n }\n function readBlockLength(tableGroup, tableIdx, s) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const code = readSymbol(tableGroup, tableIdx, s);\n const n = BLOCK_LENGTH_N_BITS[code];\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n return BLOCK_LENGTH_OFFSET[code] + (n <= 16 ? readFewBits(s, n) : readManyBits(s, n));\n }\n function moveToFront(v, index) {\n let i = index;\n const value = v[i];\n while (i > 0) {\n v[i] = v[i - 1];\n i--;\n }\n v[0] = value;\n }\n function inverseMoveToFrontTransform(v, vLen) {\n const mtf = new Int32Array(256);\n for (let i = 0; i < 256; ++i) {\n mtf[i] = i;\n }\n for (let i = 0; i < vLen; ++i) {\n const index = v[i] & 0xFF;\n v[i] = mtf[index];\n if (index !== 0) {\n moveToFront(mtf, index);\n }\n }\n }\n function readHuffmanCodeLengths(codeLengthCodeLengths, numSymbols, codeLengths, s) {\n let symbol = 0;\n let prevCodeLen = 8;\n let repeat = 0;\n let repeatCodeLen = 0;\n let space = 32768;\n const table = new Int32Array(33);\n const tableIdx = table.length - 1;\n buildHuffmanTable(table, tableIdx, 5, codeLengthCodeLengths, 18);\n while (symbol < numSymbols && space > 0) {\n if (s.halfOffset > 2030) {\n const result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const p = s.accumulator32 >>> s.bitOffset & 31;\n s.bitOffset += table[p] >> 16;\n const codeLen = table[p] & 0xFFFF;\n if (codeLen < 16) {\n repeat = 0;\n codeLengths[symbol++] = codeLen;\n if (codeLen !== 0) {\n prevCodeLen = codeLen;\n space -= 32768 >> codeLen;\n }\n } else {\n const extraBits = codeLen - 14;\n let newLen = 0;\n if (codeLen === 16) {\n newLen = prevCodeLen;\n }\n if (repeatCodeLen !== newLen) {\n repeat = 0;\n repeatCodeLen = newLen;\n }\n const oldRepeat = repeat;\n if (repeat > 0) {\n repeat -= 2;\n repeat = repeat << extraBits;\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n repeat += readFewBits(s, extraBits) + 3;\n const repeatDelta = repeat - oldRepeat;\n if (symbol + repeatDelta > numSymbols) {\n return makeError(s, -2);\n }\n for (let i = 0; i < repeatDelta; ++i) {\n codeLengths[symbol++] = repeatCodeLen;\n }\n if (repeatCodeLen !== 0) {\n space -= repeatDelta << 15 - repeatCodeLen;\n }\n }\n }\n if (space !== 0) {\n return makeError(s, -18);\n }\n codeLengths.fill(0, symbol, numSymbols);\n return 0;\n }\n function checkDupes(s, symbols, length) {\n for (let i = 0; i < length - 1; ++i) {\n for (let j = i + 1; j < length; ++j) {\n if (symbols[i] === symbols[j]) {\n return makeError(s, -7);\n }\n }\n }\n return 0;\n }\n function readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) {\n const codeLengths = new Int32Array(alphabetSizeLimit);\n const symbols = new Int32Array(4);\n const maxBits = 1 + log2floor(alphabetSizeMax - 1);\n const numSymbols = readFewBits(s, 2) + 1;\n for (let i = 0; i < numSymbols; ++i) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const symbol = readFewBits(s, maxBits);\n if (symbol >= alphabetSizeLimit) {\n return makeError(s, -15);\n }\n symbols[i] = symbol;\n }\n const result = checkDupes(s, symbols, numSymbols);\n if (result < 0) {\n return result;\n }\n let histogramId = numSymbols;\n if (numSymbols === 4) {\n histogramId += readFewBits(s, 1);\n }\n switch (histogramId) {\n case 1:\n codeLengths[symbols[0]] = 1;\n break;\n case 2:\n codeLengths[symbols[0]] = 1;\n codeLengths[symbols[1]] = 1;\n break;\n case 3:\n codeLengths[symbols[0]] = 1;\n codeLengths[symbols[1]] = 2;\n codeLengths[symbols[2]] = 2;\n break;\n case 4:\n codeLengths[symbols[0]] = 2;\n codeLengths[symbols[1]] = 2;\n codeLengths[symbols[2]] = 2;\n codeLengths[symbols[3]] = 2;\n break;\n case 5:\n codeLengths[symbols[0]] = 1;\n codeLengths[symbols[1]] = 2;\n codeLengths[symbols[2]] = 3;\n codeLengths[symbols[3]] = 3;\n break;\n default:\n break;\n }\n return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit);\n }\n function readComplexHuffmanCode(alphabetSizeLimit, skip, tableGroup, tableIdx, s) {\n const codeLengths = new Int32Array(alphabetSizeLimit);\n const codeLengthCodeLengths = new Int32Array(18);\n let space = 32;\n let numCodes = 0;\n for (let i = skip; i < 18; ++i) {\n const codeLenIdx = CODE_LENGTH_CODE_ORDER[i];\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const p = s.accumulator32 >>> s.bitOffset & 15;\n s.bitOffset += FIXED_TABLE[p] >> 16;\n const v = FIXED_TABLE[p] & 0xFFFF;\n codeLengthCodeLengths[codeLenIdx] = v;\n if (v !== 0) {\n space -= 32 >> v;\n numCodes++;\n if (space <= 0) {\n break;\n }\n }\n }\n if (space !== 0 && numCodes !== 1) {\n return makeError(s, -4);\n }\n const result = readHuffmanCodeLengths(codeLengthCodeLengths, alphabetSizeLimit, codeLengths, s);\n if (result < 0) {\n return result;\n }\n return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit);\n }\n function readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) {\n if (s.halfOffset > 2030) {\n const result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const simpleCodeOrSkip = readFewBits(s, 2);\n if (simpleCodeOrSkip === 1) {\n return readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s);\n }\n return readComplexHuffmanCode(alphabetSizeLimit, simpleCodeOrSkip, tableGroup, tableIdx, s);\n }\n function decodeContextMap(contextMapSize, contextMap, s) {\n let result;\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n const numTrees = decodeVarLenUnsignedByte(s) + 1;\n if (numTrees === 1) {\n contextMap.fill(0, 0, contextMapSize);\n return numTrees;\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const useRleForZeros = readFewBits(s, 1);\n let maxRunLengthPrefix = 0;\n if (useRleForZeros !== 0) {\n maxRunLengthPrefix = readFewBits(s, 4) + 1;\n }\n const alphabetSize = numTrees + maxRunLengthPrefix;\n const tableSize = MAX_HUFFMAN_TABLE_SIZE[alphabetSize + 31 >> 5];\n const table = new Int32Array(tableSize + 1);\n const tableIdx = table.length - 1;\n result = readHuffmanCode(alphabetSize, alphabetSize, table, tableIdx, s);\n if (result < 0) {\n return result;\n }\n let i = 0;\n while (i < contextMapSize) {\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const code = readSymbol(table, tableIdx, s);\n if (code === 0) {\n contextMap[i] = 0;\n i++;\n } else if (code <= maxRunLengthPrefix) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n let reps = (1 << code) + readFewBits(s, code);\n while (reps !== 0) {\n if (i >= contextMapSize) {\n return makeError(s, -3);\n }\n contextMap[i] = 0;\n i++;\n reps--;\n }\n } else {\n contextMap[i] = code - maxRunLengthPrefix;\n i++;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n if (readFewBits(s, 1) === 1) {\n inverseMoveToFrontTransform(contextMap, contextMapSize);\n }\n return numTrees;\n }\n function decodeBlockTypeAndLength(s, treeType, numBlockTypes) {\n const ringBuffers = s.rings;\n const offset = 4 + treeType * 2;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n let blockType = readSymbol(s.blockTrees, 2 * treeType, s);\n const result = readBlockLength(s.blockTrees, 2 * treeType + 1, s);\n if (blockType === 1) {\n blockType = ringBuffers[offset + 1] + 1;\n } else if (blockType === 0) {\n blockType = ringBuffers[offset];\n } else {\n blockType -= 2;\n }\n if (blockType >= numBlockTypes) {\n blockType -= numBlockTypes;\n }\n ringBuffers[offset] = ringBuffers[offset + 1];\n ringBuffers[offset + 1] = blockType;\n return result;\n }\n function decodeLiteralBlockSwitch(s) {\n s.literalBlockLength = decodeBlockTypeAndLength(s, 0, s.numLiteralBlockTypes);\n const literalBlockType = s.rings[5];\n s.contextMapSlice = literalBlockType << 6;\n s.literalTreeIdx = s.contextMap[s.contextMapSlice] & 0xFF;\n const contextMode = s.contextModes[literalBlockType];\n s.contextLookupOffset1 = contextMode << 9;\n s.contextLookupOffset2 = s.contextLookupOffset1 + 256;\n }\n function decodeCommandBlockSwitch(s) {\n s.commandBlockLength = decodeBlockTypeAndLength(s, 1, s.numCommandBlockTypes);\n s.commandTreeIdx = s.rings[7];\n }\n function decodeDistanceBlockSwitch(s) {\n s.distanceBlockLength = decodeBlockTypeAndLength(s, 2, s.numDistanceBlockTypes);\n s.distContextMapSlice = s.rings[9] << 2;\n }\n function maybeReallocateRingBuffer(s) {\n let newSize = s.maxRingBufferSize;\n if (newSize > s.expectedTotalSize) {\n const minimalNewSize = s.expectedTotalSize;\n while (newSize >> 1 > minimalNewSize) {\n newSize = newSize >> 1;\n }\n if (s.inputEnd === 0 && newSize < 16384 && s.maxRingBufferSize >= 16384) {\n newSize = 16384;\n }\n }\n if (newSize <= s.ringBufferSize) {\n return;\n }\n const ringBufferSizeWithSlack = newSize + 37;\n const newBuffer = new Int8Array(ringBufferSizeWithSlack);\n const oldBuffer = s.ringBuffer;\n if (oldBuffer.length !== 0) {\n newBuffer.set(oldBuffer.subarray(0, s.ringBufferSize), 0);\n }\n s.ringBuffer = newBuffer;\n s.ringBufferSize = newSize;\n }\n function readNextMetablockHeader(s) {\n if (s.inputEnd !== 0) {\n s.nextRunningState = 10;\n s.runningState = 12;\n return 0;\n }\n s.literalTreeGroup = new Int32Array(0);\n s.commandTreeGroup = new Int32Array(0);\n s.distanceTreeGroup = new Int32Array(0);\n let result;\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n result = decodeMetaBlockLength(s);\n if (result < 0) {\n return result;\n }\n if (s.metaBlockLength === 0 && s.isMetadata === 0) {\n return 0;\n }\n if (s.isUncompressed !== 0 || s.isMetadata !== 0) {\n result = jumpToByteBoundary(s);\n if (result < 0) {\n return result;\n }\n if (s.isMetadata === 0) {\n s.runningState = 6;\n } else {\n s.runningState = 5;\n }\n } else {\n s.runningState = 3;\n }\n if (s.isMetadata !== 0) {\n return 0;\n }\n s.expectedTotalSize += s.metaBlockLength;\n if (s.expectedTotalSize > 1 << 30) {\n s.expectedTotalSize = 1 << 30;\n }\n if (s.ringBufferSize < s.maxRingBufferSize) {\n maybeReallocateRingBuffer(s);\n }\n return 0;\n }\n function readMetablockPartition(s, treeType, numBlockTypes) {\n let offset = s.blockTrees[2 * treeType];\n if (numBlockTypes <= 1) {\n s.blockTrees[2 * treeType + 1] = offset;\n s.blockTrees[2 * treeType + 2] = offset;\n return 1 << 28;\n }\n const blockTypeAlphabetSize = numBlockTypes + 2;\n let result = readHuffmanCode(blockTypeAlphabetSize, blockTypeAlphabetSize, s.blockTrees, 2 * treeType, s);\n if (result < 0) {\n return result;\n }\n offset += result;\n s.blockTrees[2 * treeType + 1] = offset;\n const blockLengthAlphabetSize = 26;\n result = readHuffmanCode(blockLengthAlphabetSize, blockLengthAlphabetSize, s.blockTrees, 2 * treeType + 1, s);\n if (result < 0) {\n return result;\n }\n offset += result;\n s.blockTrees[2 * treeType + 2] = offset;\n return readBlockLength(s.blockTrees, 2 * treeType + 1, s);\n }\n function calculateDistanceLut(s, alphabetSizeLimit) {\n const distExtraBits = s.distExtraBits;\n const distOffset = s.distOffset;\n const npostfix = s.distancePostfixBits;\n const ndirect = s.numDirectDistanceCodes;\n const postfix = 1 << npostfix;\n let bits = 1;\n let half = 0;\n let i = 16;\n for (let j = 0; j < ndirect; ++j) {\n distExtraBits[i] = 0;\n distOffset[i] = j + 1;\n ++i;\n }\n while (i < alphabetSizeLimit) {\n const base = ndirect + ((2 + half << bits) - 4 << npostfix) + 1;\n for (let j = 0; j < postfix; ++j) {\n distExtraBits[i] = bits;\n distOffset[i] = base + j;\n ++i;\n }\n bits = bits + half;\n half = half ^ 1;\n }\n }\n function readMetablockHuffmanCodesAndContextMaps(s) {\n s.numLiteralBlockTypes = decodeVarLenUnsignedByte(s) + 1;\n let result = readMetablockPartition(s, 0, s.numLiteralBlockTypes);\n if (result < 0) {\n return result;\n }\n s.literalBlockLength = result;\n s.numCommandBlockTypes = decodeVarLenUnsignedByte(s) + 1;\n result = readMetablockPartition(s, 1, s.numCommandBlockTypes);\n if (result < 0) {\n return result;\n }\n s.commandBlockLength = result;\n s.numDistanceBlockTypes = decodeVarLenUnsignedByte(s) + 1;\n result = readMetablockPartition(s, 2, s.numDistanceBlockTypes);\n if (result < 0) {\n return result;\n }\n s.distanceBlockLength = result;\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n s.distancePostfixBits = readFewBits(s, 2);\n s.numDirectDistanceCodes = readFewBits(s, 4) << s.distancePostfixBits;\n s.contextModes = new Int8Array(s.numLiteralBlockTypes);\n let i = 0;\n while (i < s.numLiteralBlockTypes) {\n const limit = Math.min(i + 96, s.numLiteralBlockTypes);\n while (i < limit) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n s.contextModes[i] = readFewBits(s, 2);\n i++;\n }\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n }\n const contextMapLength = s.numLiteralBlockTypes << 6;\n s.contextMap = new Int8Array(contextMapLength);\n result = decodeContextMap(contextMapLength, s.contextMap, s);\n if (result < 0) {\n return result;\n }\n const numLiteralTrees = result;\n s.trivialLiteralContext = 1;\n for (let j = 0; j < contextMapLength; ++j) {\n if (s.contextMap[j] !== j >> 6) {\n s.trivialLiteralContext = 0;\n break;\n }\n }\n s.distContextMap = new Int8Array(s.numDistanceBlockTypes << 2);\n result = decodeContextMap(s.numDistanceBlockTypes << 2, s.distContextMap, s);\n if (result < 0) {\n return result;\n }\n const numDistTrees = result;\n s.literalTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(256, numLiteralTrees));\n result = decodeHuffmanTreeGroup(256, 256, numLiteralTrees, s, s.literalTreeGroup);\n if (result < 0) {\n return result;\n }\n s.commandTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(704, s.numCommandBlockTypes));\n result = decodeHuffmanTreeGroup(704, 704, s.numCommandBlockTypes, s, s.commandTreeGroup);\n if (result < 0) {\n return result;\n }\n let distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 24);\n let distanceAlphabetSizeLimit = distanceAlphabetSizeMax;\n if (s.isLargeWindow === 1) {\n distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 62);\n result = calculateDistanceAlphabetLimit(s, 0x7FFFFFFC, s.distancePostfixBits, s.numDirectDistanceCodes);\n if (result < 0) {\n return result;\n }\n distanceAlphabetSizeLimit = result;\n }\n s.distanceTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(distanceAlphabetSizeLimit, numDistTrees));\n result = decodeHuffmanTreeGroup(distanceAlphabetSizeMax, distanceAlphabetSizeLimit, numDistTrees, s, s.distanceTreeGroup);\n if (result < 0) {\n return result;\n }\n calculateDistanceLut(s, distanceAlphabetSizeLimit);\n s.contextMapSlice = 0;\n s.distContextMapSlice = 0;\n s.contextLookupOffset1 = s.contextModes[0] * 512;\n s.contextLookupOffset2 = s.contextLookupOffset1 + 256;\n s.literalTreeIdx = 0;\n s.commandTreeIdx = 0;\n s.rings[4] = 1;\n s.rings[5] = 0;\n s.rings[6] = 1;\n s.rings[7] = 0;\n s.rings[8] = 1;\n s.rings[9] = 0;\n return 0;\n }\n function copyUncompressedData(s) {\n const ringBuffer = s.ringBuffer;\n let result;\n if (s.metaBlockLength <= 0) {\n result = reload(s);\n if (result < 0) {\n return result;\n }\n s.runningState = 2;\n return 0;\n }\n const chunkLength = Math.min(s.ringBufferSize - s.pos, s.metaBlockLength);\n result = copyRawBytes(s, ringBuffer, s.pos, chunkLength);\n if (result < 0) {\n return result;\n }\n s.metaBlockLength -= chunkLength;\n s.pos += chunkLength;\n if (s.pos === s.ringBufferSize) {\n s.nextRunningState = 6;\n s.runningState = 12;\n return 0;\n }\n result = reload(s);\n if (result < 0) {\n return result;\n }\n s.runningState = 2;\n return 0;\n }\n function writeRingBuffer(s) {\n const toWrite = Math.min(s.outputLength - s.outputUsed, s.ringBufferBytesReady - s.ringBufferBytesWritten);\n if (toWrite !== 0) {\n s.output.set(s.ringBuffer.subarray(s.ringBufferBytesWritten, s.ringBufferBytesWritten + toWrite), s.outputOffset + s.outputUsed);\n s.outputUsed += toWrite;\n s.ringBufferBytesWritten += toWrite;\n }\n if (s.outputUsed < s.outputLength) {\n return 0;\n }\n return 2;\n }\n function huffmanTreeGroupAllocSize(alphabetSizeLimit, n) {\n const maxTableSize = MAX_HUFFMAN_TABLE_SIZE[alphabetSizeLimit + 31 >> 5];\n return n + n * maxTableSize;\n }\n function decodeHuffmanTreeGroup(alphabetSizeMax, alphabetSizeLimit, n, s, group) {\n let next = n;\n for (let i = 0; i < n; ++i) {\n group[i] = next;\n const result = readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, group, i, s);\n if (result < 0) {\n return result;\n }\n next += result;\n }\n return 0;\n }\n function calculateFence(s) {\n let result = s.ringBufferSize;\n if (s.isEager !== 0) {\n result = Math.min(result, s.ringBufferBytesWritten + s.outputLength - s.outputUsed);\n }\n return result;\n }\n function doUseDictionary(s, fence) {\n if (s.distance > 0x7FFFFFFC) {\n return makeError(s, -9);\n }\n const address = s.distance - s.maxDistance - 1 - s.cdTotalSize;\n if (address < 0) {\n const result = initializeCompoundDictionaryCopy(s, -address - 1, s.copyLength);\n if (result < 0) {\n return result;\n }\n s.runningState = 14;\n } else {\n const dictionaryData = data;\n const wordLength = s.copyLength;\n if (wordLength > 31) {\n return makeError(s, -9);\n }\n const shift = sizeBits[wordLength];\n if (shift === 0) {\n return makeError(s, -9);\n }\n let offset = offsets[wordLength];\n const mask = (1 << shift) - 1;\n const wordIdx = address & mask;\n const transformIdx = address >> shift;\n offset += wordIdx * wordLength;\n const transforms = RFC_TRANSFORMS;\n if (transformIdx >= transforms.numTransforms) {\n return makeError(s, -9);\n }\n const len = transformDictionaryWord(s.ringBuffer, s.pos, dictionaryData, offset, wordLength, transforms, transformIdx);\n s.pos += len;\n s.metaBlockLength -= len;\n if (s.pos >= fence) {\n s.nextRunningState = 4;\n s.runningState = 12;\n return 0;\n }\n s.runningState = 4;\n }\n return 0;\n }\n function initializeCompoundDictionary(s) {\n s.cdBlockMap = new Int8Array(256);\n let blockBits = 8;\n while (s.cdTotalSize - 1 >> blockBits !== 0) {\n blockBits++;\n }\n blockBits -= 8;\n s.cdBlockBits = blockBits;\n let cursor = 0;\n let index = 0;\n while (cursor < s.cdTotalSize) {\n while (s.cdChunkOffsets[index + 1] < cursor) {\n index++;\n }\n s.cdBlockMap[cursor >> blockBits] = index;\n cursor += 1 << blockBits;\n }\n }\n function initializeCompoundDictionaryCopy(s, address, length) {\n if (s.cdBlockBits === -1) {\n initializeCompoundDictionary(s);\n }\n let index = s.cdBlockMap[address >> s.cdBlockBits];\n while (address >= s.cdChunkOffsets[index + 1]) {\n index++;\n }\n if (s.cdTotalSize > address + length) {\n return makeError(s, -9);\n }\n s.distRbIdx = s.distRbIdx + 1 & 0x3;\n s.rings[s.distRbIdx] = s.distance;\n s.metaBlockLength -= length;\n s.cdBrIndex = index;\n s.cdBrOffset = address - s.cdChunkOffsets[index];\n s.cdBrLength = length;\n s.cdBrCopied = 0;\n return 0;\n }\n function copyFromCompoundDictionary(s, fence) {\n let pos = s.pos;\n const origPos = pos;\n while (s.cdBrLength !== s.cdBrCopied) {\n const space = fence - pos;\n const chunkLength = s.cdChunkOffsets[s.cdBrIndex + 1] - s.cdChunkOffsets[s.cdBrIndex];\n const remChunkLength = chunkLength - s.cdBrOffset;\n let length = s.cdBrLength - s.cdBrCopied;\n if (length > remChunkLength) {\n length = remChunkLength;\n }\n if (length > space) {\n length = space;\n }\n s.ringBuffer.set(s.cdChunks[s.cdBrIndex].subarray(s.cdBrOffset, s.cdBrOffset + length), pos);\n pos += length;\n s.cdBrOffset += length;\n s.cdBrCopied += length;\n if (length === remChunkLength) {\n s.cdBrIndex++;\n s.cdBrOffset = 0;\n }\n if (pos >= fence) {\n break;\n }\n }\n return pos - origPos;\n }\n function decompress(s) {\n let result;\n if (s.runningState === 0) {\n return makeError(s, -25);\n }\n if (s.runningState < 0) {\n return makeError(s, -28);\n }\n if (s.runningState === 11) {\n return makeError(s, -22);\n }\n if (s.runningState === 1) {\n const windowBits = decodeWindowBits(s);\n if (windowBits === -1) {\n return makeError(s, -11);\n }\n s.maxRingBufferSize = 1 << windowBits;\n s.maxBackwardDistance = s.maxRingBufferSize - 16;\n s.runningState = 2;\n }\n let fence = calculateFence(s);\n let ringBufferMask = s.ringBufferSize - 1;\n let ringBuffer = s.ringBuffer;\n while (s.runningState !== 10) {\n switch (s.runningState) {\n case 2:\n if (s.metaBlockLength < 0) {\n return makeError(s, -10);\n }\n result = readNextMetablockHeader(s);\n if (result < 0) {\n return result;\n }\n fence = calculateFence(s);\n ringBufferMask = s.ringBufferSize - 1;\n ringBuffer = s.ringBuffer;\n continue;\n case 3:\n result = readMetablockHuffmanCodesAndContextMaps(s);\n if (result < 0) {\n return result;\n }\n s.runningState = 4;\n continue;\n case 4:\n if (s.metaBlockLength <= 0) {\n s.runningState = 2;\n continue;\n }\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.commandBlockLength === 0) {\n decodeCommandBlockSwitch(s);\n }\n s.commandBlockLength--;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const cmdCode = readSymbol(s.commandTreeGroup, s.commandTreeIdx, s) << 2;\n const insertAndCopyExtraBits = CMD_LOOKUP[cmdCode];\n const insertLengthOffset = CMD_LOOKUP[cmdCode + 1];\n const copyLengthOffset = CMD_LOOKUP[cmdCode + 2];\n s.distanceCode = CMD_LOOKUP[cmdCode + 3];\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const insertLengthExtraBits = insertAndCopyExtraBits & 0xFF;\n s.insertLength = insertLengthOffset + (insertLengthExtraBits <= 16 ? readFewBits(s, insertLengthExtraBits) : readManyBits(s, insertLengthExtraBits));\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const copyLengthExtraBits = insertAndCopyExtraBits >> 8;\n s.copyLength = copyLengthOffset + (copyLengthExtraBits <= 16 ? readFewBits(s, copyLengthExtraBits) : readManyBits(s, copyLengthExtraBits));\n s.j = 0;\n s.runningState = 7;\n continue;\n case 7:\n if (s.trivialLiteralContext !== 0) {\n while (s.j < s.insertLength) {\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.literalBlockLength === 0) {\n decodeLiteralBlockSwitch(s);\n }\n s.literalBlockLength--;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n ringBuffer[s.pos] = readSymbol(s.literalTreeGroup, s.literalTreeIdx, s);\n s.pos++;\n s.j++;\n if (s.pos >= fence) {\n s.nextRunningState = 7;\n s.runningState = 12;\n break;\n }\n }\n } else {\n let prevByte1 = ringBuffer[s.pos - 1 & ringBufferMask] & 0xFF;\n let prevByte2 = ringBuffer[s.pos - 2 & ringBufferMask] & 0xFF;\n while (s.j < s.insertLength) {\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.literalBlockLength === 0) {\n decodeLiteralBlockSwitch(s);\n }\n const literalContext = LOOKUP[s.contextLookupOffset1 + prevByte1] | LOOKUP[s.contextLookupOffset2 + prevByte2];\n const literalTreeIdx = s.contextMap[s.contextMapSlice + literalContext] & 0xFF;\n s.literalBlockLength--;\n prevByte2 = prevByte1;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n prevByte1 = readSymbol(s.literalTreeGroup, literalTreeIdx, s);\n ringBuffer[s.pos] = prevByte1;\n s.pos++;\n s.j++;\n if (s.pos >= fence) {\n s.nextRunningState = 7;\n s.runningState = 12;\n break;\n }\n }\n }\n if (s.runningState !== 7) {\n continue;\n }\n s.metaBlockLength -= s.insertLength;\n if (s.metaBlockLength <= 0) {\n s.runningState = 4;\n continue;\n }\n let distanceCode = s.distanceCode;\n if (distanceCode < 0) {\n s.distance = s.rings[s.distRbIdx];\n } else {\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.distanceBlockLength === 0) {\n decodeDistanceBlockSwitch(s);\n }\n s.distanceBlockLength--;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const distTreeIdx = s.distContextMap[s.distContextMapSlice + distanceCode] & 0xFF;\n distanceCode = readSymbol(s.distanceTreeGroup, distTreeIdx, s);\n if (distanceCode < 16) {\n const index = s.distRbIdx + DISTANCE_SHORT_CODE_INDEX_OFFSET[distanceCode] & 0x3;\n s.distance = s.rings[index] + DISTANCE_SHORT_CODE_VALUE_OFFSET[distanceCode];\n if (s.distance < 0) {\n return makeError(s, -12);\n }\n } else {\n const extraBits = s.distExtraBits[distanceCode];\n let bits;\n if (s.bitOffset + extraBits <= 32) {\n bits = readFewBits(s, extraBits);\n } else {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n bits = extraBits <= 16 ? readFewBits(s, extraBits) : readManyBits(s, extraBits);\n }\n s.distance = s.distOffset[distanceCode] + (bits << s.distancePostfixBits);\n }\n }\n if (s.maxDistance !== s.maxBackwardDistance && s.pos < s.maxBackwardDistance) {\n s.maxDistance = s.pos;\n } else {\n s.maxDistance = s.maxBackwardDistance;\n }\n if (s.distance > s.maxDistance) {\n s.runningState = 9;\n continue;\n }\n if (distanceCode > 0) {\n s.distRbIdx = s.distRbIdx + 1 & 0x3;\n s.rings[s.distRbIdx] = s.distance;\n }\n if (s.copyLength > s.metaBlockLength) {\n return makeError(s, -9);\n }\n s.j = 0;\n s.runningState = 8;\n continue;\n case 8:\n let src = s.pos - s.distance & ringBufferMask;\n let dst = s.pos;\n const copyLength = s.copyLength - s.j;\n const srcEnd = src + copyLength;\n const dstEnd = dst + copyLength;\n if (srcEnd < ringBufferMask && dstEnd < ringBufferMask) {\n if (copyLength < 12 || srcEnd > dst && dstEnd > src) {\n const numQuads = copyLength + 3 >> 2;\n for (let k = 0; k < numQuads; ++k) {\n ringBuffer[dst++] = ringBuffer[src++];\n ringBuffer[dst++] = ringBuffer[src++];\n ringBuffer[dst++] = ringBuffer[src++];\n ringBuffer[dst++] = ringBuffer[src++];\n }\n } else {\n ringBuffer.copyWithin(dst, src, srcEnd);\n }\n s.j += copyLength;\n s.metaBlockLength -= copyLength;\n s.pos += copyLength;\n } else {\n while (s.j < s.copyLength) {\n ringBuffer[s.pos] = ringBuffer[s.pos - s.distance & ringBufferMask];\n s.metaBlockLength--;\n s.pos++;\n s.j++;\n if (s.pos >= fence) {\n s.nextRunningState = 8;\n s.runningState = 12;\n break;\n }\n }\n }\n if (s.runningState === 8) {\n s.runningState = 4;\n }\n continue;\n case 9:\n result = doUseDictionary(s, fence);\n if (result < 0) {\n return result;\n }\n continue;\n case 14:\n s.pos += copyFromCompoundDictionary(s, fence);\n if (s.pos >= fence) {\n s.nextRunningState = 14;\n s.runningState = 12;\n return 2;\n }\n s.runningState = 4;\n continue;\n case 5:\n while (s.metaBlockLength > 0) {\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n readFewBits(s, 8);\n s.metaBlockLength--;\n }\n s.runningState = 2;\n continue;\n case 6:\n result = copyUncompressedData(s);\n if (result < 0) {\n return result;\n }\n continue;\n case 12:\n s.ringBufferBytesReady = Math.min(s.pos, s.ringBufferSize);\n s.runningState = 13;\n continue;\n case 13:\n result = writeRingBuffer(s);\n if (result !== 0) {\n return result;\n }\n if (s.pos >= s.maxBackwardDistance) {\n s.maxDistance = s.maxBackwardDistance;\n }\n if (s.pos >= s.ringBufferSize) {\n if (s.pos > s.ringBufferSize) {\n ringBuffer.copyWithin(0, s.ringBufferSize, s.pos);\n }\n s.pos = s.pos & ringBufferMask;\n s.ringBufferBytesWritten = 0;\n }\n s.runningState = s.nextRunningState;\n continue;\n default:\n return makeError(s, -28);\n }\n }\n if (s.runningState !== 10) {\n return makeError(s, -29);\n }\n if (s.metaBlockLength < 0) {\n return makeError(s, -10);\n }\n result = jumpToByteBoundary(s);\n if (result !== 0) {\n return result;\n }\n result = checkHealth(s, 1);\n if (result !== 0) {\n return result;\n }\n return 1;\n }\n function Transforms(numTransforms, prefixSuffixLen, prefixSuffixCount) {\n this.numTransforms = 0;\n this.triplets = new Int32Array(0);\n this.prefixSuffixStorage = new Int8Array(0);\n this.prefixSuffixHeads = new Int32Array(0);\n this.params = new Int16Array(0);\n this.numTransforms = numTransforms;\n this.triplets = new Int32Array(numTransforms * 3);\n this.params = new Int16Array(numTransforms);\n this.prefixSuffixStorage = new Int8Array(prefixSuffixLen);\n this.prefixSuffixHeads = new Int32Array(prefixSuffixCount + 1);\n }\n const RFC_TRANSFORMS = new Transforms(121, 167, 50);\n function unpackTransforms(prefixSuffix, prefixSuffixHeads, transforms, prefixSuffixSrc, transformsSrc) {\n const prefixSuffixBytes = toUtf8Runes(prefixSuffixSrc);\n const n = prefixSuffixBytes.length;\n let index = 1;\n let j = 0;\n for (let i = 0; i < n; ++i) {\n const c = prefixSuffixBytes[i];\n if (c === 35) {\n prefixSuffixHeads[index++] = j;\n } else {\n prefixSuffix[j++] = c;\n }\n }\n for (let i = 0; i < 363; ++i) {\n transforms[i] = transformsSrc.charCodeAt(i) - 32;\n }\n }\n unpackTransforms(RFC_TRANSFORMS.prefixSuffixStorage, RFC_TRANSFORMS.prefixSuffixHeads, RFC_TRANSFORMS.triplets, \"# #s #, #e #.# the #.com/#\\xC2\\xA0# of # and # in # to #\\\"#\\\">#\\n#]# for # a # that #. # with #'# from # by #. The # on # as # is #ing #\\n\\t#:#ed #(# at #ly #=\\\"# of the #. This #,# not #er #al #='#ful #ive #less #est #ize #ous #\", \" !! ! , *! &! \\\" ! ) * * - ! # ! #!*! + ,$ ! - % . / # 0 1 . \\\" 2 3!* 4% ! # / 5 6 7 8 0 1 & $ 9 + : ; < ' != > ?! 4 @ 4 2 & A *# ( B C& ) % ) !*# *-% A +! *. D! %' & E *6 F G% ! *A *% H! D I!+! J!+ K +- *4! A L!*4 M N +6 O!*% +.! K *G P +%( ! G *D +D Q +# *K!*G!+D!+# +G +A +4!+% +K!+4!*D!+K!*K\");\n function transformDictionaryWord(dst, dstOffset, src, srcOffset, wordLen, transforms, transformIndex) {\n let offset = dstOffset;\n const triplets = transforms.triplets;\n const prefixSuffixStorage = transforms.prefixSuffixStorage;\n const prefixSuffixHeads = transforms.prefixSuffixHeads;\n const transformOffset = 3 * transformIndex;\n const prefixIdx = triplets[transformOffset];\n const transformType = triplets[transformOffset + 1];\n const suffixIdx = triplets[transformOffset + 2];\n let prefix = prefixSuffixHeads[prefixIdx];\n const prefixEnd = prefixSuffixHeads[prefixIdx + 1];\n let suffix = prefixSuffixHeads[suffixIdx];\n const suffixEnd = prefixSuffixHeads[suffixIdx + 1];\n let omitFirst = transformType - 11;\n let omitLast = transformType;\n if (omitFirst < 1 || omitFirst > 9) {\n omitFirst = 0;\n }\n if (omitLast < 1 || omitLast > 9) {\n omitLast = 0;\n }\n while (prefix !== prefixEnd) {\n dst[offset++] = prefixSuffixStorage[prefix++];\n }\n let len = wordLen;\n if (omitFirst > len) {\n omitFirst = len;\n }\n let dictOffset = srcOffset + omitFirst;\n len -= omitFirst;\n len -= omitLast;\n let i = len;\n while (i > 0) {\n dst[offset++] = src[dictOffset++];\n i--;\n }\n if (transformType === 10 || transformType === 11) {\n let uppercaseOffset = offset - len;\n if (transformType === 10) {\n len = 1;\n }\n while (len > 0) {\n const c0 = dst[uppercaseOffset] & 0xFF;\n if (c0 < 0xC0) {\n if (c0 >= 97 && c0 <= 122) {\n dst[uppercaseOffset] = dst[uppercaseOffset] ^ 32;\n }\n uppercaseOffset += 1;\n len -= 1;\n } else if (c0 < 0xE0) {\n dst[uppercaseOffset + 1] = dst[uppercaseOffset + 1] ^ 32;\n uppercaseOffset += 2;\n len -= 2;\n } else {\n dst[uppercaseOffset + 2] = dst[uppercaseOffset + 2] ^ 5;\n uppercaseOffset += 3;\n len -= 3;\n }\n }\n } else if (transformType === 21 || transformType === 22) {\n let shiftOffset = offset - len;\n const param = transforms.params[transformIndex];\n let scalar = (param & 0x7FFF) + (0x1000000 - (param & 0x8000));\n while (len > 0) {\n let step = 1;\n const c0 = dst[shiftOffset] & 0xFF;\n if (c0 < 0x80) {\n scalar += c0;\n dst[shiftOffset] = scalar & 0x7F;\n } else if (c0 < 0xC0) {} else if (c0 < 0xE0) {\n if (len >= 2) {\n const c1 = dst[shiftOffset + 1];\n scalar += c1 & 0x3F | (c0 & 0x1F) << 6;\n dst[shiftOffset] = 0xC0 | scalar >> 6 & 0x1F;\n dst[shiftOffset + 1] = c1 & 0xC0 | scalar & 0x3F;\n step = 2;\n } else {\n step = len;\n }\n } else if (c0 < 0xF0) {\n if (len >= 3) {\n const c1 = dst[shiftOffset + 1];\n const c2 = dst[shiftOffset + 2];\n scalar += c2 & 0x3F | (c1 & 0x3F) << 6 | (c0 & 0x0F) << 12;\n dst[shiftOffset] = 0xE0 | scalar >> 12 & 0x0F;\n dst[shiftOffset + 1] = c1 & 0xC0 | scalar >> 6 & 0x3F;\n dst[shiftOffset + 2] = c2 & 0xC0 | scalar & 0x3F;\n step = 3;\n } else {\n step = len;\n }\n } else if (c0 < 0xF8) {\n if (len >= 4) {\n const c1 = dst[shiftOffset + 1];\n const c2 = dst[shiftOffset + 2];\n const c3 = dst[shiftOffset + 3];\n scalar += c3 & 0x3F | (c2 & 0x3F) << 6 | (c1 & 0x3F) << 12 | (c0 & 0x07) << 18;\n dst[shiftOffset] = 0xF0 | scalar >> 18 & 0x07;\n dst[shiftOffset + 1] = c1 & 0xC0 | scalar >> 12 & 0x3F;\n dst[shiftOffset + 2] = c2 & 0xC0 | scalar >> 6 & 0x3F;\n dst[shiftOffset + 3] = c3 & 0xC0 | scalar & 0x3F;\n step = 4;\n } else {\n step = len;\n }\n }\n shiftOffset += step;\n len -= step;\n if (transformType === 21) {\n len = 0;\n }\n }\n }\n while (suffix !== suffixEnd) {\n dst[offset++] = prefixSuffixStorage[suffix++];\n }\n return offset - dstOffset;\n }\n function getNextKey(key, len) {\n let step = 1 << len - 1;\n while ((key & step) !== 0) {\n step = step >> 1;\n }\n return (key & step - 1) + step;\n }\n function replicateValue(table, offset, step, end, item) {\n let pos = end;\n while (pos > 0) {\n pos -= step;\n table[offset + pos] = item;\n }\n }\n function nextTableBitSize(count, len, rootBits) {\n let bits = len;\n let left = 1 << bits - rootBits;\n while (bits < 15) {\n left -= count[bits];\n if (left <= 0) {\n break;\n }\n bits++;\n left = left << 1;\n }\n return bits - rootBits;\n }\n function buildHuffmanTable(tableGroup, tableIdx, rootBits, codeLengths, codeLengthsSize) {\n const tableOffset = tableGroup[tableIdx];\n const sorted = new Int32Array(codeLengthsSize);\n const count = new Int32Array(16);\n const offset = new Int32Array(16);\n for (let sym = 0; sym < codeLengthsSize; ++sym) {\n count[codeLengths[sym]]++;\n }\n offset[1] = 0;\n for (let len = 1; len < 15; ++len) {\n offset[len + 1] = offset[len] + count[len];\n }\n for (let sym = 0; sym < codeLengthsSize; ++sym) {\n if (codeLengths[sym] !== 0) {\n sorted[offset[codeLengths[sym]]++] = sym;\n }\n }\n let tableBits = rootBits;\n let tableSize = 1 << tableBits;\n let totalSize = tableSize;\n if (offset[15] === 1) {\n for (let k = 0; k < totalSize; ++k) {\n tableGroup[tableOffset + k] = sorted[0];\n }\n return totalSize;\n }\n let key = 0;\n let symbol = 0;\n let step = 1;\n for (let len = 1; len <= rootBits; ++len) {\n step = step << 1;\n while (count[len] > 0) {\n replicateValue(tableGroup, tableOffset + key, step, tableSize, len << 16 | sorted[symbol++]);\n key = getNextKey(key, len);\n count[len]--;\n }\n }\n const mask = totalSize - 1;\n let low = -1;\n let currentOffset = tableOffset;\n step = 1;\n for (let len = rootBits + 1; len <= 15; ++len) {\n step = step << 1;\n while (count[len] > 0) {\n if ((key & mask) !== low) {\n currentOffset += tableSize;\n tableBits = nextTableBitSize(count, len, rootBits);\n tableSize = 1 << tableBits;\n totalSize += tableSize;\n low = key & mask;\n tableGroup[tableOffset + low] = tableBits + rootBits << 16 | currentOffset - tableOffset - low;\n }\n replicateValue(tableGroup, currentOffset + (key >> rootBits), step, tableSize, len - rootBits << 16 | sorted[symbol++]);\n key = getNextKey(key, len);\n count[len]--;\n }\n }\n return totalSize;\n }\n function readMoreInput(s) {\n if (s.endOfStreamReached !== 0) {\n if (halfAvailable(s) >= -2) {\n return 0;\n }\n return makeError(s, -16);\n }\n const readOffset = s.halfOffset << 1;\n let bytesInBuffer = 4096 - readOffset;\n s.byteBuffer.copyWithin(0, readOffset, 4096);\n s.halfOffset = 0;\n while (bytesInBuffer < 4096) {\n const spaceLeft = 4096 - bytesInBuffer;\n const len = readInput(s, s.byteBuffer, bytesInBuffer, spaceLeft);\n if (len < -1) {\n return len;\n }\n if (len <= 0) {\n s.endOfStreamReached = 1;\n s.tailBytes = bytesInBuffer;\n bytesInBuffer += 1;\n break;\n }\n bytesInBuffer += len;\n }\n bytesToNibbles(s, bytesInBuffer);\n return 0;\n }\n function checkHealth(s, endOfStream) {\n if (s.endOfStreamReached === 0) {\n return 0;\n }\n const byteOffset = (s.halfOffset << 1) + (s.bitOffset + 7 >> 3) - 4;\n if (byteOffset > s.tailBytes) {\n return makeError(s, -13);\n }\n if (endOfStream !== 0 && byteOffset !== s.tailBytes) {\n return makeError(s, -17);\n }\n return 0;\n }\n function readFewBits(s, n) {\n const v = s.accumulator32 >>> s.bitOffset & (1 << n) - 1;\n s.bitOffset += n;\n return v;\n }\n function readManyBits(s, n) {\n const low = readFewBits(s, 16);\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n return low | readFewBits(s, n - 16) << 16;\n }\n function initBitReader(s) {\n s.byteBuffer = new Int8Array(4160);\n s.accumulator32 = 0;\n s.shortBuffer = new Int16Array(2080);\n s.bitOffset = 32;\n s.halfOffset = 2048;\n s.endOfStreamReached = 0;\n return prepare(s);\n }\n function prepare(s) {\n if (s.halfOffset > 2030) {\n const result = readMoreInput(s);\n if (result !== 0) {\n return result;\n }\n }\n let health = checkHealth(s, 0);\n if (health !== 0) {\n return health;\n }\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n return 0;\n }\n function reload(s) {\n if (s.bitOffset === 32) {\n return prepare(s);\n }\n return 0;\n }\n function jumpToByteBoundary(s) {\n const padding = 32 - s.bitOffset & 7;\n if (padding !== 0) {\n const paddingBits = readFewBits(s, padding);\n if (paddingBits !== 0) {\n return makeError(s, -5);\n }\n }\n return 0;\n }\n function halfAvailable(s) {\n let limit = 2048;\n if (s.endOfStreamReached !== 0) {\n limit = s.tailBytes + 1 >> 1;\n }\n return limit - s.halfOffset;\n }\n function copyRawBytes(s, data, offset, length) {\n let pos = offset;\n let len = length;\n if ((s.bitOffset & 7) !== 0) {\n return makeError(s, -30);\n }\n while (s.bitOffset !== 32 && len !== 0) {\n data[pos++] = s.accumulator32 >>> s.bitOffset;\n s.bitOffset += 8;\n len--;\n }\n if (len === 0) {\n return 0;\n }\n const copyNibbles = Math.min(halfAvailable(s), len >> 1);\n if (copyNibbles > 0) {\n const readOffset = s.halfOffset << 1;\n const delta = copyNibbles << 1;\n data.set(s.byteBuffer.subarray(readOffset, readOffset + delta), pos);\n pos += delta;\n len -= delta;\n s.halfOffset += copyNibbles;\n }\n if (len === 0) {\n return 0;\n }\n if (halfAvailable(s) > 0) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n while (len !== 0) {\n data[pos++] = s.accumulator32 >>> s.bitOffset;\n s.bitOffset += 8;\n len--;\n }\n return checkHealth(s, 0);\n }\n while (len > 0) {\n const chunkLen = readInput(s, data, pos, len);\n if (chunkLen < -1) {\n return chunkLen;\n }\n if (chunkLen <= 0) {\n return makeError(s, -16);\n }\n pos += chunkLen;\n len -= chunkLen;\n }\n return 0;\n }\n function bytesToNibbles(s, byteLen) {\n const byteBuffer = s.byteBuffer;\n const halfLen = byteLen >> 1;\n const shortBuffer = s.shortBuffer;\n for (let i = 0; i < halfLen; ++i) {\n shortBuffer[i] = byteBuffer[i * 2] & 0xFF | (byteBuffer[i * 2 + 1] & 0xFF) << 8;\n }\n }\n const LOOKUP = new Int32Array(2048);\n function unpackLookupTable(lookup, utfMap, utfRle) {\n for (let i = 0; i < 256; ++i) {\n lookup[i] = i & 0x3F;\n lookup[512 + i] = i >> 2;\n lookup[1792 + i] = 2 + (i >> 6);\n }\n for (let i = 0; i < 128; ++i) {\n lookup[1024 + i] = 4 * (utfMap.charCodeAt(i) - 32);\n }\n for (let i = 0; i < 64; ++i) {\n lookup[1152 + i] = i & 1;\n lookup[1216 + i] = 2 + (i & 1);\n }\n let offset = 1280;\n for (let k = 0; k < 19; ++k) {\n const value = k & 3;\n const rep = utfRle.charCodeAt(k) - 32;\n for (let i = 0; i < rep; ++i) {\n lookup[offset++] = value;\n }\n }\n for (let i = 0; i < 16; ++i) {\n lookup[1792 + i] = 1;\n lookup[2032 + i] = 6;\n }\n lookup[1792] = 0;\n lookup[2047] = 7;\n for (let i = 0; i < 256; ++i) {\n lookup[1536 + i] = lookup[1792 + i] << 3;\n }\n }\n unpackLookupTable(LOOKUP, \" !! ! \\\"#$##%#$&'##(#)#++++++++++((&*'##,---,---,-----,-----,-----&#'###.///.///./////./////./////&#'# \", \"A/* ': & : $ \\x81 @\");\n function State() {\n this.ringBuffer = new Int8Array(0);\n this.contextModes = new Int8Array(0);\n this.contextMap = new Int8Array(0);\n this.distContextMap = new Int8Array(0);\n this.distExtraBits = new Int8Array(0);\n this.output = new Int8Array(0);\n this.byteBuffer = new Int8Array(0);\n this.shortBuffer = new Int16Array(0);\n this.intBuffer = new Int32Array(0);\n this.rings = new Int32Array(0);\n this.blockTrees = new Int32Array(0);\n this.literalTreeGroup = new Int32Array(0);\n this.commandTreeGroup = new Int32Array(0);\n this.distanceTreeGroup = new Int32Array(0);\n this.distOffset = new Int32Array(0);\n this.accumulator64 = 0;\n this.runningState = 0;\n this.nextRunningState = 0;\n this.accumulator32 = 0;\n this.bitOffset = 0;\n this.halfOffset = 0;\n this.tailBytes = 0;\n this.endOfStreamReached = 0;\n this.metaBlockLength = 0;\n this.inputEnd = 0;\n this.isUncompressed = 0;\n this.isMetadata = 0;\n this.literalBlockLength = 0;\n this.numLiteralBlockTypes = 0;\n this.commandBlockLength = 0;\n this.numCommandBlockTypes = 0;\n this.distanceBlockLength = 0;\n this.numDistanceBlockTypes = 0;\n this.pos = 0;\n this.maxDistance = 0;\n this.distRbIdx = 0;\n this.trivialLiteralContext = 0;\n this.literalTreeIdx = 0;\n this.commandTreeIdx = 0;\n this.j = 0;\n this.insertLength = 0;\n this.contextMapSlice = 0;\n this.distContextMapSlice = 0;\n this.contextLookupOffset1 = 0;\n this.contextLookupOffset2 = 0;\n this.distanceCode = 0;\n this.numDirectDistanceCodes = 0;\n this.distancePostfixBits = 0;\n this.distance = 0;\n this.copyLength = 0;\n this.maxBackwardDistance = 0;\n this.maxRingBufferSize = 0;\n this.ringBufferSize = 0;\n this.expectedTotalSize = 0;\n this.outputOffset = 0;\n this.outputLength = 0;\n this.outputUsed = 0;\n this.ringBufferBytesWritten = 0;\n this.ringBufferBytesReady = 0;\n this.isEager = 0;\n this.isLargeWindow = 0;\n this.cdNumChunks = 0;\n this.cdTotalSize = 0;\n this.cdBrIndex = 0;\n this.cdBrOffset = 0;\n this.cdBrLength = 0;\n this.cdBrCopied = 0;\n this.cdChunks = new Array(0);\n this.cdChunkOffsets = new Int32Array(0);\n this.cdBlockBits = 0;\n this.cdBlockMap = new Int8Array(0);\n this.input = new InputStream(new Int8Array(0));\n this.ringBuffer = new Int8Array(0);\n this.rings = new Int32Array(10);\n this.rings[0] = 16;\n this.rings[1] = 15;\n this.rings[2] = 11;\n this.rings[3] = 4;\n }\n let data = new Int8Array(0);\n const offsets = new Int32Array(32);\n const sizeBits = new Int32Array(32);\n function setData(newData, newSizeBits) {\n const dictionaryOffsets = offsets;\n const dictionarySizeBits = sizeBits;\n for (let i = 0; i < newSizeBits.length; ++i) {\n dictionarySizeBits[i] = newSizeBits[i];\n }\n let pos = 0;\n for (let i = 0; i < newSizeBits.length; ++i) {\n dictionaryOffsets[i] = pos;\n const bits = dictionarySizeBits[i];\n if (bits !== 0) {\n pos += i << (bits & 31);\n }\n }\n for (let i = newSizeBits.length; i < 32; ++i) {\n dictionaryOffsets[i] = pos;\n }\n data = newData;\n }\n function unpackDictionaryData(dictionary, data0, data1, skipFlip, sizeBits, sizeBitsData) {\n const dict = toUsAsciiBytes(data0 + data1);\n const skipFlipRunes = toUtf8Runes(skipFlip);\n let offset = 0;\n const n = skipFlipRunes.length >> 1;\n for (let i = 0; i < n; ++i) {\n const skip = skipFlipRunes[2 * i] - 36;\n const flip = skipFlipRunes[2 * i + 1] - 36;\n for (let j = 0; j < skip; ++j) {\n dict[offset] = dict[offset] ^ 3;\n offset++;\n }\n for (let j = 0; j < flip; ++j) {\n dict[offset] = dict[offset] ^ 236;\n offset++;\n }\n }\n for (let i = 0; i < sizeBitsData.length; ++i) {\n sizeBits[i] = sizeBitsData.charCodeAt(i) - 65;\n }\n dictionary.set(dict);\n }\n const dictionaryData = new Int8Array(122784);\n const dictionarySizeBits = new Int32Array(25);\n unpackDictionaryData(dictionaryData, \"wjnfgltmojefofewab`h`lgfgbwbpkltlmozpjwf`jwzlsfmivpwojhfeqfftlqhwf{wzfbqlufqalgzolufelqnallhsobzojufojmfkfosklnfpjgfnlqftlqgolmdwkfnujftejmgsbdfgbzpevookfbgwfqnfb`kbqfbeqlnwqvfnbqhbaofvslmkjdkgbwfobmgmftpfufmmf{w`bpfalwkslpwvpfgnbgfkbmgkfqftkbwmbnfOjmhaoldpjyfabpfkfognbhfnbjmvpfq$*#(klogfmgptjwkMftpqfbgtfqfpjdmwbhfkbufdbnfpffm`boosbwktfoosovpnfmvejonsbqwiljmwkjpojpwdllgmffgtbzptfpwilapnjmgboploldlqj`kvpfpobpwwfbnbqnzellghjmdtjoofbpwtbqgafpwejqfSbdfhmltbtbz-smdnlufwkbmolbgdjufpfoemlwfnv`keffgnbmzql`hj`lmlm`follhkjgfgjfgKlnfqvofklpwbib{jmel`ovaobtpofppkboeplnfpv`kylmf233&lmfp`bqfWjnfqb`faovfelvqtffheb`fklsfdbufkbqgolpwtkfmsbqhhfswsbpppkjsqllnKWNOsobmWzsfglmfpbufhffseobdojmhplogejufwllhqbwfwltmivnswkvpgbqh`bqgejofefbqpwbzhjoowkbweboobvwlfufq-`lnwbohpklsulwfgffsnlgfqfpwwvqmalqmabmgefooqlpfvqo+phjmqlof`lnfb`wpbdfpnffwdlog-isdjwfnubqzefowwkfmpfmggqlsUjft`lsz2-3!?,b=pwlsfopfojfpwlvqsb`h-djesbpw`pp!pfwp6s{8-ip<73s{je#+pllmpfbwmlmfwvafyfqlpfmwqffgeb`wjmwldjewkbqn2;s{`bnfkjooalogyllnuljgfbpzqjmdejoosfbhjmjw`lpw0s{8ib`hwbdpajwpqloofgjwhmftmfbq?\\\"..dqltIPLMgvwzMbnfpbofzlv#olwpsbjmibyy`logfzfpejpkttt-qjphwbapsqfu23s{qjpf16s{Aovfgjmd033/abooelqgfbqmtjogal{-ebjqob`hufqpsbjqivmfwf`kje+\\\"sj`hfujo'+! tbqnolqgglfpsvoo/333jgfbgqbtkvdfpslwevmgavqmkqfe`foohfzpwj`hklvqolppevfo21s{pvjwgfboQPP!bdfgdqfzDFW!fbpfbjnpdjqobjgp;s{8mbuzdqjgwjsp :::tbqpobgz`bqp*8#~sksolpfmvooubpwtjmgQPP#tfbqqfozaffmpbnfgvhfmbpb`bsftjpkdvoeW109kjwppolwdbwfhj`haovqwkfz26s{$$*8*8!=npjftjmpajqgplqwafwbpffhW2;9lqgpwqffnboo53s{ebqn\\x0ElupalzpX3^-$*8!SLPWafbqhjgp*8~~nbqzwfmg+VH*rvbgyk9\\n.pjy....sqls$*8\\x0EojewW2:9uj`fbmgzgfaw=QPPsllomf`haoltW259gllqfuboW249ofwpebjolqbosloomlub`lopdfmf#\\x0Elxplewqlnfwjooqlpp?k0=slvqebgfsjmh?wq=njmj*\\x7F\\\"+njmfyk9\\x04abqpkfbq33*8njoh#..=jqlmeqfggjphtfmwpljosvwp,ip,klozW119JPAMW139bgbnpffp?k1=iplm$/#$`lmwW129#QPPollsbpjbnllm?,s=plvoOJMFelqw`bqwW279?k2=;3s{\\\"..?:s{8W379njhf975Ymj`fjm`kZlqhqj`fyk9\\b$**8svqfnbdfsbqbwlmfalmg904Y\\\\le\\\\$^*8333/yk9\\x0Bwbmhzbqgaltoavpk965YIbub03s{\\t\\x7F~\\t&@0&907YifeeF[SJ`bpkujpbdloepmltyk9\\x05rvfq-`pppj`hnfbwnjm-ajmggfookjqfsj`pqfmw905YKWWS.132elwltloeFMG#{al{967YALGZgj`h8\\t~\\tf{jw906Yubqpafbw$~*8gjfw:::8bmmf~~?,Xj^-Obmdhn.^tjqfwlzpbggppfbobof{8\\t\\n~f`klmjmf-lqd336*wlmziftppbmgofdpqlle333*#133tjmfdfbqgldpallwdbqz`vwpwzofwfnswjlm-{no`l`hdbmd'+$-63s{Sk-Gnjp`bobmolbmgfphnjofqzbmvmj{gjp`*8~\\tgvpw`ojs*-\\t\\t43s{.133GUGp4^=?wbsfgfnlj((*tbdffvqlskjolswpklofEBRpbpjm.15WobapsfwpVQO#avoh`llh8~\\x0E\\tKFBGX3^*baaqivbm+2:;ofpkwtjm?,j=plmzdvzpev`hsjsf\\x7F.\\t\\\"331*mgltX2^8X^8\\tOld#pbow\\x0E\\t\\n\\nabmdwqjnabwk*x\\x0E\\t33s{\\t~*8hl9\\0effpbg=\\x0Ep9,,#X^8wloosovd+*x\\tx\\x0E\\t#-ip$133sgvboalbw-ISD*8\\t~rvlw*8\\t\\t$*8\\t\\x0E\\t~\\x0E1327132613251324132;132:13131312131113101317131613151314131;131:130313021301130013071306130513041320132113221323133:133;133413351336133713301331133213332:::2::;2::42::52::62::72::02::12::22::32:;:2:;;2:;42:;52:;62:;72:;02:;12:;22:;32:4:2:4;2:442:452:462:472:402:412:422:432:5:2:5;2:542:552:562:572:502:512:522:532:6:2:6;2:642:652:662:672:602:612:622:632333231720:73333::::`lnln/Mpfpwffpwbsfqlwlglkb`f`bgbb/]lajfmg/Abbp/Aujgb`bpllwqlelqlplollwqb`vbogjilpjgldqbmwjslwfnbgfafbodlrv/Efpwlmbgbwqfpsl`l`bpbabilwlgbpjmlbdvbsvfpvmlpbmwfgj`fovjpfoobnbzlylmbbnlqsjpllaqb`oj`foolgjlpklqb`bpj<[<\\\\!sbqhpnlvpfNlpw#---?,bnlmdaqbjmalgz#mlmf8abpfg`bqqzgqbewqfefqsbdf\\\\klnf-nfwfqgfobzgqfbnsqlufiljmw?,wq=gqvdp?\\\"..#bsqjojgfboboofmf{b`welqwk`lgfpoldj`Ujft#pffnpaobmhslqwp#+133pbufg\\\\ojmhdlbopdqbmwdqffhklnfpqjmdpqbwfg03s{8tklpfsbqpf+*8!#Aol`hojmv{ilmfpsj{fo$*8!=*8je+.ofewgbujgklqpfEl`vpqbjpfal{fpWqb`hfnfmw?,fn=abq!=-pq`>wltfqbow>!`baofkfmqz17s{8pfwvsjwbozpkbqsnjmlqwbpwftbmwpwkjp-qfpfwtkffodjqop,`pp,233&8`ovappwveeajaofulwfp#2333hlqfb~*8\\x0E\\tabmgprvfvf>#x~8;3s{8`hjmdx\\x0E\\t\\n\\nbkfbg`ol`hjqjpkojhf#qbwjlpwbwpElqn!zbkll*X3^8Balvwejmgp?,k2=gfavdwbphpVQO#>`foop~*+*821s{8sqjnfwfoopwvqmp3{533-isd!psbjmafb`kwb{fpnj`qlbmdfo..=?,djewppwfuf.ojmhalgz-~*8\\t\\nnlvmw#+2::EBR?,qldfqeqbmh@obpp1;s{8effgp?k2=?p`lwwwfpwp11s{8gqjmh*#\\x7F\\x7F#oftjppkboo 30:8#elq#olufgtbpwf33s{8ib9\\x0Fnpjnlm?elmwqfsoznffwpvmwfq`kfbswjdkwAqbmg*#\\\">#gqfpp`ojspqllnplmhfznlajonbjm-Mbnf#sobwfevmmzwqffp`ln,!2-isdtnlgfsbqbnPWBQWofew#jggfm/#132*8\\t~\\telqn-ujqvp`kbjqwqbmptlqpwSbdfpjwjlmsbw`k?\\\"..\\tl.`b`ejqnpwlvqp/333#bpjbmj((*xbglaf$*X3^jg>23alwk8nfmv#-1-nj-smd!hfujm`lb`k@kjogaqv`f1-isdVQO*(-isd\\x7Fpvjwfpoj`fkbqqz213!#ptffwwq=\\x0E\\tmbnf>gjfdlsbdf#ptjpp..=\\t\\t eee8!=Old-`ln!wqfbwpkffw*#%%#27s{8poffsmwfmwejofgib9\\x0Fojg>!`Mbnf!tlqpfpklwp.al{.gfowb\\t%ow8afbqp97;Y?gbwb.qvqbo?,b=#psfmgabhfqpklsp>#!!8sks!=`wjlm20s{8aqjbmkfoolpjyf>l>&1E#iljmnbzaf?jnd#jnd!=/#eipjnd!#!*X3^NWlsAWzsf!mftozGbmph`yf`kwqbjohmltp?,k6=ebr!=yk.`m23*8\\t.2!*8wzsf>aovfpwqvozgbujp-ip$8=\\x0E\\t?\\\"pwffo#zlv#k1=\\x0E\\telqn#ifpvp233&#nfmv-\\x0E\\t\\n\\x0E\\ttbofpqjphpvnfmwggjmda.ojhwfb`kdje!#ufdbpgbmphffpwjpkrjspvlnjplaqfgfpgffmwqfwlglpsvfgfb/]lpfpw/Mwjfmfkbpwblwqlpsbqwfglmgfmvfulkb`fqelqnbnjpnlnfilqnvmglbrv/Ag/Abpp/_olbzvgbef`kbwlgbpwbmwlnfmlpgbwlplwqbppjwjlnv`klbklqbovdbqnbzlqfpwlpklqbpwfmfqbmwfpelwlpfpwbpsb/Apmvfubpbovgelqlpnfgjlrvjfmnfpfpslgfq`kjofpfq/Muf`fpgf`jqilp/Efpwbqufmwbdqvslkf`klfoolpwfmdlbnjdl`lpbpmjufodfmwfnjpnbbjqfpivojlwfnbpkb`jbebulqivmjlojaqfsvmwlavfmlbvwlqbaqjoavfmbwf{wlnbqylpbafqojpwbovfdl`/_nlfmfqlivfdlsfq/Vkbafqfpwlzmvm`bnvifqubolqevfqbojaqldvpwbjdvboulwlp`bplpdv/Absvfglplnlpbujplvpwfggfafmml`kfavp`bebowbfvqlppfqjfgj`kl`vqpl`obuf`bpbpof/_msobylobqdllaqbpujpwbbslzlivmwlwqbwbujpwl`qfbq`bnslkfnlp`jm`l`bqdlsjplplqgfmkb`fm/Mqfbgjp`lsfgql`fq`bsvfgbsbsfonfmlq/Vwjo`obqlilqdf`boofslmfqwbqgfmbgjfnbq`bpjdvffoobppjdol`l`kfnlwlpnbgqf`obpfqfpwlmj/]lrvfgbsbpbqabm`lkjilpujbifsbaol/Epwfujfmfqfjmlgfibqelmgl`bmbomlqwfofwqb`bvpbwlnbqnbmlpovmfpbvwlpujoobufmglsfpbqwjslpwfmdbnbq`loofubsbgqfvmjglubnlpylmbpbnalpabmgbnbqjbbavplnv`kbpvajqqjlibujujqdqbgl`kj`bboo/Ailufmgj`kbfpwbmwbofppbojqpvfolsfplpejmfpoobnbavp`l/Epwboofdbmfdqlsobybkvnlqsbdbqivmwbglaofjpobpalopbab/]lkbaobov`kb/mqfbgj`fmivdbqmlwbpuboofboo/M`bqdbglolqbabilfpw/Edvpwlnfmwfnbqjlejqnb`lpwlej`kbsobwbkldbqbqwfpofzfpbrvfonvpflabpfpsl`lpnjwbg`jfol`kj`lnjfgldbmbqpbmwlfwbsbgfafpsobzbqfgfppjfwf`lqwf`lqfbgvgbpgfpflujfilgfpfbbdvbp%rvlw8glnbjm`lnnlmpwbwvpfufmwpnbpwfqpzpwfnb`wjlmabmmfqqfnlufp`qloovsgbwfdolabonfgjvnejowfqmvnafq`kbmdfqfpvowsvaoj`p`qffm`kllpfmlqnbowqbufojppvfpplvq`fwbqdfwpsqjmdnlgvofnlajofptjw`ksklwlpalqgfqqfdjlmjwpfoepl`jbob`wjuf`lovnmqf`lqgelooltwjwof=fjwkfqofmdwkebnjozeqjfmgobzlvwbvwklq`qfbwfqfujftpvnnfqpfqufqsobzfgsobzfqf{sbmgsloj`zelqnbwglvaofsljmwppfqjfpsfqplmojujmdgfpjdmnlmwkpelq`fpvmjrvftfjdkwsflsoffmfqdzmbwvqfpfbq`kejdvqfkbujmd`vpwlnleepfwofwwfqtjmgltpvanjwqfmgfqdqlvspvsolbgkfbowknfwklgujgflpp`klloevwvqfpkbgltgfabwfubovfpLaif`wlwkfqpqjdkwpofbdvf`kqlnfpjnsofmlwj`fpkbqfgfmgjmdpfbplmqfslqwlmojmfprvbqfavwwlmjnbdfpfmbaofnlujmdobwfpwtjmwfqEqbm`fsfqjlgpwqlmdqfsfbwOlmglmgfwbjoelqnfggfnbmgpf`vqfsbppfgwlddofsob`fpgfuj`fpwbwj``jwjfppwqfbnzfooltbwwb`hpwqffweojdkwkjggfmjmel!=lsfmfgvpfevouboofz`bvpfpofbgfqpf`qfwpf`lmggbnbdfpslqwpf{`fswqbwjmdpjdmfgwkjmdpfeef`wejfogppwbwfpleej`fujpvbofgjwlqulovnfQfslqwnvpfvnnlujfpsbqfmwb``fppnlpwoznlwkfq!#jg>!nbqhfwdqlvmg`kbm`fpvqufzafelqfpznalonlnfmwpsff`knlwjlmjmpjgfnbwwfq@fmwfqlaif`wf{jpwpnjggofFvqlsfdqltwkofdb`znbmmfqfmlvdk`bqffqbmptfqlqjdjmslqwbo`ojfmwpfof`wqbmgln`olpfgwlsj`p`lnjmdebwkfqlswjlmpjnsozqbjpfgfp`bsf`klpfm`kvq`kgfejmfqfbplm`lqmfqlvwsvwnfnlqzjeqbnfsloj`fnlgfopMvnafqgvqjmdleefqppwzofphjoofgojpwfg`boofgpjoufqnbqdjmgfofwfafwwfqaqltpfojnjwpDolabopjmdoftjgdfw`fmwfqavgdfwmltqbs`qfgjw`objnpfmdjmfpbefwz`klj`fpsjqjw.pwzofpsqfbgnbhjmdmffgfgqvppjbsofbpff{wfmwP`qjswaqlhfmbooltp`kbqdfgjujgfeb`wlqnfnafq.abpfgwkflqz`lmejdbqlvmgtlqhfgkfosfg@kvq`kjnsb`wpklvogbotbzpoldl!#alwwlnojpw!=*xubq#sqfej{lqbmdfKfbgfq-svpk+`lvsofdbqgfmaqjgdfobvm`kQfujftwbhjmdujpjlmojwwofgbwjmdAvwwlmafbvwzwkfnfpelqdlwPfbq`kbm`klqbonlpwolbgfg@kbmdfqfwvqmpwqjmdqfolbgNlajofjm`lnfpvssozPlvq`flqgfqpujftfg%maps8`lvqpfBalvw#jpobmg?kwno#`llhjfmbnf>!bnbylmnlgfqmbguj`fjm?,b=9#Wkf#gjboldklvpfpAFDJM#Nf{j`lpwbqwp`fmwqfkfjdkwbggjmdJpobmgbppfwpFnsjqfP`kllofeelqwgjqf`wmfbqoznbmvboPfof`w-\\t\\tLmfiljmfgnfmv!=SkjojsbtbqgpkbmgofjnslqwLeej`fqfdbqgphjoopmbwjlmPslqwpgfdqfftffhoz#+f-d-afkjmggl`wlqolddfgvmjwfg?,a=?,afdjmpsobmwpbppjpwbqwjpwjppvfg033s{\\x7F`bmbgbbdfm`zp`kfnfqfnbjmAqbyjopbnsofoldl!=afzlmg.p`bofb``fswpfqufgnbqjmfEllwfq`bnfqb?,k2=\\t\\\\elqn!ofbufppwqfpp!#,=\\x0E\\t-dje!#lmolbgolbgfqL{elqgpjpwfqpvqujuojpwfmefnbofGfpjdmpjyf>!bssfbowf{w!=ofufopwkbmhpkjdkfqelq`fgbmjnbobmzlmfBeqj`bbdqffgqf`fmwSflsof?aq#,=tlmgfqsqj`fpwvqmfg\\x7F\\x7F#x~8nbjm!=jmojmfpvmgbztqbs!=ebjofg`fmpvpnjmvwfafb`lmrvlwfp263s{\\x7Ffpwbwfqfnlwffnbjo!ojmhfgqjdkw8pjdmboelqnbo2-kwnopjdmvssqjm`feolbw9-smd!#elqvn-B``fppsbsfqpplvmgpf{wfmgKfjdkwpojgfqVWE.;!%bns8#Afelqf-#TjwkpwvgjlltmfqpnbmbdfsqlejwiRvfqzbmmvbosbqbnpalvdkwebnlvpdlldofolmdfqj((*#xjpqbfopbzjmdgf`jgfklnf!=kfbgfqfmpvqfaqbm`ksjf`fpaol`h8pwbwfgwls!=?qb`jmdqfpjyf..%dw8sb`jwzpf{vboavqfbv-isd!#23/333lawbjmwjwofpbnlvmw/#Jm`-`lnfgznfmv!#ozqj`pwlgbz-jmgffg`lvmwz\\\\oldl-EbnjozollhfgNbqhfwopf#jeSobzfqwvqhfz*8ubq#elqfpwdjujmdfqqlqpGlnbjm~fopfxjmpfqwAold?,ellwfqoldjm-ebpwfqbdfmwp?algz#23s{#3sqbdnbeqjgbzivmjlqgloobqsob`fg`lufqpsovdjm6/333#sbdf!=alpwlm-wfpw+bubwbqwfpwfg\\\\`lvmwelqvnpp`kfnbjmgf{/ejoofgpkbqfpqfbgfqbofqw+bssfbqPvanjwojmf!=algz!=\\t)#WkfWklvdkpffjmdifqpfzMftp?,ufqjezf{sfqwjmivqztjgwk>@llhjfPWBQW#b`qlpp\\\\jnbdfwkqfbgmbwjufsl`hfwal{!=\\tPzpwfn#Gbujg`bm`fqwbaofpsqlufgBsqjo#qfboozgqjufqjwfn!=nlqf!=albqgp`lolqp`bnsvpejqpw#\\x7F\\x7F#X^8nfgjb-dvjwbqejmjpktjgwk9pkltfgLwkfq#-sks!#bppvnfobzfqptjoplmpwlqfpqfojfeptfgfm@vpwlnfbpjoz#zlvq#Pwqjmd\\t\\tTkjowbzolq`ofbq9qfplqweqfm`kwklvdk!*#(#!?algz=avzjmdaqbmgpNfnafqmbnf!=lssjmdpf`wlq6s{8!=upsb`fslpwfqnbilq#`leeffnbqwjmnbwvqfkbssfm?,mbu=hbmpbpojmh!=Jnbdfp>ebopftkjof#kpsb`f3%bns8#\\t\\tJm##sltfqSlophj.`lolqilqgbmAlwwlnPwbqw#.`lvmw1-kwnomftp!=32-isdLmojmf.qjdkwnjoofqpfmjlqJPAM#33/333#dvjgfpubovf*f`wjlmqfsbjq-{no!##qjdkwp-kwno.aol`hqfdF{s9klufqtjwkjmujqdjmsklmfp?,wq=\\x0Evpjmd#\\t\\nubq#=$*8\\t\\n?,wg=\\t?,wq=\\tabkbpbaqbpjodbofdlnbdzbqslophjpqsphj4]4C5d\\bTA\\nzk\\x0BBl\\bQ\\x7F\\x0BUm\\x05Gx\\bSM\\nmC\\bTA\\twQ\\nd}\\bW@\\bTl\\bTF\\ti@\\tcT\\x0BBM\\x0B|j\\x04BV\\tqw\\tcC\\bWI\\npa\\tfM\\n{Z\\x05{X\\bTF\\bVV\\bVK\\t\\x7Fm\\x04kF\\t[]\\bPm\\bTv\\nsI\\x0Bpg\\t[I\\bQp\\x04mx\\x0B_W\\n^M\\npe\\x0BQ}\\x0BGu\\nel\\npe\\x04Ch\\x04BV\\bTA\\tSo\\nzk\\x0BGL\\x0BxD\\nd[\\x05Jz\\x05MY\\bQp\\x04li\\nfl\\npC\\x05{B\\x05Nt\\x0BwT\\ti_\\bTg\\x04QQ\\n|p\\x0BXN\\bQS\\x0BxD\\x04QC\\bWZ\\tpD\\x0BVS\\bTW\\x05Nt\\x04Yh\\nzu\\x04Kj\\x05N}\\twr\\tHa\\n_D\\tj`\\x0BQ}\\x0BWp\\nxZ\\x04{c\\tji\\tBU\\nbD\\x04a|\\tTn\\tpV\\nZd\\nmC\\x0BEV\\x05{X\\tc}\\tTo\\bWl\\bUd\\tIQ\\tcg\\x0Bxs\\nXW\\twR\\x0Bek\\tc}\\t]y\\tJn\\nrp\\neg\\npV\\nz\\\\\\x05{W\\npl\\nz\\\\\\nzU\\tPc\\t`{\\bV@\\nc|\\bRw\\ti_\\bVb\\nwX\\tHv\\x04Su\\bTF\\x0B_W\\x0BWs\\x0BsI\\x05m\\x7F\\nTT\\ndc\\tUS\\t}f\\tiZ\\bWz\\tc}\\x04MD\\tBe\\tiD\\x0B@@\\bTl\\bPv\\t}t\\x04Sw\\x04M`\\x0BnU\\tkW\\x0Bed\\nqo\\x0BxY\\tA|\\bTz\\x0By`\\x04BR\\x04BM\\tia\\x04XU\\nyu\\x04n^\\tfL\\tiI\\nXW\\tfD\\bWz\\bW@\\tyj\\t\\x7Fm\\tav\\tBN\\x0Bb\\\\\\tpD\\bTf\\nY[\\tJn\\bQy\\t[^\\x0BWc\\x0Byu\\x04Dl\\x04CJ\\x0BWj\\x0BHR\\t`V\\x0BuW\\tQy\\np@\\x0BGu\\x05pl\\x04Jm\\bW[\\nLP\\nxC\\n`m\\twQ\\x05ui\\x05\\x7FR\\nbI\\twQ\\tBZ\\tWV\\x04BR\\npg\\tcg\\x05ti\\x04CW\\n_y\\tRg\\bQa\\x0BQB\\x0BWc\\nYb\\x05le\\ngE\\x04Su\\nL[\\tQ\\x7F\\tea\\tdj\\x0B]W\\nb~\\x04M`\\twL\\bTV\\bVH\\nt\\x7F\\npl\\t|b\\x05s_\\bU|\\bTa\\x04oQ\\x05lv\\x04Sk\\x04M`\\bTv\\x0BK}\\nfl\\tcC\\x04oQ\\x04BR\\tHk\\t|d\\bQp\\tHK\\tBZ\\x0BHR\\bPv\\x0BLx\\x0BEZ\\bT\\x7F\\bTv\\tiD\\x05oD\\x05MU\\x0BwB\\x04Su\\x05k`\\x04St\\ntC\\tPl\\tKg\\noi\\tjY\\x0BxY\\x04h}\\nzk\\bWZ\\t\\x7Fm\\x0Be`\\tTB\\tfE\\nzk\\t`z\\x04Yh\\nV|\\tHK\\tAJ\\tAJ\\bUL\\tp\\\\\\tql\\nYc\\x04Kd\\nfy\\x04Yh\\t[I\\x0BDg\\x04Jm\\n]n\\nlb\\bUd\\n{Z\\tlu\\tfs\\x04oQ\\bTW\\x04Jm\\x0BwB\\tea\\x04Yh\\x04BC\\tsb\\tTn\\nzU\\n_y\\x0BxY\\tQ]\\ngw\\x04mt\\tO\\\\\\ntb\\bWW\\bQy\\tmI\\tV[\\ny\\\\\\naB\\x0BRb\\twQ\\n]Q\\x04QJ\\bWg\\x0BWa\\bQj\\ntC\\bVH\\nYm\\x0Bxs\\bVK\\nel\\bWI\\x0BxY\\x04Cq\\ntR\\x0BHV\\bTl\\bVw\\tay\\bQa\\bVV\\t}t\\tdj\\nr|\\tp\\\\\\twR\\n{i\\nTT\\t[I\\ti[\\tAJ\\x0Bxs\\x0B_W\\td{\\x0BQ}\\tcg\\tTz\\tA|\\tCj\\x0BLm\\x05N}\\x05m\\x7F\\nbK\\tdZ\\tp\\\\\\t`V\\tsV\\np@\\tiD\\twQ\\x0BQ}\\bTf\\x05ka\\x04Jm\\x0B@@\\bV`\\tzp\\n@N\\x04Sw\\tiI\\tcg\\noi\\x04Su\\bVw\\x04lo\\x04Cy\\tc}\\x0Bb\\\\\\tsU\\x04BA\\bWI\\bTf\\nxS\\tVp\\nd|\\bTV\\x0BbC\\tNo\\x05Ju\\nTC\\t|`\\n{Z\\tD]\\bU|\\tc}\\x05lm\\bTl\\tBv\\tPl\\tc}\\bQp\\t\\x7Fm\\nLk\\tkj\\n@N\\x04Sb\\x04KO\\tj_\\tp\\\\\\nzU\\bTl\\bTg\\bWI\\tcf\\x04XO\\bWW\\ndz\\x04li\\tBN\\nd[\\bWO\\x04MD\\x0BKC\\tdj\\tI_\\bVV\\ny\\\\\\x0BLm\\x05xl\\txB\\tkV\\x0Bb\\\\\\x0BJW\\x0BVS\\tVx\\x0BxD\\td{\\x04MD\\bTa\\t|`\\x0BPz\\x04R}\\x0BWs\\x04BM\\nsI\\x04CN\\bTa\\x04Jm\\npe\\ti_\\npV\\nrh\\tRd\\tHv\\n~A\\nxR\\x0BWh\\x0BWk\\nxS\\x0BAz\\x0BwX\\nbI\\x04oQ\\tfw\\nqI\\nV|\\nun\\x05z\\x7F\\x0Bpg\\td\\\\\\x0BoA\\x05{D\\ti_\\x05xB\\bT\\x7F\\t`V\\x05qr\\tTT\\x04g]\\x04CA\\x0BuR\\tVJ\\tT`\\npw\\x0BRb\\tI_\\nCx\\x04Ro\\x0BsI\\x04Cj\\x04Kh\\tBv\\tWV\\x04BB\\x05oD\\x05{D\\nhc\\x04Km\\x0B^R\\tQE\\n{I\\np@\\nc|\\x05Gt\\tc}\\x04Dl\\nzU\\x05qN\\tsV\\x05k}\\tHh\\x0B|j\\nqo\\x05u|\\tQ]\\x0Bek\\x05\\x7FZ\\x04M`\\x04St\\npe\\tdj\\bVG\\x0BeE\\t\\x7Fm\\x0BWc\\x04|I\\n[W\\tfL\\bT\\x7F\\tBZ\\x04Su\\x0BKa\\x04Cq\\x05Nt\\x04Y[\\nqI\\bTv\\tfM\\ti@\\t}f\\x04B\\\\\\tQy\\x0BBl\\bWg\\x04XD\\x05kc\\x0Bx[\\bVV\\tQ]\\t\\x7Fa\\tPy\\x0BxD\\nfI\\t}f\\x05oD\\tdj\\tSG\\x05ls\\t~D\\x04CN\\n{Z\\t\\\\v\\n_D\\nhc\\x0Bx_\\x04C[\\tAJ\\nLM\\tVx\\x04CI\\tbj\\tc^\\tcF\\ntC\\x04Sx\\twr\\x04XA\\bU\\\\\\t|a\\x0BK\\\\\\bTV\\bVj\\nd|\\tfs\\x04CX\\ntb\\bRw\\tVx\\tAE\\tA|\\bT\\x7F\\x05Nt\\x0BDg\\tVc\\bTl\\x04d@\\npo\\t\\x7FM\\tcF\\npe\\tiZ\\tBo\\bSq\\nfH\\x04l`\\bTx\\bWf\\tHE\\x0BF{\\tcO\\tfD\\nlm\\x0BfZ\\nlm\\x0BeU\\tdG\\x04BH\\bTV\\tSi\\x05MW\\nwX\\nz\\\\\\t\\\\c\\x04CX\\nd}\\tl}\\bQp\\bTV\\tF~\\bQ\\x7F\\t`i\\ng@\\x05nO\\bUd\\bTl\\nL[\\twQ\\tji\\ntC\\t|J\\nLU\\naB\\x0BxY\\x04Kj\\tAJ\\x05uN\\ti[\\npe\\x04Sk\\x0BDg\\x0Bx]\\bVb\\bVV\\nea\\tkV\\nqI\\bTa\\x04Sk\\nAO\\tpD\\ntb\\nts\\nyi\\bVg\\ti_\\x0B_W\\nLk\\x05Nt\\tyj\\tfM\\x04R\\x7F\\tiI\\bTl\\x0BwX\\tsV\\x0BMl\\nyu\\tAJ\\bVj\\x04KO\\tWV\\x0BA}\\x0BW\\x7F\\nrp\\tiD\\x0B|o\\x05lv\\x0BsI\\x04BM\\td~\\tCU\\bVb\\x04eV\\npC\\x0BwT\\tj`\\tc}\\x0Bxs\\x0Bps\\x0Bvh\\tWV\\x0BGg\\x0BAe\\x0BVK\\x0B]W\\trg\\x0BWc\\x05F`\\tBr\\x0Bb\\\\\\tdZ\\bQp\\nqI\\x04kF\\nLk\\x0BAR\\bWI\\bTg\\tbs\\tdw\\n{L\\n_y\\tiZ\\bTA\\tlg\\bVV\\bTl\\tdk\\n`k\\ta{\\ti_\\x05{A\\x05wj\\twN\\x0B@@\\bTe\\ti_\\n_D\\twL\\nAH\\x0BiK\\x0Bek\\n[]\\tp_\\tyj\\bTv\\tUS\\t[r\\n{I\\nps\\x05Gt\\x0BVK\\npl\\x04S}\\x0BWP\\t|d\\x04MD\\x0BHV\\bT\\x7F\\x04R}\\x04M`\\bTV\\bVH\\x05lv\\x04Ch\\bW[\\x04Ke\\tR{\\x0B^R\\tab\\tBZ\\tVA\\tB`\\nd|\\nhs\\x04Ke\\tBe\\x04Oi\\tR{\\td\\\\\\x05nB\\bWZ\\tdZ\\tVJ\\x05Os\\t\\x7Fm\\x04uQ\\x0BhZ\\x04Q@\\x04QQ\\nfI\\bW[\\x04B\\\\\\x04li\\nzU\\nMd\\x04M`\\nxS\\bVV\\n\\\\}\\x0BxD\\t\\x7Fm\\bTp\\x04IS\\nc|\\tkV\\x05i~\\tV{\\x0BhZ\\t|b\\bWt\\n@R\\x0BoA\\x0BnU\\bWI\\tea\\tB`\\tiD\\tc}\\tTz\\x04BR\\x0BQB\\x05Nj\\tCP\\t[I\\bTv\\t`W\\x05uN\\x0Bpg\\x0Bpg\\x0BWc\\tiT\\tbs\\twL\\tU_\\tc\\\\\\t|h\\x0BKa\\tNr\\tfL\\nq|\\nzu\\nz\\\\\\tNr\\bUg\\t|b\\x04m`\\bTv\\nyd\\nrp\\bWf\\tUX\\x04BV\\nzk\\nd}\\twQ\\t}f\\x04Ce\\x0Bed\\bTW\\bSB\\nxU\\tcn\\bTb\\ne\\x7F\\ta\\\\\\tSG\\bU|\\npV\\nN\\\\\\x04Kn\\x0BnU\\tAt\\tpD\\x0B^R\\x0BIr\\x04b[\\tR{\\tdE\\x0BxD\\x0BWK\\x0BWA\\bQL\\bW@\\x04Su\\bUd\\nDM\\tPc\\x04CA\\x04Dl\\x04oQ\\tHs\\x05wi\\x04ub\\n\\x7Fa\\bQp\\x05Ob\\nLP\\bTl\\x04Y[\\x0BK}\\tAJ\\bQ\\x7F\\x04n^\\x0BsA\\bSM\\nqM\\bWZ\\n^W\\x0Bz{\\x04S|\\tfD\\bVK\\bTv\\bPv\\x04BB\\tCP\\x04dF\\tid\\x0Bxs\\x04mx\\x0Bws\\tcC\\ntC\\tyc\\x05M`\\x0BW\\x7F\\nrh\\bQp\\x0BxD\\x04\\\\o\\nsI\\x04_k\\nzu\\x04kF\\tfD\\x04Xs\\x04XO\\tjp\\bTv\\x04BS\\x05{B\\tBr\\nzQ\\nbI\\tc{\\x04BD\\x04BV\\x05nO\\bTF\\tca\\x05Jd\\tfL\\tPV\\tI_\\nlK\\x04`o\\twX\\npa\\tgu\\bP}\\x05{^\\bWf\\n{I\\tBN\\npa\\x04Kl\\x0Bpg\\tcn\\tfL\\x0Bvh\\x04Cq\\bTl\\x0BnU\\bSq\\x04Cm\\twR\\bUJ\\npe\\nyd\\nYg\\x04Cy\\x0BKW\\tfD\\nea\\x04oQ\\tj_\\tBv\\x04nM\\x0BID\\bTa\\nzA\\x05pl\\n]n\\bTa\\tR{\\tfr\\n_y\\bUg\\x05{X\\x05kk\\x0BxD\\x04|I\\x05xl\\nfy\\x04Ce\\x0BwB\\nLk\\x0Bd]\\noi\\n}h\\tQ]\\npe\\bVw\\x04Hk\\x04OQ\\nzk\\tAJ\\npV\\bPv\\ny\\\\\\tA{\\x04Oi\\bSB\\x04XA\\x0BeE\\tjp\\nq}\\tiD\\x05qN\\x0B^R\\t\\x7Fm\\tiZ\\tBr\\bVg\\noi\\n\\\\X\\tU_\\nc|\\x0BHV\\bTf\\tTn\\x04\\\\N\\x04\\\\N\\nuB\\x05lv\\nyu\\tTd\\bTf\\bPL\\x0B]W\\tdG\\nA`\\nw^\\ngI\\npe\\tdw\\nz\\\\\\x05ia\\bWZ\\tcF\\x04Jm\\n{Z\\bWO\\x04_k\\x04Df\\x04RR\\td\\\\\\bVV\\x0Bxs\\x04BN\\x05ti\\x04lm\\tTd\\t]y\\x0BHV\\tSo\\x0B|j\\x04XX\\tA|\\x0BZ^\\x0BGu\\bTW\\x05M`\\x04kF\\x0BhZ\\x0BVK\\tdG\\x0BBl\\tay\\nxU\\x05qE\\x05nO\\bVw\\nqI\\x04CX\\ne\\x7F\\tPl\\bWO\\x0BLm\\tdL\\x05uH\\x04Cm\\tdT\\x04fn\\x0BwB\\x05ka\\x0BnU\\n@M\\nyT\\tHv\\t\\\\}\\x04Kh\\td~\\x04Yh\\x05k}\\neR\\td\\\\\\bWI\\t|b\\tHK\\tiD\\bTW\\x05MY\\npl\\bQ_\\twr\\x0BAx\\tHE\\bTg\\bSq\\x05vp\\x0Bb\\\\\\bWO\\nOl\\nsI\\nfy\\x0BID\\t\\\\c\\n{Z\\n^~\\npe\\nAO\\tTT\\x0Bxv\\x04k_\\bWO\\x0B|j\\x0BwB\\tQy\\ti@\\tPl\\tHa\\tdZ\\x05k}\\x04ra\\tUT\\x0BJc\\x0Bed\\np@\\tQN\\nd|\\tkj\\tHk\\x04M`\\noi\\twr\\td\\\\\\nlq\\no_\\nlb\\nL[\\tac\\x04BB\\x04BH\\x04Cm\\npl\\tIQ\\bVK\\x0Bxs\\n`e\\x0BiK\\npa\\x04Oi\\tUS\\bTp\\tfD\\nPG\\x05kk\\x04XA\\nz\\\\\\neg\\x0BWh\\twR\\x05qN\\nqS\\tcn\\x04lo\\nxS\\n^W\\tBU\\nt\\x7F\\tHE\\tp\\\\\\tfF\\tfw\\bVV\\bW@\\tak\\x0BVK\\x05ls\\tVJ\\bVV\\x0BeE\\x04\\\\o\\nyX\\nYm\\x04M`\\x05lL\\nd|\\nzk\\tA{\\x05sE\\twQ\\x04XT\\nt\\x7F\\tPl\\t]y\\x0BwT\\x05{p\\x04MD\\x0Bb\\\\\\tQ]\\x04Kj\\tJn\\nAH\\x0BRb\\tBU\\tHK\\t\\\\c\\nfI\\x05m\\x7F\\nqM\\n@R\\tSo\\noi\\x04BT\\tHv\\n_y\\x04Kh\\tBZ\\t]i\\bUJ\\tV{\\x04Sr\\nbI\\x0BGg\\ta_\\bTR\\nfI\\nfl\\t[K\\tII\\x04S|\\x0BuW\\tiI\\bWI\\nqI\\x0B|j\\x04BV\\bVg\\bWZ\\x04kF\\x0Bx]\\bTA\\tab\\tfr\\ti@\\tJd\\tJd\\x0Bps\\nAO\\bTa\\x05xu\\tiD\\nzk\\t|d\\t|`\\bW[\\tlP\\tdG\\bVV\\x0Bw}\\x0BqO\\ti[\\bQ\\x7F\\bTz\\x0BVF\\twN\\x05ts\\tdw\\bTv\\neS\\ngi\\tNr\\x05yS\\npe\\bVV\\bSq\\n`m\\tyj\\tBZ\\x0BWX\\bSB\\tc\\\\\\nUR\\t[J\\tc_\\x04nM\\bWQ\\x0BAx\\nMd\\tBr\\x05ui\\x0BxY\\bSM\\x0BWc\\x0B|j\\x0Bxs\\t}Q\\tBO\\bPL\\bWW\\tfM\\nAO\\tPc\\x0BeU\\x04e^\\bTg\\nqI\\tac\\bPv\\tcF\\x04oQ\\tQ\\x7F\\x0BhZ\\x05ka\\nz\\\\\\tiK\\tBU\\n`k\\tCP\\x04S|\\x04M`\\n{I\\tS{\\x04_O\\tBZ\\x04Zi\\x04Sk\\tps\\tp\\\\\\nYu\\n]s\\nxC\\bWt\\nbD\\tkV\\x0BGu\\x05yS\\nqA\\t[r\\neK\\x04M`\\tdZ\\x05lL\\bUg\\bTl\\nbD\\tUS\\x0Bb\\\\\\tpV\\ncc\\x04S\\\\\\tct\\t`z\\bPL\\x0BWs\\nA`\\neg\\bSq\\x05uE\\x04CR\\x0BDg\\t`W\\x0Bz{\\x0BWc\\x04Sk\\x04Sk\\tbW\\bUg\\tea\\nxZ\\tiI\\tUX\\tVJ\\nqn\\tS{\\x0BRb\\bTQ\\npl\\x05Gt\\x0BuW\\x05uj\\npF\\nqI\\tfL\\t[I\\tia\\x04XO\\nyu\\x0BDg\\x0Bed\\tq{\\x04VG\\bQ\\x7F\\x05ka\\tVj\\tkV\\txB\\nd|\\np@\\tQN\\tPc\\tps\\x04]j\\tkV\\toU\\bTp\\nzU\\x05nB\\x0BB]\\ta{\\bV@\\n]n\\x04m`\\tcz\\tR{\\x04m`\\bQa\\x0BwT\\bSM\\x05MY\\x05qN\\tdj\\x05~s\\x0BQ}\\x05MY\\x0BMB\\tBv\\twR\\bRg\\x0BQ}\\tql\\x0BKC\\nrm\\x05xu\\x04CC\\x0BwB\\x0Bvh\\tBq\\x04Xq\\npV\\ti_\\x05Ob\\x05uE\\nbd\\nqo\\x0B{i\\nC~\\tBL\\x0BeE\\x05uH\\bVj\\x04Ey\\x04Gz\\x0BzR\\x0B{i\\tcf\\n{Z\\n]n\\x04XA\\x0BGu\\x0BnU\\thS\\x0BGI\\nCc\\tHE\\bTA\\tHB\\x04BH\\x04Cj\\nCc\\bTF\\tHE\\nXI\\tA{\\bQ\\x7F\\tc\\\\\\x0BmO\\x0BWX\\nfH\\np@\\x05MY\\bTF\\nlK\\tBt\\nzU\\tTT\\x04Km\\x0BwT\\npV\\ndt\\x0ByI\\tVx\\tQ\\x7F\\tRg\\tTd\\nzU\\bRS\\nLM\\twA\\x04nM\\tTn\\ndS\\t]g\\nLc\\x0BwB\\t}t\\t[I\\tCP\\x04kX\\x0BFm\\x0BhZ\\x05m\\x7F\\ti[\\np@\\x0BQ}\\x0BW\\x7F\\t|d\\nMO\\nMd\\tf_\\tfD\\tcJ\\tHz\\x0BRb\\tio\\tPy\\x04Y[\\nxU\\tct\\x0B@@\\tww\\bPv\\x04BM\\x04FF\\ntb\\x05v|\\x0BKm\\tBq\\tBq\\x04Kh\\x04`o\\nZd\\x04XU\\ti]\\t|`\\tSt\\x04B\\\\\\bQ\\x7F\\x0B_W\\tTJ\\nqI\\t|a\\tA{\\x0BuP\\x04MD\\tPl\\nxR\\tfL\\x0Bws\\tc{\\td\\\\\\bV`\\neg\\tHK\\x05kc\\nd|\\bVV\\ny\\\\\\x05kc\\ti]\\bVG\\t`V\\tss\\tI_\\tAE\\tbs\\tdu\\nel\\tpD\\x0BW\\x7F\\nqs\\x05lv\\bSM\\x04Zi\\x0BVK\\x05ia\\x0BQB\\tQ\\x7F\\n{Z\\bPt\\x0BKl\\nlK\\nhs\\ndS\\bVK\\x05mf\\nd^\\tkV\\tcO\\nc|\\bVH\\t\\\\]\\bTv\\bSq\\tmI\\x0BDg\\tVJ\\tcn\\ny\\\\\\bVg\\bTv\\nyX\\bTF\\t]]\\bTp\\noi\\nhs\\x0BeU\\nBf\\tdj\\x05Mr\\n|p\\t\\\\g\\t]r\\bVb\\x05{D\\nd[\\x04XN\\tfM\\tO\\\\\\x05s_\\tcf\\tiZ\\x04XN\\x0BWc\\tqv\\n`m\\tU^\\x05oD\\nd|\\x0BGg\\tdE\\x0Bwf\\x04lo\\x04u}\\nd|\\x05oQ\\t`i\\x04Oi\\x0BxD\\ndZ\\nCx\\x04Yw\\nzk\\ntb\\ngw\\tyj\\tB`\\nyX\\x0Bps\\ntC\\x0BpP\\x0Bqw\\bPu\\bPX\\tDm\\npw\\x05Nj\\tss\\taG\\x0Bxs\\bPt\\noL\\x04Gz\\tOk\\ti@\\ti]\\x04eC\\tIQ\\tii\\tdj\\x0B@J\\t|d\\x05uh\\bWZ\\x0BeU\\x0BnU\\bTa\\tcC\\x04g]\\nzk\\x04Yh\\bVK\\nLU\\np@\\ntb\\ntR\\tCj\\x0BNP\\ti@\\bP{\\n\\\\}\\n{c\\nwX\\tfL\\bVG\\tc{\\t|`\\tAJ\\t|C\\tfD\\x05ln\\t|d\\tbs\\nqI\\x05{B\\x0BAx\\np@\\nzk\\x0BRb\\x05Os\\x0BWS\\x04e^\\x0BD_\\tBv\\x0BWd\\bVb\\x0Bxs\\x0BeE\\bRw\\n]n\\n|p\\x0Bg|\\tfw\\x05kc\\bTI\\x05ka\\n\\\\T\\x04Sp\\tju\\x0Bps\\npe\\x05u|\\x0BGr\\bVe\\tCU\\x04]M\\x04XU\\x0BxD\\bTa\\tIQ\\x0BWq\\tCU\\tam\\tdj\\bSo\\x04Sw\\x0BnU\\x04Ch\\tQ]\\x05s_\\bPt\\tfS\\bTa\\t\\\\}\\n@O\\x04Yc\\tUZ\\bTx\\npe\\x0BnU\\nzU\\t|}\\tiD\\nz\\\\\\bSM\\x0BxD\\x04BR\\nzQ\\tQN\\x04]M\\x04Yh\\nLP\\x0BFm\\x0BLX\\x05vc\\x0Bql\\x05ka\\tHK\\bVb\\ntC\\nCy\\bTv\\nuV\\x04oQ\\t`z\\t[I\\tB`\\x0BRb\\tyj\\tsb\\x0BWs\\bTl\\tkV\\x0Bed\\ne\\x7F\\x05lL\\x0BxN\\t\\x7Fm\\nJn\\tjY\\x0BxD\\bVb\\bSq\\x0Byu\\twL\\x0BXL\\bTA\\tpg\\tAt\\tnD\\x04XX\\twR\\npl\\nhw\\x05yS\\nps\\tcO\\bW[\\x0B|j\\x04XN\\tsV\\tp\\\\\\tBe\\nb~\\nAJ\\n]e\\x05k`\\x05qN\\tdw\\tWV\\tHE\\x0BEV\\x05Jz\\tid\\tB`\\tzh\\x05E]\\tfD\\bTg\\x05qN\\bTa\\tja\\x04Cv\\bSM\\nhc\\bUe\\x05t_\\tie\\x04g]\\twQ\\nPn\\bVB\\tjw\\bVg\\x0BbE\\tBZ\\x0BRH\\bP{\\tjp\\n\\\\}\\ta_\\tcC\\t|a\\x0BD]\\tBZ\\ti[\\tfD\\x0BxW\\no_\\td\\\\\\n_D\\ntb\\t\\\\c\\tAJ\\nlK\\x04oQ\\x04lo\\x0BLx\\x0BM@\\bWZ\\x04Kn\\x0Bpg\\nTi\\nIv\\n|r\\x0B@}\\x05Jz\\x05Lm\\x05Wh\\x05k}\\x05ln\\x0BxD\\n]s\\x04gc\\x0Bps\\tBr\\bTW\\x0BBM\\x05tZ\\nBY\\x04DW\\tjf\\x0BSW\\x04C}\\nqo\\tdE\\tmv\\tIQ\\bPP\\bUb\\x05lv\\x04BC\\nzQ\\t[I\\x0Bgl\\nig\\bUs\\x04BT\\x0BbC\\bSq\\tsU\\tiW\\nJn\\tSY\\tHK\\trg\\npV\\x0BID\\x0B|j\\x04KO\\t`S\\t|a`vbmglfmujbqnbgqjgavp`bqjmj`jlwjfnslslqrvf`vfmwbfpwbglsvfgfmivfdlp`lmwqbfpw/Mmmlnaqfwjfmfmsfqejonbmfqbbnjdlp`jvgbg`fmwqlbvmrvfsvfgfpgfmwqlsqjnfqsqf`jlpfd/Vmavfmlpuloufqsvmwlppfnbmbkba/Abbdlpwlmvfulpvmjglp`bqolpfrvjslmj/]lpnv`klpbodvmb`lqqfljnbdfmsbqwjqbqqjabnbq/Abklnaqffnsoflufqgbg`bnajlnv`kbpevfqlmsbpbglo/Amfbsbqf`fmvfubp`vqplpfpwbabrvjfqlojaqlp`vbmwlb``fplnjdvfoubqjlp`vbwqlwjfmfpdqvslppfq/Mmfvqlsbnfgjlpeqfmwfb`fq`bgfn/Mplefqwb`l`kfpnlgfoljwbojbofwqbpbod/Vm`lnsqb`vbofpf{jpwf`vfqslpjfmglsqfmpboofdbqujbifpgjmfqlnvq`jbslgq/Msvfpwlgjbqjlsvfaolrvjfqfnbmvfosqlsjl`qjpjp`jfqwlpfdvqlnvfqwfevfmwf`fqqbqdqbmgffef`wlsbqwfpnfgjgbsqlsjbleqf`fwjfqqbf.nbjoubqjbpelqnbpevwvqllaifwlpfdvjqqjfpdlmlqnbpnjpnlp/Vmj`l`bnjmlpjwjlpqby/_mgfajglsqvfabwlofglwfm/Abifp/Vpfpsfql`l`jmblqjdfmwjfmgb`jfmwl`/Mgjykbaobqpfq/Abobwjmbevfqybfpwjoldvfqqbfmwqbq/E{jwlo/_sfybdfmgbu/Agflfujwbqsbdjmbnfwqlpibujfqsbgqfpe/M`jo`bafyb/Mqfbppbojgbfmu/Alibs/_mbavplpajfmfpwf{wlpoofubqsvfgbmevfqwf`ln/Vm`obpfpkvnbmlwfmjglajoablvmjgbgfpw/Mpfgjwbq`qfbgl2%bns8Kjpwlqz#>#mft#@fmwqbovsgbwfgPsf`jboMfwtlqhqfrvjqf`lnnfmwtbqmjmd@loofdfwlloabqqfnbjmpaf`bvpffof`wfgGfvwp`kejmbm`ftlqhfqprvj`hozafwtffmf{b`wozpfwwjmdgjpfbpfPl`jfwztfbslmpf{kjajw%ow8\\\"..@lmwqlo`obppfp`lufqfglvwojmfbwwb`hpgfuj`fp+tjmgltsvqslpfwjwof>!Nlajof#hjoojmdpkltjmdJwbojbmgqlssfgkfbujozfeef`wp.2$^*8\\t`lmejqn@vqqfmwbgubm`fpkbqjmdlsfmjmdgqbtjmdajoojlmlqgfqfgDfqnbmzqfobwfg?,elqn=jm`ovgftkfwkfqgfejmfgP`jfm`f`bwboldBqwj`ofavwwlmpobqdfpwvmjelqnilvqmfzpjgfabq@kj`bdlklojgbzDfmfqbosbppbdf/%rvlw8bmjnbwfeffojmdbqqjufgsbppjmdmbwvqboqlvdkoz-\\t\\tWkf#avw#mlwgfmpjwzAqjwbjm@kjmfpfob`h#lewqjavwfJqfobmg!#gbwb.eb`wlqpqf`fjufwkbw#jpOjaqbqzkvpabmgjm#eb`wbeebjqp@kbqofpqbgj`boaqlvdkwejmgjmdobmgjmd9obmd>!qfwvqm#ofbgfqpsobmmfgsqfnjvnsb`hbdfBnfqj`bFgjwjlm^%rvlw8Nfppbdfmffg#wlubovf>!`lnsof{ollhjmdpwbwjlmafojfufpnboofq.nlajofqf`lqgptbmw#wlhjmg#leEjqfel{zlv#bqfpjnjobqpwvgjfgnb{jnvnkfbgjmdqbsjgoz`ojnbwfhjmdglnfnfqdfgbnlvmwpelvmgfgsjlmffqelqnvobgzmbpwzklt#wl#Pvsslqwqfufmvff`lmlnzQfpvowpaqlwkfqplogjfqobqdfoz`boojmd-%rvlw8B``lvmwFgtbqg#pfdnfmwQlafqw#feelqwpSb`jej`ofbqmfgvs#tjwkkfjdkw9tf#kbufBmdfofpmbwjlmp\\\\pfbq`kbssojfgb`rvjqfnbppjufdqbmwfg9#ebopfwqfbwfgajddfpwafmfejwgqjujmdPwvgjfpnjmjnvnsfqkbspnlqmjmdpfoojmdjp#vpfgqfufqpfubqjbmw#qlof>!njppjmdb`kjfufsqlnlwfpwvgfmwplnflmff{wqfnfqfpwlqfalwwln9fuloufgboo#wkfpjwfnbsfmdojpktbz#wl##Bvdvpwpznalop@lnsbmznbwwfqpnvpj`bobdbjmpwpfqujmd~*+*8\\x0E\\tsbznfmwwqlvaof`lm`fsw`lnsbqfsbqfmwpsobzfqpqfdjlmpnlmjwlq#$$Wkf#tjmmjmdf{solqfbgbswfgDboofqzsqlgv`fbajojwzfmkbm`f`bqffqp*-#Wkf#`loof`wPfbq`k#bm`jfmwf{jpwfgellwfq#kbmgofqsqjmwfg`lmplofFbpwfqmf{slqwptjmgltp@kbmmfojoofdbomfvwqbopvddfpw\\\\kfbgfqpjdmjmd-kwno!=pfwwofgtfpwfqm`bvpjmd.tfahjw`objnfgIvpwj`f`kbswfquj`wjnpWklnbp#nlyjoobsqlnjpfsbqwjfpfgjwjlmlvwpjgf9ebopf/kvmgqfgLoznsj`\\\\avwwlmbvwklqpqfb`kfg`kqlmj`gfnbmgppf`lmgpsqlwf`wbglswfgsqfsbqfmfjwkfqdqfbwozdqfbwfqlufqboojnsqluf`lnnbmgpsf`jbopfbq`k-tlqpkjsevmgjmdwklvdkwkjdkfpwjmpwfbgvwjojwzrvbqwfq@vowvqfwfpwjmd`ofbqozf{slpfgAqltpfqojafqbo~#`bw`kSqlif`wf{bnsofkjgf+*8EolqjgbbmptfqpbooltfgFnsfqlqgfefmpfpfqjlvpeqffglnPfufqbo.avwwlmEvqwkfqlvw#le#\\\">#mvoowqbjmfgGfmnbqhuljg+3*,boo-ipsqfufmwQfrvfpwPwfskfm\\t\\tTkfm#lapfquf?,k1=\\x0E\\tNlgfqm#sqlujgf!#bow>!alqgfqp-\\t\\tElq#\\t\\tNbmz#bqwjpwpsltfqfgsfqelqnej`wjlmwzsf#lenfgj`bowj`hfwplsslpfg@lvm`jotjwmfppivpwj`fDflqdf#Afodjvn---?,b=wtjwwfqmlwbaoztbjwjmdtbqebqf#Lwkfq#qbmhjmdskqbpfpnfmwjlmpvqujufp`klobq?,s=\\x0E\\t#@lvmwqzjdmlqfgolpp#leivpw#bpDflqdjbpwqbmdf?kfbg=?pwlssfg2$^*8\\x0E\\tjpobmgpmlwbaofalqgfq9ojpw#le`bqqjfg233/333?,k0=\\t#pfufqboaf`lnfppfof`w#tfggjmd33-kwnonlmbq`klee#wkfwfb`kfqkjdkoz#ajloldzojef#lelq#fufmqjpf#le%qbrvl8sovplmfkvmwjmd+wklvdkGlvdobpiljmjmd`jq`ofpElq#wkfBm`jfmwUjfwmbnufkj`ofpv`k#bp`qzpwboubovf#>Tjmgltpfmilzfgb#pnboobppvnfg?b#jg>!elqfjdm#Boo#qjklt#wkfGjpsobzqfwjqfgkltfufqkjggfm8abwwofppffhjmd`bajmfwtbp#mlwollh#bw`lmgv`wdfw#wkfIbmvbqzkbssfmpwvqmjmdb9klufqLmojmf#Eqfm`k#ob`hjmdwzsj`bof{wqb`wfmfnjfpfufm#jedfmfqbwgf`jgfgbqf#mlw,pfbq`kafojfep.jnbdf9ol`bwfgpwbwj`-oldjm!=`lmufqwujlofmwfmwfqfgejqpw!=`jq`vjwEjmobmg`kfnjpwpkf#tbp23s{8!=bp#pv`kgjujgfg?,psbm=tjoo#afojmf#leb#dqfbwnzpwfqz,jmgf{-eboojmdgvf#wl#qbjotbz`loofdfnlmpwfqgfp`fmwjw#tjwkmv`ofbqIftjpk#sqlwfpwAqjwjpkeoltfqpsqfgj`wqfelqnpavwwlm#tkl#tbpof`wvqfjmpwbmwpvj`jgfdfmfqj`sfqjlgpnbqhfwpPl`jbo#ejpkjmd`lnajmfdqbskj`tjmmfqp?aq#,=?az#wkf#MbwvqboSqjub`z`llhjfplvw`lnfqfploufPtfgjpkaqjfeozSfqpjbmpl#nv`k@fmwvqzgfsj`wp`lovnmpklvpjmdp`qjswpmf{w#wlafbqjmdnbssjmdqfujpfgiRvfqz+.tjgwk9wjwof!=wllowjsPf`wjlmgfpjdmpWvqhjpkzlvmdfq-nbw`k+~*+*8\\t\\tavqmjmdlsfqbwfgfdqffpplvq`f>Qj`kbqg`olpfozsobpwj`fmwqjfp?,wq=\\x0E\\t`lolq9 vo#jg>!slppfppqloojmdskzpj`pebjojmdf{f`vwf`lmwfpwojmh#wlGfebvow?aq#,=\\t9#wqvf/`kbqwfqwlvqjpn`obppj`sql`ffgf{sobjm?,k2=\\x0E\\tlmojmf-<{no#ufkfosjmdgjbnlmgvpf#wkfbjqojmffmg#..=*-bwwq+qfbgfqpklpwjmd eeeeeeqfbojyfUjm`fmwpjdmbop#pq`>!,Sqlgv`wgfpsjwfgjufqpfwfoojmdSvaoj`#kfog#jmIlpfsk#wkfbwqfbeef`wp?pwzof=b#obqdfglfpm$wobwfq/#Fofnfmwebuj`lm`qfbwlqKvmdbqzBjqslqwpff#wkfpl#wkbwNj`kbfoPzpwfnpSqldqbnp/#bmg##tjgwk>f%rvlw8wqbgjmdofew!=\\tsfqplmpDlogfm#Beebjqpdqbnnbqelqnjmdgfpwqlzjgfb#le`bpf#lelogfpw#wkjp#jp-pq`#>#`bqwllmqfdjpwq@lnnlmpNvpojnpTkbw#jpjm#nbmznbqhjmdqfufbopJmgffg/frvbooz,pklt\\\\blvwgllqfp`bsf+Bvpwqjbdfmfwj`pzpwfn/Jm#wkf#pjwwjmdKf#boplJpobmgpB`bgfnz\\t\\n\\n?\\\"..Gbmjfo#ajmgjmdaol`h!=jnslpfgvwjojyfBaqbkbn+f{`fswxtjgwk9svwwjmd*-kwno+\\x7F\\x7F#X^8\\tGBWBX#)hjw`kfmnlvmwfgb`wvbo#gjbof`wnbjmoz#\\\\aobmh$jmpwboof{sfqwpje+wzsfJw#bopl%`lsz8#!=Wfqnpalqm#jmLswjlmpfbpwfqmwbohjmd`lm`fqmdbjmfg#lmdljmdivpwjez`qjwj`peb`wlqzjwp#ltmbppbvowjmujwfgobpwjmdkjp#ltmkqfe>!,!#qfo>!gfufols`lm`fqwgjbdqbngloobqp`ovpwfqsksbo`lklo*8~*+*8vpjmd#b=?psbm=ufppfopqfujuboBggqfppbnbwfvqbmgqljgboofdfgjoomfpptbohjmd`fmwfqprvbojeznbw`kfpvmjejfgf{wjm`wGfefmpfgjfg#jm\\t\\n?\\\"..#`vpwlnpojmhjmdOjwwof#Allh#lefufmjmdnjm-iptfbqjmdBoo#Qjd8\\t~*+*8qbjpjmd#Bopl/#`qv`jbobalvw!=gf`obqf..=\\t?p`ejqfel{bp#nv`kbssojfpjmgf{/#p/#avw#wzsf#>#\\t\\x0E\\t?\\\"..wltbqgpQf`lqgpSqjubwfElqfjdmSqfnjfq`klj`fpUjqwvboqfwvqmp@lnnfmwSltfqfgjmojmf8slufqwz`kbnafqOjujmd#ulovnfpBmwklmzoldjm!#QfobwfgF`lmlnzqfb`kfp`vwwjmddqbujwzojef#jm@kbswfq.pkbgltMlwbaof?,wg=\\x0E\\t#qfwvqmpwbgjvntjgdfwpubqzjmdwqbufopkfog#aztkl#bqftlqh#jmeb`vowzbmdvobqtkl#kbgbjqslqwwltm#le\\t\\tPlnf#$`oj`h$`kbqdfphfztlqgjw#tjoo`jwz#le+wkjp*8Bmgqft#vmjrvf#`kf`hfglq#nlqf033s{8#qfwvqm8qpjlm>!sovdjmptjwkjm#kfqpfoePwbwjlmEfgfqboufmwvqfsvaojpkpfmw#wlwfmpjlmb`wqfpp`lnf#wlejmdfqpGvhf#lesflsof/f{soljwtkbw#jpkbqnlmzb#nbilq!9!kwwsjm#kjp#nfmv!=\\tnlmwkozleej`fq`lvm`jodbjmjmdfufm#jmPvnnbqzgbwf#leolzbowzejwmfppbmg#tbpfnsfqlqpvsqfnfPf`lmg#kfbqjmdQvppjbmolmdfpwBoafqwbobwfqbopfw#le#pnboo!=-bssfmggl#tjwkefgfqboabmh#leafmfbwkGfpsjwf@bsjwbodqlvmgp*/#bmg#sfq`fmwjw#eqln`olpjmd`lmwbjmJmpwfbgejewffmbp#tfoo-zbkll-qfpslmgejdkwfqlap`vqfqfeof`wlqdbmj`>#Nbwk-fgjwjmdlmojmf#sbggjmdb#tkloflmfqqlqzfbq#lefmg#le#abqqjfqtkfm#jwkfbgfq#klnf#leqfpvnfgqfmbnfgpwqlmd=kfbwjmdqfwbjmp`olvgeqtbz#le#Nbq`k#2hmltjmdjm#sbqwAfwtffmofpplmp`olpfpwujqwvboojmhp!=`qlppfgFMG#..=ebnlvp#btbqgfgOj`fmpfKfbowk#ebjqoz#tfbowkznjmjnboBeqj`bm`lnsfwfobafo!=pjmdjmdebqnfqpAqbpjo*gjp`vppqfsob`fDqfdlqzelmw#`lsvqpvfgbssfbqpnbhf#vsqlvmgfgalwk#leaol`hfgpbt#wkfleej`fp`lolvqpje+gl`vtkfm#kffmelq`fsvpk+evBvdvpw#VWE.;!=Ebmwbpzjm#nlpwjmivqfgVpvboozebqnjmd`olpvqflaif`w#gfefm`fvpf#le#Nfgj`bo?algz=\\tfujgfmwaf#vpfghfz@lgfpj{wffmJpobnj` 333333fmwjqf#tjgfoz#b`wjuf#+wzsflelmf#`bm`lolq#>psfbhfqf{wfmgpSkzpj`pwfqqbjm?walgz=evmfqboujftjmdnjggof#`qj`hfwsqlskfwpkjewfggl`wlqpQvppfoo#wbqdfw`lnsb`wbodfaqbpl`jbo.avoh#lenbm#bmg?,wg=\\t#kf#ofew*-ubo+*ebopf*8oldj`boabmhjmdklnf#wlmbnjmd#Bqjylmb`qfgjwp*8\\t~*8\\telvmgfqjm#wvqm@loojmpafelqf#Avw#wkf`kbqdfgWjwof!=@bswbjmpsfoofgdlggfppWbd#..=Bggjmd9avw#tbpQf`fmw#sbwjfmwab`h#jm>ebopf%Ojm`lomtf#hmlt@lvmwfqIvgbjpnp`qjsw#bowfqfg$^*8\\t##kbp#wkfvm`ofbqFufmw$/alwk#jmmlw#boo\\t\\t?\\\"..#sob`jmdkbqg#wl#`fmwfqplqw#le`ojfmwppwqffwpAfqmbqgbppfqwpwfmg#wlebmwbpzgltm#jmkbqalvqEqffglniftfoqz,balvw--pfbq`kofdfmgpjp#nbgfnlgfqm#lmoz#lmlmoz#wljnbdf!#ojmfbq#sbjmwfqbmg#mlwqbqfoz#b`qlmzngfojufqpklqwfq33%bns8bp#nbmztjgwk>!,)#?\\\"X@wjwof#>le#wkf#oltfpw#sj`hfg#fp`bsfgvpfp#lesflsofp#Svaoj`Nbwwkftwb`wj`pgbnbdfgtbz#elqobtp#lefbpz#wl#tjmgltpwqlmd##pjnsof~`bw`k+pfufmwkjmelal{tfmw#wlsbjmwfg`jwjyfmJ#glm$wqfwqfbw-#Plnf#tt-!*8\\talnajmdnbjowl9nbgf#jm-#Nbmz#`bqqjfp\\x7F\\x7Fx~8tjtlqh#lepzmlmzngfefbwpebulqfglswj`bosbdfWqbvmofpp#pfmgjmdofew!=?`lnP`lqBoo#wkfiRvfqz-wlvqjpw@obppj`ebopf!#Tjokfonpvavqapdfmvjmfajpklsp-psojw+dolabo#elooltpalgz#lemlnjmbo@lmwb`wpf`vobqofew#wl`kjfeoz.kjggfm.abmmfq?,oj=\\t\\t-#Tkfm#jm#alwkgjpnjppF{solqfbotbzp#ujb#wkfpsb/]lotfoebqfqvojmd#bqqbmdf`bswbjmkjp#plmqvof#lekf#wllhjwpfoe/>3%bns8+`boofgpbnsofpwl#nbhf`ln,sbdNbqwjm#Hfmmfgzb``fswpevoo#lekbmgofgAfpjgfp,,..=?,baof#wlwbqdfwpfppfm`fkjn#wl#jwp#az#`lnnlm-njmfqbowl#wbhftbzp#wlp-lqd,obgujpfgsfmbowzpjnsof9je#wkfzOfwwfqpb#pklqwKfqafqwpwqjhfp#dqlvsp-ofmdwkeojdkwplufqobspoltoz#ofppfq#pl`jbo#?,s=\\t\\n\\njw#jmwlqbmhfg#qbwf#levo=\\x0E\\t##bwwfnswsbjq#lenbhf#jwHlmwbhwBmwlmjlkbujmd#qbwjmdp#b`wjufpwqfbnpwqbssfg!*-`pp+klpwjofofbg#wlojwwof#dqlvsp/Sj`wvqf..=\\x0E\\t\\x0E\\t#qltp>!#laif`wjmufqpf?ellwfq@vpwlnU=?_,p`qploujmd@kbnafqpobufqztlvmgfgtkfqfbp\\\">#$vmgelq#boosbqwoz#.qjdkw9Bqbajbmab`hfg#`fmwvqzvmjw#lenlajof.Fvqlsf/jp#klnfqjph#legfpjqfg@ojmwlm`lpw#lebdf#le#af`lnf#mlmf#les%rvlw8Njggof#fbg$*X3@qjwj`ppwvgjlp=%`lsz8dqlvs!=bppfnaonbhjmd#sqfppfgtjgdfw-sp9!#<#qfavjowaz#plnfElqnfq#fgjwlqpgfobzfg@bmlmj`kbg#wkfsvpkjmd`obpp>!avw#bqfsbqwjboAbazolmalwwln#`bqqjfq@lnnbmgjwp#vpfBp#tjwk`lvqpfpb#wkjqggfmlwfpbopl#jmKlvpwlm13s{8!=b``vpfgglvaof#dlbo#leEbnlvp#*-ajmg+sqjfpwp#Lmojmfjm#Ivozpw#(#!d`lmpvowgf`jnbokfosevoqfujufgjp#ufqzq$($jswolpjmd#efnbofpjp#boplpwqjmdpgbzp#lebqqjuboevwvqf#?laif`welq`jmdPwqjmd+!#,=\\t\\n\\nkfqf#jpfm`lgfg-##Wkf#aboollmglmf#az,`lnnlmad`lolqobt#le#Jmgjbmbbuljgfgavw#wkf1s{#0s{irvfqz-bewfq#bsloj`z-nfm#bmgellwfq.>#wqvf8elq#vpfp`qffm-Jmgjbm#jnbdf#>ebnjoz/kwws9,,#%maps8gqjufqpfwfqmbopbnf#bpmlwj`fgujftfqp~*+*8\\t#jp#nlqfpfbplmpelqnfq#wkf#mftjp#ivpw`lmpfmw#Pfbq`ktbp#wkftkz#wkfpkjssfgaq=?aq=tjgwk9#kfjdkw>nbgf#le`vjpjmfjp#wkbwb#ufqz#Bgnjqbo#ej{fg8mlqnbo#NjppjlmSqfpp/#lmwbqjl`kbqpfwwqz#wl#jmubgfg>!wqvf!psb`jmdjp#nlpwb#nlqf#wlwboozeboo#le~*8\\x0E\\t##jnnfmpfwjnf#jmpfw#lvwpbwjpezwl#ejmggltm#wlolw#le#Sobzfqpjm#Ivmfrvbmwvnmlw#wkfwjnf#wlgjpwbmwEjmmjpkpq`#>#+pjmdof#kfos#leDfqnbm#obt#bmgobafofgelqfpwp`llhjmdpsb`f!=kfbgfq.tfoo#bpPwbmofzaqjgdfp,dolabo@qlbwjb#Balvw#X3^8\\t##jw/#bmgdqlvsfgafjmd#b*xwkqltkf#nbgfojdkwfqfwkj`boEEEEEE!alwwln!ojhf#b#fnsolzpojuf#jmbp#pffmsqjmwfqnlpw#leva.ojmhqfif`wpbmg#vpfjnbdf!=pv``ffgeffgjmdMv`ofbqjmelqnbwl#kfosTlnfm$pMfjwkfqNf{j`bmsqlwfjm?wbaof#az#nbmzkfbowkzobtpvjwgfujpfg-svpk+xpfoofqppjnsoz#Wkqlvdk-`llhjf#Jnbdf+logfq!=vp-ip!=#Pjm`f#vmjufqpobqdfq#lsfm#wl\\\"..#fmgojfp#jm$^*8\\x0E\\t##nbqhfwtkl#jp#+!GLN@lnbmbdfglmf#elqwzsfle#Hjmdglnsqlejwpsqlslpfwl#pklt`fmwfq8nbgf#jwgqfppfgtfqf#jmnj{wvqfsqf`jpfbqjpjmdpq`#>#$nbhf#b#pf`vqfgAbswjpwulwjmd#\\t\\n\\nubq#Nbq`k#1dqft#vs@ojnbwf-qfnlufphjoofgtbz#wkf?,kfbg=eb`f#leb`wjmd#qjdkw!=wl#tlqhqfgv`fpkbp#kbgfqf`wfgpklt+*8b`wjlm>allh#lebm#bqfb>>#!kww?kfbgfq\\t?kwno=`lmelqneb`jmd#`llhjf-qfoz#lmklpwfg#-`vpwlnkf#tfmwavw#elqpsqfbg#Ebnjoz#b#nfbmplvw#wkfelqvnp-ellwbdf!=Nlajo@ofnfmwp!#jg>!bp#kjdkjmwfmpf..=?\\\"..efnbof#jp#pffmjnsojfgpfw#wkfb#pwbwfbmg#kjpebpwfpwafpjgfpavwwlm\\\\alvmgfg!=?jnd#Jmelal{fufmwp/b#zlvmdbmg#bqfMbwjuf#`kfbsfqWjnflvwbmg#kbpfmdjmfptlm#wkf+nlpwozqjdkw9#ejmg#b#.alwwlnSqjm`f#bqfb#lenlqf#lepfbq`k\\\\mbwvqf/ofdboozsfqjlg/obmg#lelq#tjwkjmgv`fgsqlujmdnjppjofol`boozBdbjmpwwkf#tbzh%rvlw8s{8!=\\x0E\\tsvpkfg#babmglmmvnfqbo@fqwbjmJm#wkjpnlqf#jmlq#plnfmbnf#jpbmg/#jm`qltmfgJPAM#3.`qfbwfpL`wlafqnbz#mlw`fmwfq#obwf#jmGfefm`ffmb`wfgtjpk#wlaqlbgoz`llojmdlmolbg>jw-#Wkfqf`lufqNfnafqpkfjdkw#bppvnfp?kwno=\\tsflsof-jm#lmf#>tjmgltellwfq\\\\b#dllg#qfhobnblwkfqp/wl#wkjp\\\\`llhjfsbmfo!=Olmglm/gfejmfp`qvpkfgabswjpn`lbpwbopwbwvp#wjwof!#nluf#wlolpw#jmafwwfq#jnsojfpqjuboqzpfqufqp#PzpwfnSfqkbspfp#bmg#`lmwfmgeoltjmdobpwfg#qjpf#jmDfmfpjpujft#leqjpjmd#pffn#wlavw#jm#ab`hjmdkf#tjoodjufm#bdjujmd#`jwjfp-eolt#le#Obwfq#boo#avwKjdktbzlmoz#azpjdm#lekf#glfpgjeefqpabwwfqz%bns8obpjmdofpwkqfbwpjmwfdfqwbhf#lmqfevpfg`boofg#>VP%bnsPff#wkfmbwjufpaz#wkjppzpwfn-kfbg#le9klufq/ofpajbmpvqmbnfbmg#boo`lnnlm,kfbgfq\\\\\\\\sbqbnpKbqubqg,sj{fo-qfnlubopl#olmdqlof#leiljmwozphzp`qbVmj`lgfaq#,=\\x0E\\tBwobmwbmv`ofvp@lvmwz/svqfoz#`lvmw!=fbpjoz#avjog#blm`oj`hb#djufmsljmwfqk%rvlw8fufmwp#fopf#x\\tgjwjlmpmlt#wkf/#tjwk#nbm#tkllqd,Tfalmf#bmg`buboqzKf#gjfgpfbwwof33/333#xtjmgltkbuf#wlje+tjmgbmg#jwpplofoz#n%rvlw8qfmftfgGfwqljwbnlmdpwfjwkfq#wkfn#jmPfmbwlqVp?,b=?Hjmd#leEqbm`jp.sqlgv`kf#vpfgbqw#bmgkjn#bmgvpfg#azp`lqjmdbw#klnfwl#kbufqfobwfpjajojwzeb`wjlmAveebolojmh!=?tkbw#kfeqff#wl@jwz#le`lnf#jmpf`wlqp`lvmwfglmf#gbzmfqulvpprvbqf#~8je+dljm#tkbwjnd!#bojp#lmozpfbq`k,wvfpgbzollpfozPlolnlmpf{vbo#.#?b#kqnfgjvn!GL#MLW#Eqbm`f/tjwk#b#tbq#bmgpf`lmg#wbhf#b#=\\x0E\\t\\x0E\\t\\x0E\\tnbqhfw-kjdktbzglmf#jm`wjujwz!obpw!=laojdfgqjpf#wl!vmgfejnbgf#wl#Fbqoz#sqbjpfgjm#jwp#elq#kjpbwkofwfIvsjwfqZbkll\\\"#wfqnfg#pl#nbmzqfbooz#p-#Wkf#b#tlnbmgjqf`w#qjdkw!#aj`z`ofb`jmd>!gbz#bmgpwbwjmdQbwkfq/kjdkfq#Leej`f#bqf#mltwjnfp/#tkfm#b#sbz#elqlm#wkjp.ojmh!=8alqgfqbqlvmg#bmmvbo#wkf#Mftsvw#wkf-`ln!#wbhjm#wlb#aqjfe+jm#wkfdqlvsp-8#tjgwkfmyznfppjnsof#jm#obwfxqfwvqmwkfqbszb#sljmwabmmjmdjmhp!=\\t+*8!#qfb#sob`f_v330@bbalvw#bwq=\\x0E\\t\\n\\n``lvmw#djufp#b?P@QJSWQbjotbzwkfnfp,wlloal{AzJg+!{kvnbmp/tbw`kfpjm#plnf#je#+tj`lnjmd#elqnbwp#Vmgfq#avw#kbpkbmgfg#nbgf#azwkbm#jmefbq#legfmlwfg,jeqbnfofew#jmulowbdfjm#fb`kb%rvlw8abpf#leJm#nbmzvmgfqdlqfdjnfpb`wjlm#?,s=\\x0E\\t?vpwlnUb8%dw8?,jnslqwplq#wkbwnlpwoz#%bns8qf#pjyf>!?,b=?,kb#`obppsbppjufKlpw#>#TkfwkfqefqwjofUbqjlvp>X^8+ev`bnfqbp,=?,wg=b`wp#bpJm#plnf=\\x0E\\t\\x0E\\t?\\\"lqdbmjp#?aq#,=Afjijmd`bwbo/Lgfvwp`kfvqlsfvfvphbqbdbfjodfpufmphbfpsb/]bnfmpbifvpvbqjlwqbabiln/E{j`ls/Mdjmbpjfnsqfpjpwfnbl`wvaqfgvqbmwfb/]bgjqfnsqfpbnlnfmwlmvfpwqlsqjnfqbwqbu/Epdqb`jbpmvfpwqbsql`fplfpwbglp`bojgbgsfqplmbm/Vnfqlb`vfqgln/Vpj`bnjfnaqllefqwbpbodvmlpsb/Apfpfifnsolgfqf`klbgfn/Mpsqjubglbdqfdbqfmob`fpslpjaofklwfofppfujoobsqjnfql/Vowjnlfufmwlpbq`kjul`vowvqbnvifqfpfmwqbgbbmvm`jlfnabqdlnfq`bgldqbmgfpfpwvgjlnfilqfpefaqfqlgjpf/]lwvqjpnl`/_gjdlslqwbgbfpsb`jlebnjojbbmwlmjlsfqnjwfdvbqgbqbodvmbpsqf`jlpbodvjfmpfmwjglujpjwbpw/Awvol`lml`fqpfdvmgl`lmpfileqbm`jbnjmvwlppfdvmgbwfmfnlpfef`wlpn/Mobdbpfpj/_mqfujpwbdqbmbgb`lnsqbqjmdqfpldbq`/Abb``j/_mf`vbglqrvjfmfpjm`ovplgfafq/Mnbwfqjbklnaqfpnvfpwqbslgq/Abnb/]bmb/Vowjnbfpwbnlplej`jbowbnajfmmjmd/Vmpbovglpslgfnlpnfilqbqslpjwjlmavpjmfppklnfsbdfpf`vqjwzobmdvbdfpwbmgbqg`bnsbjdmefbwvqfp`bwfdlqzf{wfqmbo`kjogqfmqfpfqufgqfpfbq`kf{`kbmdfebulqjwfwfnsobwfnjojwbqzjmgvpwqzpfquj`fpnbwfqjbosqlgv`wpy.jmgf{9`lnnfmwpplewtbqf`lnsofwf`bofmgbqsobwelqnbqwj`ofpqfrvjqfgnlufnfmwrvfpwjlmavjogjmdslojwj`pslppjaofqfojdjlmskzpj`boeffgab`hqfdjpwfqsj`wvqfpgjpbaofgsqlwl`lobvgjfm`fpfwwjmdpb`wjujwzfofnfmwpofbqmjmdbmzwkjmdbapwqb`wsqldqfpplufqujftnbdbyjmff`lmlnj`wqbjmjmdsqfppvqfubqjlvp#?pwqlmd=sqlsfqwzpklssjmdwldfwkfqbgubm`fgafkbujlqgltmolbgefbwvqfgellwaboopfof`wfgObmdvbdfgjpwbm`fqfnfnafqwqb`hjmdsbpptlqgnlgjejfgpwvgfmwpgjqf`wozejdkwjmdmlqwkfqmgbwbabpfefpwjuboaqfbhjmdol`bwjlmjmwfqmfwgqlsgltmsqb`wj`ffujgfm`fevm`wjlmnbqqjbdfqfpslmpfsqlaofnpmfdbwjufsqldqbnpbmbozpjpqfofbpfgabmmfq!=svq`kbpfsloj`jfpqfdjlmbo`qfbwjufbqdvnfmwallhnbqhqfefqqfq`kfnj`bogjujpjlm`booab`hpfsbqbwfsqlif`wp`lmeoj`wkbqgtbqfjmwfqfpwgfojufqznlvmwbjmlawbjmfg>#ebopf8elq+ubq#b``fswfg`bsb`jwz`lnsvwfqjgfmwjwzbjq`qbewfnsolzfgsqlslpfgglnfpwj`jm`ovgfpsqlujgfgklpsjwboufqwj`bo`loobspfbssqlb`ksbqwmfqpoldl!=?bgbvdkwfqbvwklq!#`vowvqboebnjojfp,jnbdfp,bppfnaozsltfqevowfb`kjmdejmjpkfggjpwqj`w`qjwj`bo`dj.ajm,svqslpfpqfrvjqfpfof`wjlmaf`lnjmdsqlujgfpb`bgfnj`f{fq`jpfb`wvbooznfgj`jmf`lmpwbmwb``jgfmwNbdbyjmfgl`vnfmwpwbqwjmdalwwln!=lapfqufg9#%rvlw8f{wfmgfgsqfujlvpPlewtbqf`vpwlnfqgf`jpjlmpwqfmdwkgfwbjofgpojdkwozsobmmjmdwf{wbqfb`vqqfm`zfufqzlmfpwqbjdkwwqbmpefqslpjwjufsqlgv`fgkfqjwbdfpkjssjmdbaplovwfqf`fjufgqfofubmwavwwlm!#ujlofm`fbmztkfqfafmfejwpobvm`kfgqf`fmwozboojbm`felooltfgnvowjsofavoofwjmjm`ovgfgl``vqqfgjmwfqmbo'+wkjp*-qfsvaoj`=?wq=?wg`lmdqfppqf`lqgfgvowjnbwfplovwjlm?vo#jg>!gjp`lufqKlnf?,b=tfapjwfpmfwtlqhpbowklvdkfmwjqfoznfnlqjbonfppbdfp`lmwjmvfb`wjuf!=plnftkbwuj`wlqjbTfpwfqm##wjwof>!Ol`bwjlm`lmwqb`wujpjwlqpGltmolbgtjwklvw#qjdkw!=\\tnfbpvqfptjgwk#>#ubqjbaofjmuloufgujqdjmjbmlqnboozkbssfmfgb``lvmwppwbmgjmdmbwjlmboQfdjpwfqsqfsbqfg`lmwqlopb``vqbwfajqwkgbzpwqbwfdzleej`jbodqbskj`p`qjnjmboslppjaoz`lmpvnfqSfqplmbopsfbhjmdubojgbwfb`kjfufg-isd!#,=nb`kjmfp?,k1=\\t##hfztlqgpeqjfmgozaqlwkfqp`lnajmfglqjdjmbo`lnslpfgf{sf`wfgbgfrvbwfsbhjpwbmeloolt!#ubovbaof?,obafo=qfobwjufaqjmdjmdjm`qfbpfdlufqmlqsovdjmp,Ojpw#le#Kfbgfq!=!#mbnf>!#+%rvlw8dqbgvbwf?,kfbg=\\t`lnnfq`fnbobzpjbgjqf`wlqnbjmwbjm8kfjdkw9p`kfgvof`kbmdjmdab`h#wl#`bwkloj`sbwwfqmp`lolq9# dqfbwfpwpvssojfpqfojbaof?,vo=\\t\\n\\n?pfof`w#`jwjyfmp`olwkjmdtbw`kjmd?oj#jg>!psf`jej``bqqzjmdpfmwfm`f?`fmwfq=`lmwqbpwwkjmhjmd`bw`k+f*plvwkfqmNj`kbfo#nfq`kbmw`bqlvpfosbggjmd9jmwfqjlq-psojw+!ojybwjlmL`wlafq#*xqfwvqmjnsqlufg..%dw8\\t\\t`lufqbdf`kbjqnbm-smd!#,=pvaif`wpQj`kbqg#tkbwfufqsqlabaozqf`lufqzabpfabooivgdnfmw`lmmf`w--`pp!#,=#tfapjwfqfslqwfggfebvow!,=?,b=\\x0E\\tfof`wqj`p`lwobmg`qfbwjlmrvbmwjwz-#JPAM#3gjg#mlw#jmpwbm`f.pfbq`k.!#obmd>!psfbhfqp@lnsvwfq`lmwbjmpbq`kjufpnjmjpwfqqfb`wjlmgjp`lvmwJwbojbml`qjwfqjbpwqlmdoz9#$kwws9$p`qjsw$`lufqjmdleefqjmdbssfbqfgAqjwjpk#jgfmwjezEb`fallhmvnfqlvpufkj`ofp`lm`fqmpBnfqj`bmkbmgojmdgju#jg>!Tjoojbn#sqlujgfq\\\\`lmwfmwb``vqb`zpf`wjlm#bmgfqplmeof{jaof@bwfdlqzobtqfm`f?p`qjsw=obzlvw>!bssqlufg#nb{jnvnkfbgfq!=?,wbaof=Pfquj`fpkbnjowlm`vqqfmw#`bmbgjbm`kbmmfop,wkfnfp,,bqwj`oflswjlmboslqwvdboubovf>!!jmwfqubotjqfofppfmwjwofgbdfm`jfpPfbq`k!#nfbpvqfgwklvpbmgpsfmgjmd%kfoojs8mft#Gbwf!#pjyf>!sbdfMbnfnjggof!#!#,=?,b=kjggfm!=pfrvfm`fsfqplmbolufqeoltlsjmjlmpjoojmljpojmhp!=\\t\\n?wjwof=ufqpjlmppbwvqgbzwfqnjmbojwfnsqlsfmdjmffqpf`wjlmpgfpjdmfqsqlslpbo>!ebopf!Fpsb/]loqfofbpfppvanjw!#fq%rvlw8bggjwjlmpznswlnplqjfmwfgqfplvq`fqjdkw!=?sofbpvqfpwbwjlmpkjpwlqz-ofbujmd##alqgfq>`lmwfmwp`fmwfq!=-\\t\\tPlnf#gjqf`wfgpvjwbaofavodbqjb-pklt+*8gfpjdmfgDfmfqbo#`lm`fswpF{bnsofptjoojbnpLqjdjmbo!=?psbm=pfbq`k!=lsfqbwlqqfrvfpwpb#%rvlw8booltjmdGl`vnfmwqfujpjlm-#\\t\\tWkf#zlvqpfoe@lmwb`w#nj`kjdbmFmdojpk#`lovnajbsqjlqjwzsqjmwjmdgqjmhjmdeb`jojwzqfwvqmfg@lmwfmw#leej`fqpQvppjbm#dfmfqbwf.;;6:.2!jmgj`bwfebnjojbq#rvbojwznbqdjm93#`lmwfmwujftslqw`lmwb`wp.wjwof!=slqwbaof-ofmdwk#fojdjaofjmuloufpbwobmwj`lmolbg>!gfebvow-pvssojfgsbznfmwpdolppbqz\\t\\tBewfq#dvjgbm`f?,wg=?wgfm`lgjmdnjggof!=`bnf#wl#gjpsobzpp`lwwjpkilmbwkbmnbilqjwztjgdfwp-`ojmj`bowkbjobmgwfb`kfqp?kfbg=\\t\\nbeef`wfgpvsslqwpsljmwfq8wlPwqjmd?,pnboo=lhobklnbtjoo#af#jmufpwlq3!#bow>!klojgbzpQfplvq`foj`fmpfg#+tkj`k#-#Bewfq#`lmpjgfqujpjwjmdf{solqfqsqjnbqz#pfbq`k!#bmgqljg!rvj`hoz#nffwjmdpfpwjnbwf8qfwvqm#8`lolq9 #kfjdkw>bssqlubo/#%rvlw8#`kf`hfg-njm-ip!nbdmfwj`=?,b=?,kelqf`bpw-#Tkjof#wkvqpgbzgufqwjpf%fb`vwf8kbp@obppfubovbwflqgfqjmdf{jpwjmdsbwjfmwp#Lmojmf#`lolqbglLswjlmp!`bnsafoo?\\\"..#fmg?,psbm=??aq#,=\\x0E\\t\\\\slsvsp\\x7Fp`jfm`fp/%rvlw8#rvbojwz#Tjmgltp#bppjdmfgkfjdkw9#?a#`obppof%rvlw8#ubovf>!#@lnsbmzf{bnsofp?jeqbnf#afojfufpsqfpfmwpnbqpkboosbqw#le#sqlsfqoz*-\\t\\tWkf#wb{lmlnznv`k#le#?,psbm=\\t!#gbwb.pqwvdv/Fpp`qlooWl#sqlif`w?kfbg=\\x0E\\tbwwlqmfzfnskbpjppslmplqpebm`zal{tlqog$p#tjogojef`kf`hfg>pfppjlmpsqldqbnns{8elmw.#Sqlif`wilvqmbopafojfufgub`bwjlmwklnsplmojdkwjmdbmg#wkf#psf`jbo#alqgfq>3`kf`hjmd?,walgz=?avwwlm#@lnsofwf`ofbqej{\\t?kfbg=\\tbqwj`of#?pf`wjlmejmgjmdpqlof#jm#slsvobq##L`wlafqtfapjwf#f{slpvqfvpfg#wl##`kbmdfplsfqbwfg`oj`hjmdfmwfqjmd`lnnbmgpjmelqnfg#mvnafqp##?,gju=`qfbwjmdlmPvanjwnbqzobmg`loofdfpbmbozwj`ojpwjmdp`lmwb`w-olddfgJmbgujplqzpjaojmdp`lmwfmw!p%rvlw8*p-#Wkjp#sb`hbdfp`kf`hal{pvddfpwpsqfdmbmwwlnlqqltpsb`jmd>j`lm-smdibsbmfpf`lgfabpfavwwlm!=dbnaojmdpv`k#bp#/#tkjof#?,psbm=#njpplvqjpslqwjmdwls92s{#-?,psbm=wfmpjlmptjgwk>!1obyzolbgmlufnafqvpfg#jm#kfjdkw>!`qjsw!=\\t%maps8?,?wq=?wg#kfjdkw91,sqlgv`w`lvmwqz#jm`ovgf#ellwfq!#%ow8\\\"..#wjwof!=?,irvfqz-?,elqn=\\t+\\x0BBl\\bQ\\x7F*+\\x0BUm\\x05Gx*kqubwphjjwbojbmlqln/Nm(ow/Pqh/Kf4K4]4C5dwbnaj/Emmlwj`jbpnfmpbifpsfqplmbpgfqf`klpmb`jlmbopfquj`jl`lmwb`wlvpvbqjlpsqldqbnbdlajfqmlfnsqfpbpbmvm`jlpubofm`jb`lolnajbgfpsv/Epgfslqwfpsqlzf`wlsqlgv`wls/Vaoj`lmlplwqlpkjpwlqjbsqfpfmwfnjoolmfpnfgjbmwfsqfdvmwbbmwfqjlqqf`vqplpsqlaofnbpbmwjbdlmvfpwqlplsjmj/_mjnsqjnjqnjfmwqbpbn/Eqj`bufmgfglqpl`jfgbgqfpsf`wlqfbojybqqfdjpwqlsbobaqbpjmwfq/Epfmwlm`fpfpsf`jbonjfnaqlpqfbojgbg`/_qglabybqbdlybs/Mdjmbppl`jbofpaolrvfbqdfpwj/_mborvjofqpjpwfnbp`jfm`jbp`lnsofwlufqpj/_m`lnsofwbfpwvgjlps/Vaoj`blaifwjulboj`bmwfavp`bglq`bmwjgbgfmwqbgbpb``jlmfpbq`kjulppvsfqjlqnbzlq/Abbofnbmjbevm`j/_m/Vowjnlpkb`jfmglbrvfoolpfgj`j/_mefqmbmglbnajfmwfeb`fallhmvfpwqbp`ojfmwfpsql`fplpabpwbmwfsqfpfmwbqfslqwbq`lmdqfplsvaoj`bq`lnfq`jl`lmwqbwli/_ufmfpgjpwqjwlw/E`mj`b`lmivmwlfmfqd/Abwqbabibqbpwvqjbpqf`jfmwfvwjojybqalofw/Ampboubglq`lqqf`wbwqbabilpsqjnfqlpmfdl`jlpojafqwbggfwboofpsbmwboobsq/_{jnlbonfq/Abbmjnbofprvj/Emfp`lqby/_mpf``j/_mavp`bmglls`jlmfpf{wfqjlq`lm`fswlwlgbu/Abdbofq/Abfp`qjajqnfgj`jmboj`fm`jb`lmpvowbbpsf`wlp`q/Awj`bg/_obqfpivpwj`jbgfafq/Mmsfq/Alglmf`fpjwbnbmwfmfqsfrvf/]lqf`jajgbwqjavmbowfmfqjef`bm`j/_m`bmbqjbpgfp`bqdbgjufqplpnboolq`bqfrvjfqfw/E`mj`lgfafq/Abujujfmgbejmbmybpbgfobmwfevm`jlmb`lmpfilpgje/A`jo`jvgbgfpbmwjdvbpbubmybgbw/Eqnjmlvmjgbgfpp/Mm`kfy`bnsb/]bplewlmj`qfujpwbp`lmwjfmfpf`wlqfpnlnfmwlpeb`vowbg`q/Egjwlgjufqpbppvsvfpwleb`wlqfppfdvmglpsfrvf/]b<_!?,pfof`w=Bvpwqbojb!#`obpp>!pjwvbwjlmbvwklqjwzelooltjmdsqjnbqjozlsfqbwjlm`kboofmdfgfufolsfgbmlmznlvpevm`wjlm#evm`wjlmp`lnsbmjfppwqv`wvqfbdqffnfmw!#wjwof>!slwfmwjbofgv`bwjlmbqdvnfmwppf`lmgbqz`lszqjdkwobmdvbdfpf{`ovpjuf`lmgjwjlm?,elqn=\\x0E\\tpwbwfnfmwbwwfmwjlmAjldqbskz~#fopf#x\\tplovwjlmptkfm#wkf#Bmbozwj`pwfnsobwfpgbmdfqlvppbwfoojwfgl`vnfmwpsvaojpkfqjnslqwbmwsqlwlwzsfjmeovfm`f%qbrvl8?,feef`wjufdfmfqboozwqbmpelqnafbvwjevowqbmpslqwlqdbmjyfgsvaojpkfgsqlnjmfmwvmwjo#wkfwkvnambjoMbwjlmbo#-el`vp+*8lufq#wkf#njdqbwjlmbmmlvm`fgellwfq!=\\tf{`fswjlmofpp#wkbmf{sfmpjufelqnbwjlmeqbnftlqhwfqqjwlqzmgj`bwjlm`vqqfmwoz`obppMbnf`qjwj`jpnwqbgjwjlmfopftkfqfBof{bmgfqbssljmwfgnbwfqjbopaqlbg`bpwnfmwjlmfgbeejojbwf?,lswjlm=wqfbwnfmwgjeefqfmw,gfebvow-Sqfpjgfmwlm`oj`h>!ajldqbskzlwkfqtjpfsfqnbmfmwEqbm/KbjpKlooztllgf{sbmpjlmpwbmgbqgp?,pwzof=\\tqfgv`wjlmGf`fnafq#sqfefqqfg@bnaqjgdflsslmfmwpAvpjmfpp#`lmevpjlm=\\t?wjwof=sqfpfmwfgf{sobjmfgglfp#mlw#tlqogtjgfjmwfqeb`fslpjwjlmpmftpsbsfq?,wbaof=\\tnlvmwbjmpojhf#wkf#fppfmwjboejmbm`jbopfof`wjlmb`wjlm>!,babmglmfgFgv`bwjlmsbqpfJmw+pwbajojwzvmbaof#wl?,wjwof=\\tqfobwjlmpMlwf#wkbwfeej`jfmwsfqelqnfgwtl#zfbqpPjm`f#wkfwkfqfelqftqbssfq!=bowfqmbwfjm`qfbpfgAbwwof#lesfq`fjufgwqzjmd#wlmf`fppbqzslqwqbzfgfof`wjlmpFojybafwk?,jeqbnf=gjp`lufqzjmpvqbm`fp-ofmdwk8ofdfmgbqzDfldqbskz`bmgjgbwf`lqslqbwfplnfwjnfppfquj`fp-jmkfqjwfg?,pwqlmd=@lnnvmjwzqfojdjlvpol`bwjlmp@lnnjwwffavjogjmdpwkf#tlqogml#olmdfqafdjmmjmdqfefqfm`f`bmmlw#afeqfrvfm`zwzsj`boozjmwl#wkf#qfobwjuf8qf`lqgjmdsqfpjgfmwjmjwjboozwf`kmjrvfwkf#lwkfqjw#`bm#aff{jpwfm`fvmgfqojmfwkjp#wjnfwfofsklmfjwfnp`lsfsqb`wj`fpbgubmwbdf*8qfwvqm#Elq#lwkfqsqlujgjmdgfnl`qb`zalwk#wkf#f{wfmpjufpveefqjmdpvsslqwfg`lnsvwfqp#evm`wjlmsqb`wj`bopbjg#wkbwjw#nbz#afFmdojpk?,eqln#wkf#p`kfgvofggltmolbgp?,obafo=\\tpvpsf`wfgnbqdjm9#3psjqjwvbo?,kfbg=\\t\\tnj`qlplewdqbgvboozgjp`vppfgkf#af`bnff{f`vwjufirvfqz-ipklvpfklog`lmejqnfgsvq`kbpfgojwfqboozgfpwqlzfgvs#wl#wkfubqjbwjlmqfnbjmjmdjw#jp#mlw`fmwvqjfpIbsbmfpf#bnlmd#wkf`lnsofwfgbodlqjwknjmwfqfpwpqfafoojlmvmgfejmfgfm`lvqbdfqfpjybaofjmuloujmdpfmpjwjufvmjufqpbosqlujpjlm+bowklvdkefbwvqjmd`lmgv`wfg*/#tkj`k#`lmwjmvfg.kfbgfq!=Efaqvbqz#mvnfqlvp#lufqeolt9`lnslmfmweqbdnfmwpf{`foofmw`lopsbm>!wf`kmj`bomfbq#wkf#Bgubm`fg#plvq`f#lef{sqfppfgKlmd#Hlmd#Eb`fallhnvowjsof#nf`kbmjpnfofubwjlmleefmpjuf?,elqn=\\t\\npslmplqfggl`vnfmw-lq#%rvlw8wkfqf#bqfwklpf#tklnlufnfmwpsql`fppfpgjeej`vowpvanjwwfgqf`lnnfmg`lmujm`fgsqlnlwjmd!#tjgwk>!-qfsob`f+`obppj`bo`lbojwjlmkjp#ejqpwgf`jpjlmpbppjpwbmwjmgj`bwfgfulovwjlm.tqbssfq!fmlvdk#wlbolmd#wkfgfojufqfg..=\\x0E\\t?\\\"..Bnfqj`bm#sqlwf`wfgMlufnafq#?,pwzof=?evqmjwvqfJmwfqmfw##lmaovq>!pvpsfmgfgqf`jsjfmwabpfg#lm#Nlqflufq/balojpkfg`loof`wfgtfqf#nbgffnlwjlmbofnfqdfm`zmbqqbwjufbgul`bwfps{8alqgfq`lnnjwwfggjq>!owq!fnsolzffpqfpfbq`k-#pfof`wfgpv``fpplq`vpwlnfqpgjpsobzfgPfswfnafqbgg@obpp+Eb`fallh#pvddfpwfgbmg#obwfqlsfqbwjmdfobalqbwfPlnfwjnfpJmpwjwvwf`fqwbjmozjmpwboofgelooltfqpIfqvpbofnwkfz#kbuf`lnsvwjmddfmfqbwfgsqlujm`fpdvbqbmwffbqajwqbqzqf`ldmjyftbmwfg#wls{8tjgwk9wkflqz#leafkbujlvqTkjof#wkffpwjnbwfgafdbm#wl#jw#af`bnfnbdmjwvgfnvpw#kbufnlqf#wkbmGjqf`wlqzf{wfmpjlmpf`qfwbqzmbwvqboozl``vqqjmdubqjbaofpdjufm#wkfsobwelqn-?,obafo=?ebjofg#wl`lnslvmgphjmgp#le#pl`jfwjfpbolmdpjgf#..%dw8\\t\\tplvwktfpwwkf#qjdkwqbgjbwjlmnbz#kbuf#vmfp`bsf+pslhfm#jm!#kqfe>!,sqldqbnnflmoz#wkf#`lnf#eqlngjqf`wlqzavqjfg#jmb#pjnjobqwkfz#tfqf?,elmw=?,Mlqtfdjbmpsf`jejfgsqlgv`jmdsbppfmdfq+mft#Gbwfwfnslqbqzej`wjlmboBewfq#wkffrvbwjlmpgltmolbg-qfdvobqozgfufolsfqbaluf#wkfojmhfg#wlskfmlnfmbsfqjlg#lewllowjs!=pvapwbm`fbvwlnbwj`bpsf`w#leBnlmd#wkf`lmmf`wfgfpwjnbwfpBjq#Elq`fpzpwfn#lelaif`wjufjnnfgjbwfnbhjmd#jwsbjmwjmdp`lmrvfqfgbqf#pwjoosql`fgvqfdqltwk#lekfbgfg#azFvqlsfbm#gjujpjlmpnlof`vofpeqbm`kjpfjmwfmwjlmbwwqb`wfg`kjogkllgbopl#vpfggfgj`bwfgpjmdbslqfgfdqff#leebwkfq#le`lmeoj`wp?,b=?,s=\\t`bnf#eqlntfqf#vpfgmlwf#wkbwqf`fjujmdF{f`vwjuffufm#nlqfb``fpp#wl`lnnbmgfqSlojwj`bonvpj`jbmpgfoj`jlvpsqjplmfqpbgufmw#leVWE.;!#,=?\\\"X@GBWBX!=@lmwb`wPlvwkfqm#ad`lolq>!pfqjfp#le-#Jw#tbp#jm#Fvqlsfsfqnjwwfgubojgbwf-bssfbqjmdleej`jboppfqjlvpoz.obmdvbdfjmjwjbwfgf{wfmgjmdolmd.wfqnjmeobwjlmpv`k#wkbwdfw@llhjfnbqhfg#az?,avwwlm=jnsofnfmwavw#jw#jpjm`qfbpfpgltm#wkf#qfrvjqjmdgfsfmgfmw..=\\t?\\\"..#jmwfqujftTjwk#wkf#`lsjfp#le`lmpfmpvptbp#avjowUfmfyvfob+elqnfqozwkf#pwbwfsfqplmmfopwqbwfdj`ebulvq#lejmufmwjlmTjhjsfgjb`lmwjmfmwujqwvbooztkj`k#tbpsqjm`jsof@lnsofwf#jgfmwj`bopklt#wkbwsqjnjwjufbtbz#eqlnnlof`vobqsqf`jpfozgjpploufgVmgfq#wkfufqpjlm>!=%maps8?,Jw#jp#wkf#Wkjp#jp#tjoo#kbuflqdbmjpnpplnf#wjnfEqjfgqj`ktbp#ejqpwwkf#lmoz#eb`w#wkbwelqn#jg>!sqf`fgjmdWf`kmj`boskzpj`jpwl``vqp#jmmbujdbwlqpf`wjlm!=psbm#jg>!plvdkw#wlafolt#wkfpvqujujmd~?,pwzof=kjp#gfbwkbp#jm#wkf`bvpfg#azsbqwjboozf{jpwjmd#vpjmd#wkftbp#djufmb#ojpw#leofufop#lemlwjlm#leLeej`jbo#gjpnjppfgp`jfmwjpwqfpfnaofpgvsoj`bwff{solpjufqf`lufqfgboo#lwkfqdboofqjfpxsbggjmd9sflsof#leqfdjlm#lebggqfppfpbppl`jbwfjnd#bow>!jm#nlgfqmpklvog#afnfwklg#leqfslqwjmdwjnfpwbnsmffgfg#wlwkf#Dqfbwqfdbqgjmdpffnfg#wlujftfg#bpjnsb`w#lmjgfb#wkbwwkf#Tlqogkfjdkw#lef{sbmgjmdWkfpf#bqf`vqqfmw!=`bqfevooznbjmwbjmp`kbqdf#le@obppj`bobggqfppfgsqfgj`wfgltmfqpkjs?gju#jg>!qjdkw!=\\x0E\\tqfpjgfm`fofbuf#wkf`lmwfmw!=bqf#lewfm##~*+*8\\x0E\\tsqlabaoz#Sqlefpplq.avwwlm!#qfpslmgfgpbzp#wkbwkbg#wl#afsob`fg#jmKvmdbqjbmpwbwvp#lepfqufp#bpVmjufqpbof{f`vwjlmbddqfdbwfelq#tkj`kjmef`wjlmbdqffg#wlkltfufq/#slsvobq!=sob`fg#lm`lmpwqv`wfof`wlqbopznalo#lejm`ovgjmdqfwvqm#wlbq`kjwf`w@kqjpwjbmsqfujlvp#ojujmd#jmfbpjfq#wlsqlefpplq\\t%ow8\\\"..#feef`w#lebmbozwj`ptbp#wbhfmtkfqf#wkfwllh#lufqafojfe#jmBeqjhbbmpbp#ebq#bpsqfufmwfgtlqh#tjwkb#psf`jbo?ejfogpfw@kqjpwnbpQfwqjfufg\\t\\tJm#wkf#ab`h#jmwlmlqwkfbpwnbdbyjmfp=?pwqlmd=`lnnjwwffdlufqmjmddqlvsp#lepwlqfg#jmfpwbaojpkb#dfmfqbojwp#ejqpwwkfjq#ltmslsvobwfgbm#laif`w@bqjaafbmboolt#wkfgjpwqj`wptjp`lmpjmol`bwjlm-8#tjgwk9#jmkbajwfgPl`jbojpwIbmvbqz#2?,ellwfq=pjnjobqoz`klj`f#lewkf#pbnf#psf`jej`#avpjmfpp#Wkf#ejqpw-ofmdwk8#gfpjqf#wlgfbo#tjwkpjm`f#wkfvpfqBdfmw`lm`fjufgjmgf{-sksbp#%rvlw8fmdbdf#jmqf`fmwoz/eft#zfbqptfqf#bopl\\t?kfbg=\\t?fgjwfg#azbqf#hmltm`jwjfp#jmb``fpphfz`lmgfnmfgbopl#kbufpfquj`fp/ebnjoz#leP`kllo#le`lmufqwfgmbwvqf#le#obmdvbdfnjmjpwfqp?,laif`w=wkfqf#jp#b#slsvobqpfrvfm`fpbgul`bwfgWkfz#tfqfbmz#lwkfqol`bwjlm>fmwfq#wkfnv`k#nlqfqfeof`wfgtbp#mbnfglqjdjmbo#b#wzsj`botkfm#wkfzfmdjmffqp`lvog#mlwqfpjgfmwptfgmfpgbzwkf#wkjqg#sqlgv`wpIbmvbqz#1tkbw#wkfzb#`fqwbjmqfb`wjlmpsql`fpplqbewfq#kjpwkf#obpw#`lmwbjmfg!=?,gju=\\t?,b=?,wg=gfsfmg#lmpfbq`k!=\\tsjf`fp#le`lnsfwjmdQfefqfm`fwfmmfppfftkj`k#kbp#ufqpjlm>?,psbm=#??,kfbgfq=djufp#wkfkjpwlqjbmubovf>!!=sbggjmd93ujft#wkbwwldfwkfq/wkf#nlpw#tbp#elvmgpvapfw#lebwwb`h#lm`kjogqfm/sljmwp#lesfqplmbo#slpjwjlm9boofdfgoz@ofufobmgtbp#obwfqbmg#bewfqbqf#djufmtbp#pwjoop`qloojmdgfpjdm#lenbhfp#wkfnv`k#ofppBnfqj`bmp-\\t\\tBewfq#/#avw#wkfNvpfvn#leolvjpjbmb+eqln#wkfnjmmfplwbsbqwj`ofpb#sql`fppGlnjmj`bmulovnf#leqfwvqmjmdgfefmpjuf33s{\\x7Fqjdknbgf#eqlnnlvpflufq!#pwzof>!pwbwfp#le+tkj`k#jp`lmwjmvfpEqbm`jp`lavjogjmd#tjwklvw#btjwk#plnftkl#tlvogb#elqn#leb#sbqw#leafelqf#jwhmltm#bp##Pfquj`fpol`bwjlm#bmg#lewfmnfbpvqjmdbmg#jw#jpsbsfqab`hubovfp#le\\x0E\\t?wjwof=>#tjmglt-gfwfqnjmffq%rvlw8#sobzfg#azbmg#fbqoz?,`fmwfq=eqln#wkjpwkf#wkqffsltfq#bmgle#%rvlw8jmmfqKWNO?b#kqfe>!z9jmojmf8@kvq`k#lewkf#fufmwufqz#kjdkleej`jbo#.kfjdkw9#`lmwfmw>!,`dj.ajm,wl#`qfbwfbeqjhbbmpfpsfqbmwleqbm/Kbjpobwujf)Mvojfwvuj)_(`f)Mwjmb(af)Mwjmb\\fUh\\fT{\\fTN\\n{I\\np@\\x04Fr\\x0BBl\\bQ\\x7F\\tA{\\x0BUm\\x05Gx\\tA{\\x01yp\\x06YA\\0zX\\bTV\\bWl\\bUd\\x04BM\\x0BB{\\npV\\x0B@x\\x04B\\\\\\np@\\x04Db\\x04Gz\\tal\\npa\\tfM\\tuD\\bV~\\x04mx\\x0BQ}\\ndS\\tp\\\\\\bVK\\bS]\\bU|\\x05oD\\tkV\\x0Bed\\x0BHR\\nb~\\x04M`\\nJp\\x05oD\\x04|Q\\nLP\\x04Sw\\bTl\\nAI\\nxC\\bWt\\tBq\\x05F`\\x04Cm\\x0BLm\\tKx\\t}t\\bPv\\ny\\\\\\naB\\tV\\x7F\\nZd\\x04XU\\x04li\\tfr\\ti@\\tBH\\x04BD\\x04BV\\t`V\\n[]\\tp_\\tTn\\n~A\\nxR\\tuD\\t`{\\bV@\\tTn\\tHK\\tAJ\\x0Bxs\\x04Zf\\nqI\\x04Zf\\x0BBM\\x0B|j\\t}t\\bSM\\nmC\\x0BQ}pfquj`jlpbqw/A`volbqdfmwjmbabq`folmb`vborvjfqsvaoj`bglsqlgv`wlpslo/Awj`bqfpsvfpwbtjhjsfgjbpjdvjfmwfa/Vprvfgb`lnvmjgbgpfdvqjgbgsqjm`jsbosqfdvmwbp`lmwfmjglqfpslmgfqufmfyvfobsqlaofnbpgj`jfnaqfqfob`j/_mmlujfnaqfpjnjobqfpsqlzf`wlpsqldqbnbpjmpwjwvwlb`wjujgbgfm`vfmwqbf`lmln/Abjn/Mdfmfp`lmwb`wbqgfp`bqdbqmf`fpbqjlbwfm`j/_mwfo/Eelml`lnjpj/_m`bm`jlmfp`bsb`jgbgfm`lmwqbqbm/Mojpjpebulqjwlpw/Eqnjmlpsqlujm`jbfwjrvfwbpfofnfmwlpevm`jlmfpqfpvowbgl`bq/M`wfqsqlsjfgbgsqjm`jsjlmf`fpjgbgnvmj`jsbo`qfb`j/_mgfp`bqdbpsqfpfm`jb`lnfq`jbolsjmjlmfpfifq`j`jlfgjwlqjbopbobnbm`bdlmy/Mofygl`vnfmwlsfo/A`vobqf`jfmwfpdfmfqbofpwbqqbdlmbsq/M`wj`bmlufgbgfpsqlsvfpwbsb`jfmwfpw/E`mj`bplaifwjulp`lmwb`wlp\\fHB\\fIk\\fHn\\fH^\\fHS\\fHc\\fHU\\fId\\fHn\\fH{\\fHC\\fHR\\fHT\\fHR\\fHI\\fHc\\fHY\\fHn\\fH\\\\\\fHU\\fIk\\fHy\\fIg\\fHd\\fHy\\fIm\\fHw\\fH\\\\\\fHU\\fHR\\fH@\\fHR\\fHJ\\fHy\\fHU\\fHR\\fHT\\fHA\\fIl\\fHU\\fIm\\fHc\\fH\\\\\\fHU\\fIl\\fHB\\fId\\fHn\\fHJ\\fHS\\fHD\\fH@\\fHR\\fHHgjsolgl`p\\fHT\\fHB\\fHC\\fH\\\\\\fIn\\fHF\\fHD\\fHR\\fHB\\fHF\\fHH\\fHR\\fHG\\fHS\\fH\\\\\\fHx\\fHT\\fHH\\fHH\\fH\\\\\\fHU\\fH^\\fIg\\fH{\\fHU\\fIm\\fHj\\fH@\\fHR\\fH\\\\\\fHJ\\fIk\\fHZ\\fHU\\fIm\\fHd\\fHz\\fIk\\fH^\\fHC\\fHJ\\fHS\\fHy\\fHR\\fHB\\fHY\\fIk\\fH@\\fHH\\fIl\\fHD\\fH@\\fIl\\fHv\\fHB\\fI`\\fHH\\fHT\\fHR\\fH^\\fH^\\fIk\\fHz\\fHp\\fIe\\fH@\\fHB\\fHJ\\fHJ\\fHH\\fHI\\fHR\\fHD\\fHU\\fIl\\fHZ\\fHU\\fH\\\\\\fHi\\fH^\\fH{\\fHy\\fHA\\fIl\\fHD\\fH{\\fH\\\\\\fHF\\fHR\\fHT\\fH\\\\\\fHR\\fHH\\fHy\\fHS\\fHc\\fHe\\fHT\\fIk\\fH{\\fHC\\fIl\\fHU\\fIn\\fHm\\fHj\\fH{\\fIk\\fHs\\fIl\\fHB\\fHz\\fIg\\fHp\\fHy\\fHR\\fH\\\\\\fHi\\fHA\\fIl\\fH{\\fHC\\fIk\\fHH\\fIm\\fHB\\fHY\\fIg\\fHs\\fHJ\\fIk\\fHn\\fHi\\fH{\\fH\\\\\\fH|\\fHT\\fIk\\fHB\\fIk\\fH^\\fH^\\fH{\\fHR\\fHU\\fHR\\fH^\\fHf\\fHF\\fH\\\\\\fHv\\fHR\\fH\\\\\\fH|\\fHT\\fHR\\fHJ\\fIk\\fH\\\\\\fHp\\fHS\\fHT\\fHJ\\fHS\\fH^\\fH@\\fHn\\fHJ\\fH@\\fHD\\fHR\\fHU\\fIn\\fHn\\fH^\\fHR\\fHz\\fHp\\fIl\\fHH\\fH@\\fHs\\fHD\\fHB\\fHS\\fH^\\fHk\\fHT\\fIk\\fHj\\fHD\\fIk\\fHD\\fHC\\fHR\\fHy\\fIm\\fH^\\fH^\\fIe\\fH{\\fHA\\fHR\\fH{\\fH\\\\\\fIk\\fH^\\fHp\\fH{\\fHU\\fH\\\\\\fHR\\fHB\\fH^\\fH{\\fIk\\fHF\\fIk\\fHp\\fHU\\fHR\\fHI\\fHk\\fHT\\fIl\\fHT\\fHU\\fIl\\fHy\\fH^\\fHR\\fHL\\fIl\\fHy\\fHU\\fHR\\fHm\\fHJ\\fIn\\fH\\\\\\fHH\\fHU\\fHH\\fHT\\fHR\\fHH\\fHC\\fHR\\fHJ\\fHj\\fHC\\fHR\\fHF\\fHR\\fHy\\fHy\\fI`\\fHD\\fHZ\\fHR\\fHB\\fHJ\\fIk\\fHz\\fHC\\fHU\\fIl\\fH\\\\\\fHR\\fHC\\fHz\\fIm\\fHJ\\fH^\\fH{\\fIl`bwfdlqjfpf{sfqjfm`f?,wjwof=\\x0E\\t@lszqjdkw#ibubp`qjsw`lmgjwjlmpfufqzwkjmd?s#`obpp>!wf`kmloldzab`hdqlvmg?b#`obpp>!nbmbdfnfmw%`lsz8#132ibubP`qjsw`kbqb`wfqpaqfbg`qvnawkfnpfoufpklqjylmwbodlufqmnfmw@bojelqmjbb`wjujwjfpgjp`lufqfgMbujdbwjlmwqbmpjwjlm`lmmf`wjlmmbujdbwjlmbssfbqbm`f?,wjwof=?n`kf`hal{!#wf`kmjrvfpsqlwf`wjlmbssbqfmwozbp#tfoo#bpvmw$/#$VB.qfplovwjlmlsfqbwjlmpwfofujpjlmwqbmpobwfgTbpkjmdwlmmbujdbwlq-#>#tjmglt-jnsqfppjlm%ow8aq%dw8ojwfqbwvqfslsvobwjlmad`lolq>! fpsf`jbooz#`lmwfmw>!sqlgv`wjlmmftpofwwfqsqlsfqwjfpgfejmjwjlmofbgfqpkjsWf`kmloldzSbqojbnfmw`lnsbqjplmvo#`obpp>!-jmgf{Le+!`lm`ovpjlmgjp`vppjlm`lnslmfmwpajloldj`boQfulovwjlm\\\\`lmwbjmfqvmgfqpwllgmlp`qjsw=?sfqnjppjlmfb`k#lwkfqbwnlpskfqf#lmel`vp>!?elqn#jg>!sql`fppjmdwkjp-ubovfdfmfqbwjlm@lmefqfm`fpvapfrvfmwtfoo.hmltmubqjbwjlmpqfsvwbwjlmskfmlnfmlmgjp`jsojmfoldl-smd!#+gl`vnfmw/alvmgbqjfpf{sqfppjlmpfwwofnfmwAb`hdqlvmglvw#le#wkffmwfqsqjpf+!kwwsp9!#vmfp`bsf+!sbpptlqg!#gfnl`qbwj`?b#kqfe>!,tqbssfq!=\\tnfnafqpkjsojmdvjpwj`s{8sbggjmdskjolplskzbppjpwbm`fvmjufqpjwzeb`jojwjfpqf`ldmjyfgsqfefqfm`fje#+wzsflenbjmwbjmfgul`bavobqzkzslwkfpjp-pvanjw+*8%bns8maps8bmmlwbwjlmafkjmg#wkfElvmgbwjlmsvaojpkfq!bppvnswjlmjmwqlgv`fg`lqqvswjlmp`jfmwjpwpf{soj`jwozjmpwfbg#legjnfmpjlmp#lm@oj`h>!`lmpjgfqfggfsbqwnfmwl``vsbwjlmpllm#bewfqjmufpwnfmwsqlmlvm`fgjgfmwjejfgf{sfqjnfmwNbmbdfnfmwdfldqbskj`!#kfjdkw>!ojmh#qfo>!-qfsob`f+,gfsqfppjlm`lmefqfm`fsvmjpknfmwfojnjmbwfgqfpjpwbm`fbgbswbwjlmlsslpjwjlmtfoo#hmltmpvssofnfmwgfwfqnjmfgk2#`obpp>!3s{8nbqdjmnf`kbmj`bopwbwjpwj`p`fofaqbwfgDlufqmnfmw\\t\\tGvqjmd#wgfufolsfqpbqwjej`jbofrvjubofmwlqjdjmbwfg@lnnjppjlmbwwb`knfmw?psbm#jg>!wkfqf#tfqfMfgfqobmgpafzlmg#wkfqfdjpwfqfgilvqmbojpweqfrvfmwozboo#le#wkfobmd>!fm!#?,pwzof=\\x0E\\tbaplovwf8#pvsslqwjmdf{wqfnfoz#nbjmpwqfbn?,pwqlmd=#slsvobqjwzfnsolznfmw?,wbaof=\\x0E\\t#`lopsbm>!?,elqn=\\t##`lmufqpjlmbalvw#wkf#?,s=?,gju=jmwfdqbwfg!#obmd>!fmSlqwvdvfpfpvapwjwvwfjmgjujgvbojnslppjaofnvowjnfgjbbonlpw#boos{#plojg# bsbqw#eqlnpvaif`w#wljm#Fmdojpk`qjwj`jyfgf{`fsw#elqdvjgfojmfplqjdjmboozqfnbqhbaofwkf#pf`lmgk1#`obpp>!?b#wjwof>!+jm`ovgjmdsbqbnfwfqpsqlkjajwfg>#!kwws9,,gj`wjlmbqzsfq`fswjlmqfulovwjlmelvmgbwjlms{8kfjdkw9pv``fppevopvsslqwfqpnjoofmmjvnkjp#ebwkfqwkf#%rvlw8ml.qfsfbw8`lnnfq`jbojmgvpwqjbofm`lvqbdfgbnlvmw#le#vmleej`jbofeej`jfm`zQfefqfm`fp`llqgjmbwfgjp`objnfqf{sfgjwjlmgfufolsjmd`bo`vobwfgpjnsojejfgofdjwjnbwfpvapwqjmd+3!#`obpp>!`lnsofwfozjoovpwqbwfejuf#zfbqpjmpwqvnfmwSvaojpkjmd2!#`obpp>!spz`kloldz`lmejgfm`fmvnafq#le#bapfm`f#leel`vpfg#lmiljmfg#wkfpwqv`wvqfpsqfujlvpoz=?,jeqbnf=lm`f#bdbjmavw#qbwkfqjnnjdqbmwple#`lvqpf/b#dqlvs#leOjwfqbwvqfVmojhf#wkf?,b=%maps8\\tevm`wjlm#jw#tbp#wkf@lmufmwjlmbvwlnlajofSqlwfpwbmwbddqfppjufbewfq#wkf#Pjnjobqoz/!#,=?,gju=`loof`wjlm\\x0E\\tevm`wjlmujpjajojwzwkf#vpf#leulovmwffqpbwwqb`wjlmvmgfq#wkf#wkqfbwfmfg)?\\\"X@GBWBXjnslqwbm`fjm#dfmfqbowkf#obwwfq?,elqn=\\t?,-jmgf{Le+$j#>#38#j#?gjeefqfm`fgfulwfg#wlwqbgjwjlmppfbq`k#elqvowjnbwfozwlvqmbnfmwbwwqjavwfppl.`boofg#~\\t?,pwzof=fubovbwjlmfnskbpjyfgb``fppjaof?,pf`wjlm=pv``fppjlmbolmd#tjwkNfbmtkjof/jmgvpwqjfp?,b=?aq#,=kbp#af`lnfbpsf`wp#leWfofujpjlmpveej`jfmwabphfwabooalwk#pjgfp`lmwjmvjmdbm#bqwj`of?jnd#bow>!bgufmwvqfpkjp#nlwkfqnbm`kfpwfqsqjm`jsofpsbqwj`vobq`lnnfmwbqzfeef`wp#legf`jgfg#wl!=?pwqlmd=svaojpkfqpIlvqmbo#legjeej`vowzeb`jojwbwfb``fswbaofpwzof-`pp!\\nevm`wjlm#jmmlubwjlm=@lszqjdkwpjwvbwjlmptlvog#kbufavpjmfppfpGj`wjlmbqzpwbwfnfmwplewfm#vpfgsfqpjpwfmwjm#Ibmvbqz`lnsqjpjmd?,wjwof=\\t\\ngjsolnbwj``lmwbjmjmdsfqelqnjmdf{wfmpjlmpnbz#mlw#af`lm`fsw#le#lm`oj`h>!Jw#jp#boplejmbm`jbo#nbhjmd#wkfOv{fnalvqdbggjwjlmbobqf#`boofgfmdbdfg#jm!p`qjsw!*8avw#jw#tbpfof`wqlmj`lmpvanjw>!\\t?\\\"..#Fmg#fof`wqj`boleej`jboozpvddfpwjlmwls#le#wkfvmojhf#wkfBvpwqbojbmLqjdjmboozqfefqfm`fp\\t?,kfbg=\\x0E\\tqf`ldmjpfgjmjwjbojyfojnjwfg#wlBof{bmgqjbqfwjqfnfmwBgufmwvqfpelvq#zfbqp\\t\\t%ow8\\\"..#jm`qfbpjmdgf`lqbwjlmk0#`obpp>!lqjdjmp#lelaojdbwjlmqfdvobwjlm`obppjejfg+evm`wjlm+bgubmwbdfpafjmd#wkf#kjpwlqjbmp?abpf#kqfeqfsfbwfgoztjoojmd#wl`lnsbqbaofgfpjdmbwfgmlnjmbwjlmevm`wjlmbojmpjgf#wkfqfufobwjlmfmg#le#wkfp#elq#wkf#bvwklqjyfgqfevpfg#wlwbhf#sob`fbvwlmlnlvp`lnsqlnjpfslojwj`bo#qfpwbvqbmwwtl#le#wkfEfaqvbqz#1rvbojwz#leptelaif`w-vmgfqpwbmgmfbqoz#bootqjwwfm#azjmwfqujftp!#tjgwk>!2tjwkgqbtboeolbw9ofewjp#vpvbooz`bmgjgbwfpmftpsbsfqpnzpwfqjlvpGfsbqwnfmwafpw#hmltmsbqojbnfmwpvssqfppfg`lmufmjfmwqfnfnafqfggjeefqfmw#pzpwfnbwj`kbp#ofg#wlsqlsbdbmgb`lmwqloofgjmeovfm`fp`fqfnlmjbosql`objnfgSqlwf`wjlmoj#`obpp>!P`jfmwjej``obpp>!ml.wqbgfnbqhpnlqf#wkbm#tjgfpsqfbgOjafqbwjlmwllh#sob`fgbz#le#wkfbp#olmd#bpjnsqjplmfgBggjwjlmbo\\t?kfbg=\\t?nObalqbwlqzMlufnafq#1f{`fswjlmpJmgvpwqjboubqjfwz#leeolbw9#ofeGvqjmd#wkfbppfppnfmwkbuf#affm#gfbop#tjwkPwbwjpwj`pl``vqqfm`f,vo=?,gju=`ofbqej{!=wkf#svaoj`nbmz#zfbqptkj`k#tfqflufq#wjnf/pzmlmznlvp`lmwfmw!=\\tsqfpvnbaozkjp#ebnjozvpfqBdfmw-vmf{sf`wfgjm`ovgjmd#`kboofmdfgb#njmlqjwzvmgfejmfg!afolmdp#wlwbhfm#eqlnjm#L`wlafqslpjwjlm9#pbjg#wl#afqfojdjlvp#Efgfqbwjlm#qltpsbm>!lmoz#b#eftnfbmw#wkbwofg#wl#wkf..=\\x0E\\t?gju#?ejfogpfw=Bq`kajpkls#`obpp>!mlafjmd#vpfgbssqlb`kfpsqjujofdfpmlp`qjsw=\\tqfpvowp#jmnbz#af#wkfFbpwfq#fddnf`kbmjpnpqfbplmbaofSlsvobwjlm@loof`wjlmpfof`wfg!=mlp`qjsw=\\x0E,jmgf{-sksbqqjubo#le.ippgh$**8nbmbdfg#wljm`lnsofwf`bpvbowjfp`lnsofwjlm@kqjpwjbmpPfswfnafq#bqjwknfwj`sql`fgvqfpnjdkw#kbufSqlgv`wjlmjw#bssfbqpSkjolplskzeqjfmgpkjsofbgjmd#wldjujmd#wkfwltbqg#wkfdvbqbmwffggl`vnfmwfg`lolq9 333ujgfl#dbnf`lnnjppjlmqfeof`wjmd`kbmdf#wkfbppl`jbwfgpbmp.pfqjelmhfzsqfpp8#sbggjmd9Kf#tbp#wkfvmgfqozjmdwzsj`booz#/#bmg#wkf#pq`Fofnfmwpv``fppjufpjm`f#wkf#pklvog#af#mfwtlqhjmdb``lvmwjmdvpf#le#wkfoltfq#wkbmpkltp#wkbw?,psbm=\\t\\n\\n`lnsobjmwp`lmwjmvlvprvbmwjwjfpbpwqlmlnfqkf#gjg#mlwgvf#wl#jwpbssojfg#wlbm#bufqbdffeelqwp#wlwkf#evwvqfbwwfnsw#wlWkfqfelqf/`bsbajojwzQfsvaoj`bmtbp#elqnfgFof`wqlmj`hjolnfwfqp`kboofmdfpsvaojpkjmdwkf#elqnfqjmgjdfmlvpgjqf`wjlmppvapjgjbqz`lmpsjqb`zgfwbjop#lebmg#jm#wkfbeelqgbaofpvapwbm`fpqfbplm#elq`lmufmwjlmjwfnwzsf>!baplovwfozpvsslpfgozqfnbjmfg#bbwwqb`wjufwqbufoojmdpfsbqbwfozel`vpfp#lmfofnfmwbqzbssoj`baofelvmg#wkbwpwzofpkffwnbmvp`qjswpwbmgp#elq#ml.qfsfbw+plnfwjnfp@lnnfq`jbojm#Bnfqj`bvmgfqwbhfmrvbqwfq#lebm#f{bnsofsfqplmboozjmgf{-sks!owqOjfvwfmbmw\\t?gju#jg>!wkfz#tlvogbajojwz#lenbgf#vs#lemlwfg#wkbw`ofbq#wkbwbqdvf#wkbwwl#bmlwkfq`kjogqfm$psvqslpf#leelqnvobwfgabpfg#vslmwkf#qfdjlmpvaif`w#lesbppfmdfqpslppfppjlm-\\t\\tJm#wkf#Afelqf#wkfbewfqtbqgp`vqqfmwoz#b`qlpp#wkfp`jfmwjej``lnnvmjwz-`bsjwbojpnjm#Dfqnbmzqjdkw.tjmdwkf#pzpwfnPl`jfwz#leslojwj`jbmgjqf`wjlm9tfmw#lm#wlqfnlubo#le#Mft#Zlqh#bsbqwnfmwpjmgj`bwjlmgvqjmd#wkfvmofpp#wkfkjpwlqj`bokbg#affm#bgfejmjwjufjmdqfgjfmwbwwfmgbm`f@fmwfq#elqsqlnjmfm`fqfbgzPwbwfpwqbwfdjfpavw#jm#wkfbp#sbqw#le`lmpwjwvwf`objn#wkbwobalqbwlqz`lnsbwjaofebjovqf#le/#pv`k#bp#afdbm#tjwkvpjmd#wkf#wl#sqlujgfefbwvqf#leeqln#tkj`k,!#`obpp>!dfloldj`bopfufqbo#legfojafqbwfjnslqwbmw#klogp#wkbwjmd%rvlw8#ubojdm>wlswkf#Dfqnbmlvwpjgf#lemfdlwjbwfgkjp#`bqffqpfsbqbwjlmjg>!pfbq`ktbp#`boofgwkf#elvqwkqf`qfbwjlmlwkfq#wkbmsqfufmwjlmtkjof#wkf#fgv`bwjlm/`lmmf`wjmdb``vqbwfoztfqf#avjowtbp#hjoofgbdqffnfmwpnv`k#nlqf#Gvf#wl#wkftjgwk9#233plnf#lwkfqHjmdgln#lewkf#fmwjqfebnlvp#elqwl#`lmmf`wlaif`wjufpwkf#Eqfm`ksflsof#bmgefbwvqfg!=jp#pbjg#wlpwqv`wvqboqfefqfmgvnnlpw#lewfmb#pfsbqbwf.=\\t?gju#jg#Leej`jbo#tlqogtjgf-bqjb.obafowkf#sobmfwbmg#jw#tbpg!#ubovf>!ollhjmd#bwafmfej`jbobqf#jm#wkfnlmjwlqjmdqfslqwfgozwkf#nlgfqmtlqhjmd#lmbooltfg#wltkfqf#wkf#jmmlubwjuf?,b=?,gju=plvmgwqb`hpfbq`kElqnwfmg#wl#afjmsvw#jg>!lsfmjmd#leqfpwqj`wfgbglswfg#azbggqfppjmdwkfloldjbmnfwklgp#leubqjbmw#le@kqjpwjbm#ufqz#obqdfbvwlnlwjufaz#ebq#wkfqbmdf#eqlnsvqpvjw#leeloolt#wkfaqlvdkw#wljm#Fmdobmgbdqff#wkbwb``vpfg#le`lnfp#eqlnsqfufmwjmdgju#pwzof>kjp#lq#kfqwqfnfmglvpeqffgln#le`lm`fqmjmd3#2fn#2fn8Abphfwaboo,pwzof-`ppbm#fbqojfqfufm#bewfq,!#wjwof>!-`ln,jmgf{wbhjmd#wkfsjwwpavqdk`lmwfmw!=\\x0E?p`qjsw=+ewvqmfg#lvwkbujmd#wkf?,psbm=\\x0E\\t#l``bpjlmboaf`bvpf#jwpwbqwfg#wlskzpj`booz=?,gju=\\t##`qfbwfg#az@vqqfmwoz/#ad`lolq>!wbajmgf{>!gjpbpwqlvpBmbozwj`p#bopl#kbp#b=?gju#jg>!?,pwzof=\\t?`boofg#elqpjmdfq#bmg-pq`#>#!,,ujlobwjlmpwkjp#sljmw`lmpwbmwozjp#ol`bwfgqf`lqgjmdpg#eqln#wkfmfgfqobmgpslqwvdv/Fp;N;};D;u;F5m4K4]4_7`gfpbqqlool`lnfmwbqjlfgv`b`j/_mpfswjfnaqfqfdjpwqbglgjqf``j/_mvaj`b`j/_msvaoj`jgbgqfpsvfpwbpqfpvowbglpjnslqwbmwfqfpfqubglpbqw/A`volpgjefqfmwfppjdvjfmwfpqfs/Vaoj`bpjwvb`j/_mnjmjpwfqjlsqjub`jgbggjqf`wlqjlelqnb`j/_mslaob`j/_msqfpjgfmwf`lmw\", \"fmjglpb``fplqjlpwf`kmlqbwjsfqplmbofp`bwfdlq/Abfpsf`jbofpgjpslmjaofb`wvbojgbgqfefqfm`jbuboobglojgajaojlwf`bqfob`jlmfp`bofmgbqjlslo/Awj`bpbmwfqjlqfpgl`vnfmwlpmbwvqbofybnbwfqjbofpgjefqfm`jbf`lm/_nj`bwqbmpslqwfqlgq/Advfysbqwj`jsbqfm`vfmwqbmgjp`vpj/_mfpwqv`wvqbevmgb`j/_meqf`vfmwfpsfqnbmfmwfwlwbonfmwf!2s{#plojg# -dje!#bow>!wqbmpsbqfmwjmelqnbwjlmbssoj`bwjlm!#lm`oj`h>!fpwbaojpkfgbgufqwjpjmd-smd!#bow>!fmujqlmnfmwsfqelqnbm`fbssqlsqjbwf%bns8ngbpk8jnnfgjbwfoz?,pwqlmd=?,qbwkfq#wkbmwfnsfqbwvqfgfufolsnfmw`lnsfwjwjlmsob`fklogfqujpjajojwz9`lszqjdkw!=3!#kfjdkw>!fufm#wklvdkqfsob`fnfmwgfpwjmbwjlm@lqslqbwjlm?vo#`obpp>!Bppl`jbwjlmjmgjujgvbopsfqpsf`wjufpfwWjnflvw+vqo+kwws9,,nbwkfnbwj`pnbqdjm.wls9fufmwvbooz#gfp`qjswjlm*#ml.qfsfbw`loof`wjlmp-ISD\\x7Fwkvna\\x7Fsbqwj`jsbwf,kfbg=?algzeolbw9ofew8?oj#`obpp>!kvmgqfgp#le\\t\\tKltfufq/#`lnslpjwjlm`ofbq9alwk8`llsfqbwjlmtjwkjm#wkf#obafo#elq>!alqgfq.wls9Mft#Yfbobmgqf`lnnfmgfgsklwldqbskzjmwfqfpwjmd%ow8pvs%dw8`lmwqlufqpzMfwkfqobmgpbowfqmbwjufnb{ofmdwk>!ptjwyfqobmgGfufolsnfmwfppfmwjbooz\\t\\tBowklvdk#?,wf{wbqfb=wkvmgfqajqgqfsqfpfmwfg%bns8mgbpk8psf`vobwjlm`lnnvmjwjfpofdjpobwjlmfof`wqlmj`p\\t\\n?gju#jg>!joovpwqbwfgfmdjmffqjmdwfqqjwlqjfpbvwklqjwjfpgjpwqjavwfg5!#kfjdkw>!pbmp.pfqje8`bsbaof#le#gjpbssfbqfgjmwfqb`wjufollhjmd#elqjw#tlvog#afBedkbmjpwbmtbp#`qfbwfgNbwk-eollq+pvqqlvmgjmd`bm#bopl#aflapfqubwjlmnbjmwfmbm`ffm`lvmwfqfg?k1#`obpp>!nlqf#qf`fmwjw#kbp#affmjmubpjlm#le*-dfwWjnf+*evmgbnfmwboGfpsjwf#wkf!=?gju#jg>!jmpsjqbwjlmf{bnjmbwjlmsqfsbqbwjlmf{sobmbwjlm?jmsvw#jg>!?,b=?,psbm=ufqpjlmp#lejmpwqvnfmwpafelqf#wkf##>#$kwws9,,Gfp`qjswjlmqfobwjufoz#-pvapwqjmd+fb`k#le#wkff{sfqjnfmwpjmeovfmwjbojmwfdqbwjlmnbmz#sflsofgvf#wl#wkf#`lnajmbwjlmgl#mlw#kbufNjggof#Fbpw?mlp`qjsw=?`lszqjdkw!#sfqkbsp#wkfjmpwjwvwjlmjm#Gf`fnafqbqqbmdfnfmwnlpw#ebnlvpsfqplmbojwz`qfbwjlm#leojnjwbwjlmpf{`ovpjufozplufqfjdmwz.`lmwfmw!=\\t?wg#`obpp>!vmgfqdqlvmgsbqboofo#wlgl`wqjmf#lel``vsjfg#azwfqnjmloldzQfmbjppbm`fb#mvnafq#lepvsslqw#elqf{solqbwjlmqf`ldmjwjlmsqfgf`fpplq?jnd#pq`>!,?k2#`obpp>!svaoj`bwjlmnbz#bopl#afpsf`jbojyfg?,ejfogpfw=sqldqfppjufnjoojlmp#lepwbwfp#wkbwfmelq`fnfmwbqlvmg#wkf#lmf#bmlwkfq-sbqfmwMlgfbdqj`vowvqfBowfqmbwjufqfpfbq`kfqpwltbqgp#wkfNlpw#le#wkfnbmz#lwkfq#+fpsf`jbooz?wg#tjgwk>!8tjgwk9233&jmgfsfmgfmw?k0#`obpp>!#lm`kbmdf>!*-bgg@obpp+jmwfqb`wjlmLmf#le#wkf#gbvdkwfq#leb``fpplqjfpaqbm`kfp#le\\x0E\\t?gju#jg>!wkf#obqdfpwgf`obqbwjlmqfdvobwjlmpJmelqnbwjlmwqbmpobwjlmgl`vnfmwbqzjm#lqgfq#wl!=\\t?kfbg=\\t?!#kfjdkw>!2b`qlpp#wkf#lqjfmwbwjlm*8?,p`qjsw=jnsofnfmwfg`bm#af#pffmwkfqf#tbp#bgfnlmpwqbwf`lmwbjmfq!=`lmmf`wjlmpwkf#Aqjwjpktbp#tqjwwfm\\\"jnslqwbmw8s{8#nbqdjm.elooltfg#azbajojwz#wl#`lnsoj`bwfggvqjmd#wkf#jnnjdqbwjlmbopl#`boofg?k7#`obpp>!gjpwjm`wjlmqfsob`fg#azdlufqmnfmwpol`bwjlm#lejm#Mlufnafqtkfwkfq#wkf?,s=\\t?,gju=b`rvjpjwjlm`boofg#wkf#sfqpf`vwjlmgfpjdmbwjlmxelmw.pjyf9bssfbqfg#jmjmufpwjdbwff{sfqjfm`fgnlpw#ojhfoztjgfoz#vpfggjp`vppjlmpsqfpfm`f#le#+gl`vnfmw-f{wfmpjufozJw#kbp#affmjw#glfp#mlw`lmwqbqz#wljmkbajwbmwpjnsqlufnfmwp`klobqpkjs`lmpvnswjlmjmpwqv`wjlmelq#f{bnsoflmf#lq#nlqfs{8#sbggjmdwkf#`vqqfmwb#pfqjfp#lebqf#vpvboozqlof#jm#wkfsqfujlvpoz#gfqjubwjufpfujgfm`f#lef{sfqjfm`fp`lolqp`kfnfpwbwfg#wkbw`fqwjej`bwf?,b=?,gju=\\t#pfof`wfg>!kjdk#p`klloqfpslmpf#wl`lnelqwbaofbglswjlm#lewkqff#zfbqpwkf#`lvmwqzjm#Efaqvbqzpl#wkbw#wkfsflsof#tkl#sqlujgfg#az?sbqbn#mbnfbeef`wfg#azjm#wfqnp#lebssljmwnfmwJPL.;;6:.2!tbp#alqm#jmkjpwlqj`bo#qfdbqgfg#bpnfbpvqfnfmwjp#abpfg#lm#bmg#lwkfq#9#evm`wjlm+pjdmjej`bmw`fofaqbwjlmwqbmpnjwwfg,ip,irvfqz-jp#hmltm#bpwkflqfwj`bo#wbajmgf{>!jw#`lvog#af?mlp`qjsw=\\tkbujmd#affm\\x0E\\t?kfbg=\\x0E\\t?#%rvlw8Wkf#`lnsjobwjlmkf#kbg#affmsqlgv`fg#azskjolplskfq`lmpwqv`wfgjmwfmgfg#wlbnlmd#lwkfq`lnsbqfg#wlwl#pbz#wkbwFmdjmffqjmdb#gjeefqfmwqfefqqfg#wlgjeefqfm`fpafojfe#wkbwsklwldqbskpjgfmwjezjmdKjpwlqz#le#Qfsvaoj`#lemf`fppbqjozsqlabajojwzwf`kmj`boozofbujmd#wkfpsf`wb`vobqeqb`wjlm#lefof`wqj`jwzkfbg#le#wkfqfpwbvqbmwpsbqwmfqpkjsfnskbpjp#lmnlpw#qf`fmwpkbqf#tjwk#pbzjmd#wkbwejoofg#tjwkgfpjdmfg#wljw#jp#lewfm!=?,jeqbnf=bp#elooltp9nfqdfg#tjwkwkqlvdk#wkf`lnnfq`jbo#sljmwfg#lvwlsslqwvmjwzujft#le#wkfqfrvjqfnfmwgjujpjlm#lesqldqbnnjmdkf#qf`fjufgpfwJmwfqubo!=?,psbm=?,jm#Mft#Zlqhbggjwjlmbo#`lnsqfppjlm\\t\\t?gju#jg>!jm`lqslqbwf8?,p`qjsw=?bwwb`kFufmwaf`bnf#wkf#!#wbqdfw>!\\\\`bqqjfg#lvwPlnf#le#wkfp`jfm`f#bmgwkf#wjnf#le@lmwbjmfq!=nbjmwbjmjmd@kqjpwlskfqNv`k#le#wkftqjwjmdp#le!#kfjdkw>!1pjyf#le#wkfufqpjlm#le#nj{wvqf#le#afwtffm#wkfF{bnsofp#lefgv`bwjlmbo`lnsfwjwjuf#lmpvanjw>!gjqf`wlq#legjpwjm`wjuf,GWG#[KWNO#qfobwjmd#wlwfmgfm`z#wlsqlujm`f#letkj`k#tlvoggfpsjwf#wkfp`jfmwjej`#ofdjpobwvqf-jmmfqKWNO#boofdbwjlmpBdqj`vowvqftbp#vpfg#jmbssqlb`k#wljmwfoojdfmwzfbqp#obwfq/pbmp.pfqjegfwfqnjmjmdSfqelqnbm`fbssfbqbm`fp/#tkj`k#jp#elvmgbwjlmpbaaqfujbwfgkjdkfq#wkbmp#eqln#wkf#jmgjujgvbo#`lnslpfg#lepvsslpfg#wl`objnp#wkbwbwwqjavwjlmelmw.pjyf92fofnfmwp#leKjpwlqj`bo#kjp#aqlwkfqbw#wkf#wjnfbmmjufqpbqzdlufqmfg#azqfobwfg#wl#vowjnbwfoz#jmmlubwjlmpjw#jp#pwjoo`bm#lmoz#afgfejmjwjlmpwlDNWPwqjmdB#mvnafq#lejnd#`obpp>!Fufmwvbooz/tbp#`kbmdfgl``vqqfg#jmmfjdkalqjmdgjpwjmdvjpktkfm#kf#tbpjmwqlgv`jmdwfqqfpwqjboNbmz#le#wkfbqdvfp#wkbwbm#Bnfqj`bm`lmrvfpw#letjgfpsqfbg#tfqf#hjoofgp`qffm#bmg#Jm#lqgfq#wlf{sf`wfg#wlgfp`fmgbmwpbqf#ol`bwfgofdjpobwjufdfmfqbwjlmp#ab`hdqlvmgnlpw#sflsofzfbqp#bewfqwkfqf#jp#mlwkf#kjdkfpweqfrvfmwoz#wkfz#gl#mlwbqdvfg#wkbwpkltfg#wkbwsqfglnjmbmwwkfloldj`boaz#wkf#wjnf`lmpjgfqjmdpklqw.ojufg?,psbm=?,b=`bm#af#vpfgufqz#ojwwoflmf#le#wkf#kbg#boqfbgzjmwfqsqfwfg`lnnvmj`bwfefbwvqfp#ledlufqmnfmw/?,mlp`qjsw=fmwfqfg#wkf!#kfjdkw>!0Jmgfsfmgfmwslsvobwjlmpobqdf.p`bof-#Bowklvdk#vpfg#jm#wkfgfpwqv`wjlmslppjajojwzpwbqwjmd#jmwtl#lq#nlqff{sqfppjlmppvalqgjmbwfobqdfq#wkbmkjpwlqz#bmg?,lswjlm=\\x0E\\t@lmwjmfmwbofojnjmbwjmdtjoo#mlw#afsqb`wj`f#lejm#eqlmw#lepjwf#le#wkffmpvqf#wkbwwl#`qfbwf#bnjppjppjssjslwfmwjboozlvwpwbmgjmdafwwfq#wkbmtkbw#jp#mltpjwvbwfg#jmnfwb#mbnf>!WqbgjwjlmbopvddfpwjlmpWqbmpobwjlmwkf#elqn#lebwnlpskfqj`jgfloldj`bofmwfqsqjpfp`bo`vobwjmdfbpw#le#wkfqfnmbmwp#lesovdjmpsbdf,jmgf{-sks!Wkjp#jp#wkf#?b#kqfe>!,slsvobqjyfgjmuloufg#jmbqf#vpfg#wlbmg#pfufqbonbgf#az#wkfpffnp#wl#afojhfoz#wkbwSbofpwjmjbmmbnfg#bewfqjw#kbg#affmnlpw#`lnnlmwl#qfefq#wlavw#wkjp#jp`lmpf`vwjufwfnslqbqjozJm#dfmfqbo/`lmufmwjlmpwbhfp#sob`fpvagjujpjlmwfqqjwlqjbolsfqbwjlmbosfqnbmfmwoztbp#obqdfozlvwaqfbh#lejm#wkf#sbpwelooltjmd#b#{nomp9ld>!=?b#`obpp>!`obpp>!wf{w@lmufqpjlm#nbz#af#vpfgnbmveb`wvqfbewfq#afjmd`ofbqej{!=\\trvfpwjlm#letbp#fof`wfgwl#af`lnf#baf`bvpf#le#plnf#sflsofjmpsjqfg#azpv``fppevo#b#wjnf#tkfmnlqf#`lnnlmbnlmdpw#wkfbm#leej`jbotjgwk9233&8wf`kmloldz/tbp#bglswfgwl#hffs#wkfpfwwofnfmwpojuf#ajqwkpjmgf{-kwno!@lmmf`wj`vwbppjdmfg#wl%bns8wjnfp8b``lvmw#elqbojdm>qjdkwwkf#`lnsbmzbotbzp#affmqfwvqmfg#wljmuloufnfmwAf`bvpf#wkfwkjp#sfqjlg!#mbnf>!r!#`lmejmfg#wlb#qfpvow#leubovf>!!#,=jp#b`wvboozFmujqlmnfmw\\x0E\\t?,kfbg=\\x0E\\t@lmufqpfoz/=\\t?gju#jg>!3!#tjgwk>!2jp#sqlabaozkbuf#af`lnf`lmwqloojmdwkf#sqlaofn`jwjyfmp#leslojwj`jbmpqfb`kfg#wkfbp#fbqoz#bp9mlmf8#lufq?wbaof#`fooubojgjwz#legjqf`woz#wllmnlvpfgltmtkfqf#jw#jptkfm#jw#tbpnfnafqp#le#qfobwjlm#wlb``lnnlgbwfbolmd#tjwk#Jm#wkf#obwfwkf#Fmdojpkgfoj`jlvp!=wkjp#jp#mlwwkf#sqfpfmwje#wkfz#bqfbmg#ejmboozb#nbwwfq#le\\x0E\\t\\n?,gju=\\x0E\\t\\x0E\\t?,p`qjsw=ebpwfq#wkbmnbilqjwz#lebewfq#tkj`k`lnsbqbwjufwl#nbjmwbjmjnsqluf#wkfbtbqgfg#wkffq!#`obpp>!eqbnfalqgfqqfpwlqbwjlmjm#wkf#pbnfbmbozpjp#lewkfjq#ejqpwGvqjmd#wkf#`lmwjmfmwbopfrvfm`f#leevm`wjlm+*xelmw.pjyf9#tlqh#lm#wkf?,p`qjsw=\\t?afdjmp#tjwkibubp`qjsw9`lmpwjwvfmwtbp#elvmgfgfrvjojaqjvnbppvnf#wkbwjp#djufm#azmffgp#wl#af`llqgjmbwfpwkf#ubqjlvpbqf#sbqw#lelmoz#jm#wkfpf`wjlmp#lejp#b#`lnnlmwkflqjfp#legjp`lufqjfpbppl`jbwjlmfgdf#le#wkfpwqfmdwk#leslpjwjlm#jmsqfpfmw.gbzvmjufqpboozwl#elqn#wkfavw#jmpwfbg`lqslqbwjlmbwwb`kfg#wljp#`lnnlmozqfbplmp#elq#%rvlw8wkf#`bm#af#nbgftbp#baof#wltkj`k#nfbmpavw#gjg#mlwlmNlvpfLufqbp#slppjaoflsfqbwfg#az`lnjmd#eqlnwkf#sqjnbqzbggjwjlm#leelq#pfufqbowqbmpefqqfgb#sfqjlg#lebqf#baof#wlkltfufq/#jwpklvog#kbufnv`k#obqdfq\\t\\n?,p`qjsw=bglswfg#wkfsqlsfqwz#legjqf`wfg#azfeef`wjufoztbp#aqlvdkw`kjogqfm#leSqldqbnnjmdolmdfq#wkbmnbmvp`qjswptbq#bdbjmpwaz#nfbmp#lebmg#nlpw#lepjnjobq#wl#sqlsqjfwbqzlqjdjmbwjmdsqfpwjdjlvpdqbnnbwj`bof{sfqjfm`f-wl#nbhf#wkfJw#tbp#bopljp#elvmg#jm`lnsfwjwlqpjm#wkf#V-P-qfsob`f#wkfaqlvdkw#wkf`bo`vobwjlmeboo#le#wkfwkf#dfmfqbosqb`wj`boozjm#klmlq#leqfofbpfg#jmqfpjgfmwjbobmg#plnf#lehjmd#le#wkfqfb`wjlm#wl2pw#Fbqo#le`vowvqf#bmgsqjm`jsbooz?,wjwof=\\t##wkfz#`bm#afab`h#wl#wkfplnf#le#kjpf{slpvqf#wlbqf#pjnjobqelqn#le#wkfbggEbulqjwf`jwjyfmpkjssbqw#jm#wkfsflsof#tjwkjm#sqb`wj`fwl#`lmwjmvf%bns8njmvp8bssqlufg#az#wkf#ejqpw#booltfg#wkfbmg#elq#wkfevm`wjlmjmdsobzjmd#wkfplovwjlm#wlkfjdkw>!3!#jm#kjp#allhnlqf#wkbm#belooltp#wkf`qfbwfg#wkfsqfpfm`f#jm%maps8?,wg=mbwjlmbojpwwkf#jgfb#leb#`kbqb`wfqtfqf#elq`fg#`obpp>!awmgbzp#le#wkfefbwvqfg#jmpkltjmd#wkfjmwfqfpw#jmjm#sob`f#lewvqm#le#wkfwkf#kfbg#leOlqg#le#wkfslojwj`boozkbp#jwp#ltmFgv`bwjlmbobssqlubo#leplnf#le#wkffb`k#lwkfq/afkbujlq#lebmg#af`bvpfbmg#bmlwkfqbssfbqfg#lmqf`lqgfg#jmaob`h%rvlw8nbz#jm`ovgfwkf#tlqog$p`bm#ofbg#wlqfefqp#wl#balqgfq>!3!#dlufqmnfmw#tjmmjmd#wkfqfpvowfg#jm#tkjof#wkf#Tbpkjmdwlm/wkf#pvaif`w`jwz#jm#wkf=?,gju=\\x0E\\t\\n\\nqfeof`w#wkfwl#`lnsofwfaf`bnf#nlqfqbgjlb`wjufqfif`wfg#aztjwklvw#bmzkjp#ebwkfq/tkj`k#`lvog`lsz#le#wkfwl#jmgj`bwfb#slojwj`bob``lvmwp#le`lmpwjwvwfptlqhfg#tjwkfq?,b=?,oj=le#kjp#ojefb``lnsbmjfg`ojfmwTjgwksqfufmw#wkfOfdjpobwjufgjeefqfmwozwldfwkfq#jmkbp#pfufqboelq#bmlwkfqwf{w#le#wkfelvmgfg#wkff#tjwk#wkf#jp#vpfg#elq`kbmdfg#wkfvpvbooz#wkfsob`f#tkfqftkfqfbp#wkf=#?b#kqfe>!!=?b#kqfe>!wkfnpfoufp/bowklvdk#kfwkbw#`bm#afwqbgjwjlmboqlof#le#wkfbp#b#qfpvowqfnluf@kjoggfpjdmfg#aztfpw#le#wkfPlnf#sflsofsqlgv`wjlm/pjgf#le#wkfmftpofwwfqpvpfg#az#wkfgltm#wl#wkfb``fswfg#azojuf#jm#wkfbwwfnswp#wllvwpjgf#wkfeqfrvfm`jfpKltfufq/#jmsqldqbnnfqpbw#ofbpw#jmbssql{jnbwfbowklvdk#jwtbp#sbqw#lebmg#ubqjlvpDlufqmlq#lewkf#bqwj`ofwvqmfg#jmwl=?b#kqfe>!,wkf#f`lmlnzjp#wkf#nlpwnlpw#tjgfoztlvog#obwfqbmg#sfqkbspqjpf#wl#wkfl``vqp#tkfmvmgfq#tkj`k`lmgjwjlmp-wkf#tfpwfqmwkflqz#wkbwjp#sqlgv`fgwkf#`jwz#lejm#tkj`k#kfpffm#jm#wkfwkf#`fmwqboavjogjmd#lenbmz#le#kjpbqfb#le#wkfjp#wkf#lmoznlpw#le#wkfnbmz#le#wkfwkf#TfpwfqmWkfqf#jp#mlf{wfmgfg#wlPwbwjpwj`bo`lopsbm>1#\\x7Fpklqw#pwlqzslppjaof#wlwlsloldj`bo`qjwj`bo#leqfslqwfg#wlb#@kqjpwjbmgf`jpjlm#wljp#frvbo#wlsqlaofnp#leWkjp#`bm#afnfq`kbmgjpfelq#nlpw#leml#fujgfm`ffgjwjlmp#lefofnfmwp#jm%rvlw8-#Wkf`ln,jnbdfp,tkj`k#nbhfpwkf#sql`fppqfnbjmp#wkfojwfqbwvqf/jp#b#nfnafqwkf#slsvobqwkf#bm`jfmwsqlaofnp#jmwjnf#le#wkfgfefbwfg#azalgz#le#wkfb#eft#zfbqpnv`k#le#wkfwkf#tlqh#le@bojelqmjb/pfqufg#bp#bdlufqmnfmw-`lm`fswp#lenlufnfmw#jm\\n\\n?gju#jg>!jw!#ubovf>!obmdvbdf#lebp#wkfz#bqfsqlgv`fg#jmjp#wkbw#wkff{sobjm#wkfgju=?,gju=\\tKltfufq#wkfofbg#wl#wkf\\n?b#kqfe>!,tbp#dqbmwfgsflsof#kbuf`lmwjmvbooztbp#pffm#bpbmg#qfobwfgwkf#qlof#lesqlslpfg#azle#wkf#afpwfb`k#lwkfq-@lmpwbmwjmfsflsof#eqlngjbof`wp#lewl#qfujpjlmtbp#qfmbnfgb#plvq`f#lewkf#jmjwjboobvm`kfg#jmsqlujgf#wkfwl#wkf#tfpwtkfqf#wkfqfbmg#pjnjobqafwtffm#wtljp#bopl#wkfFmdojpk#bmg`lmgjwjlmp/wkbw#jw#tbpfmwjwofg#wlwkfnpfoufp-rvbmwjwz#leqbmpsbqfm`zwkf#pbnf#bpwl#iljm#wkf`lvmwqz#bmgwkjp#jp#wkfWkjp#ofg#wlb#pwbwfnfmw`lmwqbpw#wlobpwJmgf{Lewkqlvdk#kjpjp#gfpjdmfgwkf#wfqn#jpjp#sqlujgfgsqlwf`w#wkfmd?,b=?,oj=Wkf#`vqqfmwwkf#pjwf#lepvapwbmwjbof{sfqjfm`f/jm#wkf#Tfpwwkfz#pklvogpolufm(ajmb`lnfmwbqjlpvmjufqpjgbg`lmgj`jlmfpb`wjujgbgfpf{sfqjfm`jbwf`mlold/Absqlgv``j/_msvmwvb`j/_mbsoj`b`j/_m`lmwqbpf/]b`bwfdlq/Abpqfdjpwqbqpfsqlefpjlmbowqbwbnjfmwlqfd/Apwqbwfpf`qfwbq/Absqjm`jsbofpsqlwf``j/_mjnslqwbmwfpjnslqwbm`jbslpjajojgbgjmwfqfpbmwf`qf`jnjfmwlmf`fpjgbgfppvp`qjajqpfbpl`jb`j/_mgjpslmjaofpfubovb`j/_mfpwvgjbmwfpqfpslmpbaofqfplov`j/_mdvbgbobibqbqfdjpwqbglplslqwvmjgbg`lnfq`jbofpelwldqbe/Abbvwlqjgbgfpjmdfmjfq/Abwfofujpj/_m`lnsfwfm`jblsfqb`jlmfpfpwbaof`jglpjnsofnfmwfb`wvbonfmwfmbufdb`j/_m`lmelqnjgbgojmf.kfjdkw9elmw.ebnjoz9!#9#!kwws9,,bssoj`bwjlmpojmh!#kqfe>!psf`jej`booz,,?\\\"X@GBWBX\\tLqdbmjybwjlmgjpwqjavwjlm3s{8#kfjdkw9qfobwjlmpkjsgfuj`f.tjgwk?gju#`obpp>!?obafo#elq>!qfdjpwqbwjlm?,mlp`qjsw=\\t,jmgf{-kwno!tjmglt-lsfm+#\\\"jnslqwbmw8bssoj`bwjlm,jmgfsfmgfm`f,,ttt-dlldoflqdbmjybwjlmbvwl`lnsofwfqfrvjqfnfmwp`lmpfqubwjuf?elqn#mbnf>!jmwfoof`wvbonbqdjm.ofew92;wk#`fmwvqzbm#jnslqwbmwjmpwjwvwjlmpbaaqfujbwjlm?jnd#`obpp>!lqdbmjpbwjlm`jujojybwjlm2:wk#`fmwvqzbq`kjwf`wvqfjm`lqslqbwfg13wk#`fmwvqz.`lmwbjmfq!=nlpw#mlwbaoz,=?,b=?,gju=mlwjej`bwjlm$vmgfejmfg$*Evqwkfqnlqf/afojfuf#wkbwjmmfqKWNO#>#sqjlq#wl#wkfgqbnbwj`boozqfefqqjmd#wlmfdlwjbwjlmpkfbgrvbqwfqpPlvwk#Beqj`bvmpv``fppevoSfmmpzoubmjbBp#b#qfpvow/?kwno#obmd>!%ow8,pvs%dw8gfbojmd#tjwkskjobgfoskjbkjpwlqj`booz*8?,p`qjsw=\\tsbggjmd.wls9f{sfqjnfmwbodfwBwwqjavwfjmpwqv`wjlmpwf`kmloldjfpsbqw#le#wkf#>evm`wjlm+*xpvap`qjswjlmo-gwg!=\\x0E\\t?kwdfldqbskj`bo@lmpwjwvwjlm$/#evm`wjlm+pvsslqwfg#azbdqj`vowvqbo`lmpwqv`wjlmsvaoj`bwjlmpelmw.pjyf9#2b#ubqjfwz#le?gju#pwzof>!Fm`z`olsfgjbjeqbnf#pq`>!gfnlmpwqbwfgb``lnsojpkfgvmjufqpjwjfpGfnldqbskj`p*8?,p`qjsw=?gfgj`bwfg#wlhmltofgdf#lepbwjpeb`wjlmsbqwj`vobqoz?,gju=?,gju=Fmdojpk#+VP*bssfmg@kjog+wqbmpnjppjlmp-#Kltfufq/#jmwfoojdfm`f!#wbajmgf{>!eolbw9qjdkw8@lnnlmtfbowkqbmdjmd#eqlnjm#tkj`k#wkfbw#ofbpw#lmfqfsqlgv`wjlmfm`z`olsfgjb8elmw.pjyf92ivqjpgj`wjlmbw#wkbw#wjnf!=?b#`obpp>!Jm#bggjwjlm/gfp`qjswjlm(`lmufqpbwjlm`lmwb`w#tjwkjp#dfmfqboozq!#`lmwfmw>!qfsqfpfmwjmd%ow8nbwk%dw8sqfpfmwbwjlml``bpjlmbooz?jnd#tjgwk>!mbujdbwjlm!=`lnsfmpbwjlm`kbnsjlmpkjsnfgjb>!boo!#ujlobwjlm#leqfefqfm`f#wlqfwvqm#wqvf8Pwqj`w,,FM!#wqbmpb`wjlmpjmwfqufmwjlmufqjej`bwjlmJmelqnbwjlm#gjeej`vowjfp@kbnsjlmpkjs`bsbajojwjfp?\\\"Xfmgje^..=~\\t?,p`qjsw=\\t@kqjpwjbmjwzelq#f{bnsof/Sqlefppjlmboqfpwqj`wjlmppvddfpw#wkbwtbp#qfofbpfg+pv`k#bp#wkfqfnluf@obpp+vmfnsolznfmwwkf#Bnfqj`bmpwqv`wvqf#le,jmgf{-kwno#svaojpkfg#jmpsbm#`obpp>!!=?b#kqfe>!,jmwqlgv`wjlmafolmdjmd#wl`objnfg#wkbw`lmpfrvfm`fp?nfwb#mbnf>!Dvjgf#wl#wkflufqtkfonjmdbdbjmpw#wkf#`lm`fmwqbwfg/\\t-mlmwlv`k#lapfqubwjlmp?,b=\\t?,gju=\\te#+gl`vnfmw-alqgfq9#2s{#xelmw.pjyf92wqfbwnfmw#le3!#kfjdkw>!2nlgjej`bwjlmJmgfsfmgfm`fgjujgfg#jmwldqfbwfq#wkbmb`kjfufnfmwpfpwbaojpkjmdIbubP`qjsw!#mfufqwkfofpppjdmjej`bm`fAqlbg`bpwjmd=%maps8?,wg=`lmwbjmfq!=\\tpv`k#bp#wkf#jmeovfm`f#leb#sbqwj`vobqpq`>$kwws9,,mbujdbwjlm!#kboe#le#wkf#pvapwbmwjbo#%maps8?,gju=bgubmwbdf#legjp`lufqz#leevmgbnfmwbo#nfwqlslojwbmwkf#lsslpjwf!#{no9obmd>!gfojafqbwfozbojdm>`fmwfqfulovwjlm#lesqfpfqubwjlmjnsqlufnfmwpafdjmmjmd#jmIfpvp#@kqjpwSvaoj`bwjlmpgjpbdqffnfmwwf{w.bojdm9q/#evm`wjlm+*pjnjobqjwjfpalgz=?,kwno=jp#`vqqfmwozboskbafwj`bojp#plnfwjnfpwzsf>!jnbdf,nbmz#le#wkf#eolt9kjggfm8bubjobaof#jmgfp`qjaf#wkff{jpwfm`f#leboo#lufq#wkfwkf#Jmwfqmfw\\n?vo#`obpp>!jmpwboobwjlmmfjdkalqkllgbqnfg#elq`fpqfgv`jmd#wkf`lmwjmvfp#wlMlmfwkfofpp/wfnsfqbwvqfp\\t\\n\\n?b#kqfe>!`olpf#wl#wkff{bnsofp#le#jp#balvw#wkf+pff#afolt*-!#jg>!pfbq`ksqlefppjlmbojp#bubjobaofwkf#leej`jbo\\n\\n?,p`qjsw=\\t\\t\\n\\n?gju#jg>!b``fofqbwjlmwkqlvdk#wkf#Kboo#le#Ebnfgfp`qjswjlmpwqbmpobwjlmpjmwfqefqfm`f#wzsf>$wf{w,qf`fmw#zfbqpjm#wkf#tlqogufqz#slsvobqxab`hdqlvmg9wqbgjwjlmbo#plnf#le#wkf#`lmmf`wfg#wlf{soljwbwjlmfnfqdfm`f#le`lmpwjwvwjlmB#Kjpwlqz#lepjdmjej`bmw#nbmveb`wvqfgf{sf`wbwjlmp=?mlp`qjsw=?`bm#af#elvmgaf`bvpf#wkf#kbp#mlw#affmmfjdkalvqjmdtjwklvw#wkf#bggfg#wl#wkf\\n?oj#`obpp>!jmpwqvnfmwboPlujfw#Vmjlmb`hmltofgdfgtkj`k#`bm#afmbnf#elq#wkfbwwfmwjlm#wlbwwfnswp#wl#gfufolsnfmwpJm#eb`w/#wkf?oj#`obpp>!bjnsoj`bwjlmppvjwbaof#elqnv`k#le#wkf#`lolmjybwjlmsqfpjgfmwjbo`bm`foAvaaof#Jmelqnbwjlmnlpw#le#wkf#jp#gfp`qjafgqfpw#le#wkf#nlqf#lq#ofppjm#PfswfnafqJmwfoojdfm`fpq`>!kwws9,,s{8#kfjdkw9#bubjobaof#wlnbmveb`wvqfqkvnbm#qjdkwpojmh#kqfe>!,bubjobajojwzsqlslqwjlmbolvwpjgf#wkf#bpwqlmlnj`bokvnbm#afjmdpmbnf#le#wkf#bqf#elvmg#jmbqf#abpfg#lmpnboofq#wkbmb#sfqplm#tklf{sbmpjlm#lebqdvjmd#wkbwmlt#hmltm#bpJm#wkf#fbqozjmwfqnfgjbwfgfqjufg#eqlnP`bmgjmbujbm?,b=?,gju=\\x0E\\t`lmpjgfq#wkfbm#fpwjnbwfgwkf#Mbwjlmbo?gju#jg>!sbdqfpvowjmd#jm`lnnjppjlmfgbmboldlvp#wlbqf#qfrvjqfg,vo=\\t?,gju=\\ttbp#abpfg#lmbmg#af`bnf#b%maps8%maps8w!#ubovf>!!#tbp#`bswvqfgml#nlqf#wkbmqfpsf`wjufoz`lmwjmvf#wl#=\\x0E\\t?kfbg=\\x0E\\t?tfqf#`qfbwfgnlqf#dfmfqbojmelqnbwjlm#vpfg#elq#wkfjmgfsfmgfmw#wkf#Jnsfqjbo`lnslmfmw#lewl#wkf#mlqwkjm`ovgf#wkf#@lmpwqv`wjlmpjgf#le#wkf#tlvog#mlw#afelq#jmpwbm`fjmufmwjlm#lenlqf#`lnsof{`loof`wjufozab`hdqlvmg9#wf{w.bojdm9#jwp#lqjdjmbojmwl#b``lvmwwkjp#sql`fppbm#f{wfmpjufkltfufq/#wkfwkfz#bqf#mlwqfif`wfg#wkf`qjwj`jpn#legvqjmd#tkj`ksqlabaoz#wkfwkjp#bqwj`of+evm`wjlm+*xJw#pklvog#afbm#bdqffnfmwb``jgfmwboozgjeefqp#eqlnBq`kjwf`wvqfafwwfq#hmltmbqqbmdfnfmwpjmeovfm`f#lmbwwfmgfg#wkfjgfmwj`bo#wlplvwk#le#wkfsbpp#wkqlvdk{no!#wjwof>!tfjdkw9alog8`qfbwjmd#wkfgjpsobz9mlmfqfsob`fg#wkf?jnd#pq`>!,jkwwsp9,,ttt-Tlqog#Tbq#JJwfpwjnlmjbopelvmg#jm#wkfqfrvjqfg#wl#bmg#wkbw#wkfafwtffm#wkf#tbp#gfpjdmfg`lmpjpwp#le#`lmpjgfqbaozsvaojpkfg#azwkf#obmdvbdf@lmpfqubwjlm`lmpjpwfg#leqfefq#wl#wkfab`h#wl#wkf#`pp!#nfgjb>!Sflsof#eqln#bubjobaof#lmsqlufg#wl#afpvddfpwjlmp!tbp#hmltm#bpubqjfwjfp#leojhfoz#wl#af`lnsqjpfg#lepvsslqw#wkf#kbmgp#le#wkf`lvsofg#tjwk`lmmf`w#bmg#alqgfq9mlmf8sfqelqnbm`fpafelqf#afjmdobwfq#af`bnf`bo`vobwjlmplewfm#`boofgqfpjgfmwp#lenfbmjmd#wkbw=?oj#`obpp>!fujgfm`f#elqf{sobmbwjlmpfmujqlmnfmwp!=?,b=?,gju=tkj`k#booltpJmwqlgv`wjlmgfufolsfg#azb#tjgf#qbmdflm#afkboe#leubojdm>!wls!sqjm`jsof#lebw#wkf#wjnf/?,mlp`qjsw=\\x0Epbjg#wl#kbufjm#wkf#ejqpwtkjof#lwkfqpkzslwkfwj`boskjolplskfqpsltfq#le#wkf`lmwbjmfg#jmsfqelqnfg#azjmbajojwz#wltfqf#tqjwwfmpsbm#pwzof>!jmsvw#mbnf>!wkf#rvfpwjlmjmwfmgfg#elqqfif`wjlm#lejnsojfp#wkbwjmufmwfg#wkfwkf#pwbmgbqgtbp#sqlabaozojmh#afwtffmsqlefpplq#lejmwfqb`wjlmp`kbmdjmd#wkfJmgjbm#L`fbm#`obpp>!obpwtlqhjmd#tjwk$kwws9,,ttt-zfbqp#afelqfWkjp#tbp#wkfqf`qfbwjlmbofmwfqjmd#wkfnfbpvqfnfmwpbm#f{wqfnfozubovf#le#wkfpwbqw#le#wkf\\t?,p`qjsw=\\t\\tbm#feelqw#wljm`qfbpf#wkfwl#wkf#plvwkpsb`jmd>!3!=pveej`jfmwozwkf#Fvqlsfbm`lmufqwfg#wl`ofbqWjnflvwgjg#mlw#kbuf`lmpfrvfmwozelq#wkf#mf{wf{wfmpjlm#lef`lmlnj`#bmgbowklvdk#wkfbqf#sqlgv`fgbmg#tjwk#wkfjmpveej`jfmwdjufm#az#wkfpwbwjmd#wkbwf{sfmgjwvqfp?,psbm=?,b=\\twklvdkw#wkbwlm#wkf#abpjp`foosbggjmd>jnbdf#le#wkfqfwvqmjmd#wljmelqnbwjlm/pfsbqbwfg#azbppbppjmbwfgp!#`lmwfmw>!bvwklqjwz#lemlqwktfpwfqm?,gju=\\t?gju#!=?,gju=\\x0E\\t##`lmpvowbwjlm`lnnvmjwz#lewkf#mbwjlmbojw#pklvog#afsbqwj`jsbmwp#bojdm>!ofewwkf#dqfbwfpwpfof`wjlm#lepvsfqmbwvqbogfsfmgfmw#lmjp#nfmwjlmfgbooltjmd#wkftbp#jmufmwfgb``lnsbmzjmdkjp#sfqplmbobubjobaof#bwpwvgz#le#wkflm#wkf#lwkfqf{f`vwjlm#leKvnbm#Qjdkwpwfqnp#le#wkfbppl`jbwjlmpqfpfbq`k#bmgpv``ffgfg#azgfefbwfg#wkfbmg#eqln#wkfavw#wkfz#bqf`lnnbmgfq#lepwbwf#le#wkfzfbqp#le#bdfwkf#pwvgz#le?vo#`obpp>!psob`f#jm#wkftkfqf#kf#tbp?oj#`obpp>!ewkfqf#bqf#mltkj`k#af`bnfkf#svaojpkfgf{sqfppfg#jmwl#tkj`k#wkf`lnnjppjlmfqelmw.tfjdkw9wfqqjwlqz#lef{wfmpjlmp!=Qlnbm#Fnsjqffrvbo#wl#wkfJm#`lmwqbpw/kltfufq/#bmgjp#wzsj`boozbmg#kjp#tjef+bopl#`boofg=?vo#`obpp>!feef`wjufoz#fuloufg#jmwlpffn#wl#kbuftkj`k#jp#wkfwkfqf#tbp#mlbm#f{`foofmwboo#le#wkfpfgfp`qjafg#azJm#sqb`wj`f/aqlbg`bpwjmd`kbqdfg#tjwkqfeof`wfg#jmpvaif`wfg#wlnjojwbqz#bmgwl#wkf#sljmwf`lmlnj`boozpfwWbqdfwjmdbqf#b`wvboozuj`wlqz#lufq+*8?,p`qjsw=`lmwjmvlvpozqfrvjqfg#elqfulovwjlmbqzbm#feef`wjufmlqwk#le#wkf/#tkj`k#tbp#eqlmw#le#wkflq#lwkfqtjpfplnf#elqn#lekbg#mlw#affmdfmfqbwfg#azjmelqnbwjlm-sfqnjwwfg#wljm`ovgfp#wkfgfufolsnfmw/fmwfqfg#jmwlwkf#sqfujlvp`lmpjpwfmwozbqf#hmltm#bpwkf#ejfog#lewkjp#wzsf#ledjufm#wl#wkfwkf#wjwof#le`lmwbjmp#wkfjmpwbm`fp#lejm#wkf#mlqwkgvf#wl#wkfjqbqf#gfpjdmfg`lqslqbwjlmptbp#wkbw#wkflmf#le#wkfpfnlqf#slsvobqpv``ffgfg#jmpvsslqw#eqlnjm#gjeefqfmwglnjmbwfg#azgfpjdmfg#elqltmfqpkjs#lebmg#slppjaozpwbmgbqgjyfgqfpslmpfWf{wtbp#jmwfmgfgqf`fjufg#wkfbppvnfg#wkbwbqfbp#le#wkfsqjnbqjoz#jmwkf#abpjp#lejm#wkf#pfmpfb``lvmwp#elqgfpwqlzfg#azbw#ofbpw#wtltbp#gf`obqfg`lvog#mlw#afPf`qfwbqz#lebssfbq#wl#afnbqdjm.wls92,]_p(\\x7F_p(',df*xwkqlt#f~8wkf#pwbqw#lewtl#pfsbqbwfobmdvbdf#bmgtkl#kbg#affmlsfqbwjlm#legfbwk#le#wkfqfbo#mvnafqp\\n?ojmh#qfo>!sqlujgfg#wkfwkf#pwlqz#le`lnsfwjwjlmpfmdojpk#+VH*fmdojpk#+VP*#evm`wjlm+*-isd!#tjgwk>!`lmejdvqbwjlm-smd!#tjgwk>!?algz#`obpp>!Nbwk-qbmgln+*`lmwfnslqbqz#Vmjwfg#Pwbwfp`jq`vnpwbm`fp-bssfmg@kjog+lqdbmjybwjlmp?psbm#`obpp>!!=?jnd#pq`>!,gjpwjmdvjpkfgwklvpbmgp#le#`lnnvmj`bwjlm`ofbq!=?,gju=jmufpwjdbwjlmebuj`lm-j`l!#nbqdjm.qjdkw9abpfg#lm#wkf#Nbppb`kvpfwwpwbaof#alqgfq>jmwfqmbwjlmbobopl#hmltm#bpsqlmvm`jbwjlmab`hdqlvmg9 esbggjmd.ofew9Elq#f{bnsof/#njp`foobmflvp%ow8,nbwk%dw8spz`kloldj`bojm#sbqwj`vobqfbq`k!#wzsf>!elqn#nfwklg>!bp#lsslpfg#wlPvsqfnf#@lvqwl``bpjlmbooz#Bggjwjlmbooz/Mlqwk#Bnfqj`bs{8ab`hdqlvmglsslqwvmjwjfpFmwfqwbjmnfmw-wlOltfq@bpf+nbmveb`wvqjmdsqlefppjlmbo#`lnajmfg#tjwkElq#jmpwbm`f/`lmpjpwjmd#le!#nb{ofmdwk>!qfwvqm#ebopf8`lmp`jlvpmfppNfgjwfqqbmfbmf{wqblqgjmbqzbppbppjmbwjlmpvapfrvfmwoz#avwwlm#wzsf>!wkf#mvnafq#lewkf#lqjdjmbo#`lnsqfkfmpjufqfefqp#wl#wkf?,vo=\\t?,gju=\\tskjolplskj`bool`bwjlm-kqfetbp#svaojpkfgPbm#Eqbm`jp`l+evm`wjlm+*x\\t?gju#jg>!nbjmplskjpwj`bwfgnbwkfnbwj`bo#,kfbg=\\x0E\\t?algzpvddfpwp#wkbwgl`vnfmwbwjlm`lm`fmwqbwjlmqfobwjlmpkjspnbz#kbuf#affm+elq#f{bnsof/Wkjp#bqwj`of#jm#plnf#`bpfpsbqwp#le#wkf#gfejmjwjlm#leDqfbw#Aqjwbjm#`foosbggjmd>frvjubofmw#wlsob`fklogfq>!8#elmw.pjyf9#ivpwjej`bwjlmafojfufg#wkbwpveefqfg#eqlnbwwfnswfg#wl#ofbgfq#le#wkf`qjsw!#pq`>!,+evm`wjlm+*#xbqf#bubjobaof\\t\\n?ojmh#qfo>!#pq`>$kwws9,,jmwfqfpwfg#jm`lmufmwjlmbo#!#bow>!!#,=?,bqf#dfmfqboozkbp#bopl#affmnlpw#slsvobq#`lqqfpslmgjmd`qfgjwfg#tjwkwzof>!alqgfq9?,b=?,psbm=?,-dje!#tjgwk>!?jeqbnf#pq`>!wbaof#`obpp>!jmojmf.aol`h8b``lqgjmd#wl#wldfwkfq#tjwkbssql{jnbwfozsbqojbnfmwbqznlqf#bmg#nlqfgjpsobz9mlmf8wqbgjwjlmboozsqfglnjmbmwoz%maps8\\x7F%maps8%maps8?,psbm=#`foopsb`jmd>?jmsvw#mbnf>!lq!#`lmwfmw>!`lmwqlufqpjbosqlsfqwz>!ld9,{.pkl`htbuf.gfnlmpwqbwjlmpvqqlvmgfg#azMfufqwkfofpp/tbp#wkf#ejqpw`lmpjgfqbaof#Bowklvdk#wkf#`loobalqbwjlmpklvog#mlw#afsqlslqwjlm#le?psbm#pwzof>!hmltm#bp#wkf#pklqwoz#bewfqelq#jmpwbm`f/gfp`qjafg#bp#,kfbg=\\t?algz#pwbqwjmd#tjwkjm`qfbpjmdoz#wkf#eb`w#wkbwgjp`vppjlm#lenjggof#le#wkfbm#jmgjujgvbogjeej`vow#wl#sljmw#le#ujftklnlpf{vbojwzb``fswbm`f#le?,psbm=?,gju=nbmveb`wvqfqplqjdjm#le#wkf`lnnlmoz#vpfgjnslqwbm`f#legfmlnjmbwjlmpab`hdqlvmg9# ofmdwk#le#wkfgfwfqnjmbwjlmb#pjdmjej`bmw!#alqgfq>!3!=qfulovwjlmbqzsqjm`jsofp#lejp#`lmpjgfqfgtbp#gfufolsfgJmgl.Fvqlsfbmuvomfqbaof#wlsqlslmfmwp#lebqf#plnfwjnfp`olpfq#wl#wkfMft#Zlqh#@jwz#mbnf>!pfbq`kbwwqjavwfg#wl`lvqpf#le#wkfnbwkfnbwj`jbmaz#wkf#fmg#lebw#wkf#fmg#le!#alqgfq>!3!#wf`kmloldj`bo-qfnluf@obpp+aqbm`k#le#wkffujgfm`f#wkbw\\\"Xfmgje^..=\\x0E\\tJmpwjwvwf#le#jmwl#b#pjmdofqfpsf`wjufoz-bmg#wkfqfelqfsqlsfqwjfp#lejp#ol`bwfg#jmplnf#le#tkj`kWkfqf#jp#bopl`lmwjmvfg#wl#bssfbqbm`f#le#%bns8mgbpk8#gfp`qjafp#wkf`lmpjgfqbwjlmbvwklq#le#wkfjmgfsfmgfmwozfrvjssfg#tjwkglfp#mlw#kbuf?,b=?b#kqfe>!`lmevpfg#tjwk?ojmh#kqfe>!,bw#wkf#bdf#lebssfbq#jm#wkfWkfpf#jm`ovgfqfdbqgofpp#le`lvog#af#vpfg#pwzof>%rvlw8pfufqbo#wjnfpqfsqfpfmw#wkfalgz=\\t?,kwno=wklvdkw#wl#afslsvobwjlm#leslppjajojwjfpsfq`fmwbdf#leb``fpp#wl#wkfbm#bwwfnsw#wlsqlgv`wjlm#leirvfqz,irvfqzwtl#gjeefqfmwafolmd#wl#wkffpwbaojpknfmwqfsob`jmd#wkfgfp`qjswjlm!#gfwfqnjmf#wkfbubjobaof#elqB``lqgjmd#wl#tjgf#qbmdf#le\\n?gju#`obpp>!nlqf#`lnnlmozlqdbmjpbwjlmpevm`wjlmbojwztbp#`lnsofwfg#%bns8ngbpk8#sbqwj`jsbwjlmwkf#`kbqb`wfqbm#bggjwjlmbobssfbqp#wl#afeb`w#wkbw#wkfbm#f{bnsof#lepjdmjej`bmwozlmnlvpflufq>!af`bvpf#wkfz#bpzm`#>#wqvf8sqlaofnp#tjwkpffnp#wl#kbufwkf#qfpvow#le#pq`>!kwws9,,ebnjojbq#tjwkslppfppjlm#leevm`wjlm#+*#xwllh#sob`f#jmbmg#plnfwjnfppvapwbmwjbooz?psbm=?,psbm=jp#lewfm#vpfgjm#bm#bwwfnswdqfbw#gfbo#leFmujqlmnfmwbopv``fppevooz#ujqwvbooz#boo13wk#`fmwvqz/sqlefppjlmbopmf`fppbqz#wl#gfwfqnjmfg#az`lnsbwjajojwzaf`bvpf#jw#jpGj`wjlmbqz#lenlgjej`bwjlmpWkf#elooltjmdnbz#qfefq#wl9@lmpfrvfmwoz/Jmwfqmbwjlmbobowklvdk#plnfwkbw#tlvog#aftlqog$p#ejqpw`obppjejfg#bpalwwln#le#wkf+sbqwj`vobqozbojdm>!ofew!#nlpw#`lnnlmozabpjp#elq#wkfelvmgbwjlm#le`lmwqjavwjlmpslsvobqjwz#le`fmwfq#le#wkfwl#qfgv`f#wkfivqjpgj`wjlmpbssql{jnbwjlm#lmnlvpflvw>!Mft#Wfpwbnfmw`loof`wjlm#le?,psbm=?,b=?,jm#wkf#Vmjwfgejon#gjqf`wlq.pwqj`w-gwg!=kbp#affm#vpfgqfwvqm#wl#wkfbowklvdk#wkjp`kbmdf#jm#wkfpfufqbo#lwkfqavw#wkfqf#bqfvmsqf`fgfmwfgjp#pjnjobq#wlfpsf`jbooz#jmtfjdkw9#alog8jp#`boofg#wkf`lnsvwbwjlmbojmgj`bwf#wkbwqfpwqj`wfg#wl\\n?nfwb#mbnf>!bqf#wzsj`booz`lmeoj`w#tjwkKltfufq/#wkf#Bm#f{bnsof#le`lnsbqfg#tjwkrvbmwjwjfp#leqbwkfq#wkbm#b`lmpwfoobwjlmmf`fppbqz#elqqfslqwfg#wkbwpsf`jej`bwjlmslojwj`bo#bmg%maps8%maps8?qfefqfm`fp#wlwkf#pbnf#zfbqDlufqmnfmw#ledfmfqbwjlm#lekbuf#mlw#affmpfufqbo#zfbqp`lnnjwnfmw#wl\\n\\n?vo#`obpp>!ujpvbojybwjlm2:wk#`fmwvqz/sqb`wjwjlmfqpwkbw#kf#tlvogbmg#`lmwjmvfgl``vsbwjlm#lejp#gfejmfg#bp`fmwqf#le#wkfwkf#bnlvmw#le=?gju#pwzof>!frvjubofmw#legjeefqfmwjbwfaqlvdkw#balvwnbqdjm.ofew9#bvwlnbwj`boozwklvdkw#le#bpPlnf#le#wkfpf\\t?gju#`obpp>!jmsvw#`obpp>!qfsob`fg#tjwkjp#lmf#le#wkffgv`bwjlm#bmgjmeovfm`fg#azqfsvwbwjlm#bp\\t?nfwb#mbnf>!b``lnnlgbwjlm?,gju=\\t?,gju=obqdf#sbqw#leJmpwjwvwf#elqwkf#pl.`boofg#bdbjmpw#wkf#Jm#wkjp#`bpf/tbp#bssljmwfg`objnfg#wl#afKltfufq/#wkjpGfsbqwnfmw#lewkf#qfnbjmjmdfeef`w#lm#wkfsbqwj`vobqoz#gfbo#tjwk#wkf\\t?gju#pwzof>!bonlpw#botbzpbqf#`vqqfmwozf{sqfppjlm#leskjolplskz#leelq#nlqf#wkbm`jujojybwjlmplm#wkf#jpobmgpfof`wfgJmgf{`bm#qfpvow#jm!#ubovf>!!#,=wkf#pwqv`wvqf#,=?,b=?,gju=Nbmz#le#wkfpf`bvpfg#az#wkfle#wkf#Vmjwfgpsbm#`obpp>!n`bm#af#wqb`fgjp#qfobwfg#wlaf`bnf#lmf#lejp#eqfrvfmwozojujmd#jm#wkfwkflqfwj`boozElooltjmd#wkfQfulovwjlmbqzdlufqmnfmw#jmjp#gfwfqnjmfgwkf#slojwj`bojmwqlgv`fg#jmpveej`jfmw#wlgfp`qjswjlm!=pklqw#pwlqjfppfsbqbwjlm#lebp#wl#tkfwkfqhmltm#elq#jwptbp#jmjwjboozgjpsobz9aol`hjp#bm#f{bnsofwkf#sqjm`jsbo`lmpjpwp#le#bqf`ldmjyfg#bp,algz=?,kwno=b#pvapwbmwjboqf`lmpwqv`wfgkfbg#le#pwbwfqfpjpwbm`f#wlvmgfqdqbgvbwfWkfqf#bqf#wtldqbujwbwjlmbobqf#gfp`qjafgjmwfmwjlmboozpfqufg#bp#wkf`obpp>!kfbgfqlsslpjwjlm#wlevmgbnfmwboozglnjmbwfg#wkfbmg#wkf#lwkfqboojbm`f#tjwktbp#elq`fg#wlqfpsf`wjufoz/bmg#slojwj`bojm#pvsslqw#lesflsof#jm#wkf13wk#`fmwvqz-bmg#svaojpkfgolbg@kbqwafbwwl#vmgfqpwbmgnfnafq#pwbwfpfmujqlmnfmwboejqpw#kboe#le`lvmwqjfp#bmgbq`kjwf`wvqboaf#`lmpjgfqfg`kbqb`wfqjyfg`ofbqJmwfqubobvwklqjwbwjufEfgfqbwjlm#letbp#pv``ffgfgbmg#wkfqf#bqfb#`lmpfrvfm`fwkf#Sqfpjgfmwbopl#jm`ovgfgeqff#plewtbqfpv``fppjlm#legfufolsfg#wkftbp#gfpwqlzfgbtbz#eqln#wkf8\\t?,p`qjsw=\\t?bowklvdk#wkfzelooltfg#az#bnlqf#sltfqevoqfpvowfg#jm#bVmjufqpjwz#leKltfufq/#nbmzwkf#sqfpjgfmwKltfufq/#plnfjp#wklvdkw#wlvmwjo#wkf#fmgtbp#bmmlvm`fgbqf#jnslqwbmwbopl#jm`ovgfp=?jmsvw#wzsf>wkf#`fmwfq#le#GL#MLW#BOWFQvpfg#wl#qfefqwkfnfp,wkbw#kbg#affmwkf#abpjp#elqkbp#gfufolsfgjm#wkf#pvnnfq`lnsbqbwjufozgfp`qjafg#wkfpv`k#bp#wklpfwkf#qfpvowjmdjp#jnslppjaofubqjlvp#lwkfqPlvwk#Beqj`bmkbuf#wkf#pbnffeef`wjufmfppjm#tkj`k#`bpf8#wf{w.bojdm9pwqv`wvqf#bmg8#ab`hdqlvmg9qfdbqgjmd#wkfpvsslqwfg#wkfjp#bopl#hmltmpwzof>!nbqdjmjm`ovgjmd#wkfabkbpb#Nfobzvmlqph#alhn/Iomlqph#mzmlqphpolufm)M(ajmbjmwfqmb`jlmbo`bojej`b`j/_m`lnvmj`b`j/_m`lmpwqv``j/_m!=?gju#`obpp>!gjpbnajdvbwjlmGlnbjmMbnf$/#$bgnjmjpwqbwjlmpjnvowbmflvpozwqbmpslqwbwjlmJmwfqmbwjlmbo#nbqdjm.alwwln9qfpslmpjajojwz?\\\"Xfmgje^..=\\t?,=?nfwb#mbnf>!jnsofnfmwbwjlmjmeqbpwqv`wvqfqfsqfpfmwbwjlmalqgfq.alwwln9?,kfbg=\\t?algz=>kwws&0B&1E&1E?elqn#nfwklg>!nfwklg>!slpw!#,ebuj`lm-j`l!#~*8\\t?,p`qjsw=\\t-pfwBwwqjavwf+Bgnjmjpwqbwjlm>#mft#Bqqbz+*8?\\\"Xfmgje^..=\\x0E\\tgjpsobz9aol`h8Vmelqwvmbwfoz/!=%maps8?,gju=,ebuj`lm-j`l!=>$pwzofpkffw$#jgfmwjej`bwjlm/#elq#f{bnsof/?oj=?b#kqfe>!,bm#bowfqmbwjufbp#b#qfpvow#lesw!=?,p`qjsw=\\twzsf>!pvanjw!#\\t+evm`wjlm+*#xqf`lnnfmgbwjlmelqn#b`wjlm>!,wqbmpelqnbwjlmqf`lmpwqv`wjlm-pwzof-gjpsobz#B``lqgjmd#wl#kjggfm!#mbnf>!bolmd#tjwk#wkfgl`vnfmw-algz-bssql{jnbwfoz#@lnnvmj`bwjlmpslpw!#b`wjlm>!nfbmjmd#%rvlw8..?\\\"Xfmgje^..=Sqjnf#Njmjpwfq`kbqb`wfqjpwj`?,b=#?b#`obpp>wkf#kjpwlqz#le#lmnlvpflufq>!wkf#dlufqmnfmwkqfe>!kwwsp9,,tbp#lqjdjmbooztbp#jmwqlgv`fg`obppjej`bwjlmqfsqfpfmwbwjufbqf#`lmpjgfqfg?\\\"Xfmgje^..=\\t\\tgfsfmgp#lm#wkfVmjufqpjwz#le#jm#`lmwqbpw#wl#sob`fklogfq>!jm#wkf#`bpf#lejmwfqmbwjlmbo#`lmpwjwvwjlmbopwzof>!alqgfq.9#evm`wjlm+*#xAf`bvpf#le#wkf.pwqj`w-gwg!=\\t?wbaof#`obpp>!b``lnsbmjfg#azb``lvmw#le#wkf?p`qjsw#pq`>!,mbwvqf#le#wkf#wkf#sflsof#jm#jm#bggjwjlm#wlp*8#ip-jg#>#jg!#tjgwk>!233&!qfdbqgjmd#wkf#Qlnbm#@bwkloj`bm#jmgfsfmgfmwelooltjmd#wkf#-dje!#tjgwk>!2wkf#elooltjmd#gjp`qjnjmbwjlmbq`kbfloldj`bosqjnf#njmjpwfq-ip!=?,p`qjsw=`lnajmbwjlm#le#nbqdjmtjgwk>!`qfbwfFofnfmw+t-bwwb`kFufmw+?,b=?,wg=?,wq=pq`>!kwwsp9,,bJm#sbqwj`vobq/#bojdm>!ofew!#@yf`k#Qfsvaoj`Vmjwfg#Hjmdgln`lqqfpslmgfm`f`lm`ovgfg#wkbw-kwno!#wjwof>!+evm`wjlm#+*#x`lnfp#eqln#wkfbssoj`bwjlm#le?psbm#`obpp>!pafojfufg#wl#affnfmw+$p`qjsw$?,b=\\t?,oj=\\t?ojufqz#gjeefqfmw=?psbm#`obpp>!lswjlm#ubovf>!+bopl#hmltm#bp\\n?oj=?b#kqfe>!=?jmsvw#mbnf>!pfsbqbwfg#eqlnqfefqqfg#wl#bp#ubojdm>!wls!=elvmgfq#le#wkfbwwfnswjmd#wl#`bqalm#gjl{jgf\\t\\t?gju#`obpp>!`obpp>!pfbq`k.,algz=\\t?,kwno=lsslqwvmjwz#wl`lnnvmj`bwjlmp?,kfbg=\\x0E\\t?algz#pwzof>!tjgwk9Wj\\rVSmd#Uj\\rWkw`kbmdfp#jm#wkfalqgfq.`lolq9 3!#alqgfq>!3!#?,psbm=?,gju=?tbp#gjp`lufqfg!#wzsf>!wf{w!#*8\\t?,p`qjsw=\\t\\tGfsbqwnfmw#le#f``ofpjbpwj`bowkfqf#kbp#affmqfpvowjmd#eqln?,algz=?,kwno=kbp#mfufq#affmwkf#ejqpw#wjnfjm#qfpslmpf#wlbvwlnbwj`booz#?,gju=\\t\\t?gju#jtbp#`lmpjgfqfgsfq`fmw#le#wkf!#,=?,b=?,gju=`loof`wjlm#le#gfp`fmgfg#eqlnpf`wjlm#le#wkfb``fsw.`kbqpfwwl#af#`lmevpfgnfnafq#le#wkf#sbggjmd.qjdkw9wqbmpobwjlm#lejmwfqsqfwbwjlm#kqfe>$kwws9,,tkfwkfq#lq#mlwWkfqf#bqf#boplwkfqf#bqf#nbmzb#pnboo#mvnafqlwkfq#sbqwp#lejnslppjaof#wl##`obpp>!avwwlmol`bwfg#jm#wkf-#Kltfufq/#wkfbmg#fufmwvboozBw#wkf#fmg#le#af`bvpf#le#jwpqfsqfpfmwp#wkf?elqn#b`wjlm>!#nfwklg>!slpw!jw#jp#slppjaofnlqf#ojhfoz#wlbm#jm`qfbpf#jmkbuf#bopl#affm`lqqfpslmgp#wlbmmlvm`fg#wkbwbojdm>!qjdkw!=nbmz#`lvmwqjfpelq#nbmz#zfbqpfbqojfpw#hmltmaf`bvpf#jw#tbpsw!=?,p`qjsw=\\x0E#ubojdm>!wls!#jmkbajwbmwp#leelooltjmd#zfbq\\x0E\\t?gju#`obpp>!njoojlm#sflsof`lmwqlufqpjbo#`lm`fqmjmd#wkfbqdvf#wkbw#wkfdlufqmnfmw#bmgb#qfefqfm`f#wlwqbmpefqqfg#wlgfp`qjajmd#wkf#pwzof>!`lolq9bowklvdk#wkfqfafpw#hmltm#elqpvanjw!#mbnf>!nvowjsoj`bwjlmnlqf#wkbm#lmf#qf`ldmjwjlm#le@lvm`jo#le#wkffgjwjlm#le#wkf##?nfwb#mbnf>!Fmwfqwbjmnfmw#btbz#eqln#wkf#8nbqdjm.qjdkw9bw#wkf#wjnf#lejmufpwjdbwjlmp`lmmf`wfg#tjwkbmg#nbmz#lwkfqbowklvdk#jw#jpafdjmmjmd#tjwk#?psbm#`obpp>!gfp`fmgbmwp#le?psbm#`obpp>!j#bojdm>!qjdkw!?,kfbg=\\t?algz#bpsf`wp#le#wkfkbp#pjm`f#affmFvqlsfbm#Vmjlmqfnjmjp`fmw#lenlqf#gjeej`vowUj`f#Sqfpjgfmw`lnslpjwjlm#lesbppfg#wkqlvdknlqf#jnslqwbmwelmw.pjyf922s{f{sobmbwjlm#lewkf#`lm`fsw#letqjwwfm#jm#wkf\\n?psbm#`obpp>!jp#lmf#le#wkf#qfpfnaobm`f#wllm#wkf#dqlvmgptkj`k#`lmwbjmpjm`ovgjmd#wkf#gfejmfg#az#wkfsvaoj`bwjlm#lenfbmp#wkbw#wkflvwpjgf#le#wkfpvsslqw#le#wkf?jmsvw#`obpp>!?psbm#`obpp>!w+Nbwk-qbmgln+*nlpw#sqlnjmfmwgfp`qjswjlm#le@lmpwbmwjmlsoftfqf#svaojpkfg?gju#`obpp>!pfbssfbqp#jm#wkf2!#kfjdkw>!2!#nlpw#jnslqwbmwtkj`k#jm`ovgfptkj`k#kbg#affmgfpwqv`wjlm#lewkf#slsvobwjlm\\t\\n?gju#`obpp>!slppjajojwz#leplnfwjnfp#vpfgbssfbq#wl#kbufpv``fpp#le#wkfjmwfmgfg#wl#afsqfpfmw#jm#wkfpwzof>!`ofbq9a\\x0E\\t?,p`qjsw=\\x0E\\t?tbp#elvmgfg#jmjmwfqujft#tjwk\\\\jg!#`lmwfmw>!`bsjwbo#le#wkf\\x0E\\t?ojmh#qfo>!pqfofbpf#le#wkfsljmw#lvw#wkbw{NOKwwsQfrvfpwbmg#pvapfrvfmwpf`lmg#obqdfpwufqz#jnslqwbmwpsf`jej`bwjlmppvqeb`f#le#wkfbssojfg#wl#wkfelqfjdm#sloj`z\\\\pfwGlnbjmMbnffpwbaojpkfg#jmjp#afojfufg#wlJm#bggjwjlm#wlnfbmjmd#le#wkfjp#mbnfg#bewfqwl#sqlwf`w#wkfjp#qfsqfpfmwfgGf`obqbwjlm#lenlqf#feej`jfmw@obppjej`bwjlmlwkfq#elqnp#lekf#qfwvqmfg#wl?psbm#`obpp>!`sfqelqnbm`f#le+evm`wjlm+*#x\\x0Eje#bmg#lmoz#jeqfdjlmp#le#wkfofbgjmd#wl#wkfqfobwjlmp#tjwkVmjwfg#Mbwjlmppwzof>!kfjdkw9lwkfq#wkbm#wkfzsf!#`lmwfmw>!Bppl`jbwjlm#le\\t?,kfbg=\\t?algzol`bwfg#lm#wkfjp#qfefqqfg#wl+jm`ovgjmd#wkf`lm`fmwqbwjlmpwkf#jmgjujgvbobnlmd#wkf#nlpwwkbm#bmz#lwkfq,=\\t?ojmh#qfo>!#qfwvqm#ebopf8wkf#svqslpf#lewkf#bajojwz#wl8`lolq9 eee~\\t-\\t?psbm#`obpp>!wkf#pvaif`w#legfejmjwjlmp#le=\\x0E\\t?ojmh#qfo>!`objn#wkbw#wkfkbuf#gfufolsfg?wbaof#tjgwk>!`fofaqbwjlm#leElooltjmd#wkf#wl#gjpwjmdvjpk?psbm#`obpp>!awbhfp#sob`f#jmvmgfq#wkf#mbnfmlwfg#wkbw#wkf=?\\\"Xfmgje^..=\\tpwzof>!nbqdjm.jmpwfbg#le#wkfjmwqlgv`fg#wkfwkf#sql`fpp#lejm`qfbpjmd#wkfgjeefqfm`fp#jmfpwjnbwfg#wkbwfpsf`jbooz#wkf,gju=?gju#jg>!tbp#fufmwvboozwkqlvdklvw#kjpwkf#gjeefqfm`fplnfwkjmd#wkbwpsbm=?,psbm=?,pjdmjej`bmwoz#=?,p`qjsw=\\x0E\\t\\x0E\\tfmujqlmnfmwbo#wl#sqfufmw#wkfkbuf#affm#vpfgfpsf`jbooz#elqvmgfqpwbmg#wkfjp#fppfmwjbooztfqf#wkf#ejqpwjp#wkf#obqdfpwkbuf#affm#nbgf!#pq`>!kwws9,,jmwfqsqfwfg#bppf`lmg#kboe#le`qloojmd>!ml!#jp#`lnslpfg#leJJ/#Kloz#Qlnbmjp#f{sf`wfg#wlkbuf#wkfjq#ltmgfejmfg#bp#wkfwqbgjwjlmbooz#kbuf#gjeefqfmwbqf#lewfm#vpfgwl#fmpvqf#wkbwbdqffnfmw#tjwk`lmwbjmjmd#wkfbqf#eqfrvfmwozjmelqnbwjlm#lmf{bnsof#jp#wkfqfpvowjmd#jm#b?,b=?,oj=?,vo=#`obpp>!ellwfqbmg#fpsf`jboozwzsf>!avwwlm!#?,psbm=?,psbm=tkj`k#jm`ovgfg=\\t?nfwb#mbnf>!`lmpjgfqfg#wkf`bqqjfg#lvw#azKltfufq/#jw#jpaf`bnf#sbqw#lejm#qfobwjlm#wlslsvobq#jm#wkfwkf#`bsjwbo#letbp#leej`jbooztkj`k#kbp#affmwkf#Kjpwlqz#lebowfqmbwjuf#wlgjeefqfmw#eqlnwl#pvsslqw#wkfpvddfpwfg#wkbwjm#wkf#sql`fpp##?gju#`obpp>!wkf#elvmgbwjlmaf`bvpf#le#kjp`lm`fqmfg#tjwkwkf#vmjufqpjwzlsslpfg#wl#wkfwkf#`lmwf{w#le?psbm#`obpp>!swf{w!#mbnf>!r!\\n\\n?gju#`obpp>!wkf#p`jfmwjej`qfsqfpfmwfg#aznbwkfnbwj`jbmpfof`wfg#az#wkfwkbw#kbuf#affm=?gju#`obpp>!`gju#jg>!kfbgfqjm#sbqwj`vobq/`lmufqwfg#jmwl*8\\t?,p`qjsw=\\t?skjolplskj`bo#pqsphlkqubwphjwj\\rVSmd#Uj\\rWkw!kwws9,,!=?psbm#`obpp>!nfnafqp#le#wkf#tjmglt-ol`bwjlmufqwj`bo.bojdm9,b=#\\x7F#?b#kqfe>!?\\\"gl`wzsf#kwno=nfgjb>!p`qffm!#?lswjlm#ubovf>!ebuj`lm-j`l!#,=\\t\\n\\n?gju#`obpp>!`kbqb`wfqjpwj`p!#nfwklg>!dfw!#,algz=\\t?,kwno=\\tpklqw`vw#j`lm!#gl`vnfmw-tqjwf+sbggjmd.alwwln9qfsqfpfmwbwjufppvanjw!#ubovf>!bojdm>!`fmwfq!#wkqlvdklvw#wkf#p`jfm`f#ej`wjlm\\t##?gju#`obpp>!pvanjw!#`obpp>!lmf#le#wkf#nlpw#ubojdm>!wls!=?tbp#fpwbaojpkfg*8\\x0E\\t?,p`qjsw=\\x0E\\tqfwvqm#ebopf8!=*-pwzof-gjpsobzaf`bvpf#le#wkf#gl`vnfmw-`llhjf?elqn#b`wjlm>!,~algzxnbqdjm938Fm`z`olsfgjb#leufqpjlm#le#wkf#-`qfbwfFofnfmw+mbnf!#`lmwfmw>!?,gju=\\t?,gju=\\t\\tbgnjmjpwqbwjuf#?,algz=\\t?,kwno=kjpwlqz#le#wkf#!=?jmsvw#wzsf>!slqwjlm#le#wkf#bp#sbqw#le#wkf#%maps8?b#kqfe>!lwkfq#`lvmwqjfp!=\\t?gju#`obpp>!?,psbm=?,psbm=?Jm#lwkfq#tlqgp/gjpsobz9#aol`h8`lmwqlo#le#wkf#jmwqlgv`wjlm#le,=\\t?nfwb#mbnf>!bp#tfoo#bp#wkf#jm#qf`fmw#zfbqp\\x0E\\t\\n?gju#`obpp>!?,gju=\\t\\n?,gju=\\tjmpsjqfg#az#wkfwkf#fmg#le#wkf#`lnsbwjaof#tjwkaf`bnf#hmltm#bp#pwzof>!nbqdjm9-ip!=?,p`qjsw=?#Jmwfqmbwjlmbo#wkfqf#kbuf#affmDfqnbm#obmdvbdf#pwzof>!`lolq9 @lnnvmjpw#Sbqwz`lmpjpwfmw#tjwkalqgfq>!3!#`foo#nbqdjmkfjdkw>!wkf#nbilqjwz#le!#bojdm>!`fmwfqqfobwfg#wl#wkf#nbmz#gjeefqfmw#Lqwklgl{#@kvq`kpjnjobq#wl#wkf#,=\\t?ojmh#qfo>!ptbp#lmf#le#wkf#vmwjo#kjp#gfbwk~*+*8\\t?,p`qjsw=lwkfq#obmdvbdfp`lnsbqfg#wl#wkfslqwjlmp#le#wkfwkf#Mfwkfqobmgpwkf#nlpw#`lnnlmab`hdqlvmg9vqo+bqdvfg#wkbw#wkfp`qloojmd>!ml!#jm`ovgfg#jm#wkfMlqwk#Bnfqj`bm#wkf#mbnf#le#wkfjmwfqsqfwbwjlmpwkf#wqbgjwjlmbogfufolsnfmw#le#eqfrvfmwoz#vpfgb#`loof`wjlm#leufqz#pjnjobq#wlpvqqlvmgjmd#wkff{bnsof#le#wkjpbojdm>!`fmwfq!=tlvog#kbuf#affmjnbdf\\\\`bswjlm#>bwwb`kfg#wl#wkfpvddfpwjmd#wkbwjm#wkf#elqn#le#jmuloufg#jm#wkfjp#gfqjufg#eqlnmbnfg#bewfq#wkfJmwqlgv`wjlm#wlqfpwqj`wjlmp#lm#pwzof>!tjgwk9#`bm#af#vpfg#wl#wkf#`qfbwjlm#lenlpw#jnslqwbmw#jmelqnbwjlm#bmgqfpvowfg#jm#wkf`loobspf#le#wkfWkjp#nfbmp#wkbwfofnfmwp#le#wkftbp#qfsob`fg#azbmbozpjp#le#wkfjmpsjqbwjlm#elqqfdbqgfg#bp#wkfnlpw#pv``fppevohmltm#bp#%rvlw8b#`lnsqfkfmpjufKjpwlqz#le#wkf#tfqf#`lmpjgfqfgqfwvqmfg#wl#wkfbqf#qfefqqfg#wlVmplvq`fg#jnbdf=\\t\\n?gju#`obpp>!`lmpjpwp#le#wkfpwlsSqlsbdbwjlmjmwfqfpw#jm#wkfbubjobajojwz#lebssfbqp#wl#kbuffof`wqlnbdmfwj`fmbaofPfquj`fp+evm`wjlm#le#wkfJw#jp#jnslqwbmw?,p`qjsw=?,gju=evm`wjlm+*xubq#qfobwjuf#wl#wkfbp#b#qfpvow#le#wkf#slpjwjlm#leElq#f{bnsof/#jm#nfwklg>!slpw!#tbp#elooltfg#az%bns8ngbpk8#wkfwkf#bssoj`bwjlmip!=?,p`qjsw=\\x0E\\tvo=?,gju=?,gju=bewfq#wkf#gfbwktjwk#qfpsf`w#wlpwzof>!sbggjmd9jp#sbqwj`vobqozgjpsobz9jmojmf8#wzsf>!pvanjw!#jp#gjujgfg#jmwl\\bTA\\nzk#+\\x0BBl\\bQ\\x7F*qfpslmpbajojgbgbgnjmjpwqb`j/_mjmwfqmb`jlmbofp`lqqfpslmgjfmwf\\fHe\\fHF\\fHC\\fIg\\fH{\\fHF\\fIn\\fH\\\\\\fIa\\fHY\\fHU\\fHB\\fHR\\fH\\\\\\fIk\\fH^\\fIg\\fH{\\fIg\\fHn\\fHv\\fIm\\fHD\\fHR\\fHY\\fH^\\fIk\\fHy\\fHS\\fHD\\fHT\\fH\\\\\\fHy\\fHR\\fH\\\\\\fHF\\fIm\\fH^\\fHS\\fHT\\fHz\\fIg\\fHp\\fIk\\fHn\\fHv\\fHR\\fHU\\fHS\\fHc\\fHA\\fIk\\fHp\\fIk\\fHn\\fHZ\\fHR\\fHB\\fHS\\fH^\\fHU\\fHB\\fHR\\fH\\\\\\fIl\\fHp\\fHR\\fH{\\fH\\\\\\fHO\\fH@\\fHD\\fHR\\fHD\\fIk\\fHy\\fIm\\fHB\\fHR\\fH\\\\\\fH@\\fIa\\fH^\\fIe\\fH{\\fHB\\fHR\\fH^\\fHS\\fHy\\fHB\\fHU\\fHS\\fH^\\fHR\\fHF\\fIo\\fH[\\fIa\\fHL\\fH@\\fHN\\fHP\\fHH\\fIk\\fHA\\fHR\\fHp\\fHF\\fHR\\fHy\\fIa\\fH^\\fHS\\fHy\\fHs\\fIa\\fH\\\\\\fIk\\fHD\\fHz\\fHS\\fH^\\fHR\\fHG\\fHJ\\fI`\\fH\\\\\\fHR\\fHD\\fHB\\fHR\\fHB\\fH^\\fIk\\fHB\\fHH\\fHJ\\fHR\\fHD\\fH@\\fHR\\fHp\\fHR\\fH\\\\\\fHY\\fHS\\fHy\\fHR\\fHT\\fHy\\fIa\\fHC\\fIg\\fHn\\fHv\\fHR\\fHU\\fHH\\fIk\\fHF\\fHU\\fIm\\fHm\\fHv\\fH@\\fHH\\fHR\\fHC\\fHR\\fHT\\fHn\\fHY\\fHR\\fHJ\\fHJ\\fIk\\fHz\\fHD\\fIk\\fHF\\fHS\\fHw\\fH^\\fIk\\fHY\\fHS\\fHZ\\fIk\\fH[\\fH\\\\\\fHR\\fHp\\fIa\\fHC\\fHe\\fHH\\fIa\\fHH\\fH\\\\\\fHB\\fIm\\fHn\\fH@\\fHd\\fHJ\\fIg\\fHD\\fIg\\fHn\\fHe\\fHF\\fHy\\fH\\\\\\fHO\\fHF\\fHN\\fHP\\fIk\\fHn\\fHT\\fIa\\fHI\\fHS\\fHH\\fHG\\fHS\\fH^\\fIa\\fHB\\fHB\\fIm\\fHz\\fIa\\fHC\\fHi\\fHv\\fIa\\fHw\\fHR\\fHw\\fIn\\fHs\\fHH\\fIl\\fHT\\fHn\\fH{\\fIl\\fHH\\fHp\\fHR\\fHc\\fH{\\fHR\\fHY\\fHS\\fHA\\fHR\\fH{\\fHt\\fHO\\fIa\\fHs\\fIk\\fHJ\\fIn\\fHT\\fH\\\\\\fIk\\fHJ\\fHS\\fHD\\fIg\\fHn\\fHU\\fHH\\fIa\\fHC\\fHR\\fHT\\fIk\\fHy\\fIa\\fHT\\fH{\\fHR\\fHn\\fHK\\fIl\\fHY\\fHS\\fHZ\\fIa\\fHY\\fH\\\\\\fHR\\fHH\\fIk\\fHn\\fHJ\\fId\\fHs\\fIa\\fHT\\fHD\\fHy\\fIa\\fHZ\\fHR\\fHT\\fHR\\fHB\\fHD\\fIk\\fHi\\fHJ\\fHR\\fH^\\fHH\\fH@\\fHS\\fHp\\fH^\\fIl\\fHF\\fIm\\fH\\\\\\fIn\\fH[\\fHU\\fHS\\fHn\\fHJ\\fIl\\fHB\\fHS\\fHH\\fIa\\fH\\\\\\fHy\\fHY\\fHS\\fHH\\fHR\\fH\\\\\\fIm\\fHF\\fHC\\fIk\\fHT\\fIa\\fHI\\fHR\\fHD\\fHy\\fH\\\\\\fIg\\fHM\\fHP\\fHB\\fIm\\fHy\\fIa\\fHH\\fHC\\fIg\\fHp\\fHD\\fHR\\fHy\\fIo\\fHF\\fHC\\fHR\\fHF\\fIg\\fHT\\fIa\\fHs\\fHt\\fH\\\\\\fIk\\fH^\\fIn\\fHy\\fHR\\fH\\\\\\fIa\\fHC\\fHY\\fHS\\fHv\\fHR\\fH\\\\\\fHT\\fIn\\fHv\\fHD\\fHR\\fHB\\fIn\\fH^\\fIa\\fHC\\fHJ\\fIk\\fHz\\fIk\\fHn\\fHU\\fHB\\fIk\\fHZ\\fHR\\fHT\\fIa\\fHy\\fIn\\fH^\\fHB\\fId\\fHn\\fHD\\fIk\\fHH\\fId\\fHC\\fHR\\fH\\\\\\fHp\\fHS\\fHT\\fHy\\fIkqpp({no!#wjwof>!.wzsf!#`lmwfmw>!wjwof!#`lmwfmw>!bw#wkf#pbnf#wjnf-ip!=?,p`qjsw=\\t?!#nfwklg>!slpw!#?,psbm=?,b=?,oj=ufqwj`bo.bojdm9w,irvfqz-njm-ip!=-`oj`h+evm`wjlm+#pwzof>!sbggjmd.~*+*8\\t?,p`qjsw=\\t?,psbm=?b#kqfe>!?b#kqfe>!kwws9,,*8#qfwvqm#ebopf8wf{w.gf`lqbwjlm9#p`qloojmd>!ml!#alqgfq.`loobspf9bppl`jbwfg#tjwk#Abkbpb#JmglmfpjbFmdojpk#obmdvbdf?wf{w#{no9psb`f>-dje!#alqgfq>!3!?,algz=\\t?,kwno=\\tlufqeolt9kjggfm8jnd#pq`>!kwws9,,bggFufmwOjpwfmfqqfpslmpjaof#elq#p-ip!=?,p`qjsw=\\t,ebuj`lm-j`l!#,=lsfqbwjmd#pzpwfn!#pwzof>!tjgwk92wbqdfw>!\\\\aobmh!=Pwbwf#Vmjufqpjwzwf{w.bojdm9ofew8\\tgl`vnfmw-tqjwf+/#jm`ovgjmd#wkf#bqlvmg#wkf#tlqog*8\\x0E\\t?,p`qjsw=\\x0E\\t?!#pwzof>!kfjdkw98lufqeolt9kjggfmnlqf#jmelqnbwjlmbm#jmwfqmbwjlmbob#nfnafq#le#wkf#lmf#le#wkf#ejqpw`bm#af#elvmg#jm#?,gju=\\t\\n\\n?,gju=\\tgjpsobz9#mlmf8!=!#,=\\t?ojmh#qfo>!\\t##+evm`wjlm+*#xwkf#26wk#`fmwvqz-sqfufmwGfebvow+obqdf#mvnafq#le#Azybmwjmf#Fnsjqf-isd\\x7Fwkvna\\x7Fofew\\x7Fubpw#nbilqjwz#lenbilqjwz#le#wkf##bojdm>!`fmwfq!=Vmjufqpjwz#Sqfppglnjmbwfg#az#wkfPf`lmg#Tlqog#Tbqgjpwqjavwjlm#le#pwzof>!slpjwjlm9wkf#qfpw#le#wkf#`kbqb`wfqjyfg#az#qfo>!mleloolt!=gfqjufp#eqln#wkfqbwkfq#wkbm#wkf#b#`lnajmbwjlm#lepwzof>!tjgwk9233Fmdojpk.psfbhjmd`lnsvwfq#p`jfm`falqgfq>!3!#bow>!wkf#f{jpwfm`f#leGfnl`qbwj`#Sbqwz!#pwzof>!nbqdjm.Elq#wkjp#qfbplm/-ip!=?,p`qjsw=\\t\\npAzWbdMbnf+p*X3^ip!=?,p`qjsw=\\x0E\\t?-ip!=?,p`qjsw=\\x0E\\tojmh#qfo>!j`lm!#$#bow>$$#`obpp>$elqnbwjlm#le#wkfufqpjlmp#le#wkf#?,b=?,gju=?,gju=,sbdf=\\t##?sbdf=\\t?gju#`obpp>!`lmwaf`bnf#wkf#ejqpwabkbpb#Jmglmfpjbfmdojpk#+pjnsof*\\\"y\\\"W\\\"W\\\"[\\\"Q\\\"U\\\"V\\\"@=i=l<^<\\\\=n=m!?gju#jg>!ellwfq!=wkf#Vmjwfg#Pwbwfp?jnd#pq`>!kwws9,,-isd\\x7Fqjdkw\\x7Fwkvna\\x7F-ip!=?,p`qjsw=\\x0E\\t?ol`bwjlm-sqlwl`loeqbnfalqgfq>!3!#p!#,=\\t?nfwb#mbnf>!?,b=?,gju=?,gju=?elmw.tfjdkw9alog8%rvlw8#bmg#%rvlw8gfsfmgjmd#lm#wkf#nbqdjm938sbggjmd9!#qfo>!mleloolt!#Sqfpjgfmw#le#wkf#wtfmwjfwk#`fmwvqzfujpjlm=\\t##?,sbdfJmwfqmfw#F{solqfqb-bpzm`#>#wqvf8\\x0E\\tjmelqnbwjlm#balvw?gju#jg>!kfbgfq!=!#b`wjlm>!kwws9,,?b#kqfe>!kwwsp9,,?gju#jg>!`lmwfmw!?,gju=\\x0E\\t?,gju=\\x0E\\t?gfqjufg#eqln#wkf#?jnd#pq`>$kwws9,,b``lqgjmd#wl#wkf#\\t?,algz=\\t?,kwno=\\tpwzof>!elmw.pjyf9p`qjsw#obmdvbdf>!Bqjbo/#Kfoufwj`b/?,b=?psbm#`obpp>!?,p`qjsw=?p`qjsw#slojwj`bo#sbqwjfpwg=?,wq=?,wbaof=?kqfe>!kwws9,,ttt-jmwfqsqfwbwjlm#leqfo>!pwzofpkffw!#gl`vnfmw-tqjwf+$?`kbqpfw>!vwe.;!=\\tafdjmmjmd#le#wkf#qfufbofg#wkbw#wkfwfofujpjlm#pfqjfp!#qfo>!mleloolt!=#wbqdfw>!\\\\aobmh!=`objnjmd#wkbw#wkfkwws&0B&1E&1Ettt-nbmjefpwbwjlmp#leSqjnf#Njmjpwfq#lejmeovfm`fg#az#wkf`obpp>!`ofbqej{!=,gju=\\x0E\\t?,gju=\\x0E\\t\\x0E\\twkqff.gjnfmpjlmbo@kvq`k#le#Fmdobmgle#Mlqwk#@bqlojmbprvbqf#hjolnfwqfp-bggFufmwOjpwfmfqgjpwjm`w#eqln#wkf`lnnlmoz#hmltm#bpSklmfwj`#Boskbafwgf`obqfg#wkbw#wkf`lmwqloofg#az#wkfAfmibnjm#Eqbmhojmqlof.sobzjmd#dbnfwkf#Vmjufqpjwz#lejm#Tfpwfqm#Fvqlsfsfqplmbo#`lnsvwfqSqlif`w#Dvwfmafqdqfdbqgofpp#le#wkfkbp#affm#sqlslpfgwldfwkfq#tjwk#wkf=?,oj=?oj#`obpp>!jm#plnf#`lvmwqjfpnjm-ip!=?,p`qjsw=le#wkf#slsvobwjlmleej`jbo#obmdvbdf?jnd#pq`>!jnbdfp,jgfmwjejfg#az#wkfmbwvqbo#qfplvq`fp`obppjej`bwjlm#le`bm#af#`lmpjgfqfgrvbmwvn#nf`kbmj`pMfufqwkfofpp/#wkfnjoojlm#zfbqp#bdl?,algz=\\x0E\\t?,kwno=\\x0E\\\"y\\\"W\\\"W\\\"[\\\"Q\\\"U\\\"V\\\"@\\twbhf#bgubmwbdf#lebmg/#b``lqgjmd#wlbwwqjavwfg#wl#wkfNj`qlplew#Tjmgltpwkf#ejqpw#`fmwvqzvmgfq#wkf#`lmwqlogju#`obpp>!kfbgfqpklqwoz#bewfq#wkfmlwbaof#f{`fswjlmwfmp#le#wklvpbmgppfufqbo#gjeefqfmwbqlvmg#wkf#tlqog-qfb`kjmd#njojwbqzjplobwfg#eqln#wkflsslpjwjlm#wl#wkfwkf#Log#WfpwbnfmwBeqj`bm#Bnfqj`bmpjmpfqwfg#jmwl#wkfpfsbqbwf#eqln#wkfnfwqlslojwbm#bqfbnbhfp#jw#slppjaofb`hmltofgdfg#wkbwbqdvbaoz#wkf#nlpwwzsf>!wf{w,`pp!=\\twkf#JmwfqmbwjlmboB``lqgjmd#wl#wkf#sf>!wf{w,`pp!#,=\\t`ljm`jgf#tjwk#wkfwtl.wkjqgp#le#wkfGvqjmd#wkjp#wjnf/gvqjmd#wkf#sfqjlgbmmlvm`fg#wkbw#kfwkf#jmwfqmbwjlmbobmg#nlqf#qf`fmwozafojfufg#wkbw#wkf`lmp`jlvpmfpp#bmgelqnfqoz#hmltm#bppvqqlvmgfg#az#wkfejqpw#bssfbqfg#jml``bpjlmbooz#vpfgslpjwjlm9baplovwf8!#wbqdfw>!\\\\aobmh!#slpjwjlm9qfobwjuf8wf{w.bojdm9`fmwfq8ib{,ojap,irvfqz,2-ab`hdqlvmg.`lolq9 wzsf>!bssoj`bwjlm,bmdvbdf!#`lmwfmw>!?nfwb#kwws.frvju>!Sqjub`z#Sloj`z?,b=f+!&0@p`qjsw#pq`>$!#wbqdfw>!\\\\aobmh!=Lm#wkf#lwkfq#kbmg/-isd\\x7Fwkvna\\x7Fqjdkw\\x7F1?,gju=?gju#`obpp>!?gju#pwzof>!eolbw9mjmfwffmwk#`fmwvqz?,algz=\\x0E\\t?,kwno=\\x0E\\t?jnd#pq`>!kwws9,,p8wf{w.bojdm9`fmwfqelmw.tfjdkw9#alog8#B``lqgjmd#wl#wkf#gjeefqfm`f#afwtffm!#eqbnfalqgfq>!3!#!#pwzof>!slpjwjlm9ojmh#kqfe>!kwws9,,kwno7,ollpf-gwg!=\\tgvqjmd#wkjp#sfqjlg?,wg=?,wq=?,wbaof=`olpfoz#qfobwfg#wlelq#wkf#ejqpw#wjnf8elmw.tfjdkw9alog8jmsvw#wzsf>!wf{w!#?psbm#pwzof>!elmw.lmqfbgzpwbwf`kbmdf\\n?gju#`obpp>!`ofbqgl`vnfmw-ol`bwjlm-#Elq#f{bnsof/#wkf#b#tjgf#ubqjfwz#le#?\\\"GL@WZSF#kwno=\\x0E\\t?%maps8%maps8%maps8!=?b#kqfe>!kwws9,,pwzof>!eolbw9ofew8`lm`fqmfg#tjwk#wkf>kwws&0B&1E&1Ettt-jm#slsvobq#`vowvqfwzsf>!wf{w,`pp!#,=jw#jp#slppjaof#wl#Kbqubqg#Vmjufqpjwzwzofpkffw!#kqfe>!,wkf#nbjm#`kbqb`wfqL{elqg#Vmjufqpjwz##mbnf>!hfztlqgp!#`pwzof>!wf{w.bojdm9wkf#Vmjwfg#Hjmdglnefgfqbo#dlufqmnfmw?gju#pwzof>!nbqdjm#gfsfmgjmd#lm#wkf#gfp`qjswjlm#le#wkf?gju#`obpp>!kfbgfq-njm-ip!=?,p`qjsw=gfpwqv`wjlm#le#wkfpojdkwoz#gjeefqfmwjm#b``lqgbm`f#tjwkwfof`lnnvmj`bwjlmpjmgj`bwfp#wkbw#wkfpklqwoz#wkfqfbewfqfpsf`jbooz#jm#wkf#Fvqlsfbm#`lvmwqjfpKltfufq/#wkfqf#bqfpq`>!kwws9,,pwbwj`pvddfpwfg#wkbw#wkf!#pq`>!kwws9,,ttt-b#obqdf#mvnafq#le#Wfof`lnnvmj`bwjlmp!#qfo>!mleloolt!#wKloz#Qlnbm#Fnsfqlqbonlpw#f{`ovpjufoz!#alqgfq>!3!#bow>!Pf`qfwbqz#le#Pwbwf`vonjmbwjmd#jm#wkf@JB#Tlqog#Eb`wallhwkf#nlpw#jnslqwbmwbmmjufqpbqz#le#wkfpwzof>!ab`hdqlvmg.?oj=?fn=?b#kqfe>!,wkf#Bwobmwj`#L`fbmpwqj`woz#psfbhjmd/pklqwoz#afelqf#wkfgjeefqfmw#wzsfp#lewkf#Lwwlnbm#Fnsjqf=?jnd#pq`>!kwws9,,Bm#Jmwqlgv`wjlm#wl`lmpfrvfm`f#le#wkfgfsbqwvqf#eqln#wkf@lmefgfqbwf#Pwbwfpjmgjdfmlvp#sflsofpSql`ffgjmdp#le#wkfjmelqnbwjlm#lm#wkfwkflqjfp#kbuf#affmjmuloufnfmw#jm#wkfgjujgfg#jmwl#wkqffbgib`fmw#`lvmwqjfpjp#qfpslmpjaof#elqgjpplovwjlm#le#wkf`loobalqbwjlm#tjwktjgfoz#qfdbqgfg#bpkjp#`lmwfnslqbqjfpelvmgjmd#nfnafq#leGlnjmj`bm#Qfsvaoj`dfmfqbooz#b``fswfgwkf#slppjajojwz#lebqf#bopl#bubjobaofvmgfq#`lmpwqv`wjlmqfpwlqbwjlm#le#wkfwkf#dfmfqbo#svaoj`jp#bonlpw#fmwjqfozsbppfp#wkqlvdk#wkfkbp#affm#pvddfpwfg`lnsvwfq#bmg#ujgflDfqnbmj`#obmdvbdfp#b``lqgjmd#wl#wkf#gjeefqfmw#eqln#wkfpklqwoz#bewfqtbqgpkqfe>!kwwsp9,,ttt-qf`fmw#gfufolsnfmwAlbqg#le#Gjqf`wlqp?gju#`obpp>!pfbq`k\\x7F#?b#kqfe>!kwws9,,Jm#sbqwj`vobq/#wkfNvowjsof#ellwmlwfplq#lwkfq#pvapwbm`fwklvpbmgp#le#zfbqpwqbmpobwjlm#le#wkf?,gju=\\x0E\\t?,gju=\\x0E\\t\\x0E\\t?b#kqfe>!jmgf{-skstbp#fpwbaojpkfg#jmnjm-ip!=?,p`qjsw=\\tsbqwj`jsbwf#jm#wkfb#pwqlmd#jmeovfm`fpwzof>!nbqdjm.wls9qfsqfpfmwfg#az#wkfdqbgvbwfg#eqln#wkfWqbgjwjlmbooz/#wkfFofnfmw+!p`qjsw!*8Kltfufq/#pjm`f#wkf,gju=\\t?,gju=\\t?gju#ofew8#nbqdjm.ofew9sqlwf`wjlm#bdbjmpw38#ufqwj`bo.bojdm9Vmelqwvmbwfoz/#wkfwzsf>!jnbdf,{.j`lm,gju=\\t?gju#`obpp>!#`obpp>!`ofbqej{!=?gju#`obpp>!ellwfq\\n\\n?,gju=\\t\\n\\n?,gju=\\twkf#nlwjlm#sj`wvqf<}=f!t0-lqd,2:::,{kwno!=?b#wbqdfw>!\\\\aobmh!#wf{w,kwno8#`kbqpfw>!#wbqdfw>!\\\\aobmh!=?wbaof#`foosbggjmd>!bvwl`lnsofwf>!lee!#wf{w.bojdm9#`fmwfq8wl#obpw#ufqpjlm#az#ab`hdqlvmg.`lolq9# !#kqfe>!kwws9,,ttt-,gju=?,gju=?gju#jg>?b#kqfe>! !#`obpp>!!=?jnd#pq`>!kwws9,,`qjsw!#pq`>!kwws9,,\\t?p`qjsw#obmdvbdf>!,,FM!#!kwws9,,ttt-tfm`lgfVQJ@lnslmfmw+!#kqfe>!ibubp`qjsw9?gju#`obpp>!`lmwfmwgl`vnfmw-tqjwf+$?p`slpjwjlm9#baplovwf8p`qjsw#pq`>!kwws9,,#pwzof>!nbqdjm.wls9-njm-ip!=?,p`qjsw=\\t?,gju=\\t?gju#`obpp>!t0-lqd,2:::,{kwno!#\\t\\x0E\\t?,algz=\\x0E\\t?,kwno=gjpwjm`wjlm#afwtffm,!#wbqdfw>!\\\\aobmh!=?ojmh#kqfe>!kwws9,,fm`lgjmd>!vwe.;!<=\\tt-bggFufmwOjpwfmfq!kwws9,,ttt-j`lm!#kqfe>!kwws9,,#pwzof>!ab`hdqlvmg9wzsf>!wf{w,`pp!#,=\\tnfwb#sqlsfqwz>!ld9w?jmsvw#wzsf>!wf{w!##pwzof>!wf{w.bojdm9wkf#gfufolsnfmw#le#wzofpkffw!#wzsf>!wfkwno8#`kbqpfw>vwe.;jp#`lmpjgfqfg#wl#afwbaof#tjgwk>!233&!#Jm#bggjwjlm#wl#wkf#`lmwqjavwfg#wl#wkf#gjeefqfm`fp#afwtffmgfufolsnfmw#le#wkf#Jw#jp#jnslqwbmw#wl#?,p`qjsw=\\t\\t?p`qjsw##pwzof>!elmw.pjyf92=?,psbm=?psbm#jg>daOjaqbqz#le#@lmdqfpp?jnd#pq`>!kwws9,,jnFmdojpk#wqbmpobwjlmB`bgfnz#le#P`jfm`fpgju#pwzof>!gjpsobz9`lmpwqv`wjlm#le#wkf-dfwFofnfmwAzJg+jg*jm#`lmivm`wjlm#tjwkFofnfmw+$p`qjsw$*8#?nfwb#sqlsfqwz>!ld9<}=f!wf{w!#mbnf>!=Sqjub`z#Sloj`z?,b=bgnjmjpwfqfg#az#wkffmbaofPjmdofQfrvfpwpwzof>%rvlw8nbqdjm9?,gju=?,gju=?,gju=?=?jnd#pq`>!kwws9,,j#pwzof>%rvlw8eolbw9qfefqqfg#wl#bp#wkf#wlwbo#slsvobwjlm#lejm#Tbpkjmdwlm/#G-@-#pwzof>!ab`hdqlvmg.bnlmd#lwkfq#wkjmdp/lqdbmjybwjlm#le#wkfsbqwj`jsbwfg#jm#wkfwkf#jmwqlgv`wjlm#lejgfmwjejfg#tjwk#wkfej`wjlmbo#`kbqb`wfq#L{elqg#Vmjufqpjwz#njpvmgfqpwbmgjmd#leWkfqf#bqf/#kltfufq/pwzofpkffw!#kqfe>!,@lovnajb#Vmjufqpjwzf{sbmgfg#wl#jm`ovgfvpvbooz#qfefqqfg#wljmgj`bwjmd#wkbw#wkfkbuf#pvddfpwfg#wkbwbeejojbwfg#tjwk#wkf`lqqfobwjlm#afwtffmmvnafq#le#gjeefqfmw=?,wg=?,wq=?,wbaof=Qfsvaoj`#le#Jqfobmg\\t?,p`qjsw=\\t?p`qjsw#vmgfq#wkf#jmeovfm`f`lmwqjavwjlm#wl#wkfLeej`jbo#tfapjwf#lekfbgrvbqwfqp#le#wkf`fmwfqfg#bqlvmg#wkfjnsoj`bwjlmp#le#wkfkbuf#affm#gfufolsfgEfgfqbo#Qfsvaoj`#leaf`bnf#jm`qfbpjmdoz`lmwjmvbwjlm#le#wkfMlwf/#kltfufq/#wkbwpjnjobq#wl#wkbw#le#`bsbajojwjfp#le#wkfb``lqgbm`f#tjwk#wkfsbqwj`jsbmwp#jm#wkfevqwkfq#gfufolsnfmwvmgfq#wkf#gjqf`wjlmjp#lewfm#`lmpjgfqfgkjp#zlvmdfq#aqlwkfq?,wg=?,wq=?,wbaof=?b#kwws.frvju>![.VB.skzpj`bo#sqlsfqwjfple#Aqjwjpk#@lovnajbkbp#affm#`qjwj`jyfg+tjwk#wkf#f{`fswjlmrvfpwjlmp#balvw#wkfsbppjmd#wkqlvdk#wkf3!#`foosbggjmd>!3!#wklvpbmgp#le#sflsofqfgjqf`wp#kfqf-#Elqkbuf#`kjogqfm#vmgfq&0F&0@,p`qjsw&0F!**8?b#kqfe>!kwws9,,ttt-?oj=?b#kqfe>!kwws9,,pjwf\\\\mbnf!#`lmwfmw>!wf{w.gf`lqbwjlm9mlmfpwzof>!gjpsobz9#mlmf?nfwb#kwws.frvju>![.mft#Gbwf+*-dfwWjnf+*#wzsf>!jnbdf,{.j`lm!?,psbm=?psbm#`obpp>!obmdvbdf>!ibubp`qjswtjmglt-ol`bwjlm-kqfe?b#kqfe>!ibubp`qjsw9..=\\x0E\\t?p`qjsw#wzsf>!w?b#kqfe>$kwws9,,ttt-klqw`vw#j`lm!#kqfe>!?,gju=\\x0E\\t?gju#`obpp>!?p`qjsw#pq`>!kwws9,,!#qfo>!pwzofpkffw!#w?,gju=\\t?p`qjsw#wzsf>,b=#?b#kqfe>!kwws9,,#booltWqbmpsbqfm`z>![.VB.@lnsbwjaof!#`lmqfobwjlmpkjs#afwtffm\\t?,p`qjsw=\\x0E\\t?p`qjsw#?,b=?,oj=?,vo=?,gju=bppl`jbwfg#tjwk#wkf#sqldqbnnjmd#obmdvbdf?,b=?b#kqfe>!kwws9,,?,b=?,oj=?oj#`obpp>!elqn#b`wjlm>!kwws9,,?gju#pwzof>!gjpsobz9wzsf>!wf{w!#mbnf>!r!?wbaof#tjgwk>!233&!#ab`hdqlvmg.slpjwjlm9!#alqgfq>!3!#tjgwk>!qfo>!pklqw`vw#j`lm!#k5=?vo=?oj=?b#kqfe>!##?nfwb#kwws.frvju>!`pp!#nfgjb>!p`qffm!#qfpslmpjaof#elq#wkf#!#wzsf>!bssoj`bwjlm,!#pwzof>!ab`hdqlvmg.kwno8#`kbqpfw>vwe.;!#booltwqbmpsbqfm`z>!pwzofpkffw!#wzsf>!wf\\x0E\\t?nfwb#kwws.frvju>!=?,psbm=?psbm#`obpp>!3!#`foopsb`jmd>!3!=8\\t?,p`qjsw=\\t?p`qjsw#plnfwjnfp#`boofg#wkfglfp#mlw#mf`fppbqjozElq#nlqf#jmelqnbwjlmbw#wkf#afdjmmjmd#le#?\\\"GL@WZSF#kwno=?kwnosbqwj`vobqoz#jm#wkf#wzsf>!kjggfm!#mbnf>!ibubp`qjsw9uljg+3*8!feef`wjufmfpp#le#wkf#bvwl`lnsofwf>!lee!#dfmfqbooz#`lmpjgfqfg=?jmsvw#wzsf>!wf{w!#!=?,p`qjsw=\\x0E\\t?p`qjswwkqlvdklvw#wkf#tlqog`lnnlm#njp`lm`fswjlmbppl`jbwjlm#tjwk#wkf?,gju=\\t?,gju=\\t?gju#`gvqjmd#kjp#ojefwjnf/`lqqfpslmgjmd#wl#wkfwzsf>!jnbdf,{.j`lm!#bm#jm`qfbpjmd#mvnafqgjsolnbwj`#qfobwjlmpbqf#lewfm#`lmpjgfqfgnfwb#`kbqpfw>!vwe.;!#?jmsvw#wzsf>!wf{w!#f{bnsofp#jm`ovgf#wkf!=?jnd#pq`>!kwws9,,jsbqwj`jsbwjlm#jm#wkfwkf#fpwbaojpknfmw#le\\t?,gju=\\t?gju#`obpp>!%bns8maps8%bns8maps8wl#gfwfqnjmf#tkfwkfqrvjwf#gjeefqfmw#eqlnnbqhfg#wkf#afdjmmjmdgjpwbm`f#afwtffm#wkf`lmwqjavwjlmp#wl#wkf`lmeoj`w#afwtffm#wkftjgfoz#`lmpjgfqfg#wltbp#lmf#le#wkf#ejqpwtjwk#ubqzjmd#gfdqffpkbuf#psf`vobwfg#wkbw+gl`vnfmw-dfwFofnfmwsbqwj`jsbwjmd#jm#wkflqjdjmbooz#gfufolsfgfwb#`kbqpfw>!vwe.;!=#wzsf>!wf{w,`pp!#,=\\tjmwfq`kbmdfbaoz#tjwknlqf#`olpfoz#qfobwfgpl`jbo#bmg#slojwj`bowkbw#tlvog#lwkfqtjpfsfqsfmgj`vobq#wl#wkfpwzof#wzsf>!wf{w,`ppwzsf>!pvanjw!#mbnf>!ebnjojfp#qfpjgjmd#jmgfufolsjmd#`lvmwqjfp`lnsvwfq#sqldqbnnjmdf`lmlnj`#gfufolsnfmwgfwfqnjmbwjlm#le#wkfelq#nlqf#jmelqnbwjlmlm#pfufqbo#l``bpjlmpslqwvdv/Fp#+Fvqlsfv*VWE.;!#pfwWjnflvw+evm`wjlm+*gjpsobz9jmojmf.aol`h8?jmsvw#wzsf>!pvanjw!#wzsf#>#$wf{w,ibubp`qj?jnd#pq`>!kwws9,,ttt-!#!kwws9,,ttt-t0-lqd,pklqw`vw#j`lm!#kqfe>!!#bvwl`lnsofwf>!lee!#?,b=?,gju=?gju#`obpp>?,b=?,oj=\\t?oj#`obpp>!`pp!#wzsf>!wf{w,`pp!#?elqn#b`wjlm>!kwws9,,{w,`pp!#kqfe>!kwws9,,ojmh#qfo>!bowfqmbwf!#\\x0E\\t?p`qjsw#wzsf>!wf{w,#lm`oj`h>!ibubp`qjsw9+mft#Gbwf*-dfwWjnf+*~kfjdkw>!2!#tjgwk>!2!#Sflsof$p#Qfsvaoj`#le##?b#kqfe>!kwws9,,ttt-wf{w.gf`lqbwjlm9vmgfqwkf#afdjmmjmd#le#wkf#?,gju=\\t?,gju=\\t?,gju=\\tfpwbaojpknfmw#le#wkf#?,gju=?,gju=?,gju=?,g ujftslqwxnjm.kfjdkw9\\t?p`qjsw#pq`>!kwws9,,lswjlm=?lswjlm#ubovf>lewfm#qfefqqfg#wl#bp#,lswjlm=\\t?lswjlm#ubov?\\\"GL@WZSF#kwno=\\t?\\\"..XJmwfqmbwjlmbo#Bjqslqw=\\t?b#kqfe>!kwws9,,ttt?,b=?b#kqfe>!kwws9,,t\\fTL\\fT^\\fTE\\fT^\\fUh\\fT{\\fTN\\roI\\ro|\\roL\\ro{\\roO\\rov\\rot\\nAO\\x05Gx\\bTA\\nzk#+\\x0BUm\\x05Gx*\\fHD\\fHS\\fH\\\\\\fIa\\fHJ\\fIk\\fHZ\\fHM\\fHR\\fHe\\fHD\\fH^\\fIg\\fHM\\fHy\\fIa\\fH[\\fIk\\fHH\\fIa\\fH\\\\\\fHp\\fHR\\fHD\\fHy\\fHR\\fH\\\\\\fIl\\fHT\\fHn\\fH@\\fHn\\fHK\\fHS\\fHH\\fHT\\fIa\\fHI\\fHR\\fHF\\fHD\\fHR\\fHT\\fIa\\fHY\\fIl\\fHy\\fHR\\fH\\\\\\fHT\\fHn\\fHT\\fIa\\fHy\\fH\\\\\\fHO\\fHT\\fHR\\fHB\\fH{\\fIa\\fH\\\\\\fIl\\fHv\\fHS\\fHs\\fIa\\fHL\\fIg\\fHn\\fHY\\fHS\\fHp\\fIa\\fHr\\fHR\\fHD\\fHi\\fHB\\fIk\\fH\\\\\\fHS\\fHy\\fHR\\fHY\\fHS\\fHA\\fHS\\fHD\\fIa\\fHD\\fH{\\fHR\\fHM\\fHS\\fHC\\fHR\\fHm\\fHy\\fIa\\fHC\\fIg\\fHn\\fHy\\fHS\\fHT\\fIm\\fH\\\\\\fHy\\fIa\\fH[\\fHR\\fHF\\fHU\\fIm\\fHm\\fHv\\fHH\\fIl\\fHF\\fIa\\fH\\\\\\fH@\\fHn\\fHK\\fHD\\fHs\\fHS\\fHF\\fIa\\fHF\\fHO\\fIl\\fHy\\fIa\\fH\\\\\\fHS\\fHy\\fIk\\fHs\\fHF\\fIa\\fH\\\\\\fHR\\fH\\\\\\fHn\\fHA\\fHF\\fIa\\fH\\\\\\fHR\\fHF\\fIa\\fHH\\fHB\\fHR\\fH^\\fHS\\fHy\\fIg\\fHn\\fH\\\\\\fHG\\fHP\\fIa\\fHH\\fHR\\fH\\\\\\fHD\\fHS\\fH\\\\\\fIa\\fHB\\fHR\\fHO\\fH^\\fHS\\fHB\\fHS\\fHs\\fIk\\fHMgfp`qjswjlm!#`lmwfmw>!gl`vnfmw-ol`bwjlm-sqlw-dfwFofnfmwpAzWbdMbnf+?\\\"GL@WZSF#kwno=\\t?kwno#?nfwb#`kbqpfw>!vwe.;!=9vqo!#`lmwfmw>!kwws9,,-`pp!#qfo>!pwzofpkffw!pwzof#wzsf>!wf{w,`pp!=wzsf>!wf{w,`pp!#kqfe>!t0-lqd,2:::,{kwno!#{nowzsf>!wf{w,ibubp`qjsw!#nfwklg>!dfw!#b`wjlm>!ojmh#qfo>!pwzofpkffw!##>#gl`vnfmw-dfwFofnfmwwzsf>!jnbdf,{.j`lm!#,=`foosbggjmd>!3!#`foops-`pp!#wzsf>!wf{w,`pp!#?,b=?,oj=?oj=?b#kqfe>!!#tjgwk>!2!#kfjdkw>!2!!=?b#kqfe>!kwws9,,ttt-pwzof>!gjpsobz9mlmf8!=bowfqmbwf!#wzsf>!bssoj.,,T0@,,GWG#[KWNO#2-3#foopsb`jmd>!3!#`foosbg#wzsf>!kjggfm!#ubovf>!,b=%maps8?psbm#qlof>!p\\t?jmsvw#wzsf>!kjggfm!#obmdvbdf>!IbubP`qjsw!##gl`vnfmw-dfwFofnfmwpAd>!3!#`foopsb`jmd>!3!#zsf>!wf{w,`pp!#nfgjb>!wzsf>$wf{w,ibubp`qjsw$tjwk#wkf#f{`fswjlm#le#zsf>!wf{w,`pp!#qfo>!pw#kfjdkw>!2!#tjgwk>!2!#>$(fm`lgfVQJ@lnslmfmw+?ojmh#qfo>!bowfqmbwf!#\\talgz/#wq/#jmsvw/#wf{wnfwb#mbnf>!qlalwp!#`lmnfwklg>!slpw!#b`wjlm>!=\\t?b#kqfe>!kwws9,,ttt-`pp!#qfo>!pwzofpkffw!#?,gju=?,gju=?gju#`obppobmdvbdf>!ibubp`qjsw!=bqjb.kjggfm>!wqvf!=.[?qjsw!#wzsf>!wf{w,ibubpo>38~*+*8\\t+evm`wjlm+*xab`hdqlvmg.jnbdf9#vqo+,b=?,oj=?oj=?b#kqfe>!k\\n\\n?oj=?b#kqfe>!kwws9,,bwlq!#bqjb.kjggfm>!wqv=#?b#kqfe>!kwws9,,ttt-obmdvbdf>!ibubp`qjsw!#,lswjlm=\\t?lswjlm#ubovf,gju=?,gju=?gju#`obpp>qbwlq!#bqjb.kjggfm>!wqf>+mft#Gbwf*-dfwWjnf+*slqwvdv/Fp#+gl#Aqbpjo*!wf{w,?nfwb#kwws.frvju>!@lmwfqbmpjwjlmbo,,FM!#!kwws9?kwno#{nomp>!kwws9,,ttt.,,T0@,,GWG#[KWNO#2-3#WGWG,{kwno2.wqbmpjwjlmbo,,ttt-t0-lqd,WQ,{kwno2,sf#>#$wf{w,ibubp`qjsw$8?nfwb#mbnf>!gfp`qjswjlmsbqfmwMlgf-jmpfqwAfelqf?jmsvw#wzsf>!kjggfm!#mbip!#wzsf>!wf{w,ibubp`qj+gl`vnfmw*-qfbgz+evm`wjp`qjsw#wzsf>!wf{w,ibubpjnbdf!#`lmwfmw>!kwws9,,VB.@lnsbwjaof!#`lmwfmw>wno8#`kbqpfw>vwe.;!#,=\\tojmh#qfo>!pklqw`vw#j`lm?ojmh#qfo>!pwzofpkffw!#?,p`qjsw=\\t?p`qjsw#wzsf>>#gl`vnfmw-`qfbwfFofnfm?b#wbqdfw>!\\\\aobmh!#kqfe>#gl`vnfmw-dfwFofnfmwpAjmsvw#wzsf>!wf{w!#mbnf>b-wzsf#>#$wf{w,ibubp`qjmsvw#wzsf>!kjggfm!#mbnfkwno8#`kbqpfw>vwe.;!#,=gwg!=\\t?kwno#{nomp>!kwws.,,T0@,,GWG#KWNO#7-32#WfmwpAzWbdMbnf+$p`qjsw$*jmsvw#wzsf>!kjggfm!#mbn?p`qjsw#wzsf>!wf{w,ibubp!#pwzof>!gjpsobz9mlmf8!=gl`vnfmw-dfwFofnfmwAzJg+>gl`vnfmw-`qfbwfFofnfmw+$#wzsf>$wf{w,ibubp`qjsw$jmsvw#wzsf>!wf{w!#mbnf>!g-dfwFofnfmwpAzWbdMbnf+pmj`bo!#kqfe>!kwws9,,ttt-@,,GWG#KWNO#7-32#Wqbmpjw?pwzof#wzsf>!wf{w,`pp!=\\t\\t?pwzof#wzsf>!wf{w,`pp!=jlmbo-gwg!=\\t?kwno#{nomp>kwws.frvju>!@lmwfmw.Wzsfgjmd>!3!#`foopsb`jmd>!3!kwno8#`kbqpfw>vwe.;!#,=\\t#pwzof>!gjpsobz9mlmf8!=??oj=?b#kqfe>!kwws9,,ttt-#wzsf>$wf{w,ibubp`qjsw$=&*&'&^&\\x88\\u0178\\u0C3E&\\u01AD&\\u0192&)&^&%&'&\\x82&P&1&\\xB1&3&]&m&u&E&t&C&\\xCF&V&V&/&>&6&\\u0F76\\u177Co&p&@&E&M&P&x&@&F&e&\\xCC&7&:&(&D&0&C&)&.&F&-&1&(&L&F&1\\u025E*\\u03EA\\u21F3&\\u1372&K&;&)&E&H&P&0&?&9&V&\\x81&-&v&a&,&E&)&?&=&'&'&B&\\u0D2E&\\u0503&\\u0316*&*8&%&%&&&%,)&\\x9A&>&\\x86&7&]&F&2&>&J&6&n&2&%&?&\\x8E&2&6&J&g&-&0&,&*&J&*&O&)&6&(&<&B&N&.&P&@&2&.&W&M&%\\u053C\\x84(,(<&,&\\u03DA&\\u18C7&-&,(%&(&%&(\\u013B0&X&D&\\x81&j&'&J&(&.&B&3&Z&R&h&3&E&E&<\\xC6-\\u0360\\u1EF3&%8?&@&,&Z&@&0&J&,&^&x&_&6&C&6&C\\u072C\\u2A25&f&-&-&-&-&,&J&2&8&z&8&C&Y&8&-&d&\\u1E78\\xCC-&7&1&F&7&t&W&7&I&.&.&^&=\\u0F9C\\u19D3&8(>&/&/&\\u077B')'\\u1065')'%@/&0&%\\u043E\\u09C0*&*@&C\\u053D\\u05D4\\u0274\\u05EB4\\u0DD7\\u071A\\u04D16\\u0D84&/\\u0178\\u0303Z&*%\\u0246\\u03FF&\\u0134&1\\xA8\\u04B4\\u0174\", dictionarySizeBits, \"AAAAKKLLKKKKKJJIHHIHHGGFF\");\n setData(dictionaryData, dictionarySizeBits);\n function InputStream(data) {\n this.data = new Int8Array(0);\n this.offset = 0;\n this.data = data;\n }\n function readInput(s, dst, offset, length) {\n if (s.input === null) {\n return -1;\n }\n const src = s.input;\n const end = Math.min(src.offset + length, src.data.length);\n const bytesRead = end - src.offset;\n dst.set(src.data.subarray(src.offset, end), offset);\n src.offset += bytesRead;\n return bytesRead;\n }\n function closeInput(s) {\n s.input = new InputStream(new Int8Array(0));\n }\n function toUsAsciiBytes(src) {\n const n = src.length;\n const result = new Int8Array(n);\n for (let i = 0; i < n; ++i) {\n result[i] = src.charCodeAt(i);\n }\n return result;\n }\n function toUtf8Runes(src) {\n const n = src.length;\n const result = new Int32Array(n);\n for (let i = 0; i < n; ++i) {\n result[i] = src.charCodeAt(i);\n }\n return result;\n }\n function makeError(s, code) {\n if (code >= 0) {\n return code;\n }\n if (s.runningState >= 0) {\n s.runningState = code;\n }\n throw new Error(\"Brotli error code: \" + code);\n }\n let ByteBuffer;\n function decode(bytes, options) {\n let s = new State();\n s.input = new InputStream(bytes);\n initState(s);\n if (options) {\n let customDictionary = options[\"customDictionary\"];\n if (customDictionary) attachDictionaryChunk(s, customDictionary);\n }\n let totalOutput = 0;\n let chunks = [];\n while (true) {\n let chunk = new Int8Array(16384);\n chunks.push(chunk);\n s.output = chunk;\n s.outputOffset = 0;\n s.outputLength = 16384;\n s.outputUsed = 0;\n decompress(s);\n totalOutput += s.outputUsed;\n if (s.outputUsed < 16384) break;\n }\n close(s);\n closeInput(s);\n let result = new Int8Array(totalOutput);\n let offset = 0;\n for (let i = 0; i < chunks.length; ++i) {\n let chunk = chunks[i];\n let end = Math.min(totalOutput, offset + 16384);\n let len = end - offset;\n if (len < 16384) {\n result.set(chunk.subarray(0, len), offset);\n } else {\n result.set(chunk, offset);\n }\n offset += len;\n }\n return result;\n }\n return decode;\n};\nlet BrotliDecode = makeBrotliDecode();\n;// ./src/core/brotli_stream.js\n\n\n\nclass BrotliStream extends DecodeStream {\n #isAsync = true;\n constructor(stream, maybeLength) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n }\n readBlock() {\n const bytes = this.stream.getBytes();\n const decodedData = BrotliDecode(new Int8Array(bytes.buffer, bytes.byteOffset, bytes.length));\n this.buffer = new Uint8Array(decodedData.buffer, decodedData.byteOffset, decodedData.length);\n this.bufferLength = this.buffer.length;\n this.eof = true;\n }\n async getImageData(length, _decoderOptions) {\n const data = await this.asyncGetBytes();\n if (!data) {\n return this.getBytes(length);\n }\n if (data.length <= length) {\n return data;\n }\n return data.subarray(0, length);\n }\n async asyncGetBytes() {\n const {\n decompressed,\n compressed\n } = await this.asyncGetBytesFromDecompressionStream(\"brotli\");\n if (decompressed) {\n return decompressed;\n }\n this.#isAsync = false;\n this.stream = new Stream(compressed, 0, compressed.length, this.stream.dict);\n this.reset();\n return null;\n }\n get isAsync() {\n return this.#isAsync;\n }\n}\n\n;// ./external/jbig2/jbig2.js\nasync function JBig2(moduleArg = {}) {\n var moduleRtn;\n var Module = moduleArg;\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n var _scriptName = import.meta.url;\n var scriptDirectory = \"\";\n var readAsync, readBinary;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n try {\n scriptDirectory = new URL(\".\", _scriptName).href;\n } catch {}\n readAsync = async url => {\n var response = await fetch(url, {\n credentials: \"same-origin\"\n });\n if (response.ok) {\n return response.arrayBuffer();\n }\n throw new Error(response.status + \" : \" + response.url);\n };\n } else {}\n var out = console.log.bind(console);\n var err = console.error.bind(console);\n var wasmBinary;\n var ABORT = false;\n var EXITSTATUS;\n var readyPromiseResolve, readyPromiseReject;\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n var HEAP64, HEAPU64;\n var runtimeInitialized = false;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n HEAP8 = new Int8Array(b);\n HEAP16 = new Int16Array(b);\n HEAPU8 = new Uint8Array(b);\n HEAPU16 = new Uint16Array(b);\n HEAP32 = new Int32Array(b);\n HEAPU32 = new Uint32Array(b);\n HEAPF32 = new Float32Array(b);\n HEAPF64 = new Float64Array(b);\n HEAP64 = new BigInt64Array(b);\n HEAPU64 = new BigUint64Array(b);\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(onPreRuns);\n }\n function initRuntime() {\n runtimeInitialized = true;\n wasmExports[\"j\"]();\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(onPostRuns);\n }\n function abort(what) {\n Module[\"onAbort\"]?.(what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject?.(e);\n throw e;\n }\n var wasmBinaryFile;\n function getWasmImports() {\n var imports = {\n a: wasmImports\n };\n return imports;\n }\n async function createWasm() {\n function receiveInstance(instance, module) {\n wasmExports = instance.exports;\n assignWasmExports(wasmExports);\n updateMemoryViews();\n return wasmExports;\n }\n var info = getWasmImports();\n return new Promise((resolve, reject) => {\n Module[\"instantiateWasm\"](info, (inst, mod) => {\n resolve(receiveInstance(inst, mod));\n });\n });\n }\n class ExitStatus {\n name = \"ExitStatus\";\n constructor(status) {\n this.message = `Program terminated with exit(${status})`;\n this.status = status;\n }\n }\n var callRuntimeCallbacks = callbacks => {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n };\n var onPostRuns = [];\n var addOnPostRun = cb => onPostRuns.push(cb);\n var onPreRuns = [];\n var addOnPreRun = cb => onPreRuns.push(cb);\n var noExitRuntime = true;\n var __abort_js = () => abort(\"\");\n var runtimeKeepaliveCounter = 0;\n var __emscripten_runtime_keepalive_clear = () => {\n noExitRuntime = false;\n runtimeKeepaliveCounter = 0;\n };\n var timers = {};\n var handleException = e => {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n };\n var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n var _proc_exit = code => {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n Module[\"onExit\"]?.(code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n };\n var exitJS = (status, implicit) => {\n EXITSTATUS = status;\n _proc_exit(status);\n };\n var _exit = exitJS;\n var maybeExit = () => {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n };\n var callUserCallback = func => {\n if (ABORT) {\n return;\n }\n try {\n return func();\n } catch (e) {\n handleException(e);\n } finally {\n maybeExit();\n }\n };\n var _emscripten_get_now = () => performance.now();\n var __setitimer_js = (which, timeout_ms) => {\n if (timers[which]) {\n clearTimeout(timers[which].id);\n delete timers[which];\n }\n if (!timeout_ms) return 0;\n var id = setTimeout(() => {\n delete timers[which];\n callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));\n }, timeout_ms);\n timers[which] = {\n id,\n timeout_ms\n };\n return 0;\n };\n function _createImageData(size) {\n Module.imageData = new Uint8Array(size);\n }\n var getHeapMax = () => 2147483648;\n var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n var growMemory = size => {\n var oldHeapSize = wasmMemory.buffer.byteLength;\n var pages = (size - oldHeapSize + 65535) / 65536 | 0;\n try {\n wasmMemory.grow(pages);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n };\n var _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = growMemory(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n };\n function _setImageData(array_ptr, pitch8, pitch32, height) {\n if (pitch32 === pitch8) {\n Module.imageData = new Uint8ClampedArray(HEAPU8.subarray(array_ptr, array_ptr + pitch32 * height));\n return;\n }\n const destSize = pitch8 * height;\n const imageData = Module.imageData = new Uint8ClampedArray(destSize);\n for (let srcStart = array_ptr, destStart = 0; destStart < destSize; srcStart += pitch32, destStart += pitch8) {\n imageData.set(HEAPU8.subarray(srcStart, srcStart + pitch8), destStart);\n }\n }\n function _setLineData(line_ptr, pitch8, offset) {\n Module.imageData.set(HEAPU8.subarray(line_ptr, line_ptr + pitch8), offset);\n }\n var writeArrayToMemory = (array, buffer) => {\n HEAP8.set(array, buffer);\n };\n if (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n if (Module[\"print\"]) out = Module[\"print\"];\n if (Module[\"printErr\"]) err = Module[\"printErr\"];\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].shift()();\n }\n }\n Module[\"writeArrayToMemory\"] = writeArrayToMemory;\n var _malloc, _free, _jbig2_decode, _ccitt_decode, __emscripten_timeout, memory, __indirect_function_table, wasmMemory;\n function assignWasmExports(wasmExports) {\n _malloc = Module[\"_malloc\"] = wasmExports[\"k\"];\n _free = Module[\"_free\"] = wasmExports[\"l\"];\n _jbig2_decode = Module[\"_jbig2_decode\"] = wasmExports[\"m\"];\n _ccitt_decode = Module[\"_ccitt_decode\"] = wasmExports[\"n\"];\n __emscripten_timeout = wasmExports[\"o\"];\n memory = wasmMemory = wasmExports[\"i\"];\n __indirect_function_table = wasmExports[\"__indirect_function_table\"];\n }\n var wasmImports = {\n e: __abort_js,\n b: __emscripten_runtime_keepalive_clear,\n c: __setitimer_js,\n g: _createImageData,\n d: _emscripten_resize_heap,\n a: _proc_exit,\n h: _setImageData,\n f: _setLineData\n };\n function run() {\n preRun();\n function doRun() {\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n readyPromiseResolve?.(Module);\n Module[\"onRuntimeInitialized\"]?.();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(() => {\n setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n var wasmExports;\n wasmExports = await createWasm();\n run();\n if (runtimeInitialized) {\n moduleRtn = Module;\n } else {\n moduleRtn = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n }\n return moduleRtn;\n}\n/* harmony default export */ const jbig2 = (JBig2);\n;// ./src/core/wasm_image.js\n\n\nclass WasmImage {\n static #handler = null;\n static #instances = new Set();\n static #useWasm = true;\n static #useWorkerFetch = true;\n static #wasmUrl = null;\n #buffer = null;\n #modulePromise = null;\n _filename = null;\n _noWasmFilename = null;\n static setOptions({\n handler,\n useWasm,\n useWorkerFetch,\n wasmUrl\n }) {\n WasmImage.#useWasm = useWasm;\n WasmImage.#useWorkerFetch = useWorkerFetch;\n WasmImage.#wasmUrl = wasmUrl;\n if (!useWorkerFetch) {\n WasmImage.#handler = handler;\n }\n }\n static get instance() {\n unreachable(\"Abstract getter `instance` accessed\");\n }\n static cleanup() {\n for (const instance of WasmImage.#instances) {\n instance.#modulePromise = null;\n }\n }\n constructor(trackInstance = false) {\n if (trackInstance) {\n WasmImage.#instances.add(this);\n }\n }\n async #getJsModule(fallbackCallback) {\n let instance = null;\n try {\n const mod = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n `${WasmImage.#wasmUrl}${this._noWasmFilename}`);\n instance = mod.default();\n } catch (ex) {\n warn(`#getJsModule: ${ex}`);\n }\n fallbackCallback(instance);\n }\n async #instantiateWasm(fallbackCallback, imports, successCallback) {\n try {\n if (!this.#buffer) {\n if (WasmImage.#useWorkerFetch) {\n this.#buffer = await fetchBinaryData(`${WasmImage.#wasmUrl}${this._filename}`);\n } else {\n this.#buffer = await WasmImage.#handler.sendWithPromise(\"FetchBinaryData\", {\n kind: \"wasmUrl\",\n filename: this._filename\n });\n }\n }\n const results = await WebAssembly.instantiate(this.#buffer, imports);\n return successCallback(results.instance);\n } catch (ex) {\n warn(`#instantiateWasm: ${ex}`);\n this.#getJsModule(fallbackCallback);\n return null;\n }\n }\n _getModule(ImageDecoder) {\n if (!this.#modulePromise) {\n const {\n promise,\n resolve\n } = Promise.withResolvers();\n const promises = [promise];\n if (!WasmImage.#useWasm) {\n this.#getJsModule(resolve);\n } else {\n promises.push(ImageDecoder({\n warn: warn,\n instantiateWasm: this.#instantiateWasm.bind(this, resolve)\n }));\n }\n this.#modulePromise = Promise.race(promises);\n }\n return this.#modulePromise;\n }\n async decode(bytes, _params) {\n unreachable(\"Abstract method `decode` called\");\n }\n}\n\n;// ./src/core/jbig2_ccittFax.js\n\n\n\nclass Jbig2Error extends BaseException {\n constructor(msg) {\n super(msg, \"Jbig2Error\");\n }\n}\nclass JBig2CCITTFaxImage extends WasmImage {\n _filename = \"jbig2.wasm\";\n _noWasmFilename = \"jbig2_nowasm_fallback.js\";\n static get instance() {\n return shadow(this, \"instance\", new JBig2CCITTFaxImage(true));\n }\n async decode(bytes, width, height, globals, CCITTOptions) {\n const module = await this._getModule(jbig2);\n if (!module) {\n throw new Jbig2Error(\"JBig2 failed to initialize\");\n }\n let ptr, globalsPtr;\n try {\n const size = bytes.length;\n ptr = module._malloc(size);\n module.writeArrayToMemory(bytes, ptr);\n if (CCITTOptions) {\n module._ccitt_decode(ptr, size, width, height, CCITTOptions.K, CCITTOptions.EndOfLine ? 1 : 0, CCITTOptions.EncodedByteAlign ? 1 : 0, CCITTOptions.BlackIs1 ? 1 : 0, CCITTOptions.Columns, CCITTOptions.Rows);\n } else {\n const globalsSize = globals ? globals.length : 0;\n if (globalsSize > 0) {\n globalsPtr = module._malloc(globalsSize);\n module.writeArrayToMemory(globals, globalsPtr);\n }\n module._jbig2_decode(ptr, size, width, height, globalsPtr, globalsSize);\n }\n if (!module.imageData) {\n throw new Jbig2Error(\"Unknown error\");\n }\n const {\n imageData\n } = module;\n module.imageData = null;\n return imageData;\n } finally {\n if (ptr) {\n module._free(ptr);\n }\n if (globalsPtr) {\n module._free(globalsPtr);\n }\n }\n }\n}\n\n;// ./src/core/ccitt_stream.js\n\n\n\n\nclass CCITTFaxStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n this.stream = str;\n this.maybeLength = maybeLength;\n this.dict = str.dict;\n if (!(params instanceof Dict)) {\n params = Dict.empty;\n }\n this.params = {\n K: params.get(\"K\") || 0,\n EndOfLine: !!params.get(\"EndOfLine\"),\n EncodedByteAlign: !!params.get(\"EncodedByteAlign\"),\n Columns: params.get(\"Columns\") || 1728,\n Rows: params.get(\"Rows\") || 0,\n EndOfBlock: !!(params.get(\"EndOfBlock\") ?? true),\n BlackIs1: !!params.get(\"BlackIs1\")\n };\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n get isImageStream() {\n return true;\n }\n get isAsyncDecoder() {\n return true;\n }\n async decodeImage(bytes, length, _decoderOptions) {\n if (this.eof) {\n return this.buffer;\n }\n bytes ??= this.stream.isAsync ? (await this.stream.asyncGetBytes()) || this.bytes : this.bytes;\n this.buffer = await JBig2CCITTFaxImage.instance.decode(bytes, this.dict.get(\"W\", \"Width\"), this.dict.get(\"H\", \"Height\"), null, this.params);\n this.bufferLength = this.buffer.length;\n this.eof = true;\n return this.buffer;\n }\n}\n\n;// ./src/core/flate_stream.js\n\n\n\nconst codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\nconst lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);\nconst distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);\nconst fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9];\nconst fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5];\nclass FlateStream extends DecodeStream {\n #isAsync = true;\n constructor(str, maybeLength) {\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n const cmf = str.getByte();\n const flg = str.getByte();\n if (cmf === -1 || flg === -1) {\n throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`);\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n }\n if (flg & 0x20) {\n throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n }\n this.codeSize = 0;\n this.codeBuf = 0;\n }\n async getImageData(length, _decoderOptions) {\n const data = await this.asyncGetBytes();\n if (!data) {\n return this.getBytes(length);\n }\n if (data.length <= length) {\n return data;\n }\n return data.subarray(0, length);\n }\n async asyncGetBytes() {\n const {\n decompressed,\n compressed\n } = await this.asyncGetBytesFromDecompressionStream(\"deflate\");\n if (decompressed) {\n return decompressed;\n }\n this.#isAsync = false;\n this.stream = new Stream(compressed, 2, compressed.length, this.stream.dict);\n this.reset();\n return null;\n }\n get isAsync() {\n return this.#isAsync;\n }\n getBits(bits) {\n const str = this.stream;\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n let b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuf & (1 << bits) - 1;\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n return b;\n }\n getCode(table) {\n const str = this.stream;\n const codes = table[0];\n const maxLen = table[1];\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n let b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n break;\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n const code = codes[codeBuf & (1 << maxLen) - 1];\n const codeLen = code >> 16;\n const codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n }\n generateHuffmanTable(lengths) {\n const n = lengths.length;\n let maxLen = 0;\n let i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n const size = 1 << maxLen;\n const codes = new Int32Array(size);\n for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {\n for (let val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n let code2 = 0;\n let t = code;\n for (i = 0; i < len; ++i) {\n code2 = code2 << 1 | t & 1;\n t >>= 1;\n }\n for (i = code2; i < size; i += skip) {\n codes[i] = len << 16 | val;\n }\n ++code;\n }\n }\n }\n return [codes, maxLen];\n }\n #endsStreamOnError(err) {\n info(err);\n this.eof = true;\n }\n readBlock() {\n let buffer, hdr, len;\n const str = this.stream;\n try {\n hdr = this.getBits(3);\n } catch (ex) {\n this.#endsStreamOnError(ex.message);\n return;\n }\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n if (hdr === 0) {\n let b;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n let blockLen = b;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n let check = b;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n check |= b << 8;\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n throw new FormatError(\"Bad uncompressed block length in flate stream\");\n }\n this.codeBuf = 0;\n this.codeSize = 0;\n const bufferLength = this.bufferLength,\n end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n } else {\n const block = str.getBytes(blockLen);\n buffer.set(block, bufferLength);\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n return;\n }\n let litCodeTable;\n let distCodeTable;\n if (hdr === 1) {\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n const numLitCodes = this.getBits(5) + 257;\n const numDistCodes = this.getBits(5) + 1;\n const numCodeLenCodes = this.getBits(4) + 4;\n const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n let i;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n len = 0;\n i = 0;\n const codes = numLitCodes + numDistCodes;\n const codeLengths = new Uint8Array(codes);\n let bitsLength, bitsOffset, what;\n while (i < codes) {\n const code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n } else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n } else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n let repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n } else {\n throw new FormatError(\"Unknown block type in flate stream\");\n }\n buffer = this.buffer;\n let limit = buffer ? buffer.length : 0;\n let pos = this.bufferLength;\n while (true) {\n let code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n let code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n const dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (let k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n }\n}\n\n;// ./src/core/jbig2_stream.js\n\n\n\n\n\nclass Jbig2Stream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n ensureBuffer(requested) {}\n get isAsyncDecoder() {\n return true;\n }\n get isImageStream() {\n return true;\n }\n static stripFileHeader(bytes) {\n if (bytes.length >= 9 && bytes[0] === 0x97 && bytes[1] === 0x4a && bytes[2] === 0x42 && bytes[3] === 0x32 && bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a) {\n const headerLength = (bytes[8] & 2) === 0 ? 13 : 9;\n return bytes.subarray(headerLength);\n }\n return bytes;\n }\n async decodeImage(bytes, length, _decoderOptions) {\n if (this.eof) {\n return this.buffer;\n }\n bytes = Jbig2Stream.stripFileHeader(bytes || this.bytes);\n let globals = null;\n if (this.params instanceof Dict) {\n const globalsStream = this.params.get(\"JBIG2Globals\");\n if (globalsStream instanceof BaseStream) {\n globals = Jbig2Stream.stripFileHeader(globalsStream.getBytes());\n }\n }\n this.buffer = await JBig2CCITTFaxImage.instance.decode(bytes, this.dict.get(\"Width\"), this.dict.get(\"Height\"), globals);\n this.bufferLength = this.buffer.length;\n this.eof = true;\n return this.buffer;\n }\n get canAsyncDecodeImageFromBuffer() {\n return this.stream.isAsync;\n }\n}\n\n;// ./external/openjpeg/openjpeg.js\nasync function OpenJPEG(moduleArg = {}) {\n var moduleRtn;\n var Module = moduleArg;\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n var _scriptName = import.meta.url;\n var scriptDirectory = \"\";\n var readAsync, readBinary;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n try {\n scriptDirectory = new URL(\".\", _scriptName).href;\n } catch {}\n readAsync = async url => {\n var response = await fetch(url, {\n credentials: \"same-origin\"\n });\n if (response.ok) {\n return response.arrayBuffer();\n }\n throw new Error(response.status + \" : \" + response.url);\n };\n } else {}\n var out = console.log.bind(console);\n var err = console.error.bind(console);\n var wasmBinary;\n var ABORT = false;\n var EXITSTATUS;\n class EmscriptenEH {}\n class EmscriptenSjLj extends EmscriptenEH {}\n var readyPromiseResolve, readyPromiseReject;\n var runtimeInitialized = false;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n HEAP8 = new Int8Array(b);\n HEAP16 = new Int16Array(b);\n HEAPU8 = new Uint8Array(b);\n HEAPU16 = new Uint16Array(b);\n HEAP32 = new Int32Array(b);\n HEAPU32 = new Uint32Array(b);\n HEAPF32 = new Float32Array(b);\n HEAPF64 = new Float64Array(b);\n HEAP64 = new BigInt64Array(b);\n HEAPU64 = new BigUint64Array(b);\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(onPreRuns);\n }\n function initRuntime() {\n runtimeInitialized = true;\n wasmExports[\"s\"]();\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(onPostRuns);\n }\n function abort(what) {\n Module[\"onAbort\"]?.(what);\n what = `Aborted(${what})`;\n err(what);\n ABORT = true;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject?.(e);\n throw e;\n }\n var wasmBinaryFile;\n function getWasmImports() {\n var imports = {\n a: wasmImports\n };\n return imports;\n }\n async function createWasm() {\n function receiveInstance(instance, module) {\n wasmExports = instance.exports;\n assignWasmExports(wasmExports);\n updateMemoryViews();\n return wasmExports;\n }\n var info = getWasmImports();\n return new Promise((resolve, reject) => {\n Module[\"instantiateWasm\"](info, (inst, mod) => {\n resolve(receiveInstance(inst, mod));\n });\n });\n }\n class ExitStatus {\n name = \"ExitStatus\";\n constructor(status) {\n this.message = `Program terminated with exit(${status})`;\n this.status = status;\n }\n }\n var HEAP16;\n var HEAP32;\n var HEAP64;\n var HEAP8;\n var HEAPF32;\n var HEAPF64;\n var HEAPU16;\n var HEAPU32;\n var HEAPU64;\n var HEAPU8;\n var callRuntimeCallbacks = callbacks => {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n };\n var onPostRuns = [];\n var addOnPostRun = cb => onPostRuns.push(cb);\n var onPreRuns = [];\n var addOnPreRun = cb => onPreRuns.push(cb);\n var noExitRuntime = true;\n var __abort_js = () => abort(\"\");\n var runtimeKeepaliveCounter = 0;\n var __emscripten_runtime_keepalive_clear = () => {\n noExitRuntime = false;\n runtimeKeepaliveCounter = 0;\n };\n var timers = {};\n var handleException = e => {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n };\n var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n var _proc_exit = code => {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n Module[\"onExit\"]?.(code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n };\n var exitJS = (status, implicit) => {\n EXITSTATUS = status;\n _proc_exit(status);\n };\n var _exit = exitJS;\n var maybeExit = () => {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n };\n var callUserCallback = func => {\n if (ABORT) {\n return;\n }\n try {\n return func();\n } catch (e) {\n handleException(e);\n } finally {\n maybeExit();\n }\n };\n var _emscripten_get_now = () => performance.now();\n var __setitimer_js = (which, timeout_ms) => {\n if (timers[which]) {\n clearTimeout(timers[which].id);\n delete timers[which];\n }\n if (!timeout_ms) return 0;\n var id = setTimeout(() => {\n delete timers[which];\n callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));\n }, timeout_ms);\n timers[which] = {\n id,\n timeout_ms\n };\n return 0;\n };\n function _copy_pixels_1(compG_ptr, nb_pixels) {\n compG_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n imageData.set(compG);\n }\n function _copy_pixels_3(compR_ptr, compG_ptr, compB_ptr, nb_pixels) {\n compR_ptr >>= 2;\n compG_ptr >>= 2;\n compB_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 3);\n const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[3 * i] = compR[i];\n imageData[3 * i + 1] = compG[i];\n imageData[3 * i + 2] = compB[i];\n }\n }\n function _copy_pixels_4(compR_ptr, compG_ptr, compB_ptr, compA_ptr, nb_pixels) {\n compR_ptr >>= 2;\n compG_ptr >>= 2;\n compB_ptr >>= 2;\n compA_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n const compA = HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = compR[i];\n imageData[4 * i + 1] = compG[i];\n imageData[4 * i + 2] = compB[i];\n imageData[4 * i + 3] = compA[i];\n }\n }\n var getHeapMax = () => 2147483648;\n var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n var growMemory = size => {\n var oldHeapSize = wasmMemory.buffer.byteLength;\n var pages = (size - oldHeapSize + 65535) / 65536 | 0;\n try {\n wasmMemory.grow(pages);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n };\n var _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = growMemory(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n };\n var ENV = {};\n var getExecutableName = () => thisProgram || \"./this.program\";\n var getEnvStrings = () => {\n if (!getEnvStrings.strings) {\n var lang = (globalThis.navigator?.language ?? \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n USER: \"web_user\",\n LOGNAME: \"web_user\",\n PATH: \"/\",\n PWD: \"/\",\n HOME: \"/home/web_user\",\n LANG: lang,\n _: getExecutableName()\n };\n for (var x in ENV) {\n if (ENV[x] === undefined) delete env[x];else env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(`${x}=${env[x]}`);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n };\n var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.codePointAt(i);\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n i++;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n };\n var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n var _environ_get = (__environ, environ_buf) => {\n var bufSize = 0;\n var envp = 0;\n for (var string of getEnvStrings()) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + envp >> 2] = ptr;\n bufSize += stringToUTF8(string, ptr, Infinity) + 1;\n envp += 4;\n }\n return 0;\n };\n var lengthBytesUTF8 = str => {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n };\n var _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n for (var string of strings) {\n bufSize += lengthBytesUTF8(string) + 1;\n }\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n };\n var INT53_MAX = 9007199254740992;\n var INT53_MIN = -9007199254740992;\n var bigintToI53Checked = num => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);\n function _fd_seek(fd, offset, whence, newOffset) {\n offset = bigintToI53Checked(offset);\n return 70;\n }\n var printCharBuffers = [null, [], []];\n var UTF8Decoder = globalThis.TextDecoder && new TextDecoder();\n var findStringEnd = (heapOrArray, idx, maxBytesToRead, ignoreNul) => {\n var maxIdx = idx + maxBytesToRead;\n if (ignoreNul) return maxIdx;\n while (heapOrArray[idx] && !(idx >= maxIdx)) ++idx;\n return idx;\n };\n var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead, ignoreNul) => {\n var endPtr = findStringEnd(heapOrArray, idx, maxBytesToRead, ignoreNul);\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n };\n var printChar = (stream, curr) => {\n var buffer = printCharBuffers[stream];\n if (curr === 0 || curr === 10) {\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer));\n buffer.length = 0;\n } else {\n buffer.push(curr);\n }\n };\n var UTF8ToString = (ptr, maxBytesToRead, ignoreNul) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead, ignoreNul) : \"\";\n var _fd_write = (fd, iov, iovcnt, pnum) => {\n var num = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n for (var j = 0; j < len; j++) {\n printChar(fd, HEAPU8[ptr + j]);\n }\n num += len;\n }\n HEAPU32[pnum >> 2] = num;\n return 0;\n };\n function _gray_to_rgba(compG_ptr, nb_pixels) {\n compG_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i];\n imageData[4 * i + 3] = 255;\n }\n }\n function _graya_to_rgba(compG_ptr, compA_ptr, nb_pixels) {\n compG_ptr >>= 2;\n compA_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compA = HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i];\n imageData[4 * i + 3] = compA[i];\n }\n }\n function _jsPrintWarning(message_ptr) {\n const message = UTF8ToString(message_ptr);\n (Module.warn || console.warn)(`OpenJPEG: ${message}`);\n }\n function _rgb_to_rgba(compR_ptr, compG_ptr, compB_ptr, nb_pixels) {\n compR_ptr >>= 2;\n compG_ptr >>= 2;\n compB_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = compR[i];\n imageData[4 * i + 1] = compG[i];\n imageData[4 * i + 2] = compB[i];\n imageData[4 * i + 3] = 255;\n }\n }\n function _storeErrorMessage(message_ptr) {\n const message = UTF8ToString(message_ptr);\n if (!Module.errorMessages) {\n Module.errorMessages = message;\n } else {\n Module.errorMessages += \"\\n\" + message;\n }\n }\n var writeArrayToMemory = (array, buffer) => {\n HEAP8.set(array, buffer);\n };\n if (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n if (Module[\"print\"]) out = Module[\"print\"];\n if (Module[\"printErr\"]) err = Module[\"printErr\"];\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].shift()();\n }\n }\n Module[\"writeArrayToMemory\"] = writeArrayToMemory;\n var _malloc, _free, _jp2_decode, __emscripten_timeout, memory, __indirect_function_table, wasmMemory;\n function assignWasmExports(wasmExports) {\n _malloc = Module[\"_malloc\"] = wasmExports[\"t\"];\n _free = Module[\"_free\"] = wasmExports[\"u\"];\n _jp2_decode = Module[\"_jp2_decode\"] = wasmExports[\"v\"];\n __emscripten_timeout = wasmExports[\"w\"];\n memory = wasmMemory = wasmExports[\"r\"];\n __indirect_function_table = wasmExports[\"__indirect_function_table\"];\n }\n var wasmImports = {\n m: __abort_js,\n l: __emscripten_runtime_keepalive_clear,\n i: __setitimer_js,\n f: _copy_pixels_1,\n e: _copy_pixels_3,\n d: _copy_pixels_4,\n j: _emscripten_resize_heap,\n o: _environ_get,\n p: _environ_sizes_get,\n n: _fd_seek,\n b: _fd_write,\n q: _gray_to_rgba,\n h: _graya_to_rgba,\n c: _jsPrintWarning,\n k: _proc_exit,\n g: _rgb_to_rgba,\n a: _storeErrorMessage\n };\n function run() {\n preRun();\n function doRun() {\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n readyPromiseResolve?.(Module);\n Module[\"onRuntimeInitialized\"]?.();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(() => {\n setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n var wasmExports;\n wasmExports = await createWasm();\n run();\n if (runtimeInitialized) {\n moduleRtn = Module;\n } else {\n moduleRtn = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n }\n return moduleRtn;\n}\n/* harmony default export */ const openjpeg = (OpenJPEG);\n;// ./src/core/jpx.js\n\n\n\n\nclass JpxError extends BaseException {\n constructor(msg) {\n super(msg, \"JpxError\");\n }\n}\nclass JpxImage extends WasmImage {\n _filename = \"openjpeg.wasm\";\n _noWasmFilename = \"openjpeg_nowasm_fallback.js\";\n static get instance() {\n return shadow(this, \"instance\", new JpxImage(true));\n }\n async decode(bytes, {\n numComponents = 4,\n isIndexedColormap = false,\n smaskInData = false,\n reducePower = 0\n } = {}) {\n const module = await this._getModule(openjpeg);\n if (!module) {\n throw new JpxError(\"OpenJPEG failed to initialize\");\n }\n let ptr;\n try {\n const size = bytes.length;\n ptr = module._malloc(size);\n module.writeArrayToMemory(bytes, ptr);\n const ret = module._jp2_decode(ptr, size, numComponents > 0 ? numComponents : 0, !!isIndexedColormap, !!smaskInData, reducePower);\n if (ret) {\n const {\n errorMessages\n } = module;\n if (errorMessages) {\n delete module.errorMessages;\n throw new JpxError(errorMessages);\n }\n throw new JpxError(\"Unknown error\");\n }\n const {\n imageData\n } = module;\n module.imageData = null;\n return imageData;\n } finally {\n if (ptr) {\n module._free(ptr);\n }\n }\n }\n static parseImageProperties(stream) {\n let newByte = stream.getByte();\n while (newByte >= 0) {\n const oldByte = newByte;\n newByte = stream.getByte();\n const code = oldByte << 8 | newByte;\n if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0;\n const Ysiz = stream.getInt32() >>> 0;\n const XOsiz = stream.getInt32() >>> 0;\n const YOsiz = stream.getInt32() >>> 0;\n stream.skip(16);\n const Csiz = stream.getUint16();\n return {\n width: Xsiz - XOsiz,\n height: Ysiz - YOsiz,\n bitsPerComponent: 8,\n componentsCount: Csiz\n };\n }\n }\n throw new JpxError(\"No size marker found in JPX stream\");\n }\n}\n\n;// ./src/core/jpx_stream.js\n\n\n\nclass JpxStream extends DecodeStream {\n constructor(stream, maybeLength) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n ensureBuffer(requested) {}\n get isAsyncDecoder() {\n return true;\n }\n async decodeImage(bytes, _length, decoderOptions) {\n if (this.eof) {\n return this.buffer;\n }\n bytes ||= this.bytes;\n this.buffer = await JpxImage.instance.decode(bytes, decoderOptions);\n this.bufferLength = this.buffer.length;\n this.eof = true;\n return this.buffer;\n }\n get canAsyncDecodeImageFromBuffer() {\n return this.stream.isAsync;\n }\n get isImageStream() {\n return true;\n }\n}\n\n;// ./src/core/lzw_stream.js\n\nclass LZWStream extends DecodeStream {\n constructor(str, maybeLength, earlyChange) {\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n const maxLzwDictionarySize = 4096;\n const lzwState = {\n earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0\n };\n for (let i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n this.lzwState = lzwState;\n }\n readBits(n) {\n let bitsCached = this.bitsCached;\n let cachedData = this.cachedData;\n while (bitsCached < n) {\n const c = this.stream.getByte();\n if (c === -1) {\n this.eof = true;\n return null;\n }\n cachedData = cachedData << 8 | c;\n bitsCached += 8;\n }\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n return cachedData >>> bitsCached & (1 << n) - 1;\n }\n readBlock() {\n const blockSize = 512,\n decodedSizeDelta = blockSize;\n let estimatedDecodedSize = blockSize * 2;\n let i, j, q;\n const {\n lzwState\n } = this;\n const earlyChange = lzwState.earlyChange;\n let nextCode = lzwState.nextCode;\n const dictionaryValues = lzwState.dictionaryValues;\n const dictionaryLengths = lzwState.dictionaryLengths;\n const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n let codeLength = lzwState.codeLength;\n let prevCode = lzwState.prevCode;\n const currentSequence = lzwState.currentSequence;\n let currentSequenceLength = lzwState.currentSequenceLength;\n let decodedLength = 0;\n let currentBufferLength = this.bufferLength;\n let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n for (i = 0; i < blockSize; i++) {\n const code = this.readBits(codeLength);\n const hasPrev = currentSequenceLength > 0;\n if (code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n } else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n } else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n } else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n } else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;\n }\n prevCode = code;\n decodedLength += currentSequenceLength;\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n this.bufferLength = currentBufferLength;\n }\n}\n\n;// ./src/core/predictor_stream.js\n\n\n\nclass PredictorStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n if (!(params instanceof Dict)) {\n return str;\n }\n const predictor = this.predictor = params.get(\"Predictor\") || 1;\n if (predictor <= 1) {\n return str;\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.readBlock = predictor === 2 ? this.readBlockTiff : this.readBlockPng;\n this.stream = str;\n this.dict = str.dict;\n const colors = this.colors = params.get(\"Colors\") || 1;\n const bits = this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8;\n const columns = this.columns = params.get(\"Columns\") || 1;\n this.pixBytes = colors * bits + 7 >> 3;\n this.rowBytes = columns * colors * bits + 7 >> 3;\n return this;\n }\n readBlockTiff() {\n const rowBytes = this.rowBytes;\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n const bits = this.bits;\n const colors = this.colors;\n const rawBytes = this.stream.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n let inbuf = 0,\n outbuf = 0;\n let inbits = 0,\n outbits = 0;\n let pos = bufferLength;\n let i;\n if (bits === 1 && colors === 1) {\n for (i = 0; i < rowBytes; ++i) {\n let c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else if (bits === 16) {\n const bytesPerPixel = colors * 2;\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; i += 2) {\n const sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff);\n buffer[pos++] = sum >> 8 & 0xff;\n buffer[pos++] = sum & 0xff;\n }\n } else {\n const compArray = new Uint8Array(colors + 1);\n const bitMask = (1 << bits) - 1;\n let j = 0,\n k = bufferLength;\n const columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (let kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = inbuf << 8 | rawBytes[j++] & 0xff;\n inbits += 8;\n }\n compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;\n inbits -= bits;\n outbuf = outbuf << bits | compArray[kk];\n outbits += bits;\n if (outbits >= 8) {\n buffer[k++] = outbuf >> outbits - 8 & 0xff;\n outbits -= 8;\n }\n }\n }\n if (outbits > 0) {\n buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);\n }\n }\n this.bufferLength += rowBytes;\n }\n readBlockPng() {\n const rowBytes = this.rowBytes;\n const pixBytes = this.pixBytes;\n const predictor = this.stream.getByte();\n const rawBytes = this.stream.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n let i,\n j = bufferLength,\n up,\n c;\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n break;\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff;\n j++;\n }\n break;\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = prevRow[i] + rawBytes[i] & 0xff;\n }\n break;\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff;\n j++;\n }\n break;\n case 4:\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n const upLeft = prevRow[i - pixBytes];\n const left = buffer[j - pixBytes];\n const p = left + up - upLeft;\n let pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n let pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n let pc = p - upLeft;\n if (pc < 0) {\n pc = -pc;\n }\n c = rawBytes[i];\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n } else if (pb <= pc) {\n buffer[j++] = up + c;\n } else {\n buffer[j++] = upLeft + c;\n }\n }\n break;\n default:\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.bufferLength += rowBytes;\n }\n}\n\n;// ./src/core/run_length_stream.js\n\nclass RunLengthStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n }\n readBlock() {\n const repeatHeader = this.stream.getBytes(2);\n if (repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n let buffer;\n let bufferLength = this.bufferLength;\n let n = repeatHeader[0];\n if (n < 128) {\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n const source = this.stream.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer.fill(repeatHeader[1], bufferLength, bufferLength + n);\n bufferLength += n;\n }\n this.bufferLength = bufferLength;\n }\n}\n\n;// ./src/core/parser.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nfunction getInlineImageCacheKey(bytes) {\n const strBuf = [],\n ii = bytes.length;\n let i = 0;\n while (i < ii - 1) {\n strBuf.push(bytes[i++] << 8 | bytes[i++]);\n }\n if (i < ii) {\n strBuf.push(bytes[i]);\n }\n return ii + \"_\" + String.fromCharCode.apply(null, strBuf);\n}\nclass Parser {\n #imageCache = null;\n #imageId = 0;\n constructor({\n lexer,\n xref,\n allowStreams = false,\n recoveryMode = false\n }) {\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n this.refill();\n }\n refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n }\n shift() {\n if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n this.buf1 = this.buf2;\n this.buf2 = null;\n } else {\n this.buf1 = this.buf2;\n this.buf2 = this.lexer.getObj();\n }\n }\n tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n return false;\n }\n }\n getObj(cipherTransform = null) {\n const buf1 = this.buf1;\n this.shift();\n if (buf1 instanceof Cmd) {\n switch (buf1.cmd) {\n case \"BI\":\n return this.makeInlineImage(cipherTransform);\n case \"[\":\n const array = [];\n while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n array.push(this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return array;\n }\n throw new ParserEOFException(\"End of file inside array.\");\n }\n this.shift();\n return array;\n case \"<<\":\n const dict = new Dict(this.xref);\n while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n info(\"Malformed dictionary: key must be a name object\");\n this.shift();\n continue;\n }\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return dict;\n }\n throw new ParserEOFException(\"End of file inside dictionary.\");\n }\n if (isCmd(this.buf2, \"stream\")) {\n return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;\n }\n this.shift();\n return dict;\n default:\n return buf1;\n }\n }\n if (Number.isInteger(buf1)) {\n if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n const ref = Ref.get(buf1, this.buf1);\n this.shift();\n this.shift();\n return ref;\n }\n return buf1;\n }\n if (typeof buf1 === \"string\") {\n return cipherTransform ? cipherTransform.decryptString(buf1) : buf1;\n }\n return buf1;\n }\n findDefaultInlineStreamEnd(stream) {\n const E = 0x45,\n I = 0x49,\n SPACE = 0x20,\n LF = 0xa,\n CR = 0xd,\n NUL = 0x0;\n const {\n knownCommands\n } = this.lexer,\n startPos = stream.pos,\n n = 15;\n let state = 0,\n ch,\n maybeEIPos;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else {\n if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n const followingBytes = stream.peekBytes(n);\n const ii = followingBytes.length;\n if (ii === 0) {\n break;\n }\n for (let i = 0; i < ii; i++) {\n ch = followingBytes[i];\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n continue;\n }\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n state = 0;\n break;\n }\n }\n if (state !== 2) {\n continue;\n }\n if (!knownCommands) {\n warn(\"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\");\n continue;\n }\n const tmpLexer = new Lexer(new Stream(stream.peekBytes(5 * n)), knownCommands);\n tmpLexer._hexStringWarn = () => {};\n let numArgs = 0;\n while (true) {\n const nextObj = tmpLexer.getObj();\n if (nextObj === EOF) {\n state = 0;\n break;\n }\n if (nextObj instanceof Cmd) {\n const knownCommand = knownCommands[nextObj.cmd];\n if (!knownCommand) {\n state = 0;\n break;\n } else if (knownCommand.variableArgs ? numArgs <= knownCommand.numArgs : numArgs === knownCommand.numArgs) {\n break;\n }\n numArgs = 0;\n continue;\n }\n numArgs++;\n }\n if (state === 2) {\n break;\n }\n } else {\n state = 0;\n }\n }\n }\n if (ch === -1) {\n warn(\"findDefaultInlineStreamEnd: \" + \"Reached the end of the stream without finding a valid EI marker\");\n if (maybeEIPos) {\n warn('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos));\n }\n }\n let endOffset = 4;\n stream.skip(-endOffset);\n ch = stream.peekByte();\n stream.skip(endOffset);\n if (!isWhiteSpace(ch)) {\n endOffset--;\n }\n return stream.pos - endOffset - startPos;\n }\n findDCTDecodeInlineStreamEnd(stream) {\n const startPos = stream.pos;\n let foundEOI = false,\n b,\n markerLength;\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xff) {\n continue;\n }\n switch (stream.getByte()) {\n case 0x00:\n break;\n case 0xff:\n stream.skip(-1);\n break;\n case 0xd9:\n foundEOI = true;\n break;\n case 0xc0:\n case 0xc1:\n case 0xc2:\n case 0xc3:\n case 0xc5:\n case 0xc6:\n case 0xc7:\n case 0xc9:\n case 0xca:\n case 0xcb:\n case 0xcd:\n case 0xce:\n case 0xcf:\n case 0xc4:\n case 0xcc:\n case 0xda:\n case 0xdb:\n case 0xdc:\n case 0xdd:\n case 0xde:\n case 0xdf:\n case 0xe0:\n case 0xe1:\n case 0xe2:\n case 0xe3:\n case 0xe4:\n case 0xe5:\n case 0xe6:\n case 0xe7:\n case 0xe8:\n case 0xe9:\n case 0xea:\n case 0xeb:\n case 0xec:\n case 0xed:\n case 0xee:\n case 0xef:\n case 0xfe:\n markerLength = stream.getUint16();\n if (markerLength > 2) {\n stream.skip(markerLength - 2);\n } else {\n stream.skip(-2);\n }\n break;\n }\n if (foundEOI) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (b === -1) {\n warn(\"Inline DCTDecode image stream: \" + \"EOI marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n findASCII85DecodeInlineStreamEnd(stream) {\n const TILDE = 0x7e,\n GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE) {\n const tildePos = stream.pos;\n ch = stream.peekByte();\n while (isWhiteSpace(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n if (ch === GT) {\n stream.skip();\n break;\n }\n if (stream.pos > tildePos) {\n const maybeEI = stream.peekBytes(2);\n if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) {\n break;\n }\n }\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\"Inline ASCII85Decode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n findASCIIHexDecodeInlineStreamEnd(stream) {\n const GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\"Inline ASCIIHexDecode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n inlineStreamSkipEI(stream) {\n const E = 0x45,\n I = 0x49;\n let state = 0,\n ch;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else if (state === 2) {\n break;\n }\n }\n }\n makeInlineImage(cipherTransform) {\n const lexer = this.lexer;\n const stream = lexer.stream;\n const dict = new Dict(this.xref);\n let dictLength;\n while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n throw new FormatError(\"Dictionary key must be a name object\");\n }\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n const filter = dict.get(\"F\", \"Filter\");\n let filterName;\n if (filter instanceof Name) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = this.#fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n const startPos = stream.pos;\n let length;\n switch (filterName) {\n case \"DCT\":\n case \"DCTDecode\":\n length = this.findDCTDecodeInlineStreamEnd(stream);\n break;\n case \"A85\":\n case \"ASCII85Decode\":\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n break;\n case \"AHx\":\n case \"ASCIIHexDecode\":\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n break;\n default:\n length = this.findDefaultInlineStreamEnd(stream);\n }\n let cacheKey;\n if (length < MAX_LENGTH_TO_CACHE && dictLength > 0) {\n const initialStreamPos = stream.pos;\n stream.pos = lexer.beginInlineImagePos;\n cacheKey = getInlineImageCacheKey(stream.getBytes(dictLength + length));\n stream.pos = initialStreamPos;\n const cacheEntry = this.#imageCache?.get(cacheKey);\n if (cacheEntry) {\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n let imageStream = stream.makeSubStream(startPos, length, dict);\n if (cipherTransform && !this.#hasCryptFilter(filter)) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n imageStream = this.filter(imageStream, dict, length, cipherTransform);\n imageStream.dict = dict;\n if (cacheKey) {\n imageStream.cacheKey = `inline_img_${++this.#imageId}`;\n (this.#imageCache ??= new Map()).set(cacheKey, imageStream);\n }\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n return imageStream;\n }\n #fetchIfRef(obj) {\n return this.xref ? this.xref.fetchIfRef(obj) : obj;\n }\n #hasCryptFilter(filter) {\n return Array.isArray(filter) ? filter.some(f => isName(this.#fetchIfRef(f), \"Crypt\")) : isName(filter, \"Crypt\");\n }\n #findStreamLength(startPos) {\n const {\n stream\n } = this.lexer;\n stream.pos = startPos;\n const SCAN_BLOCK_LENGTH = 2048;\n const signatureLength = \"endstream\".length;\n const END_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64]);\n const endLength = END_SIGNATURE.length;\n const PARTIAL_SIGNATURE = [new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]), new Uint8Array([0x73, 0x74, 0x65, 0x61, 0x6d]), new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61])];\n const normalLength = signatureLength - endLength;\n while (stream.pos < stream.end) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n const scanLength = scanBytes.length - signatureLength;\n if (scanLength <= 0) {\n break;\n }\n let pos = 0;\n while (pos < scanLength) {\n let j = 0;\n while (j < endLength && scanBytes[pos + j] === END_SIGNATURE[j]) {\n j++;\n }\n if (j >= endLength) {\n let found = false;\n for (const part of PARTIAL_SIGNATURE) {\n const partLen = part.length;\n let k = 0;\n while (k < partLen && scanBytes[pos + j + k] === part[k]) {\n k++;\n }\n if (k >= normalLength) {\n found = true;\n break;\n }\n if (k >= partLen) {\n const lastByte = scanBytes[pos + j + k];\n if (isWhiteSpace(lastByte)) {\n info(`Found \"${bytesToString([...END_SIGNATURE, ...part])}\" when ` + \"searching for endstream command.\");\n found = true;\n }\n break;\n }\n }\n if (found) {\n stream.pos += pos;\n return stream.pos - startPos;\n }\n }\n pos++;\n }\n stream.pos += scanLength;\n }\n return -1;\n }\n makeStream(dict, cipherTransform) {\n const lexer = this.lexer;\n let stream = lexer.stream;\n lexer.skipToNextLine();\n const startPos = stream.pos - 1;\n let length = dict.get(\"Length\");\n if (!Number.isInteger(length)) {\n info(`Bad length \"${length && length.toString()}\" in stream.`);\n length = 0;\n }\n stream.pos = startPos + length;\n lexer.nextChar();\n if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n this.shift();\n } else {\n length = this.#findStreamLength(startPos);\n if (length < 0) {\n throw new FormatError(\"Missing endstream command.\");\n }\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n this.shift();\n stream = stream.makeSubStream(startPos, length, dict);\n const filter = dict.get(\"F\", \"Filter\");\n if (cipherTransform && !this.#hasCryptFilter(filter)) {\n stream = cipherTransform.createStream(stream, length);\n }\n stream = this.filter(stream, dict, length, cipherTransform);\n stream.dict = dict;\n return stream;\n }\n filter(stream, dict, length, cipherTransform = null) {\n let filter = dict.get(\"F\", \"Filter\");\n let params = dict.get(\"DP\", \"DecodeParms\");\n if (filter instanceof Name) {\n if (Array.isArray(params)) {\n warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n }\n return this.makeFilter(stream, filter.name, length, params, cipherTransform);\n }\n let maybeLength = length;\n if (Array.isArray(filter)) {\n const filterArray = filter;\n const paramsArray = params;\n for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.#fetchIfRef(filterArray[i]);\n if (!(filter instanceof Name)) {\n throw new FormatError(`Bad filter name \"${filter}\"`);\n }\n params = null;\n if (Array.isArray(paramsArray) && i in paramsArray) {\n params = this.#fetchIfRef(paramsArray[i]);\n }\n stream = this.makeFilter(stream, filter.name, maybeLength, params, cipherTransform);\n maybeLength = null;\n }\n }\n return stream;\n }\n makeFilter(stream, name, maybeLength, params, cipherTransform = null) {\n if (maybeLength === 0) {\n warn(`Empty \"${name}\" stream.`);\n return new NullStream();\n }\n try {\n switch (name) {\n case \"Fl\":\n case \"FlateDecode\":\n if (params) {\n return new PredictorStream(new FlateStream(stream, maybeLength), maybeLength, params);\n }\n return new FlateStream(stream, maybeLength);\n case \"LZW\":\n case \"LZWDecode\":\n let earlyChange = 1;\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n return new PredictorStream(new LZWStream(stream, maybeLength, earlyChange), maybeLength, params);\n }\n return new LZWStream(stream, maybeLength, earlyChange);\n case \"DCT\":\n case \"DCTDecode\":\n return new JpegStream(stream, maybeLength, params);\n case \"JPX\":\n case \"JPXDecode\":\n return new JpxStream(stream, maybeLength);\n case \"A85\":\n case \"ASCII85Decode\":\n return new Ascii85Stream(stream, maybeLength);\n case \"AHx\":\n case \"ASCIIHexDecode\":\n return new AsciiHexStream(stream, maybeLength);\n case \"CCF\":\n case \"CCITTFaxDecode\":\n return new CCITTFaxStream(stream, maybeLength, params);\n case \"RL\":\n case \"RunLengthDecode\":\n return new RunLengthStream(stream, maybeLength);\n case \"JBIG2Decode\":\n return new Jbig2Stream(stream, maybeLength, params);\n case \"BrotliDecode\":\n return new BrotliStream(stream, maybeLength);\n case \"Crypt\":\n {\n if (!cipherTransform) {\n warn('Filter \"Crypt\" is missing a cipher transform.');\n return stream;\n }\n const param = params instanceof Dict ? params.get(\"Name\") : null;\n const cryptName = param instanceof Name ? param : Name.get(\"Identity\");\n return cipherTransform.createStream(stream, maybeLength, cryptName);\n }\n }\n warn(`Filter \"${name}\" is not supported.`);\n return stream;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Invalid stream: \"${ex}\"`);\n return new NullStream();\n }\n }\n}\nconst specialChars = [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];\nfunction toHexDigit(ch) {\n if (ch >= 0x30 && ch <= 0x39) {\n return ch & 0x0f;\n }\n if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n return (ch & 0x0f) + 9;\n }\n return -1;\n}\nclass Lexer {\n constructor(stream, knownCommands = null) {\n this.stream = stream;\n this.nextChar();\n this.strBuf = [];\n this.knownCommands = knownCommands;\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n peekChar() {\n return this.stream.peekByte();\n }\n getNumber() {\n let ch = this.currentChar;\n let divideBy = 0;\n let sign = 1;\n if (ch === 0x2d) {\n sign = -1;\n ch = this.nextChar();\n if (ch === 0x2d) {\n ch = this.nextChar();\n }\n } else if (ch === 0x2b) {\n ch = this.nextChar();\n }\n if (ch === 0x0a || ch === 0x0d) {\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n if (ch === 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n if (ch < 0x30 || ch > 0x39) {\n const msg = `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`;\n if (isWhiteSpace(ch) || ch === 0x28 || ch === 0x3c || ch === -1) {\n info(`Lexer.getNumber - \"${msg}\".`);\n return 0;\n }\n throw new FormatError(msg);\n }\n let baseValue = ch - 0x30;\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= 0x30 && ch <= 0x39) {\n const currentDigit = ch - 0x30;\n if (divideBy !== 0) {\n divideBy *= 10;\n }\n baseValue = baseValue * 10 + currentDigit;\n } else if (ch === 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n break;\n }\n } else if (ch === 0x2d) {\n warn(\"Badly formatted number: minus sign in the middle\");\n } else {\n break;\n }\n }\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n return sign * baseValue;\n }\n getString() {\n let numParen = 1;\n let done = false;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.nextChar();\n while (true) {\n let charBuffered = false;\n switch (ch | 0) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x28:\n ++numParen;\n strBuf.push(\"(\");\n break;\n case 0x29:\n if (--numParen === 0) {\n this.nextChar();\n done = true;\n } else {\n strBuf.push(\")\");\n }\n break;\n case 0x5c:\n ch = this.nextChar();\n switch (ch) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x6e:\n strBuf.push(\"\\n\");\n break;\n case 0x72:\n strBuf.push(\"\\r\");\n break;\n case 0x74:\n strBuf.push(\"\\t\");\n break;\n case 0x62:\n strBuf.push(\"\\b\");\n break;\n case 0x66:\n strBuf.push(\"\\f\");\n break;\n case 0x5c:\n case 0x28:\n case 0x29:\n strBuf.push(String.fromCharCode(ch));\n break;\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n let x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= 0x30 && ch <= 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n if (ch >= 0x30 && ch <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n strBuf.push(String.fromCharCode(x));\n break;\n case 0x0d:\n if (this.peekChar() === 0x0a) {\n this.nextChar();\n }\n break;\n case 0x0a:\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n if (done) {\n break;\n }\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n getName() {\n let ch, previousCh;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === 0x23) {\n ch = this.nextChar();\n if (specialChars[ch]) {\n warn(\"Lexer_getName: \" + \"NUMBER SIGN (#) should be followed by a hexadecimal number.\");\n strBuf.push(\"#\");\n break;\n }\n const x = toHexDigit(ch);\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n const x2 = toHexDigit(ch);\n if (x2 === -1) {\n warn(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + \"in hexadecimal number.\");\n strBuf.push(\"#\", String.fromCharCode(previousCh));\n if (specialChars[ch]) {\n break;\n }\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\n strBuf.push(String.fromCharCode(x << 4 | x2));\n } else {\n strBuf.push(\"#\", String.fromCharCode(ch));\n }\n } else {\n strBuf.push(String.fromCharCode(ch));\n }\n }\n if (strBuf.length > 127) {\n warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n }\n return Name.get(strBuf.join(\"\"));\n }\n _hexStringWarn(ch) {\n const MAX_HEX_STRING_NUM_WARN = 5;\n if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n warn(\"getHexString - ignoring additional invalid characters.\");\n return;\n }\n if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n return;\n }\n warn(`getHexString - ignoring invalid character: ${ch}`);\n }\n getHexString() {\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.currentChar;\n let firstDigit = -1,\n digit = -1;\n this._hexStringNumWarn = 0;\n while (true) {\n if (ch < 0) {\n warn(\"Unterminated hex string\");\n break;\n } else if (ch === 0x3e) {\n this.nextChar();\n break;\n } else if (specialChars[ch] === 1) {\n ch = this.nextChar();\n continue;\n } else {\n digit = toHexDigit(ch);\n if (digit === -1) {\n this._hexStringWarn(ch);\n } else if (firstDigit === -1) {\n firstDigit = digit;\n } else {\n strBuf.push(String.fromCharCode(firstDigit << 4 | digit));\n firstDigit = -1;\n }\n ch = this.nextChar();\n }\n }\n if (firstDigit !== -1) {\n strBuf.push(String.fromCharCode(firstDigit << 4));\n }\n return strBuf.join(\"\");\n }\n getObj() {\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === 0x25) {\n comment = true;\n } else if (specialChars[ch] !== 1) {\n break;\n }\n ch = this.nextChar();\n }\n switch (ch | 0) {\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n case 0x38:\n case 0x39:\n case 0x2b:\n case 0x2d:\n case 0x2e:\n return this.getNumber();\n case 0x28:\n return this.getString();\n case 0x2f:\n return this.getName();\n case 0x5b:\n this.nextChar();\n return Cmd.get(\"[\");\n case 0x5d:\n this.nextChar();\n return Cmd.get(\"]\");\n case 0x3c:\n ch = this.nextChar();\n if (ch === 0x3c) {\n this.nextChar();\n return Cmd.get(\"<<\");\n }\n return this.getHexString();\n case 0x3e:\n ch = this.nextChar();\n if (ch === 0x3e) {\n this.nextChar();\n return Cmd.get(\">>\");\n }\n return Cmd.get(\">\");\n case 0x7b:\n this.nextChar();\n return Cmd.get(\"{\");\n case 0x7d:\n this.nextChar();\n return Cmd.get(\"}\");\n case 0x29:\n this.nextChar();\n throw new FormatError(`Illegal character: ${ch}`);\n }\n let str = String.fromCharCode(ch);\n if (ch < 0x20 || ch > 0x7f) {\n const nextCh = this.peekChar();\n if (nextCh >= 0x20 && nextCh <= 0x7f) {\n this.nextChar();\n return Cmd.get(str);\n }\n }\n const knownCommands = this.knownCommands;\n let knownCommandFound = knownCommands?.[str] !== undefined;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n const possibleCommand = str + String.fromCharCode(ch);\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n if (str.length === 128) {\n throw new FormatError(`Command token too long: ${str.length}`);\n }\n str = possibleCommand;\n knownCommandFound = knownCommands?.[str] !== undefined;\n }\n if (str === \"true\") {\n return true;\n }\n if (str === \"false\") {\n return false;\n }\n if (str === \"null\") {\n return null;\n }\n if (str === \"BI\") {\n this.beginInlineImagePos = this.stream.pos;\n }\n return Cmd.get(str);\n }\n skipToNextLine() {\n let ch = this.currentChar;\n while (ch >= 0) {\n if (ch === 0x0d) {\n ch = this.nextChar();\n if (ch === 0x0a) {\n this.nextChar();\n }\n break;\n } else if (ch === 0x0a) {\n this.nextChar();\n break;\n }\n ch = this.nextChar();\n }\n }\n}\nclass Linearization {\n static create(stream) {\n function getInt(linDict, name, allowZeroValue = false) {\n const obj = linDict.get(name);\n if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n throw new Error(`The \"${name}\" parameter in the linearization ` + \"dictionary is invalid.\");\n }\n function getHints(linDict) {\n const hints = linDict.get(\"H\");\n let hintsLength;\n if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {\n for (let index = 0; index < hintsLength; index++) {\n const hint = hints[index];\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`);\n }\n }\n return hints;\n }\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n }\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: null\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n const linDict = parser.getObj();\n let obj, length;\n if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && isCmd(obj3, \"obj\") && linDict instanceof Dict && typeof (obj = linDict.get(\"Linearized\")) === \"number\" && obj > 0)) {\n return null;\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error('The \"L\" parameter in the linearization dictionary ' + \"does not equal the stream length.\");\n }\n return {\n length,\n hints: getHints(linDict),\n objectNumberFirst: getInt(linDict, \"O\"),\n endFirst: getInt(linDict, \"E\"),\n numPages: getInt(linDict, \"N\"),\n mainXRefEntriesOffset: getInt(linDict, \"T\"),\n pageFirst: linDict.has(\"P\") ? getInt(linDict, \"P\", true) : 0\n };\n }\n}\n\n;// ./src/core/cmap.js\n\n\n\n\n\n\n\nconst BUILT_IN_CMAPS = [\"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\"];\nconst MAX_MAP_RANGE = 2 ** 24 - 1;\nclass CMap {\n constructor(builtInCMap = false) {\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n }\n mapCidRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n }\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n }\n mapBfRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n }\n const lastByte = dstLow.length - 1;\n while (low <= high) {\n this._map[low++] = dstLow;\n const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n if (nextCharCode > 0xff) {\n dstLow = dstLow.substring(0, lastByte - 1) + String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) + \"\\x00\";\n continue;\n }\n dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n }\n }\n mapBfRangeToArray(low, high, array) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n }\n const ii = array.length;\n let i = 0;\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n }\n mapOne(src, dst) {\n this._map[src] = dst;\n }\n lookup(code) {\n return this._map[code];\n }\n contains(code) {\n return this._map[code] !== undefined;\n }\n forEach(callback) {\n const map = this._map;\n const length = map.length;\n if (length <= 0x10000) {\n for (let i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (const i in map) {\n callback(i, map[i]);\n }\n }\n }\n charCodeOf(value) {\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n getMap() {\n return this._map;\n }\n readCharCode(str, offset, out) {\n let c = 0;\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk;) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n out.charcode = 0;\n out.length = 1;\n }\n getCharCodeLength(charCode) {\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk;) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (charCode >= low && charCode <= high) {\n return n + 1;\n }\n }\n }\n return 1;\n }\n get length() {\n return this._map.length;\n }\n get isIdentityCMap() {\n if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n return false;\n }\n if (this._map.length !== 0x10000) {\n return false;\n }\n for (let i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n return true;\n }\n}\nclass IdentityCMap extends CMap {\n constructor(vertical, n) {\n super();\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n mapCidRange(low, high, dstLow) {\n unreachable(\"should not call mapCidRange\");\n }\n mapBfRange(low, high, dstLow) {\n unreachable(\"should not call mapBfRange\");\n }\n mapBfRangeToArray(low, high, array) {\n unreachable(\"should not call mapBfRangeToArray\");\n }\n mapOne(src, dst) {\n unreachable(\"should not call mapCidOne\");\n }\n lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n forEach(callback) {\n for (let i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n getMap() {\n const map = new Array(0x10000);\n for (let i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n return map;\n }\n get length() {\n return 0x10000;\n }\n get isIdentityCMap() {\n unreachable(\"should not access .isIdentityCMap\");\n }\n}\nfunction strToInt(str) {\n let a = 0;\n for (let i = 0; i < str.length; i++) {\n a = a << 8 | str.charCodeAt(i);\n }\n return a >>> 0;\n}\nfunction expectString(obj) {\n if (typeof obj !== \"string\") {\n throw new FormatError(\"Malformed CMap: expected string.\");\n }\n}\nfunction expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Malformed CMap: expected int.\");\n }\n}\nfunction parseBfChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n}\nfunction parseBfRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n if (Number.isInteger(obj) || typeof obj === \"string\") {\n const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if (isCmd(obj, \"[\")) {\n obj = lexer.getObj();\n const array = [];\n while (!isCmd(obj, \"]\") && obj !== EOF) {\n array.push(obj);\n obj = lexer.getObj();\n }\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n throw new FormatError(\"Invalid bf range.\");\n}\nfunction parseCidChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n}\nfunction parseCidRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n}\nfunction parseCodespaceRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcodespacerange\")) {\n return;\n }\n if (typeof obj !== \"string\") {\n break;\n }\n const low = strToInt(obj);\n obj = lexer.getObj();\n if (typeof obj !== \"string\") {\n break;\n }\n const high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n throw new FormatError(\"Invalid codespace range.\");\n}\nfunction parseWMode(cMap, lexer) {\n const obj = lexer.getObj();\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n}\nfunction parseCMapName(cMap, lexer) {\n const obj = lexer.getObj();\n if (obj instanceof Name) {\n cMap.name = obj.name;\n }\n}\nasync function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n let previous, embeddedUseCMap;\n objLoop: while (true) {\n try {\n const obj = lexer.getObj();\n if (obj === EOF) {\n break;\n } else if (obj instanceof Name) {\n if (obj.name === \"WMode\") {\n parseWMode(cMap, lexer);\n } else if (obj.name === \"CMapName\") {\n parseCMapName(cMap, lexer);\n }\n previous = obj;\n } else if (obj instanceof Cmd) {\n switch (obj.cmd) {\n case \"endcmap\":\n break objLoop;\n case \"usecmap\":\n if (previous instanceof Name) {\n embeddedUseCMap = previous.name;\n }\n break;\n case \"begincodespacerange\":\n parseCodespaceRange(cMap, lexer);\n break;\n case \"beginbfchar\":\n parseBfChar(cMap, lexer);\n break;\n case \"begincidchar\":\n parseCidChar(cMap, lexer);\n break;\n case \"beginbfrange\":\n parseBfRange(cMap, lexer);\n break;\n case \"begincidrange\":\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Invalid cMap data: \" + ex);\n continue;\n }\n }\n if (!useCMap && embeddedUseCMap) {\n useCMap = embeddedUseCMap;\n }\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n return cMap;\n}\nasync function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n if (cMap.numCodespaceRanges === 0) {\n const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n for (let i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, value);\n }\n });\n return cMap;\n}\nasync function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return new IdentityCMap(false, 2);\n } else if (name === \"Identity-V\") {\n return new IdentityCMap(true, 2);\n }\n if (!BUILT_IN_CMAPS.includes(name)) {\n throw new Error(\"Unknown CMap name: \" + name);\n }\n if (!fetchBuiltInCMap) {\n throw new Error(\"Built-in CMap parameters are not provided.\");\n }\n const {\n cMapData,\n isCompressed\n } = await fetchBuiltInCMap(name);\n const cMap = new CMap(true);\n if (isCompressed) {\n return new BinaryCMapReader().process(cMapData, cMap, useCMap => extendCMap(cMap, fetchBuiltInCMap, useCMap));\n }\n const lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n}\nclass CMapFactory {\n static async create({\n encoding,\n fetchBuiltInCMap,\n useCMap\n }) {\n if (encoding instanceof Name) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (encoding instanceof BaseStream) {\n if (encoding.isAsync) {\n const bytes = await encoding.asyncGetBytes();\n if (bytes) {\n encoding = new Stream(bytes, 0, bytes.length, encoding.dict);\n }\n }\n const parsedCMap = await parseCMap(new CMap(), new Lexer(encoding), fetchBuiltInCMap, useCMap);\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n return parsedCMap;\n }\n throw new Error(\"Encoding required.\");\n }\n}\n\n;// ./src/core/encodings.js\nconst ExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\"];\nconst MacExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\", \"\", \"\", \"\", \"\"];\nconst MacRomanEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\"];\nconst StandardEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\", \"\", \"\", \"\", \"\"];\nconst WinAnsiEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\"];\nconst SymbolSetEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\", \"\"];\nconst ZapfDingbatsEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\", \"\"];\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case \"WinAnsiEncoding\":\n return WinAnsiEncoding;\n case \"StandardEncoding\":\n return StandardEncoding;\n case \"MacRomanEncoding\":\n return MacRomanEncoding;\n case \"SymbolSetEncoding\":\n return SymbolSetEncoding;\n case \"ZapfDingbatsEncoding\":\n return ZapfDingbatsEncoding;\n case \"ExpertEncoding\":\n return ExpertEncoding;\n case \"MacExpertEncoding\":\n return MacExpertEncoding;\n default:\n return null;\n }\n}\n\n;// ./src/core/glyphlist.js\n\nconst getGlyphsUnicode = getLookupTableFactory(function (t) {\n t.A = 0x0041;\n t.AE = 0x00c6;\n t.AEacute = 0x01fc;\n t.AEmacron = 0x01e2;\n t.AEsmall = 0xf7e6;\n t.Aacute = 0x00c1;\n t.Aacutesmall = 0xf7e1;\n t.Abreve = 0x0102;\n t.Abreveacute = 0x1eae;\n t.Abrevecyrillic = 0x04d0;\n t.Abrevedotbelow = 0x1eb6;\n t.Abrevegrave = 0x1eb0;\n t.Abrevehookabove = 0x1eb2;\n t.Abrevetilde = 0x1eb4;\n t.Acaron = 0x01cd;\n t.Acircle = 0x24b6;\n t.Acircumflex = 0x00c2;\n t.Acircumflexacute = 0x1ea4;\n t.Acircumflexdotbelow = 0x1eac;\n t.Acircumflexgrave = 0x1ea6;\n t.Acircumflexhookabove = 0x1ea8;\n t.Acircumflexsmall = 0xf7e2;\n t.Acircumflextilde = 0x1eaa;\n t.Acute = 0xf6c9;\n t.Acutesmall = 0xf7b4;\n t.Acyrillic = 0x0410;\n t.Adblgrave = 0x0200;\n t.Adieresis = 0x00c4;\n t.Adieresiscyrillic = 0x04d2;\n t.Adieresismacron = 0x01de;\n t.Adieresissmall = 0xf7e4;\n t.Adotbelow = 0x1ea0;\n t.Adotmacron = 0x01e0;\n t.Agrave = 0x00c0;\n t.Agravesmall = 0xf7e0;\n t.Ahookabove = 0x1ea2;\n t.Aiecyrillic = 0x04d4;\n t.Ainvertedbreve = 0x0202;\n t.Alpha = 0x0391;\n t.Alphatonos = 0x0386;\n t.Amacron = 0x0100;\n t.Amonospace = 0xff21;\n t.Aogonek = 0x0104;\n t.Aring = 0x00c5;\n t.Aringacute = 0x01fa;\n t.Aringbelow = 0x1e00;\n t.Aringsmall = 0xf7e5;\n t.Asmall = 0xf761;\n t.Atilde = 0x00c3;\n t.Atildesmall = 0xf7e3;\n t.Aybarmenian = 0x0531;\n t.B = 0x0042;\n t.Bcircle = 0x24b7;\n t.Bdotaccent = 0x1e02;\n t.Bdotbelow = 0x1e04;\n t.Becyrillic = 0x0411;\n t.Benarmenian = 0x0532;\n t.Beta = 0x0392;\n t.Bhook = 0x0181;\n t.Blinebelow = 0x1e06;\n t.Bmonospace = 0xff22;\n t.Brevesmall = 0xf6f4;\n t.Bsmall = 0xf762;\n t.Btopbar = 0x0182;\n t.C = 0x0043;\n t.Caarmenian = 0x053e;\n t.Cacute = 0x0106;\n t.Caron = 0xf6ca;\n t.Caronsmall = 0xf6f5;\n t.Ccaron = 0x010c;\n t.Ccedilla = 0x00c7;\n t.Ccedillaacute = 0x1e08;\n t.Ccedillasmall = 0xf7e7;\n t.Ccircle = 0x24b8;\n t.Ccircumflex = 0x0108;\n t.Cdot = 0x010a;\n t.Cdotaccent = 0x010a;\n t.Cedillasmall = 0xf7b8;\n t.Chaarmenian = 0x0549;\n t.Cheabkhasiancyrillic = 0x04bc;\n t.Checyrillic = 0x0427;\n t.Chedescenderabkhasiancyrillic = 0x04be;\n t.Chedescendercyrillic = 0x04b6;\n t.Chedieresiscyrillic = 0x04f4;\n t.Cheharmenian = 0x0543;\n t.Chekhakassiancyrillic = 0x04cb;\n t.Cheverticalstrokecyrillic = 0x04b8;\n t.Chi = 0x03a7;\n t.Chook = 0x0187;\n t.Circumflexsmall = 0xf6f6;\n t.Cmonospace = 0xff23;\n t.Coarmenian = 0x0551;\n t.Csmall = 0xf763;\n t.D = 0x0044;\n t.DZ = 0x01f1;\n t.DZcaron = 0x01c4;\n t.Daarmenian = 0x0534;\n t.Dafrican = 0x0189;\n t.Dcaron = 0x010e;\n t.Dcedilla = 0x1e10;\n t.Dcircle = 0x24b9;\n t.Dcircumflexbelow = 0x1e12;\n t.Dcroat = 0x0110;\n t.Ddotaccent = 0x1e0a;\n t.Ddotbelow = 0x1e0c;\n t.Decyrillic = 0x0414;\n t.Deicoptic = 0x03ee;\n t.Delta = 0x2206;\n t.Deltagreek = 0x0394;\n t.Dhook = 0x018a;\n t.Dieresis = 0xf6cb;\n t.DieresisAcute = 0xf6cc;\n t.DieresisGrave = 0xf6cd;\n t.Dieresissmall = 0xf7a8;\n t.Digammagreek = 0x03dc;\n t.Djecyrillic = 0x0402;\n t.Dlinebelow = 0x1e0e;\n t.Dmonospace = 0xff24;\n t.Dotaccentsmall = 0xf6f7;\n t.Dslash = 0x0110;\n t.Dsmall = 0xf764;\n t.Dtopbar = 0x018b;\n t.Dz = 0x01f2;\n t.Dzcaron = 0x01c5;\n t.Dzeabkhasiancyrillic = 0x04e0;\n t.Dzecyrillic = 0x0405;\n t.Dzhecyrillic = 0x040f;\n t.E = 0x0045;\n t.Eacute = 0x00c9;\n t.Eacutesmall = 0xf7e9;\n t.Ebreve = 0x0114;\n t.Ecaron = 0x011a;\n t.Ecedillabreve = 0x1e1c;\n t.Echarmenian = 0x0535;\n t.Ecircle = 0x24ba;\n t.Ecircumflex = 0x00ca;\n t.Ecircumflexacute = 0x1ebe;\n t.Ecircumflexbelow = 0x1e18;\n t.Ecircumflexdotbelow = 0x1ec6;\n t.Ecircumflexgrave = 0x1ec0;\n t.Ecircumflexhookabove = 0x1ec2;\n t.Ecircumflexsmall = 0xf7ea;\n t.Ecircumflextilde = 0x1ec4;\n t.Ecyrillic = 0x0404;\n t.Edblgrave = 0x0204;\n t.Edieresis = 0x00cb;\n t.Edieresissmall = 0xf7eb;\n t.Edot = 0x0116;\n t.Edotaccent = 0x0116;\n t.Edotbelow = 0x1eb8;\n t.Efcyrillic = 0x0424;\n t.Egrave = 0x00c8;\n t.Egravesmall = 0xf7e8;\n t.Eharmenian = 0x0537;\n t.Ehookabove = 0x1eba;\n t.Eightroman = 0x2167;\n t.Einvertedbreve = 0x0206;\n t.Eiotifiedcyrillic = 0x0464;\n t.Elcyrillic = 0x041b;\n t.Elevenroman = 0x216a;\n t.Emacron = 0x0112;\n t.Emacronacute = 0x1e16;\n t.Emacrongrave = 0x1e14;\n t.Emcyrillic = 0x041c;\n t.Emonospace = 0xff25;\n t.Encyrillic = 0x041d;\n t.Endescendercyrillic = 0x04a2;\n t.Eng = 0x014a;\n t.Enghecyrillic = 0x04a4;\n t.Enhookcyrillic = 0x04c7;\n t.Eogonek = 0x0118;\n t.Eopen = 0x0190;\n t.Epsilon = 0x0395;\n t.Epsilontonos = 0x0388;\n t.Ercyrillic = 0x0420;\n t.Ereversed = 0x018e;\n t.Ereversedcyrillic = 0x042d;\n t.Escyrillic = 0x0421;\n t.Esdescendercyrillic = 0x04aa;\n t.Esh = 0x01a9;\n t.Esmall = 0xf765;\n t.Eta = 0x0397;\n t.Etarmenian = 0x0538;\n t.Etatonos = 0x0389;\n t.Eth = 0x00d0;\n t.Ethsmall = 0xf7f0;\n t.Etilde = 0x1ebc;\n t.Etildebelow = 0x1e1a;\n t.Euro = 0x20ac;\n t.Ezh = 0x01b7;\n t.Ezhcaron = 0x01ee;\n t.Ezhreversed = 0x01b8;\n t.F = 0x0046;\n t.Fcircle = 0x24bb;\n t.Fdotaccent = 0x1e1e;\n t.Feharmenian = 0x0556;\n t.Feicoptic = 0x03e4;\n t.Fhook = 0x0191;\n t.Fitacyrillic = 0x0472;\n t.Fiveroman = 0x2164;\n t.Fmonospace = 0xff26;\n t.Fourroman = 0x2163;\n t.Fsmall = 0xf766;\n t.G = 0x0047;\n t.GBsquare = 0x3387;\n t.Gacute = 0x01f4;\n t.Gamma = 0x0393;\n t.Gammaafrican = 0x0194;\n t.Gangiacoptic = 0x03ea;\n t.Gbreve = 0x011e;\n t.Gcaron = 0x01e6;\n t.Gcedilla = 0x0122;\n t.Gcircle = 0x24bc;\n t.Gcircumflex = 0x011c;\n t.Gcommaaccent = 0x0122;\n t.Gdot = 0x0120;\n t.Gdotaccent = 0x0120;\n t.Gecyrillic = 0x0413;\n t.Ghadarmenian = 0x0542;\n t.Ghemiddlehookcyrillic = 0x0494;\n t.Ghestrokecyrillic = 0x0492;\n t.Gheupturncyrillic = 0x0490;\n t.Ghook = 0x0193;\n t.Gimarmenian = 0x0533;\n t.Gjecyrillic = 0x0403;\n t.Gmacron = 0x1e20;\n t.Gmonospace = 0xff27;\n t.Grave = 0xf6ce;\n t.Gravesmall = 0xf760;\n t.Gsmall = 0xf767;\n t.Gsmallhook = 0x029b;\n t.Gstroke = 0x01e4;\n t.H = 0x0048;\n t.H18533 = 0x25cf;\n t.H18543 = 0x25aa;\n t.H18551 = 0x25ab;\n t.H22073 = 0x25a1;\n t.HPsquare = 0x33cb;\n t.Haabkhasiancyrillic = 0x04a8;\n t.Hadescendercyrillic = 0x04b2;\n t.Hardsigncyrillic = 0x042a;\n t.Hbar = 0x0126;\n t.Hbrevebelow = 0x1e2a;\n t.Hcedilla = 0x1e28;\n t.Hcircle = 0x24bd;\n t.Hcircumflex = 0x0124;\n t.Hdieresis = 0x1e26;\n t.Hdotaccent = 0x1e22;\n t.Hdotbelow = 0x1e24;\n t.Hmonospace = 0xff28;\n t.Hoarmenian = 0x0540;\n t.Horicoptic = 0x03e8;\n t.Hsmall = 0xf768;\n t.Hungarumlaut = 0xf6cf;\n t.Hungarumlautsmall = 0xf6f8;\n t.Hzsquare = 0x3390;\n t.I = 0x0049;\n t.IAcyrillic = 0x042f;\n t.IJ = 0x0132;\n t.IUcyrillic = 0x042e;\n t.Iacute = 0x00cd;\n t.Iacutesmall = 0xf7ed;\n t.Ibreve = 0x012c;\n t.Icaron = 0x01cf;\n t.Icircle = 0x24be;\n t.Icircumflex = 0x00ce;\n t.Icircumflexsmall = 0xf7ee;\n t.Icyrillic = 0x0406;\n t.Idblgrave = 0x0208;\n t.Idieresis = 0x00cf;\n t.Idieresisacute = 0x1e2e;\n t.Idieresiscyrillic = 0x04e4;\n t.Idieresissmall = 0xf7ef;\n t.Idot = 0x0130;\n t.Idotaccent = 0x0130;\n t.Idotbelow = 0x1eca;\n t.Iebrevecyrillic = 0x04d6;\n t.Iecyrillic = 0x0415;\n t.Ifraktur = 0x2111;\n t.Igrave = 0x00cc;\n t.Igravesmall = 0xf7ec;\n t.Ihookabove = 0x1ec8;\n t.Iicyrillic = 0x0418;\n t.Iinvertedbreve = 0x020a;\n t.Iishortcyrillic = 0x0419;\n t.Imacron = 0x012a;\n t.Imacroncyrillic = 0x04e2;\n t.Imonospace = 0xff29;\n t.Iniarmenian = 0x053b;\n t.Iocyrillic = 0x0401;\n t.Iogonek = 0x012e;\n t.Iota = 0x0399;\n t.Iotaafrican = 0x0196;\n t.Iotadieresis = 0x03aa;\n t.Iotatonos = 0x038a;\n t.Ismall = 0xf769;\n t.Istroke = 0x0197;\n t.Itilde = 0x0128;\n t.Itildebelow = 0x1e2c;\n t.Izhitsacyrillic = 0x0474;\n t.Izhitsadblgravecyrillic = 0x0476;\n t.J = 0x004a;\n t.Jaarmenian = 0x0541;\n t.Jcircle = 0x24bf;\n t.Jcircumflex = 0x0134;\n t.Jecyrillic = 0x0408;\n t.Jheharmenian = 0x054b;\n t.Jmonospace = 0xff2a;\n t.Jsmall = 0xf76a;\n t.K = 0x004b;\n t.KBsquare = 0x3385;\n t.KKsquare = 0x33cd;\n t.Kabashkircyrillic = 0x04a0;\n t.Kacute = 0x1e30;\n t.Kacyrillic = 0x041a;\n t.Kadescendercyrillic = 0x049a;\n t.Kahookcyrillic = 0x04c3;\n t.Kappa = 0x039a;\n t.Kastrokecyrillic = 0x049e;\n t.Kaverticalstrokecyrillic = 0x049c;\n t.Kcaron = 0x01e8;\n t.Kcedilla = 0x0136;\n t.Kcircle = 0x24c0;\n t.Kcommaaccent = 0x0136;\n t.Kdotbelow = 0x1e32;\n t.Keharmenian = 0x0554;\n t.Kenarmenian = 0x053f;\n t.Khacyrillic = 0x0425;\n t.Kheicoptic = 0x03e6;\n t.Khook = 0x0198;\n t.Kjecyrillic = 0x040c;\n t.Klinebelow = 0x1e34;\n t.Kmonospace = 0xff2b;\n t.Koppacyrillic = 0x0480;\n t.Koppagreek = 0x03de;\n t.Ksicyrillic = 0x046e;\n t.Ksmall = 0xf76b;\n t.L = 0x004c;\n t.LJ = 0x01c7;\n t.LL = 0xf6bf;\n t.Lacute = 0x0139;\n t.Lambda = 0x039b;\n t.Lcaron = 0x013d;\n t.Lcedilla = 0x013b;\n t.Lcircle = 0x24c1;\n t.Lcircumflexbelow = 0x1e3c;\n t.Lcommaaccent = 0x013b;\n t.Ldot = 0x013f;\n t.Ldotaccent = 0x013f;\n t.Ldotbelow = 0x1e36;\n t.Ldotbelowmacron = 0x1e38;\n t.Liwnarmenian = 0x053c;\n t.Lj = 0x01c8;\n t.Ljecyrillic = 0x0409;\n t.Llinebelow = 0x1e3a;\n t.Lmonospace = 0xff2c;\n t.Lslash = 0x0141;\n t.Lslashsmall = 0xf6f9;\n t.Lsmall = 0xf76c;\n t.M = 0x004d;\n t.MBsquare = 0x3386;\n t.Macron = 0xf6d0;\n t.Macronsmall = 0xf7af;\n t.Macute = 0x1e3e;\n t.Mcircle = 0x24c2;\n t.Mdotaccent = 0x1e40;\n t.Mdotbelow = 0x1e42;\n t.Menarmenian = 0x0544;\n t.Mmonospace = 0xff2d;\n t.Msmall = 0xf76d;\n t.Mturned = 0x019c;\n t.Mu = 0x039c;\n t.N = 0x004e;\n t.NJ = 0x01ca;\n t.Nacute = 0x0143;\n t.Ncaron = 0x0147;\n t.Ncedilla = 0x0145;\n t.Ncircle = 0x24c3;\n t.Ncircumflexbelow = 0x1e4a;\n t.Ncommaaccent = 0x0145;\n t.Ndotaccent = 0x1e44;\n t.Ndotbelow = 0x1e46;\n t.Nhookleft = 0x019d;\n t.Nineroman = 0x2168;\n t.Nj = 0x01cb;\n t.Njecyrillic = 0x040a;\n t.Nlinebelow = 0x1e48;\n t.Nmonospace = 0xff2e;\n t.Nowarmenian = 0x0546;\n t.Nsmall = 0xf76e;\n t.Ntilde = 0x00d1;\n t.Ntildesmall = 0xf7f1;\n t.Nu = 0x039d;\n t.O = 0x004f;\n t.OE = 0x0152;\n t.OEsmall = 0xf6fa;\n t.Oacute = 0x00d3;\n t.Oacutesmall = 0xf7f3;\n t.Obarredcyrillic = 0x04e8;\n t.Obarreddieresiscyrillic = 0x04ea;\n t.Obreve = 0x014e;\n t.Ocaron = 0x01d1;\n t.Ocenteredtilde = 0x019f;\n t.Ocircle = 0x24c4;\n t.Ocircumflex = 0x00d4;\n t.Ocircumflexacute = 0x1ed0;\n t.Ocircumflexdotbelow = 0x1ed8;\n t.Ocircumflexgrave = 0x1ed2;\n t.Ocircumflexhookabove = 0x1ed4;\n t.Ocircumflexsmall = 0xf7f4;\n t.Ocircumflextilde = 0x1ed6;\n t.Ocyrillic = 0x041e;\n t.Odblacute = 0x0150;\n t.Odblgrave = 0x020c;\n t.Odieresis = 0x00d6;\n t.Odieresiscyrillic = 0x04e6;\n t.Odieresissmall = 0xf7f6;\n t.Odotbelow = 0x1ecc;\n t.Ogoneksmall = 0xf6fb;\n t.Ograve = 0x00d2;\n t.Ogravesmall = 0xf7f2;\n t.Oharmenian = 0x0555;\n t.Ohm = 0x2126;\n t.Ohookabove = 0x1ece;\n t.Ohorn = 0x01a0;\n t.Ohornacute = 0x1eda;\n t.Ohorndotbelow = 0x1ee2;\n t.Ohorngrave = 0x1edc;\n t.Ohornhookabove = 0x1ede;\n t.Ohorntilde = 0x1ee0;\n t.Ohungarumlaut = 0x0150;\n t.Oi = 0x01a2;\n t.Oinvertedbreve = 0x020e;\n t.Omacron = 0x014c;\n t.Omacronacute = 0x1e52;\n t.Omacrongrave = 0x1e50;\n t.Omega = 0x2126;\n t.Omegacyrillic = 0x0460;\n t.Omegagreek = 0x03a9;\n t.Omegaroundcyrillic = 0x047a;\n t.Omegatitlocyrillic = 0x047c;\n t.Omegatonos = 0x038f;\n t.Omicron = 0x039f;\n t.Omicrontonos = 0x038c;\n t.Omonospace = 0xff2f;\n t.Oneroman = 0x2160;\n t.Oogonek = 0x01ea;\n t.Oogonekmacron = 0x01ec;\n t.Oopen = 0x0186;\n t.Oslash = 0x00d8;\n t.Oslashacute = 0x01fe;\n t.Oslashsmall = 0xf7f8;\n t.Osmall = 0xf76f;\n t.Ostrokeacute = 0x01fe;\n t.Otcyrillic = 0x047e;\n t.Otilde = 0x00d5;\n t.Otildeacute = 0x1e4c;\n t.Otildedieresis = 0x1e4e;\n t.Otildesmall = 0xf7f5;\n t.P = 0x0050;\n t.Pacute = 0x1e54;\n t.Pcircle = 0x24c5;\n t.Pdotaccent = 0x1e56;\n t.Pecyrillic = 0x041f;\n t.Peharmenian = 0x054a;\n t.Pemiddlehookcyrillic = 0x04a6;\n t.Phi = 0x03a6;\n t.Phook = 0x01a4;\n t.Pi = 0x03a0;\n t.Piwrarmenian = 0x0553;\n t.Pmonospace = 0xff30;\n t.Psi = 0x03a8;\n t.Psicyrillic = 0x0470;\n t.Psmall = 0xf770;\n t.Q = 0x0051;\n t.Qcircle = 0x24c6;\n t.Qmonospace = 0xff31;\n t.Qsmall = 0xf771;\n t.R = 0x0052;\n t.Raarmenian = 0x054c;\n t.Racute = 0x0154;\n t.Rcaron = 0x0158;\n t.Rcedilla = 0x0156;\n t.Rcircle = 0x24c7;\n t.Rcommaaccent = 0x0156;\n t.Rdblgrave = 0x0210;\n t.Rdotaccent = 0x1e58;\n t.Rdotbelow = 0x1e5a;\n t.Rdotbelowmacron = 0x1e5c;\n t.Reharmenian = 0x0550;\n t.Rfraktur = 0x211c;\n t.Rho = 0x03a1;\n t.Ringsmall = 0xf6fc;\n t.Rinvertedbreve = 0x0212;\n t.Rlinebelow = 0x1e5e;\n t.Rmonospace = 0xff32;\n t.Rsmall = 0xf772;\n t.Rsmallinverted = 0x0281;\n t.Rsmallinvertedsuperior = 0x02b6;\n t.S = 0x0053;\n t.SF010000 = 0x250c;\n t.SF020000 = 0x2514;\n t.SF030000 = 0x2510;\n t.SF040000 = 0x2518;\n t.SF050000 = 0x253c;\n t.SF060000 = 0x252c;\n t.SF070000 = 0x2534;\n t.SF080000 = 0x251c;\n t.SF090000 = 0x2524;\n t.SF100000 = 0x2500;\n t.SF110000 = 0x2502;\n t.SF190000 = 0x2561;\n t.SF200000 = 0x2562;\n t.SF210000 = 0x2556;\n t.SF220000 = 0x2555;\n t.SF230000 = 0x2563;\n t.SF240000 = 0x2551;\n t.SF250000 = 0x2557;\n t.SF260000 = 0x255d;\n t.SF270000 = 0x255c;\n t.SF280000 = 0x255b;\n t.SF360000 = 0x255e;\n t.SF370000 = 0x255f;\n t.SF380000 = 0x255a;\n t.SF390000 = 0x2554;\n t.SF400000 = 0x2569;\n t.SF410000 = 0x2566;\n t.SF420000 = 0x2560;\n t.SF430000 = 0x2550;\n t.SF440000 = 0x256c;\n t.SF450000 = 0x2567;\n t.SF460000 = 0x2568;\n t.SF470000 = 0x2564;\n t.SF480000 = 0x2565;\n t.SF490000 = 0x2559;\n t.SF500000 = 0x2558;\n t.SF510000 = 0x2552;\n t.SF520000 = 0x2553;\n t.SF530000 = 0x256b;\n t.SF540000 = 0x256a;\n t.Sacute = 0x015a;\n t.Sacutedotaccent = 0x1e64;\n t.Sampigreek = 0x03e0;\n t.Scaron = 0x0160;\n t.Scarondotaccent = 0x1e66;\n t.Scaronsmall = 0xf6fd;\n t.Scedilla = 0x015e;\n t.Schwa = 0x018f;\n t.Schwacyrillic = 0x04d8;\n t.Schwadieresiscyrillic = 0x04da;\n t.Scircle = 0x24c8;\n t.Scircumflex = 0x015c;\n t.Scommaaccent = 0x0218;\n t.Sdotaccent = 0x1e60;\n t.Sdotbelow = 0x1e62;\n t.Sdotbelowdotaccent = 0x1e68;\n t.Seharmenian = 0x054d;\n t.Sevenroman = 0x2166;\n t.Shaarmenian = 0x0547;\n t.Shacyrillic = 0x0428;\n t.Shchacyrillic = 0x0429;\n t.Sheicoptic = 0x03e2;\n t.Shhacyrillic = 0x04ba;\n t.Shimacoptic = 0x03ec;\n t.Sigma = 0x03a3;\n t.Sixroman = 0x2165;\n t.Smonospace = 0xff33;\n t.Softsigncyrillic = 0x042c;\n t.Ssmall = 0xf773;\n t.Stigmagreek = 0x03da;\n t.T = 0x0054;\n t.Tau = 0x03a4;\n t.Tbar = 0x0166;\n t.Tcaron = 0x0164;\n t.Tcedilla = 0x0162;\n t.Tcircle = 0x24c9;\n t.Tcircumflexbelow = 0x1e70;\n t.Tcommaaccent = 0x0162;\n t.Tdotaccent = 0x1e6a;\n t.Tdotbelow = 0x1e6c;\n t.Tecyrillic = 0x0422;\n t.Tedescendercyrillic = 0x04ac;\n t.Tenroman = 0x2169;\n t.Tetsecyrillic = 0x04b4;\n t.Theta = 0x0398;\n t.Thook = 0x01ac;\n t.Thorn = 0x00de;\n t.Thornsmall = 0xf7fe;\n t.Threeroman = 0x2162;\n t.Tildesmall = 0xf6fe;\n t.Tiwnarmenian = 0x054f;\n t.Tlinebelow = 0x1e6e;\n t.Tmonospace = 0xff34;\n t.Toarmenian = 0x0539;\n t.Tonefive = 0x01bc;\n t.Tonesix = 0x0184;\n t.Tonetwo = 0x01a7;\n t.Tretroflexhook = 0x01ae;\n t.Tsecyrillic = 0x0426;\n t.Tshecyrillic = 0x040b;\n t.Tsmall = 0xf774;\n t.Twelveroman = 0x216b;\n t.Tworoman = 0x2161;\n t.U = 0x0055;\n t.Uacute = 0x00da;\n t.Uacutesmall = 0xf7fa;\n t.Ubreve = 0x016c;\n t.Ucaron = 0x01d3;\n t.Ucircle = 0x24ca;\n t.Ucircumflex = 0x00db;\n t.Ucircumflexbelow = 0x1e76;\n t.Ucircumflexsmall = 0xf7fb;\n t.Ucyrillic = 0x0423;\n t.Udblacute = 0x0170;\n t.Udblgrave = 0x0214;\n t.Udieresis = 0x00dc;\n t.Udieresisacute = 0x01d7;\n t.Udieresisbelow = 0x1e72;\n t.Udieresiscaron = 0x01d9;\n t.Udieresiscyrillic = 0x04f0;\n t.Udieresisgrave = 0x01db;\n t.Udieresismacron = 0x01d5;\n t.Udieresissmall = 0xf7fc;\n t.Udotbelow = 0x1ee4;\n t.Ugrave = 0x00d9;\n t.Ugravesmall = 0xf7f9;\n t.Uhookabove = 0x1ee6;\n t.Uhorn = 0x01af;\n t.Uhornacute = 0x1ee8;\n t.Uhorndotbelow = 0x1ef0;\n t.Uhorngrave = 0x1eea;\n t.Uhornhookabove = 0x1eec;\n t.Uhorntilde = 0x1eee;\n t.Uhungarumlaut = 0x0170;\n t.Uhungarumlautcyrillic = 0x04f2;\n t.Uinvertedbreve = 0x0216;\n t.Ukcyrillic = 0x0478;\n t.Umacron = 0x016a;\n t.Umacroncyrillic = 0x04ee;\n t.Umacrondieresis = 0x1e7a;\n t.Umonospace = 0xff35;\n t.Uogonek = 0x0172;\n t.Upsilon = 0x03a5;\n t.Upsilon1 = 0x03d2;\n t.Upsilonacutehooksymbolgreek = 0x03d3;\n t.Upsilonafrican = 0x01b1;\n t.Upsilondieresis = 0x03ab;\n t.Upsilondieresishooksymbolgreek = 0x03d4;\n t.Upsilonhooksymbol = 0x03d2;\n t.Upsilontonos = 0x038e;\n t.Uring = 0x016e;\n t.Ushortcyrillic = 0x040e;\n t.Usmall = 0xf775;\n t.Ustraightcyrillic = 0x04ae;\n t.Ustraightstrokecyrillic = 0x04b0;\n t.Utilde = 0x0168;\n t.Utildeacute = 0x1e78;\n t.Utildebelow = 0x1e74;\n t.V = 0x0056;\n t.Vcircle = 0x24cb;\n t.Vdotbelow = 0x1e7e;\n t.Vecyrillic = 0x0412;\n t.Vewarmenian = 0x054e;\n t.Vhook = 0x01b2;\n t.Vmonospace = 0xff36;\n t.Voarmenian = 0x0548;\n t.Vsmall = 0xf776;\n t.Vtilde = 0x1e7c;\n t.W = 0x0057;\n t.Wacute = 0x1e82;\n t.Wcircle = 0x24cc;\n t.Wcircumflex = 0x0174;\n t.Wdieresis = 0x1e84;\n t.Wdotaccent = 0x1e86;\n t.Wdotbelow = 0x1e88;\n t.Wgrave = 0x1e80;\n t.Wmonospace = 0xff37;\n t.Wsmall = 0xf777;\n t.X = 0x0058;\n t.Xcircle = 0x24cd;\n t.Xdieresis = 0x1e8c;\n t.Xdotaccent = 0x1e8a;\n t.Xeharmenian = 0x053d;\n t.Xi = 0x039e;\n t.Xmonospace = 0xff38;\n t.Xsmall = 0xf778;\n t.Y = 0x0059;\n t.Yacute = 0x00dd;\n t.Yacutesmall = 0xf7fd;\n t.Yatcyrillic = 0x0462;\n t.Ycircle = 0x24ce;\n t.Ycircumflex = 0x0176;\n t.Ydieresis = 0x0178;\n t.Ydieresissmall = 0xf7ff;\n t.Ydotaccent = 0x1e8e;\n t.Ydotbelow = 0x1ef4;\n t.Yericyrillic = 0x042b;\n t.Yerudieresiscyrillic = 0x04f8;\n t.Ygrave = 0x1ef2;\n t.Yhook = 0x01b3;\n t.Yhookabove = 0x1ef6;\n t.Yiarmenian = 0x0545;\n t.Yicyrillic = 0x0407;\n t.Yiwnarmenian = 0x0552;\n t.Ymonospace = 0xff39;\n t.Ysmall = 0xf779;\n t.Ytilde = 0x1ef8;\n t.Yusbigcyrillic = 0x046a;\n t.Yusbigiotifiedcyrillic = 0x046c;\n t.Yuslittlecyrillic = 0x0466;\n t.Yuslittleiotifiedcyrillic = 0x0468;\n t.Z = 0x005a;\n t.Zaarmenian = 0x0536;\n t.Zacute = 0x0179;\n t.Zcaron = 0x017d;\n t.Zcaronsmall = 0xf6ff;\n t.Zcircle = 0x24cf;\n t.Zcircumflex = 0x1e90;\n t.Zdot = 0x017b;\n t.Zdotaccent = 0x017b;\n t.Zdotbelow = 0x1e92;\n t.Zecyrillic = 0x0417;\n t.Zedescendercyrillic = 0x0498;\n t.Zedieresiscyrillic = 0x04de;\n t.Zeta = 0x0396;\n t.Zhearmenian = 0x053a;\n t.Zhebrevecyrillic = 0x04c1;\n t.Zhecyrillic = 0x0416;\n t.Zhedescendercyrillic = 0x0496;\n t.Zhedieresiscyrillic = 0x04dc;\n t.Zlinebelow = 0x1e94;\n t.Zmonospace = 0xff3a;\n t.Zsmall = 0xf77a;\n t.Zstroke = 0x01b5;\n t.a = 0x0061;\n t.aabengali = 0x0986;\n t.aacute = 0x00e1;\n t.aadeva = 0x0906;\n t.aagujarati = 0x0a86;\n t.aagurmukhi = 0x0a06;\n t.aamatragurmukhi = 0x0a3e;\n t.aarusquare = 0x3303;\n t.aavowelsignbengali = 0x09be;\n t.aavowelsigndeva = 0x093e;\n t.aavowelsigngujarati = 0x0abe;\n t.abbreviationmarkarmenian = 0x055f;\n t.abbreviationsigndeva = 0x0970;\n t.abengali = 0x0985;\n t.abopomofo = 0x311a;\n t.abreve = 0x0103;\n t.abreveacute = 0x1eaf;\n t.abrevecyrillic = 0x04d1;\n t.abrevedotbelow = 0x1eb7;\n t.abrevegrave = 0x1eb1;\n t.abrevehookabove = 0x1eb3;\n t.abrevetilde = 0x1eb5;\n t.acaron = 0x01ce;\n t.acircle = 0x24d0;\n t.acircumflex = 0x00e2;\n t.acircumflexacute = 0x1ea5;\n t.acircumflexdotbelow = 0x1ead;\n t.acircumflexgrave = 0x1ea7;\n t.acircumflexhookabove = 0x1ea9;\n t.acircumflextilde = 0x1eab;\n t.acute = 0x00b4;\n t.acutebelowcmb = 0x0317;\n t.acutecmb = 0x0301;\n t.acutecomb = 0x0301;\n t.acutedeva = 0x0954;\n t.acutelowmod = 0x02cf;\n t.acutetonecmb = 0x0341;\n t.acyrillic = 0x0430;\n t.adblgrave = 0x0201;\n t.addakgurmukhi = 0x0a71;\n t.adeva = 0x0905;\n t.adieresis = 0x00e4;\n t.adieresiscyrillic = 0x04d3;\n t.adieresismacron = 0x01df;\n t.adotbelow = 0x1ea1;\n t.adotmacron = 0x01e1;\n t.ae = 0x00e6;\n t.aeacute = 0x01fd;\n t.aekorean = 0x3150;\n t.aemacron = 0x01e3;\n t.afii00208 = 0x2015;\n t.afii08941 = 0x20a4;\n t.afii10017 = 0x0410;\n t.afii10018 = 0x0411;\n t.afii10019 = 0x0412;\n t.afii10020 = 0x0413;\n t.afii10021 = 0x0414;\n t.afii10022 = 0x0415;\n t.afii10023 = 0x0401;\n t.afii10024 = 0x0416;\n t.afii10025 = 0x0417;\n t.afii10026 = 0x0418;\n t.afii10027 = 0x0419;\n t.afii10028 = 0x041a;\n t.afii10029 = 0x041b;\n t.afii10030 = 0x041c;\n t.afii10031 = 0x041d;\n t.afii10032 = 0x041e;\n t.afii10033 = 0x041f;\n t.afii10034 = 0x0420;\n t.afii10035 = 0x0421;\n t.afii10036 = 0x0422;\n t.afii10037 = 0x0423;\n t.afii10038 = 0x0424;\n t.afii10039 = 0x0425;\n t.afii10040 = 0x0426;\n t.afii10041 = 0x0427;\n t.afii10042 = 0x0428;\n t.afii10043 = 0x0429;\n t.afii10044 = 0x042a;\n t.afii10045 = 0x042b;\n t.afii10046 = 0x042c;\n t.afii10047 = 0x042d;\n t.afii10048 = 0x042e;\n t.afii10049 = 0x042f;\n t.afii10050 = 0x0490;\n t.afii10051 = 0x0402;\n t.afii10052 = 0x0403;\n t.afii10053 = 0x0404;\n t.afii10054 = 0x0405;\n t.afii10055 = 0x0406;\n t.afii10056 = 0x0407;\n t.afii10057 = 0x0408;\n t.afii10058 = 0x0409;\n t.afii10059 = 0x040a;\n t.afii10060 = 0x040b;\n t.afii10061 = 0x040c;\n t.afii10062 = 0x040e;\n t.afii10063 = 0xf6c4;\n t.afii10064 = 0xf6c5;\n t.afii10065 = 0x0430;\n t.afii10066 = 0x0431;\n t.afii10067 = 0x0432;\n t.afii10068 = 0x0433;\n t.afii10069 = 0x0434;\n t.afii10070 = 0x0435;\n t.afii10071 = 0x0451;\n t.afii10072 = 0x0436;\n t.afii10073 = 0x0437;\n t.afii10074 = 0x0438;\n t.afii10075 = 0x0439;\n t.afii10076 = 0x043a;\n t.afii10077 = 0x043b;\n t.afii10078 = 0x043c;\n t.afii10079 = 0x043d;\n t.afii10080 = 0x043e;\n t.afii10081 = 0x043f;\n t.afii10082 = 0x0440;\n t.afii10083 = 0x0441;\n t.afii10084 = 0x0442;\n t.afii10085 = 0x0443;\n t.afii10086 = 0x0444;\n t.afii10087 = 0x0445;\n t.afii10088 = 0x0446;\n t.afii10089 = 0x0447;\n t.afii10090 = 0x0448;\n t.afii10091 = 0x0449;\n t.afii10092 = 0x044a;\n t.afii10093 = 0x044b;\n t.afii10094 = 0x044c;\n t.afii10095 = 0x044d;\n t.afii10096 = 0x044e;\n t.afii10097 = 0x044f;\n t.afii10098 = 0x0491;\n t.afii10099 = 0x0452;\n t.afii10100 = 0x0453;\n t.afii10101 = 0x0454;\n t.afii10102 = 0x0455;\n t.afii10103 = 0x0456;\n t.afii10104 = 0x0457;\n t.afii10105 = 0x0458;\n t.afii10106 = 0x0459;\n t.afii10107 = 0x045a;\n t.afii10108 = 0x045b;\n t.afii10109 = 0x045c;\n t.afii10110 = 0x045e;\n t.afii10145 = 0x040f;\n t.afii10146 = 0x0462;\n t.afii10147 = 0x0472;\n t.afii10148 = 0x0474;\n t.afii10192 = 0xf6c6;\n t.afii10193 = 0x045f;\n t.afii10194 = 0x0463;\n t.afii10195 = 0x0473;\n t.afii10196 = 0x0475;\n t.afii10831 = 0xf6c7;\n t.afii10832 = 0xf6c8;\n t.afii10846 = 0x04d9;\n t.afii299 = 0x200e;\n t.afii300 = 0x200f;\n t.afii301 = 0x200d;\n t.afii57381 = 0x066a;\n t.afii57388 = 0x060c;\n t.afii57392 = 0x0660;\n t.afii57393 = 0x0661;\n t.afii57394 = 0x0662;\n t.afii57395 = 0x0663;\n t.afii57396 = 0x0664;\n t.afii57397 = 0x0665;\n t.afii57398 = 0x0666;\n t.afii57399 = 0x0667;\n t.afii57400 = 0x0668;\n t.afii57401 = 0x0669;\n t.afii57403 = 0x061b;\n t.afii57407 = 0x061f;\n t.afii57409 = 0x0621;\n t.afii57410 = 0x0622;\n t.afii57411 = 0x0623;\n t.afii57412 = 0x0624;\n t.afii57413 = 0x0625;\n t.afii57414 = 0x0626;\n t.afii57415 = 0x0627;\n t.afii57416 = 0x0628;\n t.afii57417 = 0x0629;\n t.afii57418 = 0x062a;\n t.afii57419 = 0x062b;\n t.afii57420 = 0x062c;\n t.afii57421 = 0x062d;\n t.afii57422 = 0x062e;\n t.afii57423 = 0x062f;\n t.afii57424 = 0x0630;\n t.afii57425 = 0x0631;\n t.afii57426 = 0x0632;\n t.afii57427 = 0x0633;\n t.afii57428 = 0x0634;\n t.afii57429 = 0x0635;\n t.afii57430 = 0x0636;\n t.afii57431 = 0x0637;\n t.afii57432 = 0x0638;\n t.afii57433 = 0x0639;\n t.afii57434 = 0x063a;\n t.afii57440 = 0x0640;\n t.afii57441 = 0x0641;\n t.afii57442 = 0x0642;\n t.afii57443 = 0x0643;\n t.afii57444 = 0x0644;\n t.afii57445 = 0x0645;\n t.afii57446 = 0x0646;\n t.afii57448 = 0x0648;\n t.afii57449 = 0x0649;\n t.afii57450 = 0x064a;\n t.afii57451 = 0x064b;\n t.afii57452 = 0x064c;\n t.afii57453 = 0x064d;\n t.afii57454 = 0x064e;\n t.afii57455 = 0x064f;\n t.afii57456 = 0x0650;\n t.afii57457 = 0x0651;\n t.afii57458 = 0x0652;\n t.afii57470 = 0x0647;\n t.afii57505 = 0x06a4;\n t.afii57506 = 0x067e;\n t.afii57507 = 0x0686;\n t.afii57508 = 0x0698;\n t.afii57509 = 0x06af;\n t.afii57511 = 0x0679;\n t.afii57512 = 0x0688;\n t.afii57513 = 0x0691;\n t.afii57514 = 0x06ba;\n t.afii57519 = 0x06d2;\n t.afii57534 = 0x06d5;\n t.afii57636 = 0x20aa;\n t.afii57645 = 0x05be;\n t.afii57658 = 0x05c3;\n t.afii57664 = 0x05d0;\n t.afii57665 = 0x05d1;\n t.afii57666 = 0x05d2;\n t.afii57667 = 0x05d3;\n t.afii57668 = 0x05d4;\n t.afii57669 = 0x05d5;\n t.afii57670 = 0x05d6;\n t.afii57671 = 0x05d7;\n t.afii57672 = 0x05d8;\n t.afii57673 = 0x05d9;\n t.afii57674 = 0x05da;\n t.afii57675 = 0x05db;\n t.afii57676 = 0x05dc;\n t.afii57677 = 0x05dd;\n t.afii57678 = 0x05de;\n t.afii57679 = 0x05df;\n t.afii57680 = 0x05e0;\n t.afii57681 = 0x05e1;\n t.afii57682 = 0x05e2;\n t.afii57683 = 0x05e3;\n t.afii57684 = 0x05e4;\n t.afii57685 = 0x05e5;\n t.afii57686 = 0x05e6;\n t.afii57687 = 0x05e7;\n t.afii57688 = 0x05e8;\n t.afii57689 = 0x05e9;\n t.afii57690 = 0x05ea;\n t.afii57694 = 0xfb2a;\n t.afii57695 = 0xfb2b;\n t.afii57700 = 0xfb4b;\n t.afii57705 = 0xfb1f;\n t.afii57716 = 0x05f0;\n t.afii57717 = 0x05f1;\n t.afii57718 = 0x05f2;\n t.afii57723 = 0xfb35;\n t.afii57793 = 0x05b4;\n t.afii57794 = 0x05b5;\n t.afii57795 = 0x05b6;\n t.afii57796 = 0x05bb;\n t.afii57797 = 0x05b8;\n t.afii57798 = 0x05b7;\n t.afii57799 = 0x05b0;\n t.afii57800 = 0x05b2;\n t.afii57801 = 0x05b1;\n t.afii57802 = 0x05b3;\n t.afii57803 = 0x05c2;\n t.afii57804 = 0x05c1;\n t.afii57806 = 0x05b9;\n t.afii57807 = 0x05bc;\n t.afii57839 = 0x05bd;\n t.afii57841 = 0x05bf;\n t.afii57842 = 0x05c0;\n t.afii57929 = 0x02bc;\n t.afii61248 = 0x2105;\n t.afii61289 = 0x2113;\n t.afii61352 = 0x2116;\n t.afii61573 = 0x202c;\n t.afii61574 = 0x202d;\n t.afii61575 = 0x202e;\n t.afii61664 = 0x200c;\n t.afii63167 = 0x066d;\n t.afii64937 = 0x02bd;\n t.agrave = 0x00e0;\n t.agujarati = 0x0a85;\n t.agurmukhi = 0x0a05;\n t.ahiragana = 0x3042;\n t.ahookabove = 0x1ea3;\n t.aibengali = 0x0990;\n t.aibopomofo = 0x311e;\n t.aideva = 0x0910;\n t.aiecyrillic = 0x04d5;\n t.aigujarati = 0x0a90;\n t.aigurmukhi = 0x0a10;\n t.aimatragurmukhi = 0x0a48;\n t.ainarabic = 0x0639;\n t.ainfinalarabic = 0xfeca;\n t.aininitialarabic = 0xfecb;\n t.ainmedialarabic = 0xfecc;\n t.ainvertedbreve = 0x0203;\n t.aivowelsignbengali = 0x09c8;\n t.aivowelsigndeva = 0x0948;\n t.aivowelsigngujarati = 0x0ac8;\n t.akatakana = 0x30a2;\n t.akatakanahalfwidth = 0xff71;\n t.akorean = 0x314f;\n t.alef = 0x05d0;\n t.alefarabic = 0x0627;\n t.alefdageshhebrew = 0xfb30;\n t.aleffinalarabic = 0xfe8e;\n t.alefhamzaabovearabic = 0x0623;\n t.alefhamzaabovefinalarabic = 0xfe84;\n t.alefhamzabelowarabic = 0x0625;\n t.alefhamzabelowfinalarabic = 0xfe88;\n t.alefhebrew = 0x05d0;\n t.aleflamedhebrew = 0xfb4f;\n t.alefmaddaabovearabic = 0x0622;\n t.alefmaddaabovefinalarabic = 0xfe82;\n t.alefmaksuraarabic = 0x0649;\n t.alefmaksurafinalarabic = 0xfef0;\n t.alefmaksurainitialarabic = 0xfef3;\n t.alefmaksuramedialarabic = 0xfef4;\n t.alefpatahhebrew = 0xfb2e;\n t.alefqamatshebrew = 0xfb2f;\n t.aleph = 0x2135;\n t.allequal = 0x224c;\n t.alpha = 0x03b1;\n t.alphatonos = 0x03ac;\n t.amacron = 0x0101;\n t.amonospace = 0xff41;\n t.ampersand = 0x0026;\n t.ampersandmonospace = 0xff06;\n t.ampersandsmall = 0xf726;\n t.amsquare = 0x33c2;\n t.anbopomofo = 0x3122;\n t.angbopomofo = 0x3124;\n t.angbracketleft = 0x3008;\n t.angbracketright = 0x3009;\n t.angkhankhuthai = 0x0e5a;\n t.angle = 0x2220;\n t.anglebracketleft = 0x3008;\n t.anglebracketleftvertical = 0xfe3f;\n t.anglebracketright = 0x3009;\n t.anglebracketrightvertical = 0xfe40;\n t.angleleft = 0x2329;\n t.angleright = 0x232a;\n t.angstrom = 0x212b;\n t.anoteleia = 0x0387;\n t.anudattadeva = 0x0952;\n t.anusvarabengali = 0x0982;\n t.anusvaradeva = 0x0902;\n t.anusvaragujarati = 0x0a82;\n t.aogonek = 0x0105;\n t.apaatosquare = 0x3300;\n t.aparen = 0x249c;\n t.apostrophearmenian = 0x055a;\n t.apostrophemod = 0x02bc;\n t.apple = 0xf8ff;\n t.approaches = 0x2250;\n t.approxequal = 0x2248;\n t.approxequalorimage = 0x2252;\n t.approximatelyequal = 0x2245;\n t.araeaekorean = 0x318e;\n t.araeakorean = 0x318d;\n t.arc = 0x2312;\n t.arighthalfring = 0x1e9a;\n t.aring = 0x00e5;\n t.aringacute = 0x01fb;\n t.aringbelow = 0x1e01;\n t.arrowboth = 0x2194;\n t.arrowdashdown = 0x21e3;\n t.arrowdashleft = 0x21e0;\n t.arrowdashright = 0x21e2;\n t.arrowdashup = 0x21e1;\n t.arrowdblboth = 0x21d4;\n t.arrowdbldown = 0x21d3;\n t.arrowdblleft = 0x21d0;\n t.arrowdblright = 0x21d2;\n t.arrowdblup = 0x21d1;\n t.arrowdown = 0x2193;\n t.arrowdownleft = 0x2199;\n t.arrowdownright = 0x2198;\n t.arrowdownwhite = 0x21e9;\n t.arrowheaddownmod = 0x02c5;\n t.arrowheadleftmod = 0x02c2;\n t.arrowheadrightmod = 0x02c3;\n t.arrowheadupmod = 0x02c4;\n t.arrowhorizex = 0xf8e7;\n t.arrowleft = 0x2190;\n t.arrowleftdbl = 0x21d0;\n t.arrowleftdblstroke = 0x21cd;\n t.arrowleftoverright = 0x21c6;\n t.arrowleftwhite = 0x21e6;\n t.arrowright = 0x2192;\n t.arrowrightdblstroke = 0x21cf;\n t.arrowrightheavy = 0x279e;\n t.arrowrightoverleft = 0x21c4;\n t.arrowrightwhite = 0x21e8;\n t.arrowtableft = 0x21e4;\n t.arrowtabright = 0x21e5;\n t.arrowup = 0x2191;\n t.arrowupdn = 0x2195;\n t.arrowupdnbse = 0x21a8;\n t.arrowupdownbase = 0x21a8;\n t.arrowupleft = 0x2196;\n t.arrowupleftofdown = 0x21c5;\n t.arrowupright = 0x2197;\n t.arrowupwhite = 0x21e7;\n t.arrowvertex = 0xf8e6;\n t.asciicircum = 0x005e;\n t.asciicircummonospace = 0xff3e;\n t.asciitilde = 0x007e;\n t.asciitildemonospace = 0xff5e;\n t.ascript = 0x0251;\n t.ascriptturned = 0x0252;\n t.asmallhiragana = 0x3041;\n t.asmallkatakana = 0x30a1;\n t.asmallkatakanahalfwidth = 0xff67;\n t.asterisk = 0x002a;\n t.asteriskaltonearabic = 0x066d;\n t.asteriskarabic = 0x066d;\n t.asteriskmath = 0x2217;\n t.asteriskmonospace = 0xff0a;\n t.asterisksmall = 0xfe61;\n t.asterism = 0x2042;\n t.asuperior = 0xf6e9;\n t.asymptoticallyequal = 0x2243;\n t.at = 0x0040;\n t.atilde = 0x00e3;\n t.atmonospace = 0xff20;\n t.atsmall = 0xfe6b;\n t.aturned = 0x0250;\n t.aubengali = 0x0994;\n t.aubopomofo = 0x3120;\n t.audeva = 0x0914;\n t.augujarati = 0x0a94;\n t.augurmukhi = 0x0a14;\n t.aulengthmarkbengali = 0x09d7;\n t.aumatragurmukhi = 0x0a4c;\n t.auvowelsignbengali = 0x09cc;\n t.auvowelsigndeva = 0x094c;\n t.auvowelsigngujarati = 0x0acc;\n t.avagrahadeva = 0x093d;\n t.aybarmenian = 0x0561;\n t.ayin = 0x05e2;\n t.ayinaltonehebrew = 0xfb20;\n t.ayinhebrew = 0x05e2;\n t.b = 0x0062;\n t.babengali = 0x09ac;\n t.backslash = 0x005c;\n t.backslashmonospace = 0xff3c;\n t.badeva = 0x092c;\n t.bagujarati = 0x0aac;\n t.bagurmukhi = 0x0a2c;\n t.bahiragana = 0x3070;\n t.bahtthai = 0x0e3f;\n t.bakatakana = 0x30d0;\n t.bar = 0x007c;\n t.barmonospace = 0xff5c;\n t.bbopomofo = 0x3105;\n t.bcircle = 0x24d1;\n t.bdotaccent = 0x1e03;\n t.bdotbelow = 0x1e05;\n t.beamedsixteenthnotes = 0x266c;\n t.because = 0x2235;\n t.becyrillic = 0x0431;\n t.beharabic = 0x0628;\n t.behfinalarabic = 0xfe90;\n t.behinitialarabic = 0xfe91;\n t.behiragana = 0x3079;\n t.behmedialarabic = 0xfe92;\n t.behmeeminitialarabic = 0xfc9f;\n t.behmeemisolatedarabic = 0xfc08;\n t.behnoonfinalarabic = 0xfc6d;\n t.bekatakana = 0x30d9;\n t.benarmenian = 0x0562;\n t.bet = 0x05d1;\n t.beta = 0x03b2;\n t.betasymbolgreek = 0x03d0;\n t.betdagesh = 0xfb31;\n t.betdageshhebrew = 0xfb31;\n t.bethebrew = 0x05d1;\n t.betrafehebrew = 0xfb4c;\n t.bhabengali = 0x09ad;\n t.bhadeva = 0x092d;\n t.bhagujarati = 0x0aad;\n t.bhagurmukhi = 0x0a2d;\n t.bhook = 0x0253;\n t.bihiragana = 0x3073;\n t.bikatakana = 0x30d3;\n t.bilabialclick = 0x0298;\n t.bindigurmukhi = 0x0a02;\n t.birusquare = 0x3331;\n t.blackcircle = 0x25cf;\n t.blackdiamond = 0x25c6;\n t.blackdownpointingtriangle = 0x25bc;\n t.blackleftpointingpointer = 0x25c4;\n t.blackleftpointingtriangle = 0x25c0;\n t.blacklenticularbracketleft = 0x3010;\n t.blacklenticularbracketleftvertical = 0xfe3b;\n t.blacklenticularbracketright = 0x3011;\n t.blacklenticularbracketrightvertical = 0xfe3c;\n t.blacklowerlefttriangle = 0x25e3;\n t.blacklowerrighttriangle = 0x25e2;\n t.blackrectangle = 0x25ac;\n t.blackrightpointingpointer = 0x25ba;\n t.blackrightpointingtriangle = 0x25b6;\n t.blacksmallsquare = 0x25aa;\n t.blacksmilingface = 0x263b;\n t.blacksquare = 0x25a0;\n t.blackstar = 0x2605;\n t.blackupperlefttriangle = 0x25e4;\n t.blackupperrighttriangle = 0x25e5;\n t.blackuppointingsmalltriangle = 0x25b4;\n t.blackuppointingtriangle = 0x25b2;\n t.blank = 0x2423;\n t.blinebelow = 0x1e07;\n t.block = 0x2588;\n t.bmonospace = 0xff42;\n t.bobaimaithai = 0x0e1a;\n t.bohiragana = 0x307c;\n t.bokatakana = 0x30dc;\n t.bparen = 0x249d;\n t.bqsquare = 0x33c3;\n t.braceex = 0xf8f4;\n t.braceleft = 0x007b;\n t.braceleftbt = 0xf8f3;\n t.braceleftmid = 0xf8f2;\n t.braceleftmonospace = 0xff5b;\n t.braceleftsmall = 0xfe5b;\n t.bracelefttp = 0xf8f1;\n t.braceleftvertical = 0xfe37;\n t.braceright = 0x007d;\n t.bracerightbt = 0xf8fe;\n t.bracerightmid = 0xf8fd;\n t.bracerightmonospace = 0xff5d;\n t.bracerightsmall = 0xfe5c;\n t.bracerighttp = 0xf8fc;\n t.bracerightvertical = 0xfe38;\n t.bracketleft = 0x005b;\n t.bracketleftbt = 0xf8f0;\n t.bracketleftex = 0xf8ef;\n t.bracketleftmonospace = 0xff3b;\n t.bracketlefttp = 0xf8ee;\n t.bracketright = 0x005d;\n t.bracketrightbt = 0xf8fb;\n t.bracketrightex = 0xf8fa;\n t.bracketrightmonospace = 0xff3d;\n t.bracketrighttp = 0xf8f9;\n t.breve = 0x02d8;\n t.brevebelowcmb = 0x032e;\n t.brevecmb = 0x0306;\n t.breveinvertedbelowcmb = 0x032f;\n t.breveinvertedcmb = 0x0311;\n t.breveinverteddoublecmb = 0x0361;\n t.bridgebelowcmb = 0x032a;\n t.bridgeinvertedbelowcmb = 0x033a;\n t.brokenbar = 0x00a6;\n t.bstroke = 0x0180;\n t.bsuperior = 0xf6ea;\n t.btopbar = 0x0183;\n t.buhiragana = 0x3076;\n t.bukatakana = 0x30d6;\n t.bullet = 0x2022;\n t.bulletinverse = 0x25d8;\n t.bulletoperator = 0x2219;\n t.bullseye = 0x25ce;\n t.c = 0x0063;\n t.caarmenian = 0x056e;\n t.cabengali = 0x099a;\n t.cacute = 0x0107;\n t.cadeva = 0x091a;\n t.cagujarati = 0x0a9a;\n t.cagurmukhi = 0x0a1a;\n t.calsquare = 0x3388;\n t.candrabindubengali = 0x0981;\n t.candrabinducmb = 0x0310;\n t.candrabindudeva = 0x0901;\n t.candrabindugujarati = 0x0a81;\n t.capslock = 0x21ea;\n t.careof = 0x2105;\n t.caron = 0x02c7;\n t.caronbelowcmb = 0x032c;\n t.caroncmb = 0x030c;\n t.carriagereturn = 0x21b5;\n t.cbopomofo = 0x3118;\n t.ccaron = 0x010d;\n t.ccedilla = 0x00e7;\n t.ccedillaacute = 0x1e09;\n t.ccircle = 0x24d2;\n t.ccircumflex = 0x0109;\n t.ccurl = 0x0255;\n t.cdot = 0x010b;\n t.cdotaccent = 0x010b;\n t.cdsquare = 0x33c5;\n t.cedilla = 0x00b8;\n t.cedillacmb = 0x0327;\n t.cent = 0x00a2;\n t.centigrade = 0x2103;\n t.centinferior = 0xf6df;\n t.centmonospace = 0xffe0;\n t.centoldstyle = 0xf7a2;\n t.centsuperior = 0xf6e0;\n t.chaarmenian = 0x0579;\n t.chabengali = 0x099b;\n t.chadeva = 0x091b;\n t.chagujarati = 0x0a9b;\n t.chagurmukhi = 0x0a1b;\n t.chbopomofo = 0x3114;\n t.cheabkhasiancyrillic = 0x04bd;\n t.checkmark = 0x2713;\n t.checyrillic = 0x0447;\n t.chedescenderabkhasiancyrillic = 0x04bf;\n t.chedescendercyrillic = 0x04b7;\n t.chedieresiscyrillic = 0x04f5;\n t.cheharmenian = 0x0573;\n t.chekhakassiancyrillic = 0x04cc;\n t.cheverticalstrokecyrillic = 0x04b9;\n t.chi = 0x03c7;\n t.chieuchacirclekorean = 0x3277;\n t.chieuchaparenkorean = 0x3217;\n t.chieuchcirclekorean = 0x3269;\n t.chieuchkorean = 0x314a;\n t.chieuchparenkorean = 0x3209;\n t.chochangthai = 0x0e0a;\n t.chochanthai = 0x0e08;\n t.chochingthai = 0x0e09;\n t.chochoethai = 0x0e0c;\n t.chook = 0x0188;\n t.cieucacirclekorean = 0x3276;\n t.cieucaparenkorean = 0x3216;\n t.cieuccirclekorean = 0x3268;\n t.cieuckorean = 0x3148;\n t.cieucparenkorean = 0x3208;\n t.cieucuparenkorean = 0x321c;\n t.circle = 0x25cb;\n t.circlecopyrt = 0x00a9;\n t.circlemultiply = 0x2297;\n t.circleot = 0x2299;\n t.circleplus = 0x2295;\n t.circlepostalmark = 0x3036;\n t.circlewithlefthalfblack = 0x25d0;\n t.circlewithrighthalfblack = 0x25d1;\n t.circumflex = 0x02c6;\n t.circumflexbelowcmb = 0x032d;\n t.circumflexcmb = 0x0302;\n t.clear = 0x2327;\n t.clickalveolar = 0x01c2;\n t.clickdental = 0x01c0;\n t.clicklateral = 0x01c1;\n t.clickretroflex = 0x01c3;\n t.club = 0x2663;\n t.clubsuitblack = 0x2663;\n t.clubsuitwhite = 0x2667;\n t.cmcubedsquare = 0x33a4;\n t.cmonospace = 0xff43;\n t.cmsquaredsquare = 0x33a0;\n t.coarmenian = 0x0581;\n t.colon = 0x003a;\n t.colonmonetary = 0x20a1;\n t.colonmonospace = 0xff1a;\n t.colonsign = 0x20a1;\n t.colonsmall = 0xfe55;\n t.colontriangularhalfmod = 0x02d1;\n t.colontriangularmod = 0x02d0;\n t.comma = 0x002c;\n t.commaabovecmb = 0x0313;\n t.commaaboverightcmb = 0x0315;\n t.commaaccent = 0xf6c3;\n t.commaarabic = 0x060c;\n t.commaarmenian = 0x055d;\n t.commainferior = 0xf6e1;\n t.commamonospace = 0xff0c;\n t.commareversedabovecmb = 0x0314;\n t.commareversedmod = 0x02bd;\n t.commasmall = 0xfe50;\n t.commasuperior = 0xf6e2;\n t.commaturnedabovecmb = 0x0312;\n t.commaturnedmod = 0x02bb;\n t.compass = 0x263c;\n t.congruent = 0x2245;\n t.contourintegral = 0x222e;\n t.control = 0x2303;\n t.controlACK = 0x0006;\n t.controlBEL = 0x0007;\n t.controlBS = 0x0008;\n t.controlCAN = 0x0018;\n t.controlCR = 0x000d;\n t.controlDC1 = 0x0011;\n t.controlDC2 = 0x0012;\n t.controlDC3 = 0x0013;\n t.controlDC4 = 0x0014;\n t.controlDEL = 0x007f;\n t.controlDLE = 0x0010;\n t.controlEM = 0x0019;\n t.controlENQ = 0x0005;\n t.controlEOT = 0x0004;\n t.controlESC = 0x001b;\n t.controlETB = 0x0017;\n t.controlETX = 0x0003;\n t.controlFF = 0x000c;\n t.controlFS = 0x001c;\n t.controlGS = 0x001d;\n t.controlHT = 0x0009;\n t.controlLF = 0x000a;\n t.controlNAK = 0x0015;\n t.controlNULL = 0x0000;\n t.controlRS = 0x001e;\n t.controlSI = 0x000f;\n t.controlSO = 0x000e;\n t.controlSOT = 0x0002;\n t.controlSTX = 0x0001;\n t.controlSUB = 0x001a;\n t.controlSYN = 0x0016;\n t.controlUS = 0x001f;\n t.controlVT = 0x000b;\n t.copyright = 0x00a9;\n t.copyrightsans = 0xf8e9;\n t.copyrightserif = 0xf6d9;\n t.cornerbracketleft = 0x300c;\n t.cornerbracketlefthalfwidth = 0xff62;\n t.cornerbracketleftvertical = 0xfe41;\n t.cornerbracketright = 0x300d;\n t.cornerbracketrighthalfwidth = 0xff63;\n t.cornerbracketrightvertical = 0xfe42;\n t.corporationsquare = 0x337f;\n t.cosquare = 0x33c7;\n t.coverkgsquare = 0x33c6;\n t.cparen = 0x249e;\n t.cruzeiro = 0x20a2;\n t.cstretched = 0x0297;\n t.curlyand = 0x22cf;\n t.curlyor = 0x22ce;\n t.currency = 0x00a4;\n t.cyrBreve = 0xf6d1;\n t.cyrFlex = 0xf6d2;\n t.cyrbreve = 0xf6d4;\n t.cyrflex = 0xf6d5;\n t.d = 0x0064;\n t.daarmenian = 0x0564;\n t.dabengali = 0x09a6;\n t.dadarabic = 0x0636;\n t.dadeva = 0x0926;\n t.dadfinalarabic = 0xfebe;\n t.dadinitialarabic = 0xfebf;\n t.dadmedialarabic = 0xfec0;\n t.dagesh = 0x05bc;\n t.dageshhebrew = 0x05bc;\n t.dagger = 0x2020;\n t.daggerdbl = 0x2021;\n t.dagujarati = 0x0aa6;\n t.dagurmukhi = 0x0a26;\n t.dahiragana = 0x3060;\n t.dakatakana = 0x30c0;\n t.dalarabic = 0x062f;\n t.dalet = 0x05d3;\n t.daletdagesh = 0xfb33;\n t.daletdageshhebrew = 0xfb33;\n t.dalethebrew = 0x05d3;\n t.dalfinalarabic = 0xfeaa;\n t.dammaarabic = 0x064f;\n t.dammalowarabic = 0x064f;\n t.dammatanaltonearabic = 0x064c;\n t.dammatanarabic = 0x064c;\n t.danda = 0x0964;\n t.dargahebrew = 0x05a7;\n t.dargalefthebrew = 0x05a7;\n t.dasiapneumatacyrilliccmb = 0x0485;\n t.dblGrave = 0xf6d3;\n t.dblanglebracketleft = 0x300a;\n t.dblanglebracketleftvertical = 0xfe3d;\n t.dblanglebracketright = 0x300b;\n t.dblanglebracketrightvertical = 0xfe3e;\n t.dblarchinvertedbelowcmb = 0x032b;\n t.dblarrowleft = 0x21d4;\n t.dblarrowright = 0x21d2;\n t.dbldanda = 0x0965;\n t.dblgrave = 0xf6d6;\n t.dblgravecmb = 0x030f;\n t.dblintegral = 0x222c;\n t.dbllowline = 0x2017;\n t.dbllowlinecmb = 0x0333;\n t.dbloverlinecmb = 0x033f;\n t.dblprimemod = 0x02ba;\n t.dblverticalbar = 0x2016;\n t.dblverticallineabovecmb = 0x030e;\n t.dbopomofo = 0x3109;\n t.dbsquare = 0x33c8;\n t.dcaron = 0x010f;\n t.dcedilla = 0x1e11;\n t.dcircle = 0x24d3;\n t.dcircumflexbelow = 0x1e13;\n t.dcroat = 0x0111;\n t.ddabengali = 0x09a1;\n t.ddadeva = 0x0921;\n t.ddagujarati = 0x0aa1;\n t.ddagurmukhi = 0x0a21;\n t.ddalarabic = 0x0688;\n t.ddalfinalarabic = 0xfb89;\n t.dddhadeva = 0x095c;\n t.ddhabengali = 0x09a2;\n t.ddhadeva = 0x0922;\n t.ddhagujarati = 0x0aa2;\n t.ddhagurmukhi = 0x0a22;\n t.ddotaccent = 0x1e0b;\n t.ddotbelow = 0x1e0d;\n t.decimalseparatorarabic = 0x066b;\n t.decimalseparatorpersian = 0x066b;\n t.decyrillic = 0x0434;\n t.degree = 0x00b0;\n t.dehihebrew = 0x05ad;\n t.dehiragana = 0x3067;\n t.deicoptic = 0x03ef;\n t.dekatakana = 0x30c7;\n t.deleteleft = 0x232b;\n t.deleteright = 0x2326;\n t.delta = 0x03b4;\n t.deltaturned = 0x018d;\n t.denominatorminusonenumeratorbengali = 0x09f8;\n t.dezh = 0x02a4;\n t.dhabengali = 0x09a7;\n t.dhadeva = 0x0927;\n t.dhagujarati = 0x0aa7;\n t.dhagurmukhi = 0x0a27;\n t.dhook = 0x0257;\n t.dialytikatonos = 0x0385;\n t.dialytikatonoscmb = 0x0344;\n t.diamond = 0x2666;\n t.diamondsuitwhite = 0x2662;\n t.dieresis = 0x00a8;\n t.dieresisacute = 0xf6d7;\n t.dieresisbelowcmb = 0x0324;\n t.dieresiscmb = 0x0308;\n t.dieresisgrave = 0xf6d8;\n t.dieresistonos = 0x0385;\n t.dihiragana = 0x3062;\n t.dikatakana = 0x30c2;\n t.dittomark = 0x3003;\n t.divide = 0x00f7;\n t.divides = 0x2223;\n t.divisionslash = 0x2215;\n t.djecyrillic = 0x0452;\n t.dkshade = 0x2593;\n t.dlinebelow = 0x1e0f;\n t.dlsquare = 0x3397;\n t.dmacron = 0x0111;\n t.dmonospace = 0xff44;\n t.dnblock = 0x2584;\n t.dochadathai = 0x0e0e;\n t.dodekthai = 0x0e14;\n t.dohiragana = 0x3069;\n t.dokatakana = 0x30c9;\n t.dollar = 0x0024;\n t.dollarinferior = 0xf6e3;\n t.dollarmonospace = 0xff04;\n t.dollaroldstyle = 0xf724;\n t.dollarsmall = 0xfe69;\n t.dollarsuperior = 0xf6e4;\n t.dong = 0x20ab;\n t.dorusquare = 0x3326;\n t.dotaccent = 0x02d9;\n t.dotaccentcmb = 0x0307;\n t.dotbelowcmb = 0x0323;\n t.dotbelowcomb = 0x0323;\n t.dotkatakana = 0x30fb;\n t.dotlessi = 0x0131;\n t.dotlessj = 0xf6be;\n t.dotlessjstrokehook = 0x0284;\n t.dotmath = 0x22c5;\n t.dottedcircle = 0x25cc;\n t.doubleyodpatah = 0xfb1f;\n t.doubleyodpatahhebrew = 0xfb1f;\n t.downtackbelowcmb = 0x031e;\n t.downtackmod = 0x02d5;\n t.dparen = 0x249f;\n t.dsuperior = 0xf6eb;\n t.dtail = 0x0256;\n t.dtopbar = 0x018c;\n t.duhiragana = 0x3065;\n t.dukatakana = 0x30c5;\n t.dz = 0x01f3;\n t.dzaltone = 0x02a3;\n t.dzcaron = 0x01c6;\n t.dzcurl = 0x02a5;\n t.dzeabkhasiancyrillic = 0x04e1;\n t.dzecyrillic = 0x0455;\n t.dzhecyrillic = 0x045f;\n t.e = 0x0065;\n t.eacute = 0x00e9;\n t.earth = 0x2641;\n t.ebengali = 0x098f;\n t.ebopomofo = 0x311c;\n t.ebreve = 0x0115;\n t.ecandradeva = 0x090d;\n t.ecandragujarati = 0x0a8d;\n t.ecandravowelsigndeva = 0x0945;\n t.ecandravowelsigngujarati = 0x0ac5;\n t.ecaron = 0x011b;\n t.ecedillabreve = 0x1e1d;\n t.echarmenian = 0x0565;\n t.echyiwnarmenian = 0x0587;\n t.ecircle = 0x24d4;\n t.ecircumflex = 0x00ea;\n t.ecircumflexacute = 0x1ebf;\n t.ecircumflexbelow = 0x1e19;\n t.ecircumflexdotbelow = 0x1ec7;\n t.ecircumflexgrave = 0x1ec1;\n t.ecircumflexhookabove = 0x1ec3;\n t.ecircumflextilde = 0x1ec5;\n t.ecyrillic = 0x0454;\n t.edblgrave = 0x0205;\n t.edeva = 0x090f;\n t.edieresis = 0x00eb;\n t.edot = 0x0117;\n t.edotaccent = 0x0117;\n t.edotbelow = 0x1eb9;\n t.eegurmukhi = 0x0a0f;\n t.eematragurmukhi = 0x0a47;\n t.efcyrillic = 0x0444;\n t.egrave = 0x00e8;\n t.egujarati = 0x0a8f;\n t.eharmenian = 0x0567;\n t.ehbopomofo = 0x311d;\n t.ehiragana = 0x3048;\n t.ehookabove = 0x1ebb;\n t.eibopomofo = 0x311f;\n t.eight = 0x0038;\n t.eightarabic = 0x0668;\n t.eightbengali = 0x09ee;\n t.eightcircle = 0x2467;\n t.eightcircleinversesansserif = 0x2791;\n t.eightdeva = 0x096e;\n t.eighteencircle = 0x2471;\n t.eighteenparen = 0x2485;\n t.eighteenperiod = 0x2499;\n t.eightgujarati = 0x0aee;\n t.eightgurmukhi = 0x0a6e;\n t.eighthackarabic = 0x0668;\n t.eighthangzhou = 0x3028;\n t.eighthnotebeamed = 0x266b;\n t.eightideographicparen = 0x3227;\n t.eightinferior = 0x2088;\n t.eightmonospace = 0xff18;\n t.eightoldstyle = 0xf738;\n t.eightparen = 0x247b;\n t.eightperiod = 0x248f;\n t.eightpersian = 0x06f8;\n t.eightroman = 0x2177;\n t.eightsuperior = 0x2078;\n t.eightthai = 0x0e58;\n t.einvertedbreve = 0x0207;\n t.eiotifiedcyrillic = 0x0465;\n t.ekatakana = 0x30a8;\n t.ekatakanahalfwidth = 0xff74;\n t.ekonkargurmukhi = 0x0a74;\n t.ekorean = 0x3154;\n t.elcyrillic = 0x043b;\n t.element = 0x2208;\n t.elevencircle = 0x246a;\n t.elevenparen = 0x247e;\n t.elevenperiod = 0x2492;\n t.elevenroman = 0x217a;\n t.ellipsis = 0x2026;\n t.ellipsisvertical = 0x22ee;\n t.emacron = 0x0113;\n t.emacronacute = 0x1e17;\n t.emacrongrave = 0x1e15;\n t.emcyrillic = 0x043c;\n t.emdash = 0x2014;\n t.emdashvertical = 0xfe31;\n t.emonospace = 0xff45;\n t.emphasismarkarmenian = 0x055b;\n t.emptyset = 0x2205;\n t.enbopomofo = 0x3123;\n t.encyrillic = 0x043d;\n t.endash = 0x2013;\n t.endashvertical = 0xfe32;\n t.endescendercyrillic = 0x04a3;\n t.eng = 0x014b;\n t.engbopomofo = 0x3125;\n t.enghecyrillic = 0x04a5;\n t.enhookcyrillic = 0x04c8;\n t.enspace = 0x2002;\n t.eogonek = 0x0119;\n t.eokorean = 0x3153;\n t.eopen = 0x025b;\n t.eopenclosed = 0x029a;\n t.eopenreversed = 0x025c;\n t.eopenreversedclosed = 0x025e;\n t.eopenreversedhook = 0x025d;\n t.eparen = 0x24a0;\n t.epsilon = 0x03b5;\n t.epsilontonos = 0x03ad;\n t.equal = 0x003d;\n t.equalmonospace = 0xff1d;\n t.equalsmall = 0xfe66;\n t.equalsuperior = 0x207c;\n t.equivalence = 0x2261;\n t.erbopomofo = 0x3126;\n t.ercyrillic = 0x0440;\n t.ereversed = 0x0258;\n t.ereversedcyrillic = 0x044d;\n t.escyrillic = 0x0441;\n t.esdescendercyrillic = 0x04ab;\n t.esh = 0x0283;\n t.eshcurl = 0x0286;\n t.eshortdeva = 0x090e;\n t.eshortvowelsigndeva = 0x0946;\n t.eshreversedloop = 0x01aa;\n t.eshsquatreversed = 0x0285;\n t.esmallhiragana = 0x3047;\n t.esmallkatakana = 0x30a7;\n t.esmallkatakanahalfwidth = 0xff6a;\n t.estimated = 0x212e;\n t.esuperior = 0xf6ec;\n t.eta = 0x03b7;\n t.etarmenian = 0x0568;\n t.etatonos = 0x03ae;\n t.eth = 0x00f0;\n t.etilde = 0x1ebd;\n t.etildebelow = 0x1e1b;\n t.etnahtafoukhhebrew = 0x0591;\n t.etnahtafoukhlefthebrew = 0x0591;\n t.etnahtahebrew = 0x0591;\n t.etnahtalefthebrew = 0x0591;\n t.eturned = 0x01dd;\n t.eukorean = 0x3161;\n t.euro = 0x20ac;\n t.evowelsignbengali = 0x09c7;\n t.evowelsigndeva = 0x0947;\n t.evowelsigngujarati = 0x0ac7;\n t.exclam = 0x0021;\n t.exclamarmenian = 0x055c;\n t.exclamdbl = 0x203c;\n t.exclamdown = 0x00a1;\n t.exclamdownsmall = 0xf7a1;\n t.exclammonospace = 0xff01;\n t.exclamsmall = 0xf721;\n t.existential = 0x2203;\n t.ezh = 0x0292;\n t.ezhcaron = 0x01ef;\n t.ezhcurl = 0x0293;\n t.ezhreversed = 0x01b9;\n t.ezhtail = 0x01ba;\n t.f = 0x0066;\n t.fadeva = 0x095e;\n t.fagurmukhi = 0x0a5e;\n t.fahrenheit = 0x2109;\n t.fathaarabic = 0x064e;\n t.fathalowarabic = 0x064e;\n t.fathatanarabic = 0x064b;\n t.fbopomofo = 0x3108;\n t.fcircle = 0x24d5;\n t.fdotaccent = 0x1e1f;\n t.feharabic = 0x0641;\n t.feharmenian = 0x0586;\n t.fehfinalarabic = 0xfed2;\n t.fehinitialarabic = 0xfed3;\n t.fehmedialarabic = 0xfed4;\n t.feicoptic = 0x03e5;\n t.female = 0x2640;\n t.ff = 0xfb00;\n t.f_f = 0xfb00;\n t.ffi = 0xfb03;\n t.f_f_i = 0xfb03;\n t.ffl = 0xfb04;\n t.f_f_l = 0xfb04;\n t.fi = 0xfb01;\n t.f_i = 0xfb01;\n t.fifteencircle = 0x246e;\n t.fifteenparen = 0x2482;\n t.fifteenperiod = 0x2496;\n t.figuredash = 0x2012;\n t.filledbox = 0x25a0;\n t.filledrect = 0x25ac;\n t.finalkaf = 0x05da;\n t.finalkafdagesh = 0xfb3a;\n t.finalkafdageshhebrew = 0xfb3a;\n t.finalkafhebrew = 0x05da;\n t.finalmem = 0x05dd;\n t.finalmemhebrew = 0x05dd;\n t.finalnun = 0x05df;\n t.finalnunhebrew = 0x05df;\n t.finalpe = 0x05e3;\n t.finalpehebrew = 0x05e3;\n t.finaltsadi = 0x05e5;\n t.finaltsadihebrew = 0x05e5;\n t.firsttonechinese = 0x02c9;\n t.fisheye = 0x25c9;\n t.fitacyrillic = 0x0473;\n t.five = 0x0035;\n t.fivearabic = 0x0665;\n t.fivebengali = 0x09eb;\n t.fivecircle = 0x2464;\n t.fivecircleinversesansserif = 0x278e;\n t.fivedeva = 0x096b;\n t.fiveeighths = 0x215d;\n t.fivegujarati = 0x0aeb;\n t.fivegurmukhi = 0x0a6b;\n t.fivehackarabic = 0x0665;\n t.fivehangzhou = 0x3025;\n t.fiveideographicparen = 0x3224;\n t.fiveinferior = 0x2085;\n t.fivemonospace = 0xff15;\n t.fiveoldstyle = 0xf735;\n t.fiveparen = 0x2478;\n t.fiveperiod = 0x248c;\n t.fivepersian = 0x06f5;\n t.fiveroman = 0x2174;\n t.fivesuperior = 0x2075;\n t.fivethai = 0x0e55;\n t.fl = 0xfb02;\n t.f_l = 0xfb02;\n t.florin = 0x0192;\n t.fmonospace = 0xff46;\n t.fmsquare = 0x3399;\n t.fofanthai = 0x0e1f;\n t.fofathai = 0x0e1d;\n t.fongmanthai = 0x0e4f;\n t.forall = 0x2200;\n t.four = 0x0034;\n t.fourarabic = 0x0664;\n t.fourbengali = 0x09ea;\n t.fourcircle = 0x2463;\n t.fourcircleinversesansserif = 0x278d;\n t.fourdeva = 0x096a;\n t.fourgujarati = 0x0aea;\n t.fourgurmukhi = 0x0a6a;\n t.fourhackarabic = 0x0664;\n t.fourhangzhou = 0x3024;\n t.fourideographicparen = 0x3223;\n t.fourinferior = 0x2084;\n t.fourmonospace = 0xff14;\n t.fournumeratorbengali = 0x09f7;\n t.fouroldstyle = 0xf734;\n t.fourparen = 0x2477;\n t.fourperiod = 0x248b;\n t.fourpersian = 0x06f4;\n t.fourroman = 0x2173;\n t.foursuperior = 0x2074;\n t.fourteencircle = 0x246d;\n t.fourteenparen = 0x2481;\n t.fourteenperiod = 0x2495;\n t.fourthai = 0x0e54;\n t.fourthtonechinese = 0x02cb;\n t.fparen = 0x24a1;\n t.fraction = 0x2044;\n t.franc = 0x20a3;\n t.g = 0x0067;\n t.gabengali = 0x0997;\n t.gacute = 0x01f5;\n t.gadeva = 0x0917;\n t.gafarabic = 0x06af;\n t.gaffinalarabic = 0xfb93;\n t.gafinitialarabic = 0xfb94;\n t.gafmedialarabic = 0xfb95;\n t.gagujarati = 0x0a97;\n t.gagurmukhi = 0x0a17;\n t.gahiragana = 0x304c;\n t.gakatakana = 0x30ac;\n t.gamma = 0x03b3;\n t.gammalatinsmall = 0x0263;\n t.gammasuperior = 0x02e0;\n t.gangiacoptic = 0x03eb;\n t.gbopomofo = 0x310d;\n t.gbreve = 0x011f;\n t.gcaron = 0x01e7;\n t.gcedilla = 0x0123;\n t.gcircle = 0x24d6;\n t.gcircumflex = 0x011d;\n t.gcommaaccent = 0x0123;\n t.gdot = 0x0121;\n t.gdotaccent = 0x0121;\n t.gecyrillic = 0x0433;\n t.gehiragana = 0x3052;\n t.gekatakana = 0x30b2;\n t.geometricallyequal = 0x2251;\n t.gereshaccenthebrew = 0x059c;\n t.gereshhebrew = 0x05f3;\n t.gereshmuqdamhebrew = 0x059d;\n t.germandbls = 0x00df;\n t.gershayimaccenthebrew = 0x059e;\n t.gershayimhebrew = 0x05f4;\n t.getamark = 0x3013;\n t.ghabengali = 0x0998;\n t.ghadarmenian = 0x0572;\n t.ghadeva = 0x0918;\n t.ghagujarati = 0x0a98;\n t.ghagurmukhi = 0x0a18;\n t.ghainarabic = 0x063a;\n t.ghainfinalarabic = 0xfece;\n t.ghaininitialarabic = 0xfecf;\n t.ghainmedialarabic = 0xfed0;\n t.ghemiddlehookcyrillic = 0x0495;\n t.ghestrokecyrillic = 0x0493;\n t.gheupturncyrillic = 0x0491;\n t.ghhadeva = 0x095a;\n t.ghhagurmukhi = 0x0a5a;\n t.ghook = 0x0260;\n t.ghzsquare = 0x3393;\n t.gihiragana = 0x304e;\n t.gikatakana = 0x30ae;\n t.gimarmenian = 0x0563;\n t.gimel = 0x05d2;\n t.gimeldagesh = 0xfb32;\n t.gimeldageshhebrew = 0xfb32;\n t.gimelhebrew = 0x05d2;\n t.gjecyrillic = 0x0453;\n t.glottalinvertedstroke = 0x01be;\n t.glottalstop = 0x0294;\n t.glottalstopinverted = 0x0296;\n t.glottalstopmod = 0x02c0;\n t.glottalstopreversed = 0x0295;\n t.glottalstopreversedmod = 0x02c1;\n t.glottalstopreversedsuperior = 0x02e4;\n t.glottalstopstroke = 0x02a1;\n t.glottalstopstrokereversed = 0x02a2;\n t.gmacron = 0x1e21;\n t.gmonospace = 0xff47;\n t.gohiragana = 0x3054;\n t.gokatakana = 0x30b4;\n t.gparen = 0x24a2;\n t.gpasquare = 0x33ac;\n t.gradient = 0x2207;\n t.grave = 0x0060;\n t.gravebelowcmb = 0x0316;\n t.gravecmb = 0x0300;\n t.gravecomb = 0x0300;\n t.gravedeva = 0x0953;\n t.gravelowmod = 0x02ce;\n t.gravemonospace = 0xff40;\n t.gravetonecmb = 0x0340;\n t.greater = 0x003e;\n t.greaterequal = 0x2265;\n t.greaterequalorless = 0x22db;\n t.greatermonospace = 0xff1e;\n t.greaterorequivalent = 0x2273;\n t.greaterorless = 0x2277;\n t.greateroverequal = 0x2267;\n t.greatersmall = 0xfe65;\n t.gscript = 0x0261;\n t.gstroke = 0x01e5;\n t.guhiragana = 0x3050;\n t.guillemotleft = 0x00ab;\n t.guillemotright = 0x00bb;\n t.guilsinglleft = 0x2039;\n t.guilsinglright = 0x203a;\n t.gukatakana = 0x30b0;\n t.guramusquare = 0x3318;\n t.gysquare = 0x33c9;\n t.h = 0x0068;\n t.haabkhasiancyrillic = 0x04a9;\n t.haaltonearabic = 0x06c1;\n t.habengali = 0x09b9;\n t.hadescendercyrillic = 0x04b3;\n t.hadeva = 0x0939;\n t.hagujarati = 0x0ab9;\n t.hagurmukhi = 0x0a39;\n t.haharabic = 0x062d;\n t.hahfinalarabic = 0xfea2;\n t.hahinitialarabic = 0xfea3;\n t.hahiragana = 0x306f;\n t.hahmedialarabic = 0xfea4;\n t.haitusquare = 0x332a;\n t.hakatakana = 0x30cf;\n t.hakatakanahalfwidth = 0xff8a;\n t.halantgurmukhi = 0x0a4d;\n t.hamzaarabic = 0x0621;\n t.hamzalowarabic = 0x0621;\n t.hangulfiller = 0x3164;\n t.hardsigncyrillic = 0x044a;\n t.harpoonleftbarbup = 0x21bc;\n t.harpoonrightbarbup = 0x21c0;\n t.hasquare = 0x33ca;\n t.hatafpatah = 0x05b2;\n t.hatafpatah16 = 0x05b2;\n t.hatafpatah23 = 0x05b2;\n t.hatafpatah2f = 0x05b2;\n t.hatafpatahhebrew = 0x05b2;\n t.hatafpatahnarrowhebrew = 0x05b2;\n t.hatafpatahquarterhebrew = 0x05b2;\n t.hatafpatahwidehebrew = 0x05b2;\n t.hatafqamats = 0x05b3;\n t.hatafqamats1b = 0x05b3;\n t.hatafqamats28 = 0x05b3;\n t.hatafqamats34 = 0x05b3;\n t.hatafqamatshebrew = 0x05b3;\n t.hatafqamatsnarrowhebrew = 0x05b3;\n t.hatafqamatsquarterhebrew = 0x05b3;\n t.hatafqamatswidehebrew = 0x05b3;\n t.hatafsegol = 0x05b1;\n t.hatafsegol17 = 0x05b1;\n t.hatafsegol24 = 0x05b1;\n t.hatafsegol30 = 0x05b1;\n t.hatafsegolhebrew = 0x05b1;\n t.hatafsegolnarrowhebrew = 0x05b1;\n t.hatafsegolquarterhebrew = 0x05b1;\n t.hatafsegolwidehebrew = 0x05b1;\n t.hbar = 0x0127;\n t.hbopomofo = 0x310f;\n t.hbrevebelow = 0x1e2b;\n t.hcedilla = 0x1e29;\n t.hcircle = 0x24d7;\n t.hcircumflex = 0x0125;\n t.hdieresis = 0x1e27;\n t.hdotaccent = 0x1e23;\n t.hdotbelow = 0x1e25;\n t.he = 0x05d4;\n t.heart = 0x2665;\n t.heartsuitblack = 0x2665;\n t.heartsuitwhite = 0x2661;\n t.hedagesh = 0xfb34;\n t.hedageshhebrew = 0xfb34;\n t.hehaltonearabic = 0x06c1;\n t.heharabic = 0x0647;\n t.hehebrew = 0x05d4;\n t.hehfinalaltonearabic = 0xfba7;\n t.hehfinalalttwoarabic = 0xfeea;\n t.hehfinalarabic = 0xfeea;\n t.hehhamzaabovefinalarabic = 0xfba5;\n t.hehhamzaaboveisolatedarabic = 0xfba4;\n t.hehinitialaltonearabic = 0xfba8;\n t.hehinitialarabic = 0xfeeb;\n t.hehiragana = 0x3078;\n t.hehmedialaltonearabic = 0xfba9;\n t.hehmedialarabic = 0xfeec;\n t.heiseierasquare = 0x337b;\n t.hekatakana = 0x30d8;\n t.hekatakanahalfwidth = 0xff8d;\n t.hekutaarusquare = 0x3336;\n t.henghook = 0x0267;\n t.herutusquare = 0x3339;\n t.het = 0x05d7;\n t.hethebrew = 0x05d7;\n t.hhook = 0x0266;\n t.hhooksuperior = 0x02b1;\n t.hieuhacirclekorean = 0x327b;\n t.hieuhaparenkorean = 0x321b;\n t.hieuhcirclekorean = 0x326d;\n t.hieuhkorean = 0x314e;\n t.hieuhparenkorean = 0x320d;\n t.hihiragana = 0x3072;\n t.hikatakana = 0x30d2;\n t.hikatakanahalfwidth = 0xff8b;\n t.hiriq = 0x05b4;\n t.hiriq14 = 0x05b4;\n t.hiriq21 = 0x05b4;\n t.hiriq2d = 0x05b4;\n t.hiriqhebrew = 0x05b4;\n t.hiriqnarrowhebrew = 0x05b4;\n t.hiriqquarterhebrew = 0x05b4;\n t.hiriqwidehebrew = 0x05b4;\n t.hlinebelow = 0x1e96;\n t.hmonospace = 0xff48;\n t.hoarmenian = 0x0570;\n t.hohipthai = 0x0e2b;\n t.hohiragana = 0x307b;\n t.hokatakana = 0x30db;\n t.hokatakanahalfwidth = 0xff8e;\n t.holam = 0x05b9;\n t.holam19 = 0x05b9;\n t.holam26 = 0x05b9;\n t.holam32 = 0x05b9;\n t.holamhebrew = 0x05b9;\n t.holamnarrowhebrew = 0x05b9;\n t.holamquarterhebrew = 0x05b9;\n t.holamwidehebrew = 0x05b9;\n t.honokhukthai = 0x0e2e;\n t.hookabovecomb = 0x0309;\n t.hookcmb = 0x0309;\n t.hookpalatalizedbelowcmb = 0x0321;\n t.hookretroflexbelowcmb = 0x0322;\n t.hoonsquare = 0x3342;\n t.horicoptic = 0x03e9;\n t.horizontalbar = 0x2015;\n t.horncmb = 0x031b;\n t.hotsprings = 0x2668;\n t.house = 0x2302;\n t.hparen = 0x24a3;\n t.hsuperior = 0x02b0;\n t.hturned = 0x0265;\n t.huhiragana = 0x3075;\n t.huiitosquare = 0x3333;\n t.hukatakana = 0x30d5;\n t.hukatakanahalfwidth = 0xff8c;\n t.hungarumlaut = 0x02dd;\n t.hungarumlautcmb = 0x030b;\n t.hv = 0x0195;\n t.hyphen = 0x002d;\n t.hypheninferior = 0xf6e5;\n t.hyphenmonospace = 0xff0d;\n t.hyphensmall = 0xfe63;\n t.hyphensuperior = 0xf6e6;\n t.hyphentwo = 0x2010;\n t.i = 0x0069;\n t.iacute = 0x00ed;\n t.iacyrillic = 0x044f;\n t.ibengali = 0x0987;\n t.ibopomofo = 0x3127;\n t.ibreve = 0x012d;\n t.icaron = 0x01d0;\n t.icircle = 0x24d8;\n t.icircumflex = 0x00ee;\n t.icyrillic = 0x0456;\n t.idblgrave = 0x0209;\n t.ideographearthcircle = 0x328f;\n t.ideographfirecircle = 0x328b;\n t.ideographicallianceparen = 0x323f;\n t.ideographiccallparen = 0x323a;\n t.ideographiccentrecircle = 0x32a5;\n t.ideographicclose = 0x3006;\n t.ideographiccomma = 0x3001;\n t.ideographiccommaleft = 0xff64;\n t.ideographiccongratulationparen = 0x3237;\n t.ideographiccorrectcircle = 0x32a3;\n t.ideographicearthparen = 0x322f;\n t.ideographicenterpriseparen = 0x323d;\n t.ideographicexcellentcircle = 0x329d;\n t.ideographicfestivalparen = 0x3240;\n t.ideographicfinancialcircle = 0x3296;\n t.ideographicfinancialparen = 0x3236;\n t.ideographicfireparen = 0x322b;\n t.ideographichaveparen = 0x3232;\n t.ideographichighcircle = 0x32a4;\n t.ideographiciterationmark = 0x3005;\n t.ideographiclaborcircle = 0x3298;\n t.ideographiclaborparen = 0x3238;\n t.ideographicleftcircle = 0x32a7;\n t.ideographiclowcircle = 0x32a6;\n t.ideographicmedicinecircle = 0x32a9;\n t.ideographicmetalparen = 0x322e;\n t.ideographicmoonparen = 0x322a;\n t.ideographicnameparen = 0x3234;\n t.ideographicperiod = 0x3002;\n t.ideographicprintcircle = 0x329e;\n t.ideographicreachparen = 0x3243;\n t.ideographicrepresentparen = 0x3239;\n t.ideographicresourceparen = 0x323e;\n t.ideographicrightcircle = 0x32a8;\n t.ideographicsecretcircle = 0x3299;\n t.ideographicselfparen = 0x3242;\n t.ideographicsocietyparen = 0x3233;\n t.ideographicspace = 0x3000;\n t.ideographicspecialparen = 0x3235;\n t.ideographicstockparen = 0x3231;\n t.ideographicstudyparen = 0x323b;\n t.ideographicsunparen = 0x3230;\n t.ideographicsuperviseparen = 0x323c;\n t.ideographicwaterparen = 0x322c;\n t.ideographicwoodparen = 0x322d;\n t.ideographiczero = 0x3007;\n t.ideographmetalcircle = 0x328e;\n t.ideographmooncircle = 0x328a;\n t.ideographnamecircle = 0x3294;\n t.ideographsuncircle = 0x3290;\n t.ideographwatercircle = 0x328c;\n t.ideographwoodcircle = 0x328d;\n t.ideva = 0x0907;\n t.idieresis = 0x00ef;\n t.idieresisacute = 0x1e2f;\n t.idieresiscyrillic = 0x04e5;\n t.idotbelow = 0x1ecb;\n t.iebrevecyrillic = 0x04d7;\n t.iecyrillic = 0x0435;\n t.ieungacirclekorean = 0x3275;\n t.ieungaparenkorean = 0x3215;\n t.ieungcirclekorean = 0x3267;\n t.ieungkorean = 0x3147;\n t.ieungparenkorean = 0x3207;\n t.igrave = 0x00ec;\n t.igujarati = 0x0a87;\n t.igurmukhi = 0x0a07;\n t.ihiragana = 0x3044;\n t.ihookabove = 0x1ec9;\n t.iibengali = 0x0988;\n t.iicyrillic = 0x0438;\n t.iideva = 0x0908;\n t.iigujarati = 0x0a88;\n t.iigurmukhi = 0x0a08;\n t.iimatragurmukhi = 0x0a40;\n t.iinvertedbreve = 0x020b;\n t.iishortcyrillic = 0x0439;\n t.iivowelsignbengali = 0x09c0;\n t.iivowelsigndeva = 0x0940;\n t.iivowelsigngujarati = 0x0ac0;\n t.ij = 0x0133;\n t.ikatakana = 0x30a4;\n t.ikatakanahalfwidth = 0xff72;\n t.ikorean = 0x3163;\n t.ilde = 0x02dc;\n t.iluyhebrew = 0x05ac;\n t.imacron = 0x012b;\n t.imacroncyrillic = 0x04e3;\n t.imageorapproximatelyequal = 0x2253;\n t.imatragurmukhi = 0x0a3f;\n t.imonospace = 0xff49;\n t.increment = 0x2206;\n t.infinity = 0x221e;\n t.iniarmenian = 0x056b;\n t.integral = 0x222b;\n t.integralbottom = 0x2321;\n t.integralbt = 0x2321;\n t.integralex = 0xf8f5;\n t.integraltop = 0x2320;\n t.integraltp = 0x2320;\n t.intersection = 0x2229;\n t.intisquare = 0x3305;\n t.invbullet = 0x25d8;\n t.invcircle = 0x25d9;\n t.invsmileface = 0x263b;\n t.iocyrillic = 0x0451;\n t.iogonek = 0x012f;\n t.iota = 0x03b9;\n t.iotadieresis = 0x03ca;\n t.iotadieresistonos = 0x0390;\n t.iotalatin = 0x0269;\n t.iotatonos = 0x03af;\n t.iparen = 0x24a4;\n t.irigurmukhi = 0x0a72;\n t.ismallhiragana = 0x3043;\n t.ismallkatakana = 0x30a3;\n t.ismallkatakanahalfwidth = 0xff68;\n t.issharbengali = 0x09fa;\n t.istroke = 0x0268;\n t.isuperior = 0xf6ed;\n t.iterationhiragana = 0x309d;\n t.iterationkatakana = 0x30fd;\n t.itilde = 0x0129;\n t.itildebelow = 0x1e2d;\n t.iubopomofo = 0x3129;\n t.iucyrillic = 0x044e;\n t.ivowelsignbengali = 0x09bf;\n t.ivowelsigndeva = 0x093f;\n t.ivowelsigngujarati = 0x0abf;\n t.izhitsacyrillic = 0x0475;\n t.izhitsadblgravecyrillic = 0x0477;\n t.j = 0x006a;\n t.jaarmenian = 0x0571;\n t.jabengali = 0x099c;\n t.jadeva = 0x091c;\n t.jagujarati = 0x0a9c;\n t.jagurmukhi = 0x0a1c;\n t.jbopomofo = 0x3110;\n t.jcaron = 0x01f0;\n t.jcircle = 0x24d9;\n t.jcircumflex = 0x0135;\n t.jcrossedtail = 0x029d;\n t.jdotlessstroke = 0x025f;\n t.jecyrillic = 0x0458;\n t.jeemarabic = 0x062c;\n t.jeemfinalarabic = 0xfe9e;\n t.jeeminitialarabic = 0xfe9f;\n t.jeemmedialarabic = 0xfea0;\n t.jeharabic = 0x0698;\n t.jehfinalarabic = 0xfb8b;\n t.jhabengali = 0x099d;\n t.jhadeva = 0x091d;\n t.jhagujarati = 0x0a9d;\n t.jhagurmukhi = 0x0a1d;\n t.jheharmenian = 0x057b;\n t.jis = 0x3004;\n t.jmonospace = 0xff4a;\n t.jparen = 0x24a5;\n t.jsuperior = 0x02b2;\n t.k = 0x006b;\n t.kabashkircyrillic = 0x04a1;\n t.kabengali = 0x0995;\n t.kacute = 0x1e31;\n t.kacyrillic = 0x043a;\n t.kadescendercyrillic = 0x049b;\n t.kadeva = 0x0915;\n t.kaf = 0x05db;\n t.kafarabic = 0x0643;\n t.kafdagesh = 0xfb3b;\n t.kafdageshhebrew = 0xfb3b;\n t.kaffinalarabic = 0xfeda;\n t.kafhebrew = 0x05db;\n t.kafinitialarabic = 0xfedb;\n t.kafmedialarabic = 0xfedc;\n t.kafrafehebrew = 0xfb4d;\n t.kagujarati = 0x0a95;\n t.kagurmukhi = 0x0a15;\n t.kahiragana = 0x304b;\n t.kahookcyrillic = 0x04c4;\n t.kakatakana = 0x30ab;\n t.kakatakanahalfwidth = 0xff76;\n t.kappa = 0x03ba;\n t.kappasymbolgreek = 0x03f0;\n t.kapyeounmieumkorean = 0x3171;\n t.kapyeounphieuphkorean = 0x3184;\n t.kapyeounpieupkorean = 0x3178;\n t.kapyeounssangpieupkorean = 0x3179;\n t.karoriisquare = 0x330d;\n t.kashidaautoarabic = 0x0640;\n t.kashidaautonosidebearingarabic = 0x0640;\n t.kasmallkatakana = 0x30f5;\n t.kasquare = 0x3384;\n t.kasraarabic = 0x0650;\n t.kasratanarabic = 0x064d;\n t.kastrokecyrillic = 0x049f;\n t.katahiraprolongmarkhalfwidth = 0xff70;\n t.kaverticalstrokecyrillic = 0x049d;\n t.kbopomofo = 0x310e;\n t.kcalsquare = 0x3389;\n t.kcaron = 0x01e9;\n t.kcedilla = 0x0137;\n t.kcircle = 0x24da;\n t.kcommaaccent = 0x0137;\n t.kdotbelow = 0x1e33;\n t.keharmenian = 0x0584;\n t.kehiragana = 0x3051;\n t.kekatakana = 0x30b1;\n t.kekatakanahalfwidth = 0xff79;\n t.kenarmenian = 0x056f;\n t.kesmallkatakana = 0x30f6;\n t.kgreenlandic = 0x0138;\n t.khabengali = 0x0996;\n t.khacyrillic = 0x0445;\n t.khadeva = 0x0916;\n t.khagujarati = 0x0a96;\n t.khagurmukhi = 0x0a16;\n t.khaharabic = 0x062e;\n t.khahfinalarabic = 0xfea6;\n t.khahinitialarabic = 0xfea7;\n t.khahmedialarabic = 0xfea8;\n t.kheicoptic = 0x03e7;\n t.khhadeva = 0x0959;\n t.khhagurmukhi = 0x0a59;\n t.khieukhacirclekorean = 0x3278;\n t.khieukhaparenkorean = 0x3218;\n t.khieukhcirclekorean = 0x326a;\n t.khieukhkorean = 0x314b;\n t.khieukhparenkorean = 0x320a;\n t.khokhaithai = 0x0e02;\n t.khokhonthai = 0x0e05;\n t.khokhuatthai = 0x0e03;\n t.khokhwaithai = 0x0e04;\n t.khomutthai = 0x0e5b;\n t.khook = 0x0199;\n t.khorakhangthai = 0x0e06;\n t.khzsquare = 0x3391;\n t.kihiragana = 0x304d;\n t.kikatakana = 0x30ad;\n t.kikatakanahalfwidth = 0xff77;\n t.kiroguramusquare = 0x3315;\n t.kiromeetorusquare = 0x3316;\n t.kirosquare = 0x3314;\n t.kiyeokacirclekorean = 0x326e;\n t.kiyeokaparenkorean = 0x320e;\n t.kiyeokcirclekorean = 0x3260;\n t.kiyeokkorean = 0x3131;\n t.kiyeokparenkorean = 0x3200;\n t.kiyeoksioskorean = 0x3133;\n t.kjecyrillic = 0x045c;\n t.klinebelow = 0x1e35;\n t.klsquare = 0x3398;\n t.kmcubedsquare = 0x33a6;\n t.kmonospace = 0xff4b;\n t.kmsquaredsquare = 0x33a2;\n t.kohiragana = 0x3053;\n t.kohmsquare = 0x33c0;\n t.kokaithai = 0x0e01;\n t.kokatakana = 0x30b3;\n t.kokatakanahalfwidth = 0xff7a;\n t.kooposquare = 0x331e;\n t.koppacyrillic = 0x0481;\n t.koreanstandardsymbol = 0x327f;\n t.koroniscmb = 0x0343;\n t.kparen = 0x24a6;\n t.kpasquare = 0x33aa;\n t.ksicyrillic = 0x046f;\n t.ktsquare = 0x33cf;\n t.kturned = 0x029e;\n t.kuhiragana = 0x304f;\n t.kukatakana = 0x30af;\n t.kukatakanahalfwidth = 0xff78;\n t.kvsquare = 0x33b8;\n t.kwsquare = 0x33be;\n t.l = 0x006c;\n t.labengali = 0x09b2;\n t.lacute = 0x013a;\n t.ladeva = 0x0932;\n t.lagujarati = 0x0ab2;\n t.lagurmukhi = 0x0a32;\n t.lakkhangyaothai = 0x0e45;\n t.lamaleffinalarabic = 0xfefc;\n t.lamalefhamzaabovefinalarabic = 0xfef8;\n t.lamalefhamzaaboveisolatedarabic = 0xfef7;\n t.lamalefhamzabelowfinalarabic = 0xfefa;\n t.lamalefhamzabelowisolatedarabic = 0xfef9;\n t.lamalefisolatedarabic = 0xfefb;\n t.lamalefmaddaabovefinalarabic = 0xfef6;\n t.lamalefmaddaaboveisolatedarabic = 0xfef5;\n t.lamarabic = 0x0644;\n t.lambda = 0x03bb;\n t.lambdastroke = 0x019b;\n t.lamed = 0x05dc;\n t.lameddagesh = 0xfb3c;\n t.lameddageshhebrew = 0xfb3c;\n t.lamedhebrew = 0x05dc;\n t.lamfinalarabic = 0xfede;\n t.lamhahinitialarabic = 0xfcca;\n t.laminitialarabic = 0xfedf;\n t.lamjeeminitialarabic = 0xfcc9;\n t.lamkhahinitialarabic = 0xfccb;\n t.lamlamhehisolatedarabic = 0xfdf2;\n t.lammedialarabic = 0xfee0;\n t.lammeemhahinitialarabic = 0xfd88;\n t.lammeeminitialarabic = 0xfccc;\n t.largecircle = 0x25ef;\n t.lbar = 0x019a;\n t.lbelt = 0x026c;\n t.lbopomofo = 0x310c;\n t.lcaron = 0x013e;\n t.lcedilla = 0x013c;\n t.lcircle = 0x24db;\n t.lcircumflexbelow = 0x1e3d;\n t.lcommaaccent = 0x013c;\n t.ldot = 0x0140;\n t.ldotaccent = 0x0140;\n t.ldotbelow = 0x1e37;\n t.ldotbelowmacron = 0x1e39;\n t.leftangleabovecmb = 0x031a;\n t.lefttackbelowcmb = 0x0318;\n t.less = 0x003c;\n t.lessequal = 0x2264;\n t.lessequalorgreater = 0x22da;\n t.lessmonospace = 0xff1c;\n t.lessorequivalent = 0x2272;\n t.lessorgreater = 0x2276;\n t.lessoverequal = 0x2266;\n t.lesssmall = 0xfe64;\n t.lezh = 0x026e;\n t.lfblock = 0x258c;\n t.lhookretroflex = 0x026d;\n t.lira = 0x20a4;\n t.liwnarmenian = 0x056c;\n t.lj = 0x01c9;\n t.ljecyrillic = 0x0459;\n t.ll = 0xf6c0;\n t.lladeva = 0x0933;\n t.llagujarati = 0x0ab3;\n t.llinebelow = 0x1e3b;\n t.llladeva = 0x0934;\n t.llvocalicbengali = 0x09e1;\n t.llvocalicdeva = 0x0961;\n t.llvocalicvowelsignbengali = 0x09e3;\n t.llvocalicvowelsigndeva = 0x0963;\n t.lmiddletilde = 0x026b;\n t.lmonospace = 0xff4c;\n t.lmsquare = 0x33d0;\n t.lochulathai = 0x0e2c;\n t.logicaland = 0x2227;\n t.logicalnot = 0x00ac;\n t.logicalnotreversed = 0x2310;\n t.logicalor = 0x2228;\n t.lolingthai = 0x0e25;\n t.longs = 0x017f;\n t.lowlinecenterline = 0xfe4e;\n t.lowlinecmb = 0x0332;\n t.lowlinedashed = 0xfe4d;\n t.lozenge = 0x25ca;\n t.lparen = 0x24a7;\n t.lslash = 0x0142;\n t.lsquare = 0x2113;\n t.lsuperior = 0xf6ee;\n t.ltshade = 0x2591;\n t.luthai = 0x0e26;\n t.lvocalicbengali = 0x098c;\n t.lvocalicdeva = 0x090c;\n t.lvocalicvowelsignbengali = 0x09e2;\n t.lvocalicvowelsigndeva = 0x0962;\n t.lxsquare = 0x33d3;\n t.m = 0x006d;\n t.mabengali = 0x09ae;\n t.macron = 0x00af;\n t.macronbelowcmb = 0x0331;\n t.macroncmb = 0x0304;\n t.macronlowmod = 0x02cd;\n t.macronmonospace = 0xffe3;\n t.macute = 0x1e3f;\n t.madeva = 0x092e;\n t.magujarati = 0x0aae;\n t.magurmukhi = 0x0a2e;\n t.mahapakhhebrew = 0x05a4;\n t.mahapakhlefthebrew = 0x05a4;\n t.mahiragana = 0x307e;\n t.maichattawalowleftthai = 0xf895;\n t.maichattawalowrightthai = 0xf894;\n t.maichattawathai = 0x0e4b;\n t.maichattawaupperleftthai = 0xf893;\n t.maieklowleftthai = 0xf88c;\n t.maieklowrightthai = 0xf88b;\n t.maiekthai = 0x0e48;\n t.maiekupperleftthai = 0xf88a;\n t.maihanakatleftthai = 0xf884;\n t.maihanakatthai = 0x0e31;\n t.maitaikhuleftthai = 0xf889;\n t.maitaikhuthai = 0x0e47;\n t.maitholowleftthai = 0xf88f;\n t.maitholowrightthai = 0xf88e;\n t.maithothai = 0x0e49;\n t.maithoupperleftthai = 0xf88d;\n t.maitrilowleftthai = 0xf892;\n t.maitrilowrightthai = 0xf891;\n t.maitrithai = 0x0e4a;\n t.maitriupperleftthai = 0xf890;\n t.maiyamokthai = 0x0e46;\n t.makatakana = 0x30de;\n t.makatakanahalfwidth = 0xff8f;\n t.male = 0x2642;\n t.mansyonsquare = 0x3347;\n t.maqafhebrew = 0x05be;\n t.mars = 0x2642;\n t.masoracirclehebrew = 0x05af;\n t.masquare = 0x3383;\n t.mbopomofo = 0x3107;\n t.mbsquare = 0x33d4;\n t.mcircle = 0x24dc;\n t.mcubedsquare = 0x33a5;\n t.mdotaccent = 0x1e41;\n t.mdotbelow = 0x1e43;\n t.meemarabic = 0x0645;\n t.meemfinalarabic = 0xfee2;\n t.meeminitialarabic = 0xfee3;\n t.meemmedialarabic = 0xfee4;\n t.meemmeeminitialarabic = 0xfcd1;\n t.meemmeemisolatedarabic = 0xfc48;\n t.meetorusquare = 0x334d;\n t.mehiragana = 0x3081;\n t.meizierasquare = 0x337e;\n t.mekatakana = 0x30e1;\n t.mekatakanahalfwidth = 0xff92;\n t.mem = 0x05de;\n t.memdagesh = 0xfb3e;\n t.memdageshhebrew = 0xfb3e;\n t.memhebrew = 0x05de;\n t.menarmenian = 0x0574;\n t.merkhahebrew = 0x05a5;\n t.merkhakefulahebrew = 0x05a6;\n t.merkhakefulalefthebrew = 0x05a6;\n t.merkhalefthebrew = 0x05a5;\n t.mhook = 0x0271;\n t.mhzsquare = 0x3392;\n t.middledotkatakanahalfwidth = 0xff65;\n t.middot = 0x00b7;\n t.mieumacirclekorean = 0x3272;\n t.mieumaparenkorean = 0x3212;\n t.mieumcirclekorean = 0x3264;\n t.mieumkorean = 0x3141;\n t.mieumpansioskorean = 0x3170;\n t.mieumparenkorean = 0x3204;\n t.mieumpieupkorean = 0x316e;\n t.mieumsioskorean = 0x316f;\n t.mihiragana = 0x307f;\n t.mikatakana = 0x30df;\n t.mikatakanahalfwidth = 0xff90;\n t.minus = 0x2212;\n t.minusbelowcmb = 0x0320;\n t.minuscircle = 0x2296;\n t.minusmod = 0x02d7;\n t.minusplus = 0x2213;\n t.minute = 0x2032;\n t.miribaarusquare = 0x334a;\n t.mirisquare = 0x3349;\n t.mlonglegturned = 0x0270;\n t.mlsquare = 0x3396;\n t.mmcubedsquare = 0x33a3;\n t.mmonospace = 0xff4d;\n t.mmsquaredsquare = 0x339f;\n t.mohiragana = 0x3082;\n t.mohmsquare = 0x33c1;\n t.mokatakana = 0x30e2;\n t.mokatakanahalfwidth = 0xff93;\n t.molsquare = 0x33d6;\n t.momathai = 0x0e21;\n t.moverssquare = 0x33a7;\n t.moverssquaredsquare = 0x33a8;\n t.mparen = 0x24a8;\n t.mpasquare = 0x33ab;\n t.mssquare = 0x33b3;\n t.msuperior = 0xf6ef;\n t.mturned = 0x026f;\n t.mu = 0x00b5;\n t.mu1 = 0x00b5;\n t.muasquare = 0x3382;\n t.muchgreater = 0x226b;\n t.muchless = 0x226a;\n t.mufsquare = 0x338c;\n t.mugreek = 0x03bc;\n t.mugsquare = 0x338d;\n t.muhiragana = 0x3080;\n t.mukatakana = 0x30e0;\n t.mukatakanahalfwidth = 0xff91;\n t.mulsquare = 0x3395;\n t.multiply = 0x00d7;\n t.mumsquare = 0x339b;\n t.munahhebrew = 0x05a3;\n t.munahlefthebrew = 0x05a3;\n t.musicalnote = 0x266a;\n t.musicalnotedbl = 0x266b;\n t.musicflatsign = 0x266d;\n t.musicsharpsign = 0x266f;\n t.mussquare = 0x33b2;\n t.muvsquare = 0x33b6;\n t.muwsquare = 0x33bc;\n t.mvmegasquare = 0x33b9;\n t.mvsquare = 0x33b7;\n t.mwmegasquare = 0x33bf;\n t.mwsquare = 0x33bd;\n t.n = 0x006e;\n t.nabengali = 0x09a8;\n t.nabla = 0x2207;\n t.nacute = 0x0144;\n t.nadeva = 0x0928;\n t.nagujarati = 0x0aa8;\n t.nagurmukhi = 0x0a28;\n t.nahiragana = 0x306a;\n t.nakatakana = 0x30ca;\n t.nakatakanahalfwidth = 0xff85;\n t.napostrophe = 0x0149;\n t.nasquare = 0x3381;\n t.nbopomofo = 0x310b;\n t.nbspace = 0x00a0;\n t.ncaron = 0x0148;\n t.ncedilla = 0x0146;\n t.ncircle = 0x24dd;\n t.ncircumflexbelow = 0x1e4b;\n t.ncommaaccent = 0x0146;\n t.ndotaccent = 0x1e45;\n t.ndotbelow = 0x1e47;\n t.nehiragana = 0x306d;\n t.nekatakana = 0x30cd;\n t.nekatakanahalfwidth = 0xff88;\n t.newsheqelsign = 0x20aa;\n t.nfsquare = 0x338b;\n t.ngabengali = 0x0999;\n t.ngadeva = 0x0919;\n t.ngagujarati = 0x0a99;\n t.ngagurmukhi = 0x0a19;\n t.ngonguthai = 0x0e07;\n t.nhiragana = 0x3093;\n t.nhookleft = 0x0272;\n t.nhookretroflex = 0x0273;\n t.nieunacirclekorean = 0x326f;\n t.nieunaparenkorean = 0x320f;\n t.nieuncieuckorean = 0x3135;\n t.nieuncirclekorean = 0x3261;\n t.nieunhieuhkorean = 0x3136;\n t.nieunkorean = 0x3134;\n t.nieunpansioskorean = 0x3168;\n t.nieunparenkorean = 0x3201;\n t.nieunsioskorean = 0x3167;\n t.nieuntikeutkorean = 0x3166;\n t.nihiragana = 0x306b;\n t.nikatakana = 0x30cb;\n t.nikatakanahalfwidth = 0xff86;\n t.nikhahitleftthai = 0xf899;\n t.nikhahitthai = 0x0e4d;\n t.nine = 0x0039;\n t.ninearabic = 0x0669;\n t.ninebengali = 0x09ef;\n t.ninecircle = 0x2468;\n t.ninecircleinversesansserif = 0x2792;\n t.ninedeva = 0x096f;\n t.ninegujarati = 0x0aef;\n t.ninegurmukhi = 0x0a6f;\n t.ninehackarabic = 0x0669;\n t.ninehangzhou = 0x3029;\n t.nineideographicparen = 0x3228;\n t.nineinferior = 0x2089;\n t.ninemonospace = 0xff19;\n t.nineoldstyle = 0xf739;\n t.nineparen = 0x247c;\n t.nineperiod = 0x2490;\n t.ninepersian = 0x06f9;\n t.nineroman = 0x2178;\n t.ninesuperior = 0x2079;\n t.nineteencircle = 0x2472;\n t.nineteenparen = 0x2486;\n t.nineteenperiod = 0x249a;\n t.ninethai = 0x0e59;\n t.nj = 0x01cc;\n t.njecyrillic = 0x045a;\n t.nkatakana = 0x30f3;\n t.nkatakanahalfwidth = 0xff9d;\n t.nlegrightlong = 0x019e;\n t.nlinebelow = 0x1e49;\n t.nmonospace = 0xff4e;\n t.nmsquare = 0x339a;\n t.nnabengali = 0x09a3;\n t.nnadeva = 0x0923;\n t.nnagujarati = 0x0aa3;\n t.nnagurmukhi = 0x0a23;\n t.nnnadeva = 0x0929;\n t.nohiragana = 0x306e;\n t.nokatakana = 0x30ce;\n t.nokatakanahalfwidth = 0xff89;\n t.nonbreakingspace = 0x00a0;\n t.nonenthai = 0x0e13;\n t.nonuthai = 0x0e19;\n t.noonarabic = 0x0646;\n t.noonfinalarabic = 0xfee6;\n t.noonghunnaarabic = 0x06ba;\n t.noonghunnafinalarabic = 0xfb9f;\n t.nooninitialarabic = 0xfee7;\n t.noonjeeminitialarabic = 0xfcd2;\n t.noonjeemisolatedarabic = 0xfc4b;\n t.noonmedialarabic = 0xfee8;\n t.noonmeeminitialarabic = 0xfcd5;\n t.noonmeemisolatedarabic = 0xfc4e;\n t.noonnoonfinalarabic = 0xfc8d;\n t.notcontains = 0x220c;\n t.notelement = 0x2209;\n t.notelementof = 0x2209;\n t.notequal = 0x2260;\n t.notgreater = 0x226f;\n t.notgreaternorequal = 0x2271;\n t.notgreaternorless = 0x2279;\n t.notidentical = 0x2262;\n t.notless = 0x226e;\n t.notlessnorequal = 0x2270;\n t.notparallel = 0x2226;\n t.notprecedes = 0x2280;\n t.notsubset = 0x2284;\n t.notsucceeds = 0x2281;\n t.notsuperset = 0x2285;\n t.nowarmenian = 0x0576;\n t.nparen = 0x24a9;\n t.nssquare = 0x33b1;\n t.nsuperior = 0x207f;\n t.ntilde = 0x00f1;\n t.nu = 0x03bd;\n t.nuhiragana = 0x306c;\n t.nukatakana = 0x30cc;\n t.nukatakanahalfwidth = 0xff87;\n t.nuktabengali = 0x09bc;\n t.nuktadeva = 0x093c;\n t.nuktagujarati = 0x0abc;\n t.nuktagurmukhi = 0x0a3c;\n t.numbersign = 0x0023;\n t.numbersignmonospace = 0xff03;\n t.numbersignsmall = 0xfe5f;\n t.numeralsigngreek = 0x0374;\n t.numeralsignlowergreek = 0x0375;\n t.numero = 0x2116;\n t.nun = 0x05e0;\n t.nundagesh = 0xfb40;\n t.nundageshhebrew = 0xfb40;\n t.nunhebrew = 0x05e0;\n t.nvsquare = 0x33b5;\n t.nwsquare = 0x33bb;\n t.nyabengali = 0x099e;\n t.nyadeva = 0x091e;\n t.nyagujarati = 0x0a9e;\n t.nyagurmukhi = 0x0a1e;\n t.o = 0x006f;\n t.oacute = 0x00f3;\n t.oangthai = 0x0e2d;\n t.obarred = 0x0275;\n t.obarredcyrillic = 0x04e9;\n t.obarreddieresiscyrillic = 0x04eb;\n t.obengali = 0x0993;\n t.obopomofo = 0x311b;\n t.obreve = 0x014f;\n t.ocandradeva = 0x0911;\n t.ocandragujarati = 0x0a91;\n t.ocandravowelsigndeva = 0x0949;\n t.ocandravowelsigngujarati = 0x0ac9;\n t.ocaron = 0x01d2;\n t.ocircle = 0x24de;\n t.ocircumflex = 0x00f4;\n t.ocircumflexacute = 0x1ed1;\n t.ocircumflexdotbelow = 0x1ed9;\n t.ocircumflexgrave = 0x1ed3;\n t.ocircumflexhookabove = 0x1ed5;\n t.ocircumflextilde = 0x1ed7;\n t.ocyrillic = 0x043e;\n t.odblacute = 0x0151;\n t.odblgrave = 0x020d;\n t.odeva = 0x0913;\n t.odieresis = 0x00f6;\n t.odieresiscyrillic = 0x04e7;\n t.odotbelow = 0x1ecd;\n t.oe = 0x0153;\n t.oekorean = 0x315a;\n t.ogonek = 0x02db;\n t.ogonekcmb = 0x0328;\n t.ograve = 0x00f2;\n t.ogujarati = 0x0a93;\n t.oharmenian = 0x0585;\n t.ohiragana = 0x304a;\n t.ohookabove = 0x1ecf;\n t.ohorn = 0x01a1;\n t.ohornacute = 0x1edb;\n t.ohorndotbelow = 0x1ee3;\n t.ohorngrave = 0x1edd;\n t.ohornhookabove = 0x1edf;\n t.ohorntilde = 0x1ee1;\n t.ohungarumlaut = 0x0151;\n t.oi = 0x01a3;\n t.oinvertedbreve = 0x020f;\n t.okatakana = 0x30aa;\n t.okatakanahalfwidth = 0xff75;\n t.okorean = 0x3157;\n t.olehebrew = 0x05ab;\n t.omacron = 0x014d;\n t.omacronacute = 0x1e53;\n t.omacrongrave = 0x1e51;\n t.omdeva = 0x0950;\n t.omega = 0x03c9;\n t.omega1 = 0x03d6;\n t.omegacyrillic = 0x0461;\n t.omegalatinclosed = 0x0277;\n t.omegaroundcyrillic = 0x047b;\n t.omegatitlocyrillic = 0x047d;\n t.omegatonos = 0x03ce;\n t.omgujarati = 0x0ad0;\n t.omicron = 0x03bf;\n t.omicrontonos = 0x03cc;\n t.omonospace = 0xff4f;\n t.one = 0x0031;\n t.onearabic = 0x0661;\n t.onebengali = 0x09e7;\n t.onecircle = 0x2460;\n t.onecircleinversesansserif = 0x278a;\n t.onedeva = 0x0967;\n t.onedotenleader = 0x2024;\n t.oneeighth = 0x215b;\n t.onefitted = 0xf6dc;\n t.onegujarati = 0x0ae7;\n t.onegurmukhi = 0x0a67;\n t.onehackarabic = 0x0661;\n t.onehalf = 0x00bd;\n t.onehangzhou = 0x3021;\n t.oneideographicparen = 0x3220;\n t.oneinferior = 0x2081;\n t.onemonospace = 0xff11;\n t.onenumeratorbengali = 0x09f4;\n t.oneoldstyle = 0xf731;\n t.oneparen = 0x2474;\n t.oneperiod = 0x2488;\n t.onepersian = 0x06f1;\n t.onequarter = 0x00bc;\n t.oneroman = 0x2170;\n t.onesuperior = 0x00b9;\n t.onethai = 0x0e51;\n t.onethird = 0x2153;\n t.oogonek = 0x01eb;\n t.oogonekmacron = 0x01ed;\n t.oogurmukhi = 0x0a13;\n t.oomatragurmukhi = 0x0a4b;\n t.oopen = 0x0254;\n t.oparen = 0x24aa;\n t.openbullet = 0x25e6;\n t.option = 0x2325;\n t.ordfeminine = 0x00aa;\n t.ordmasculine = 0x00ba;\n t.orthogonal = 0x221f;\n t.oshortdeva = 0x0912;\n t.oshortvowelsigndeva = 0x094a;\n t.oslash = 0x00f8;\n t.oslashacute = 0x01ff;\n t.osmallhiragana = 0x3049;\n t.osmallkatakana = 0x30a9;\n t.osmallkatakanahalfwidth = 0xff6b;\n t.ostrokeacute = 0x01ff;\n t.osuperior = 0xf6f0;\n t.otcyrillic = 0x047f;\n t.otilde = 0x00f5;\n t.otildeacute = 0x1e4d;\n t.otildedieresis = 0x1e4f;\n t.oubopomofo = 0x3121;\n t.overline = 0x203e;\n t.overlinecenterline = 0xfe4a;\n t.overlinecmb = 0x0305;\n t.overlinedashed = 0xfe49;\n t.overlinedblwavy = 0xfe4c;\n t.overlinewavy = 0xfe4b;\n t.overscore = 0x00af;\n t.ovowelsignbengali = 0x09cb;\n t.ovowelsigndeva = 0x094b;\n t.ovowelsigngujarati = 0x0acb;\n t.p = 0x0070;\n t.paampssquare = 0x3380;\n t.paasentosquare = 0x332b;\n t.pabengali = 0x09aa;\n t.pacute = 0x1e55;\n t.padeva = 0x092a;\n t.pagedown = 0x21df;\n t.pageup = 0x21de;\n t.pagujarati = 0x0aaa;\n t.pagurmukhi = 0x0a2a;\n t.pahiragana = 0x3071;\n t.paiyannoithai = 0x0e2f;\n t.pakatakana = 0x30d1;\n t.palatalizationcyrilliccmb = 0x0484;\n t.palochkacyrillic = 0x04c0;\n t.pansioskorean = 0x317f;\n t.paragraph = 0x00b6;\n t.parallel = 0x2225;\n t.parenleft = 0x0028;\n t.parenleftaltonearabic = 0xfd3e;\n t.parenleftbt = 0xf8ed;\n t.parenleftex = 0xf8ec;\n t.parenleftinferior = 0x208d;\n t.parenleftmonospace = 0xff08;\n t.parenleftsmall = 0xfe59;\n t.parenleftsuperior = 0x207d;\n t.parenlefttp = 0xf8eb;\n t.parenleftvertical = 0xfe35;\n t.parenright = 0x0029;\n t.parenrightaltonearabic = 0xfd3f;\n t.parenrightbt = 0xf8f8;\n t.parenrightex = 0xf8f7;\n t.parenrightinferior = 0x208e;\n t.parenrightmonospace = 0xff09;\n t.parenrightsmall = 0xfe5a;\n t.parenrightsuperior = 0x207e;\n t.parenrighttp = 0xf8f6;\n t.parenrightvertical = 0xfe36;\n t.partialdiff = 0x2202;\n t.paseqhebrew = 0x05c0;\n t.pashtahebrew = 0x0599;\n t.pasquare = 0x33a9;\n t.patah = 0x05b7;\n t.patah11 = 0x05b7;\n t.patah1d = 0x05b7;\n t.patah2a = 0x05b7;\n t.patahhebrew = 0x05b7;\n t.patahnarrowhebrew = 0x05b7;\n t.patahquarterhebrew = 0x05b7;\n t.patahwidehebrew = 0x05b7;\n t.pazerhebrew = 0x05a1;\n t.pbopomofo = 0x3106;\n t.pcircle = 0x24df;\n t.pdotaccent = 0x1e57;\n t.pe = 0x05e4;\n t.pecyrillic = 0x043f;\n t.pedagesh = 0xfb44;\n t.pedageshhebrew = 0xfb44;\n t.peezisquare = 0x333b;\n t.pefinaldageshhebrew = 0xfb43;\n t.peharabic = 0x067e;\n t.peharmenian = 0x057a;\n t.pehebrew = 0x05e4;\n t.pehfinalarabic = 0xfb57;\n t.pehinitialarabic = 0xfb58;\n t.pehiragana = 0x307a;\n t.pehmedialarabic = 0xfb59;\n t.pekatakana = 0x30da;\n t.pemiddlehookcyrillic = 0x04a7;\n t.perafehebrew = 0xfb4e;\n t.percent = 0x0025;\n t.percentarabic = 0x066a;\n t.percentmonospace = 0xff05;\n t.percentsmall = 0xfe6a;\n t.period = 0x002e;\n t.periodarmenian = 0x0589;\n t.periodcentered = 0x00b7;\n t.periodhalfwidth = 0xff61;\n t.periodinferior = 0xf6e7;\n t.periodmonospace = 0xff0e;\n t.periodsmall = 0xfe52;\n t.periodsuperior = 0xf6e8;\n t.perispomenigreekcmb = 0x0342;\n t.perpendicular = 0x22a5;\n t.perthousand = 0x2030;\n t.peseta = 0x20a7;\n t.pfsquare = 0x338a;\n t.phabengali = 0x09ab;\n t.phadeva = 0x092b;\n t.phagujarati = 0x0aab;\n t.phagurmukhi = 0x0a2b;\n t.phi = 0x03c6;\n t.phi1 = 0x03d5;\n t.phieuphacirclekorean = 0x327a;\n t.phieuphaparenkorean = 0x321a;\n t.phieuphcirclekorean = 0x326c;\n t.phieuphkorean = 0x314d;\n t.phieuphparenkorean = 0x320c;\n t.philatin = 0x0278;\n t.phinthuthai = 0x0e3a;\n t.phisymbolgreek = 0x03d5;\n t.phook = 0x01a5;\n t.phophanthai = 0x0e1e;\n t.phophungthai = 0x0e1c;\n t.phosamphaothai = 0x0e20;\n t.pi = 0x03c0;\n t.pieupacirclekorean = 0x3273;\n t.pieupaparenkorean = 0x3213;\n t.pieupcieuckorean = 0x3176;\n t.pieupcirclekorean = 0x3265;\n t.pieupkiyeokkorean = 0x3172;\n t.pieupkorean = 0x3142;\n t.pieupparenkorean = 0x3205;\n t.pieupsioskiyeokkorean = 0x3174;\n t.pieupsioskorean = 0x3144;\n t.pieupsiostikeutkorean = 0x3175;\n t.pieupthieuthkorean = 0x3177;\n t.pieuptikeutkorean = 0x3173;\n t.pihiragana = 0x3074;\n t.pikatakana = 0x30d4;\n t.pisymbolgreek = 0x03d6;\n t.piwrarmenian = 0x0583;\n t.planckover2pi = 0x210f;\n t.planckover2pi1 = 0x210f;\n t.plus = 0x002b;\n t.plusbelowcmb = 0x031f;\n t.pluscircle = 0x2295;\n t.plusminus = 0x00b1;\n t.plusmod = 0x02d6;\n t.plusmonospace = 0xff0b;\n t.plussmall = 0xfe62;\n t.plussuperior = 0x207a;\n t.pmonospace = 0xff50;\n t.pmsquare = 0x33d8;\n t.pohiragana = 0x307d;\n t.pointingindexdownwhite = 0x261f;\n t.pointingindexleftwhite = 0x261c;\n t.pointingindexrightwhite = 0x261e;\n t.pointingindexupwhite = 0x261d;\n t.pokatakana = 0x30dd;\n t.poplathai = 0x0e1b;\n t.postalmark = 0x3012;\n t.postalmarkface = 0x3020;\n t.pparen = 0x24ab;\n t.precedes = 0x227a;\n t.prescription = 0x211e;\n t.primemod = 0x02b9;\n t.primereversed = 0x2035;\n t.product = 0x220f;\n t.projective = 0x2305;\n t.prolongedkana = 0x30fc;\n t.propellor = 0x2318;\n t.propersubset = 0x2282;\n t.propersuperset = 0x2283;\n t.proportion = 0x2237;\n t.proportional = 0x221d;\n t.psi = 0x03c8;\n t.psicyrillic = 0x0471;\n t.psilipneumatacyrilliccmb = 0x0486;\n t.pssquare = 0x33b0;\n t.puhiragana = 0x3077;\n t.pukatakana = 0x30d7;\n t.pvsquare = 0x33b4;\n t.pwsquare = 0x33ba;\n t.q = 0x0071;\n t.qadeva = 0x0958;\n t.qadmahebrew = 0x05a8;\n t.qafarabic = 0x0642;\n t.qaffinalarabic = 0xfed6;\n t.qafinitialarabic = 0xfed7;\n t.qafmedialarabic = 0xfed8;\n t.qamats = 0x05b8;\n t.qamats10 = 0x05b8;\n t.qamats1a = 0x05b8;\n t.qamats1c = 0x05b8;\n t.qamats27 = 0x05b8;\n t.qamats29 = 0x05b8;\n t.qamats33 = 0x05b8;\n t.qamatsde = 0x05b8;\n t.qamatshebrew = 0x05b8;\n t.qamatsnarrowhebrew = 0x05b8;\n t.qamatsqatanhebrew = 0x05b8;\n t.qamatsqatannarrowhebrew = 0x05b8;\n t.qamatsqatanquarterhebrew = 0x05b8;\n t.qamatsqatanwidehebrew = 0x05b8;\n t.qamatsquarterhebrew = 0x05b8;\n t.qamatswidehebrew = 0x05b8;\n t.qarneyparahebrew = 0x059f;\n t.qbopomofo = 0x3111;\n t.qcircle = 0x24e0;\n t.qhook = 0x02a0;\n t.qmonospace = 0xff51;\n t.qof = 0x05e7;\n t.qofdagesh = 0xfb47;\n t.qofdageshhebrew = 0xfb47;\n t.qofhebrew = 0x05e7;\n t.qparen = 0x24ac;\n t.quarternote = 0x2669;\n t.qubuts = 0x05bb;\n t.qubuts18 = 0x05bb;\n t.qubuts25 = 0x05bb;\n t.qubuts31 = 0x05bb;\n t.qubutshebrew = 0x05bb;\n t.qubutsnarrowhebrew = 0x05bb;\n t.qubutsquarterhebrew = 0x05bb;\n t.qubutswidehebrew = 0x05bb;\n t.question = 0x003f;\n t.questionarabic = 0x061f;\n t.questionarmenian = 0x055e;\n t.questiondown = 0x00bf;\n t.questiondownsmall = 0xf7bf;\n t.questiongreek = 0x037e;\n t.questionmonospace = 0xff1f;\n t.questionsmall = 0xf73f;\n t.quotedbl = 0x0022;\n t.quotedblbase = 0x201e;\n t.quotedblleft = 0x201c;\n t.quotedblmonospace = 0xff02;\n t.quotedblprime = 0x301e;\n t.quotedblprimereversed = 0x301d;\n t.quotedblright = 0x201d;\n t.quoteleft = 0x2018;\n t.quoteleftreversed = 0x201b;\n t.quotereversed = 0x201b;\n t.quoteright = 0x2019;\n t.quoterightn = 0x0149;\n t.quotesinglbase = 0x201a;\n t.quotesingle = 0x0027;\n t.quotesinglemonospace = 0xff07;\n t.r = 0x0072;\n t.raarmenian = 0x057c;\n t.rabengali = 0x09b0;\n t.racute = 0x0155;\n t.radeva = 0x0930;\n t.radical = 0x221a;\n t.radicalex = 0xf8e5;\n t.radoverssquare = 0x33ae;\n t.radoverssquaredsquare = 0x33af;\n t.radsquare = 0x33ad;\n t.rafe = 0x05bf;\n t.rafehebrew = 0x05bf;\n t.ragujarati = 0x0ab0;\n t.ragurmukhi = 0x0a30;\n t.rahiragana = 0x3089;\n t.rakatakana = 0x30e9;\n t.rakatakanahalfwidth = 0xff97;\n t.ralowerdiagonalbengali = 0x09f1;\n t.ramiddlediagonalbengali = 0x09f0;\n t.ramshorn = 0x0264;\n t.ratio = 0x2236;\n t.rbopomofo = 0x3116;\n t.rcaron = 0x0159;\n t.rcedilla = 0x0157;\n t.rcircle = 0x24e1;\n t.rcommaaccent = 0x0157;\n t.rdblgrave = 0x0211;\n t.rdotaccent = 0x1e59;\n t.rdotbelow = 0x1e5b;\n t.rdotbelowmacron = 0x1e5d;\n t.referencemark = 0x203b;\n t.reflexsubset = 0x2286;\n t.reflexsuperset = 0x2287;\n t.registered = 0x00ae;\n t.registersans = 0xf8e8;\n t.registerserif = 0xf6da;\n t.reharabic = 0x0631;\n t.reharmenian = 0x0580;\n t.rehfinalarabic = 0xfeae;\n t.rehiragana = 0x308c;\n t.rekatakana = 0x30ec;\n t.rekatakanahalfwidth = 0xff9a;\n t.resh = 0x05e8;\n t.reshdageshhebrew = 0xfb48;\n t.reshhebrew = 0x05e8;\n t.reversedtilde = 0x223d;\n t.reviahebrew = 0x0597;\n t.reviamugrashhebrew = 0x0597;\n t.revlogicalnot = 0x2310;\n t.rfishhook = 0x027e;\n t.rfishhookreversed = 0x027f;\n t.rhabengali = 0x09dd;\n t.rhadeva = 0x095d;\n t.rho = 0x03c1;\n t.rhook = 0x027d;\n t.rhookturned = 0x027b;\n t.rhookturnedsuperior = 0x02b5;\n t.rhosymbolgreek = 0x03f1;\n t.rhotichookmod = 0x02de;\n t.rieulacirclekorean = 0x3271;\n t.rieulaparenkorean = 0x3211;\n t.rieulcirclekorean = 0x3263;\n t.rieulhieuhkorean = 0x3140;\n t.rieulkiyeokkorean = 0x313a;\n t.rieulkiyeoksioskorean = 0x3169;\n t.rieulkorean = 0x3139;\n t.rieulmieumkorean = 0x313b;\n t.rieulpansioskorean = 0x316c;\n t.rieulparenkorean = 0x3203;\n t.rieulphieuphkorean = 0x313f;\n t.rieulpieupkorean = 0x313c;\n t.rieulpieupsioskorean = 0x316b;\n t.rieulsioskorean = 0x313d;\n t.rieulthieuthkorean = 0x313e;\n t.rieultikeutkorean = 0x316a;\n t.rieulyeorinhieuhkorean = 0x316d;\n t.rightangle = 0x221f;\n t.righttackbelowcmb = 0x0319;\n t.righttriangle = 0x22bf;\n t.rihiragana = 0x308a;\n t.rikatakana = 0x30ea;\n t.rikatakanahalfwidth = 0xff98;\n t.ring = 0x02da;\n t.ringbelowcmb = 0x0325;\n t.ringcmb = 0x030a;\n t.ringhalfleft = 0x02bf;\n t.ringhalfleftarmenian = 0x0559;\n t.ringhalfleftbelowcmb = 0x031c;\n t.ringhalfleftcentered = 0x02d3;\n t.ringhalfright = 0x02be;\n t.ringhalfrightbelowcmb = 0x0339;\n t.ringhalfrightcentered = 0x02d2;\n t.rinvertedbreve = 0x0213;\n t.rittorusquare = 0x3351;\n t.rlinebelow = 0x1e5f;\n t.rlongleg = 0x027c;\n t.rlonglegturned = 0x027a;\n t.rmonospace = 0xff52;\n t.rohiragana = 0x308d;\n t.rokatakana = 0x30ed;\n t.rokatakanahalfwidth = 0xff9b;\n t.roruathai = 0x0e23;\n t.rparen = 0x24ad;\n t.rrabengali = 0x09dc;\n t.rradeva = 0x0931;\n t.rragurmukhi = 0x0a5c;\n t.rreharabic = 0x0691;\n t.rrehfinalarabic = 0xfb8d;\n t.rrvocalicbengali = 0x09e0;\n t.rrvocalicdeva = 0x0960;\n t.rrvocalicgujarati = 0x0ae0;\n t.rrvocalicvowelsignbengali = 0x09c4;\n t.rrvocalicvowelsigndeva = 0x0944;\n t.rrvocalicvowelsigngujarati = 0x0ac4;\n t.rsuperior = 0xf6f1;\n t.rtblock = 0x2590;\n t.rturned = 0x0279;\n t.rturnedsuperior = 0x02b4;\n t.ruhiragana = 0x308b;\n t.rukatakana = 0x30eb;\n t.rukatakanahalfwidth = 0xff99;\n t.rupeemarkbengali = 0x09f2;\n t.rupeesignbengali = 0x09f3;\n t.rupiah = 0xf6dd;\n t.ruthai = 0x0e24;\n t.rvocalicbengali = 0x098b;\n t.rvocalicdeva = 0x090b;\n t.rvocalicgujarati = 0x0a8b;\n t.rvocalicvowelsignbengali = 0x09c3;\n t.rvocalicvowelsigndeva = 0x0943;\n t.rvocalicvowelsigngujarati = 0x0ac3;\n t.s = 0x0073;\n t.sabengali = 0x09b8;\n t.sacute = 0x015b;\n t.sacutedotaccent = 0x1e65;\n t.sadarabic = 0x0635;\n t.sadeva = 0x0938;\n t.sadfinalarabic = 0xfeba;\n t.sadinitialarabic = 0xfebb;\n t.sadmedialarabic = 0xfebc;\n t.sagujarati = 0x0ab8;\n t.sagurmukhi = 0x0a38;\n t.sahiragana = 0x3055;\n t.sakatakana = 0x30b5;\n t.sakatakanahalfwidth = 0xff7b;\n t.sallallahoualayhewasallamarabic = 0xfdfa;\n t.samekh = 0x05e1;\n t.samekhdagesh = 0xfb41;\n t.samekhdageshhebrew = 0xfb41;\n t.samekhhebrew = 0x05e1;\n t.saraaathai = 0x0e32;\n t.saraaethai = 0x0e41;\n t.saraaimaimalaithai = 0x0e44;\n t.saraaimaimuanthai = 0x0e43;\n t.saraamthai = 0x0e33;\n t.saraathai = 0x0e30;\n t.saraethai = 0x0e40;\n t.saraiileftthai = 0xf886;\n t.saraiithai = 0x0e35;\n t.saraileftthai = 0xf885;\n t.saraithai = 0x0e34;\n t.saraothai = 0x0e42;\n t.saraueeleftthai = 0xf888;\n t.saraueethai = 0x0e37;\n t.saraueleftthai = 0xf887;\n t.sarauethai = 0x0e36;\n t.sarauthai = 0x0e38;\n t.sarauuthai = 0x0e39;\n t.sbopomofo = 0x3119;\n t.scaron = 0x0161;\n t.scarondotaccent = 0x1e67;\n t.scedilla = 0x015f;\n t.schwa = 0x0259;\n t.schwacyrillic = 0x04d9;\n t.schwadieresiscyrillic = 0x04db;\n t.schwahook = 0x025a;\n t.scircle = 0x24e2;\n t.scircumflex = 0x015d;\n t.scommaaccent = 0x0219;\n t.sdotaccent = 0x1e61;\n t.sdotbelow = 0x1e63;\n t.sdotbelowdotaccent = 0x1e69;\n t.seagullbelowcmb = 0x033c;\n t.second = 0x2033;\n t.secondtonechinese = 0x02ca;\n t.section = 0x00a7;\n t.seenarabic = 0x0633;\n t.seenfinalarabic = 0xfeb2;\n t.seeninitialarabic = 0xfeb3;\n t.seenmedialarabic = 0xfeb4;\n t.segol = 0x05b6;\n t.segol13 = 0x05b6;\n t.segol1f = 0x05b6;\n t.segol2c = 0x05b6;\n t.segolhebrew = 0x05b6;\n t.segolnarrowhebrew = 0x05b6;\n t.segolquarterhebrew = 0x05b6;\n t.segoltahebrew = 0x0592;\n t.segolwidehebrew = 0x05b6;\n t.seharmenian = 0x057d;\n t.sehiragana = 0x305b;\n t.sekatakana = 0x30bb;\n t.sekatakanahalfwidth = 0xff7e;\n t.semicolon = 0x003b;\n t.semicolonarabic = 0x061b;\n t.semicolonmonospace = 0xff1b;\n t.semicolonsmall = 0xfe54;\n t.semivoicedmarkkana = 0x309c;\n t.semivoicedmarkkanahalfwidth = 0xff9f;\n t.sentisquare = 0x3322;\n t.sentosquare = 0x3323;\n t.seven = 0x0037;\n t.sevenarabic = 0x0667;\n t.sevenbengali = 0x09ed;\n t.sevencircle = 0x2466;\n t.sevencircleinversesansserif = 0x2790;\n t.sevendeva = 0x096d;\n t.seveneighths = 0x215e;\n t.sevengujarati = 0x0aed;\n t.sevengurmukhi = 0x0a6d;\n t.sevenhackarabic = 0x0667;\n t.sevenhangzhou = 0x3027;\n t.sevenideographicparen = 0x3226;\n t.seveninferior = 0x2087;\n t.sevenmonospace = 0xff17;\n t.sevenoldstyle = 0xf737;\n t.sevenparen = 0x247a;\n t.sevenperiod = 0x248e;\n t.sevenpersian = 0x06f7;\n t.sevenroman = 0x2176;\n t.sevensuperior = 0x2077;\n t.seventeencircle = 0x2470;\n t.seventeenparen = 0x2484;\n t.seventeenperiod = 0x2498;\n t.seventhai = 0x0e57;\n t.sfthyphen = 0x00ad;\n t.shaarmenian = 0x0577;\n t.shabengali = 0x09b6;\n t.shacyrillic = 0x0448;\n t.shaddaarabic = 0x0651;\n t.shaddadammaarabic = 0xfc61;\n t.shaddadammatanarabic = 0xfc5e;\n t.shaddafathaarabic = 0xfc60;\n t.shaddakasraarabic = 0xfc62;\n t.shaddakasratanarabic = 0xfc5f;\n t.shade = 0x2592;\n t.shadedark = 0x2593;\n t.shadelight = 0x2591;\n t.shademedium = 0x2592;\n t.shadeva = 0x0936;\n t.shagujarati = 0x0ab6;\n t.shagurmukhi = 0x0a36;\n t.shalshelethebrew = 0x0593;\n t.shbopomofo = 0x3115;\n t.shchacyrillic = 0x0449;\n t.sheenarabic = 0x0634;\n t.sheenfinalarabic = 0xfeb6;\n t.sheeninitialarabic = 0xfeb7;\n t.sheenmedialarabic = 0xfeb8;\n t.sheicoptic = 0x03e3;\n t.sheqel = 0x20aa;\n t.sheqelhebrew = 0x20aa;\n t.sheva = 0x05b0;\n t.sheva115 = 0x05b0;\n t.sheva15 = 0x05b0;\n t.sheva22 = 0x05b0;\n t.sheva2e = 0x05b0;\n t.shevahebrew = 0x05b0;\n t.shevanarrowhebrew = 0x05b0;\n t.shevaquarterhebrew = 0x05b0;\n t.shevawidehebrew = 0x05b0;\n t.shhacyrillic = 0x04bb;\n t.shimacoptic = 0x03ed;\n t.shin = 0x05e9;\n t.shindagesh = 0xfb49;\n t.shindageshhebrew = 0xfb49;\n t.shindageshshindot = 0xfb2c;\n t.shindageshshindothebrew = 0xfb2c;\n t.shindageshsindot = 0xfb2d;\n t.shindageshsindothebrew = 0xfb2d;\n t.shindothebrew = 0x05c1;\n t.shinhebrew = 0x05e9;\n t.shinshindot = 0xfb2a;\n t.shinshindothebrew = 0xfb2a;\n t.shinsindot = 0xfb2b;\n t.shinsindothebrew = 0xfb2b;\n t.shook = 0x0282;\n t.sigma = 0x03c3;\n t.sigma1 = 0x03c2;\n t.sigmafinal = 0x03c2;\n t.sigmalunatesymbolgreek = 0x03f2;\n t.sihiragana = 0x3057;\n t.sikatakana = 0x30b7;\n t.sikatakanahalfwidth = 0xff7c;\n t.siluqhebrew = 0x05bd;\n t.siluqlefthebrew = 0x05bd;\n t.similar = 0x223c;\n t.sindothebrew = 0x05c2;\n t.siosacirclekorean = 0x3274;\n t.siosaparenkorean = 0x3214;\n t.sioscieuckorean = 0x317e;\n t.sioscirclekorean = 0x3266;\n t.sioskiyeokkorean = 0x317a;\n t.sioskorean = 0x3145;\n t.siosnieunkorean = 0x317b;\n t.siosparenkorean = 0x3206;\n t.siospieupkorean = 0x317d;\n t.siostikeutkorean = 0x317c;\n t.six = 0x0036;\n t.sixarabic = 0x0666;\n t.sixbengali = 0x09ec;\n t.sixcircle = 0x2465;\n t.sixcircleinversesansserif = 0x278f;\n t.sixdeva = 0x096c;\n t.sixgujarati = 0x0aec;\n t.sixgurmukhi = 0x0a6c;\n t.sixhackarabic = 0x0666;\n t.sixhangzhou = 0x3026;\n t.sixideographicparen = 0x3225;\n t.sixinferior = 0x2086;\n t.sixmonospace = 0xff16;\n t.sixoldstyle = 0xf736;\n t.sixparen = 0x2479;\n t.sixperiod = 0x248d;\n t.sixpersian = 0x06f6;\n t.sixroman = 0x2175;\n t.sixsuperior = 0x2076;\n t.sixteencircle = 0x246f;\n t.sixteencurrencydenominatorbengali = 0x09f9;\n t.sixteenparen = 0x2483;\n t.sixteenperiod = 0x2497;\n t.sixthai = 0x0e56;\n t.slash = 0x002f;\n t.slashmonospace = 0xff0f;\n t.slong = 0x017f;\n t.slongdotaccent = 0x1e9b;\n t.smileface = 0x263a;\n t.smonospace = 0xff53;\n t.sofpasuqhebrew = 0x05c3;\n t.softhyphen = 0x00ad;\n t.softsigncyrillic = 0x044c;\n t.sohiragana = 0x305d;\n t.sokatakana = 0x30bd;\n t.sokatakanahalfwidth = 0xff7f;\n t.soliduslongoverlaycmb = 0x0338;\n t.solidusshortoverlaycmb = 0x0337;\n t.sorusithai = 0x0e29;\n t.sosalathai = 0x0e28;\n t.sosothai = 0x0e0b;\n t.sosuathai = 0x0e2a;\n t.space = 0x0020;\n t.spacehackarabic = 0x0020;\n t.spade = 0x2660;\n t.spadesuitblack = 0x2660;\n t.spadesuitwhite = 0x2664;\n t.sparen = 0x24ae;\n t.squarebelowcmb = 0x033b;\n t.squarecc = 0x33c4;\n t.squarecm = 0x339d;\n t.squarediagonalcrosshatchfill = 0x25a9;\n t.squarehorizontalfill = 0x25a4;\n t.squarekg = 0x338f;\n t.squarekm = 0x339e;\n t.squarekmcapital = 0x33ce;\n t.squareln = 0x33d1;\n t.squarelog = 0x33d2;\n t.squaremg = 0x338e;\n t.squaremil = 0x33d5;\n t.squaremm = 0x339c;\n t.squaremsquared = 0x33a1;\n t.squareorthogonalcrosshatchfill = 0x25a6;\n t.squareupperlefttolowerrightfill = 0x25a7;\n t.squareupperrighttolowerleftfill = 0x25a8;\n t.squareverticalfill = 0x25a5;\n t.squarewhitewithsmallblack = 0x25a3;\n t.srsquare = 0x33db;\n t.ssabengali = 0x09b7;\n t.ssadeva = 0x0937;\n t.ssagujarati = 0x0ab7;\n t.ssangcieuckorean = 0x3149;\n t.ssanghieuhkorean = 0x3185;\n t.ssangieungkorean = 0x3180;\n t.ssangkiyeokkorean = 0x3132;\n t.ssangnieunkorean = 0x3165;\n t.ssangpieupkorean = 0x3143;\n t.ssangsioskorean = 0x3146;\n t.ssangtikeutkorean = 0x3138;\n t.ssuperior = 0xf6f2;\n t.sterling = 0x00a3;\n t.sterlingmonospace = 0xffe1;\n t.strokelongoverlaycmb = 0x0336;\n t.strokeshortoverlaycmb = 0x0335;\n t.subset = 0x2282;\n t.subsetnotequal = 0x228a;\n t.subsetorequal = 0x2286;\n t.succeeds = 0x227b;\n t.suchthat = 0x220b;\n t.suhiragana = 0x3059;\n t.sukatakana = 0x30b9;\n t.sukatakanahalfwidth = 0xff7d;\n t.sukunarabic = 0x0652;\n t.summation = 0x2211;\n t.sun = 0x263c;\n t.superset = 0x2283;\n t.supersetnotequal = 0x228b;\n t.supersetorequal = 0x2287;\n t.svsquare = 0x33dc;\n t.syouwaerasquare = 0x337c;\n t.t = 0x0074;\n t.tabengali = 0x09a4;\n t.tackdown = 0x22a4;\n t.tackleft = 0x22a3;\n t.tadeva = 0x0924;\n t.tagujarati = 0x0aa4;\n t.tagurmukhi = 0x0a24;\n t.taharabic = 0x0637;\n t.tahfinalarabic = 0xfec2;\n t.tahinitialarabic = 0xfec3;\n t.tahiragana = 0x305f;\n t.tahmedialarabic = 0xfec4;\n t.taisyouerasquare = 0x337d;\n t.takatakana = 0x30bf;\n t.takatakanahalfwidth = 0xff80;\n t.tatweelarabic = 0x0640;\n t.tau = 0x03c4;\n t.tav = 0x05ea;\n t.tavdages = 0xfb4a;\n t.tavdagesh = 0xfb4a;\n t.tavdageshhebrew = 0xfb4a;\n t.tavhebrew = 0x05ea;\n t.tbar = 0x0167;\n t.tbopomofo = 0x310a;\n t.tcaron = 0x0165;\n t.tccurl = 0x02a8;\n t.tcedilla = 0x0163;\n t.tcheharabic = 0x0686;\n t.tchehfinalarabic = 0xfb7b;\n t.tchehinitialarabic = 0xfb7c;\n t.tchehmedialarabic = 0xfb7d;\n t.tcircle = 0x24e3;\n t.tcircumflexbelow = 0x1e71;\n t.tcommaaccent = 0x0163;\n t.tdieresis = 0x1e97;\n t.tdotaccent = 0x1e6b;\n t.tdotbelow = 0x1e6d;\n t.tecyrillic = 0x0442;\n t.tedescendercyrillic = 0x04ad;\n t.teharabic = 0x062a;\n t.tehfinalarabic = 0xfe96;\n t.tehhahinitialarabic = 0xfca2;\n t.tehhahisolatedarabic = 0xfc0c;\n t.tehinitialarabic = 0xfe97;\n t.tehiragana = 0x3066;\n t.tehjeeminitialarabic = 0xfca1;\n t.tehjeemisolatedarabic = 0xfc0b;\n t.tehmarbutaarabic = 0x0629;\n t.tehmarbutafinalarabic = 0xfe94;\n t.tehmedialarabic = 0xfe98;\n t.tehmeeminitialarabic = 0xfca4;\n t.tehmeemisolatedarabic = 0xfc0e;\n t.tehnoonfinalarabic = 0xfc73;\n t.tekatakana = 0x30c6;\n t.tekatakanahalfwidth = 0xff83;\n t.telephone = 0x2121;\n t.telephoneblack = 0x260e;\n t.telishagedolahebrew = 0x05a0;\n t.telishaqetanahebrew = 0x05a9;\n t.tencircle = 0x2469;\n t.tenideographicparen = 0x3229;\n t.tenparen = 0x247d;\n t.tenperiod = 0x2491;\n t.tenroman = 0x2179;\n t.tesh = 0x02a7;\n t.tet = 0x05d8;\n t.tetdagesh = 0xfb38;\n t.tetdageshhebrew = 0xfb38;\n t.tethebrew = 0x05d8;\n t.tetsecyrillic = 0x04b5;\n t.tevirhebrew = 0x059b;\n t.tevirlefthebrew = 0x059b;\n t.thabengali = 0x09a5;\n t.thadeva = 0x0925;\n t.thagujarati = 0x0aa5;\n t.thagurmukhi = 0x0a25;\n t.thalarabic = 0x0630;\n t.thalfinalarabic = 0xfeac;\n t.thanthakhatlowleftthai = 0xf898;\n t.thanthakhatlowrightthai = 0xf897;\n t.thanthakhatthai = 0x0e4c;\n t.thanthakhatupperleftthai = 0xf896;\n t.theharabic = 0x062b;\n t.thehfinalarabic = 0xfe9a;\n t.thehinitialarabic = 0xfe9b;\n t.thehmedialarabic = 0xfe9c;\n t.thereexists = 0x2203;\n t.therefore = 0x2234;\n t.theta = 0x03b8;\n t.theta1 = 0x03d1;\n t.thetasymbolgreek = 0x03d1;\n t.thieuthacirclekorean = 0x3279;\n t.thieuthaparenkorean = 0x3219;\n t.thieuthcirclekorean = 0x326b;\n t.thieuthkorean = 0x314c;\n t.thieuthparenkorean = 0x320b;\n t.thirteencircle = 0x246c;\n t.thirteenparen = 0x2480;\n t.thirteenperiod = 0x2494;\n t.thonangmonthothai = 0x0e11;\n t.thook = 0x01ad;\n t.thophuthaothai = 0x0e12;\n t.thorn = 0x00fe;\n t.thothahanthai = 0x0e17;\n t.thothanthai = 0x0e10;\n t.thothongthai = 0x0e18;\n t.thothungthai = 0x0e16;\n t.thousandcyrillic = 0x0482;\n t.thousandsseparatorarabic = 0x066c;\n t.thousandsseparatorpersian = 0x066c;\n t.three = 0x0033;\n t.threearabic = 0x0663;\n t.threebengali = 0x09e9;\n t.threecircle = 0x2462;\n t.threecircleinversesansserif = 0x278c;\n t.threedeva = 0x0969;\n t.threeeighths = 0x215c;\n t.threegujarati = 0x0ae9;\n t.threegurmukhi = 0x0a69;\n t.threehackarabic = 0x0663;\n t.threehangzhou = 0x3023;\n t.threeideographicparen = 0x3222;\n t.threeinferior = 0x2083;\n t.threemonospace = 0xff13;\n t.threenumeratorbengali = 0x09f6;\n t.threeoldstyle = 0xf733;\n t.threeparen = 0x2476;\n t.threeperiod = 0x248a;\n t.threepersian = 0x06f3;\n t.threequarters = 0x00be;\n t.threequartersemdash = 0xf6de;\n t.threeroman = 0x2172;\n t.threesuperior = 0x00b3;\n t.threethai = 0x0e53;\n t.thzsquare = 0x3394;\n t.tihiragana = 0x3061;\n t.tikatakana = 0x30c1;\n t.tikatakanahalfwidth = 0xff81;\n t.tikeutacirclekorean = 0x3270;\n t.tikeutaparenkorean = 0x3210;\n t.tikeutcirclekorean = 0x3262;\n t.tikeutkorean = 0x3137;\n t.tikeutparenkorean = 0x3202;\n t.tilde = 0x02dc;\n t.tildebelowcmb = 0x0330;\n t.tildecmb = 0x0303;\n t.tildecomb = 0x0303;\n t.tildedoublecmb = 0x0360;\n t.tildeoperator = 0x223c;\n t.tildeoverlaycmb = 0x0334;\n t.tildeverticalcmb = 0x033e;\n t.timescircle = 0x2297;\n t.tipehahebrew = 0x0596;\n t.tipehalefthebrew = 0x0596;\n t.tippigurmukhi = 0x0a70;\n t.titlocyrilliccmb = 0x0483;\n t.tiwnarmenian = 0x057f;\n t.tlinebelow = 0x1e6f;\n t.tmonospace = 0xff54;\n t.toarmenian = 0x0569;\n t.tohiragana = 0x3068;\n t.tokatakana = 0x30c8;\n t.tokatakanahalfwidth = 0xff84;\n t.tonebarextrahighmod = 0x02e5;\n t.tonebarextralowmod = 0x02e9;\n t.tonebarhighmod = 0x02e6;\n t.tonebarlowmod = 0x02e8;\n t.tonebarmidmod = 0x02e7;\n t.tonefive = 0x01bd;\n t.tonesix = 0x0185;\n t.tonetwo = 0x01a8;\n t.tonos = 0x0384;\n t.tonsquare = 0x3327;\n t.topatakthai = 0x0e0f;\n t.tortoiseshellbracketleft = 0x3014;\n t.tortoiseshellbracketleftsmall = 0xfe5d;\n t.tortoiseshellbracketleftvertical = 0xfe39;\n t.tortoiseshellbracketright = 0x3015;\n t.tortoiseshellbracketrightsmall = 0xfe5e;\n t.tortoiseshellbracketrightvertical = 0xfe3a;\n t.totaothai = 0x0e15;\n t.tpalatalhook = 0x01ab;\n t.tparen = 0x24af;\n t.trademark = 0x2122;\n t.trademarksans = 0xf8ea;\n t.trademarkserif = 0xf6db;\n t.tretroflexhook = 0x0288;\n t.triagdn = 0x25bc;\n t.triaglf = 0x25c4;\n t.triagrt = 0x25ba;\n t.triagup = 0x25b2;\n t.ts = 0x02a6;\n t.tsadi = 0x05e6;\n t.tsadidagesh = 0xfb46;\n t.tsadidageshhebrew = 0xfb46;\n t.tsadihebrew = 0x05e6;\n t.tsecyrillic = 0x0446;\n t.tsere = 0x05b5;\n t.tsere12 = 0x05b5;\n t.tsere1e = 0x05b5;\n t.tsere2b = 0x05b5;\n t.tserehebrew = 0x05b5;\n t.tserenarrowhebrew = 0x05b5;\n t.tserequarterhebrew = 0x05b5;\n t.tserewidehebrew = 0x05b5;\n t.tshecyrillic = 0x045b;\n t.tsuperior = 0xf6f3;\n t.ttabengali = 0x099f;\n t.ttadeva = 0x091f;\n t.ttagujarati = 0x0a9f;\n t.ttagurmukhi = 0x0a1f;\n t.tteharabic = 0x0679;\n t.ttehfinalarabic = 0xfb67;\n t.ttehinitialarabic = 0xfb68;\n t.ttehmedialarabic = 0xfb69;\n t.tthabengali = 0x09a0;\n t.tthadeva = 0x0920;\n t.tthagujarati = 0x0aa0;\n t.tthagurmukhi = 0x0a20;\n t.tturned = 0x0287;\n t.tuhiragana = 0x3064;\n t.tukatakana = 0x30c4;\n t.tukatakanahalfwidth = 0xff82;\n t.tusmallhiragana = 0x3063;\n t.tusmallkatakana = 0x30c3;\n t.tusmallkatakanahalfwidth = 0xff6f;\n t.twelvecircle = 0x246b;\n t.twelveparen = 0x247f;\n t.twelveperiod = 0x2493;\n t.twelveroman = 0x217b;\n t.twentycircle = 0x2473;\n t.twentyhangzhou = 0x5344;\n t.twentyparen = 0x2487;\n t.twentyperiod = 0x249b;\n t.two = 0x0032;\n t.twoarabic = 0x0662;\n t.twobengali = 0x09e8;\n t.twocircle = 0x2461;\n t.twocircleinversesansserif = 0x278b;\n t.twodeva = 0x0968;\n t.twodotenleader = 0x2025;\n t.twodotleader = 0x2025;\n t.twodotleadervertical = 0xfe30;\n t.twogujarati = 0x0ae8;\n t.twogurmukhi = 0x0a68;\n t.twohackarabic = 0x0662;\n t.twohangzhou = 0x3022;\n t.twoideographicparen = 0x3221;\n t.twoinferior = 0x2082;\n t.twomonospace = 0xff12;\n t.twonumeratorbengali = 0x09f5;\n t.twooldstyle = 0xf732;\n t.twoparen = 0x2475;\n t.twoperiod = 0x2489;\n t.twopersian = 0x06f2;\n t.tworoman = 0x2171;\n t.twostroke = 0x01bb;\n t.twosuperior = 0x00b2;\n t.twothai = 0x0e52;\n t.twothirds = 0x2154;\n t.u = 0x0075;\n t.uacute = 0x00fa;\n t.ubar = 0x0289;\n t.ubengali = 0x0989;\n t.ubopomofo = 0x3128;\n t.ubreve = 0x016d;\n t.ucaron = 0x01d4;\n t.ucircle = 0x24e4;\n t.ucircumflex = 0x00fb;\n t.ucircumflexbelow = 0x1e77;\n t.ucyrillic = 0x0443;\n t.udattadeva = 0x0951;\n t.udblacute = 0x0171;\n t.udblgrave = 0x0215;\n t.udeva = 0x0909;\n t.udieresis = 0x00fc;\n t.udieresisacute = 0x01d8;\n t.udieresisbelow = 0x1e73;\n t.udieresiscaron = 0x01da;\n t.udieresiscyrillic = 0x04f1;\n t.udieresisgrave = 0x01dc;\n t.udieresismacron = 0x01d6;\n t.udotbelow = 0x1ee5;\n t.ugrave = 0x00f9;\n t.ugujarati = 0x0a89;\n t.ugurmukhi = 0x0a09;\n t.uhiragana = 0x3046;\n t.uhookabove = 0x1ee7;\n t.uhorn = 0x01b0;\n t.uhornacute = 0x1ee9;\n t.uhorndotbelow = 0x1ef1;\n t.uhorngrave = 0x1eeb;\n t.uhornhookabove = 0x1eed;\n t.uhorntilde = 0x1eef;\n t.uhungarumlaut = 0x0171;\n t.uhungarumlautcyrillic = 0x04f3;\n t.uinvertedbreve = 0x0217;\n t.ukatakana = 0x30a6;\n t.ukatakanahalfwidth = 0xff73;\n t.ukcyrillic = 0x0479;\n t.ukorean = 0x315c;\n t.umacron = 0x016b;\n t.umacroncyrillic = 0x04ef;\n t.umacrondieresis = 0x1e7b;\n t.umatragurmukhi = 0x0a41;\n t.umonospace = 0xff55;\n t.underscore = 0x005f;\n t.underscoredbl = 0x2017;\n t.underscoremonospace = 0xff3f;\n t.underscorevertical = 0xfe33;\n t.underscorewavy = 0xfe4f;\n t.union = 0x222a;\n t.universal = 0x2200;\n t.uogonek = 0x0173;\n t.uparen = 0x24b0;\n t.upblock = 0x2580;\n t.upperdothebrew = 0x05c4;\n t.upsilon = 0x03c5;\n t.upsilondieresis = 0x03cb;\n t.upsilondieresistonos = 0x03b0;\n t.upsilonlatin = 0x028a;\n t.upsilontonos = 0x03cd;\n t.uptackbelowcmb = 0x031d;\n t.uptackmod = 0x02d4;\n t.uragurmukhi = 0x0a73;\n t.uring = 0x016f;\n t.ushortcyrillic = 0x045e;\n t.usmallhiragana = 0x3045;\n t.usmallkatakana = 0x30a5;\n t.usmallkatakanahalfwidth = 0xff69;\n t.ustraightcyrillic = 0x04af;\n t.ustraightstrokecyrillic = 0x04b1;\n t.utilde = 0x0169;\n t.utildeacute = 0x1e79;\n t.utildebelow = 0x1e75;\n t.uubengali = 0x098a;\n t.uudeva = 0x090a;\n t.uugujarati = 0x0a8a;\n t.uugurmukhi = 0x0a0a;\n t.uumatragurmukhi = 0x0a42;\n t.uuvowelsignbengali = 0x09c2;\n t.uuvowelsigndeva = 0x0942;\n t.uuvowelsigngujarati = 0x0ac2;\n t.uvowelsignbengali = 0x09c1;\n t.uvowelsigndeva = 0x0941;\n t.uvowelsigngujarati = 0x0ac1;\n t.v = 0x0076;\n t.vadeva = 0x0935;\n t.vagujarati = 0x0ab5;\n t.vagurmukhi = 0x0a35;\n t.vakatakana = 0x30f7;\n t.vav = 0x05d5;\n t.vavdagesh = 0xfb35;\n t.vavdagesh65 = 0xfb35;\n t.vavdageshhebrew = 0xfb35;\n t.vavhebrew = 0x05d5;\n t.vavholam = 0xfb4b;\n t.vavholamhebrew = 0xfb4b;\n t.vavvavhebrew = 0x05f0;\n t.vavyodhebrew = 0x05f1;\n t.vcircle = 0x24e5;\n t.vdotbelow = 0x1e7f;\n t.vecyrillic = 0x0432;\n t.veharabic = 0x06a4;\n t.vehfinalarabic = 0xfb6b;\n t.vehinitialarabic = 0xfb6c;\n t.vehmedialarabic = 0xfb6d;\n t.vekatakana = 0x30f9;\n t.venus = 0x2640;\n t.verticalbar = 0x007c;\n t.verticallineabovecmb = 0x030d;\n t.verticallinebelowcmb = 0x0329;\n t.verticallinelowmod = 0x02cc;\n t.verticallinemod = 0x02c8;\n t.vewarmenian = 0x057e;\n t.vhook = 0x028b;\n t.vikatakana = 0x30f8;\n t.viramabengali = 0x09cd;\n t.viramadeva = 0x094d;\n t.viramagujarati = 0x0acd;\n t.visargabengali = 0x0983;\n t.visargadeva = 0x0903;\n t.visargagujarati = 0x0a83;\n t.vmonospace = 0xff56;\n t.voarmenian = 0x0578;\n t.voicediterationhiragana = 0x309e;\n t.voicediterationkatakana = 0x30fe;\n t.voicedmarkkana = 0x309b;\n t.voicedmarkkanahalfwidth = 0xff9e;\n t.vokatakana = 0x30fa;\n t.vparen = 0x24b1;\n t.vtilde = 0x1e7d;\n t.vturned = 0x028c;\n t.vuhiragana = 0x3094;\n t.vukatakana = 0x30f4;\n t.w = 0x0077;\n t.wacute = 0x1e83;\n t.waekorean = 0x3159;\n t.wahiragana = 0x308f;\n t.wakatakana = 0x30ef;\n t.wakatakanahalfwidth = 0xff9c;\n t.wakorean = 0x3158;\n t.wasmallhiragana = 0x308e;\n t.wasmallkatakana = 0x30ee;\n t.wattosquare = 0x3357;\n t.wavedash = 0x301c;\n t.wavyunderscorevertical = 0xfe34;\n t.wawarabic = 0x0648;\n t.wawfinalarabic = 0xfeee;\n t.wawhamzaabovearabic = 0x0624;\n t.wawhamzaabovefinalarabic = 0xfe86;\n t.wbsquare = 0x33dd;\n t.wcircle = 0x24e6;\n t.wcircumflex = 0x0175;\n t.wdieresis = 0x1e85;\n t.wdotaccent = 0x1e87;\n t.wdotbelow = 0x1e89;\n t.wehiragana = 0x3091;\n t.weierstrass = 0x2118;\n t.wekatakana = 0x30f1;\n t.wekorean = 0x315e;\n t.weokorean = 0x315d;\n t.wgrave = 0x1e81;\n t.whitebullet = 0x25e6;\n t.whitecircle = 0x25cb;\n t.whitecircleinverse = 0x25d9;\n t.whitecornerbracketleft = 0x300e;\n t.whitecornerbracketleftvertical = 0xfe43;\n t.whitecornerbracketright = 0x300f;\n t.whitecornerbracketrightvertical = 0xfe44;\n t.whitediamond = 0x25c7;\n t.whitediamondcontainingblacksmalldiamond = 0x25c8;\n t.whitedownpointingsmalltriangle = 0x25bf;\n t.whitedownpointingtriangle = 0x25bd;\n t.whiteleftpointingsmalltriangle = 0x25c3;\n t.whiteleftpointingtriangle = 0x25c1;\n t.whitelenticularbracketleft = 0x3016;\n t.whitelenticularbracketright = 0x3017;\n t.whiterightpointingsmalltriangle = 0x25b9;\n t.whiterightpointingtriangle = 0x25b7;\n t.whitesmallsquare = 0x25ab;\n t.whitesmilingface = 0x263a;\n t.whitesquare = 0x25a1;\n t.whitestar = 0x2606;\n t.whitetelephone = 0x260f;\n t.whitetortoiseshellbracketleft = 0x3018;\n t.whitetortoiseshellbracketright = 0x3019;\n t.whiteuppointingsmalltriangle = 0x25b5;\n t.whiteuppointingtriangle = 0x25b3;\n t.wihiragana = 0x3090;\n t.wikatakana = 0x30f0;\n t.wikorean = 0x315f;\n t.wmonospace = 0xff57;\n t.wohiragana = 0x3092;\n t.wokatakana = 0x30f2;\n t.wokatakanahalfwidth = 0xff66;\n t.won = 0x20a9;\n t.wonmonospace = 0xffe6;\n t.wowaenthai = 0x0e27;\n t.wparen = 0x24b2;\n t.wring = 0x1e98;\n t.wsuperior = 0x02b7;\n t.wturned = 0x028d;\n t.wynn = 0x01bf;\n t.x = 0x0078;\n t.xabovecmb = 0x033d;\n t.xbopomofo = 0x3112;\n t.xcircle = 0x24e7;\n t.xdieresis = 0x1e8d;\n t.xdotaccent = 0x1e8b;\n t.xeharmenian = 0x056d;\n t.xi = 0x03be;\n t.xmonospace = 0xff58;\n t.xparen = 0x24b3;\n t.xsuperior = 0x02e3;\n t.y = 0x0079;\n t.yaadosquare = 0x334e;\n t.yabengali = 0x09af;\n t.yacute = 0x00fd;\n t.yadeva = 0x092f;\n t.yaekorean = 0x3152;\n t.yagujarati = 0x0aaf;\n t.yagurmukhi = 0x0a2f;\n t.yahiragana = 0x3084;\n t.yakatakana = 0x30e4;\n t.yakatakanahalfwidth = 0xff94;\n t.yakorean = 0x3151;\n t.yamakkanthai = 0x0e4e;\n t.yasmallhiragana = 0x3083;\n t.yasmallkatakana = 0x30e3;\n t.yasmallkatakanahalfwidth = 0xff6c;\n t.yatcyrillic = 0x0463;\n t.ycircle = 0x24e8;\n t.ycircumflex = 0x0177;\n t.ydieresis = 0x00ff;\n t.ydotaccent = 0x1e8f;\n t.ydotbelow = 0x1ef5;\n t.yeharabic = 0x064a;\n t.yehbarreearabic = 0x06d2;\n t.yehbarreefinalarabic = 0xfbaf;\n t.yehfinalarabic = 0xfef2;\n t.yehhamzaabovearabic = 0x0626;\n t.yehhamzaabovefinalarabic = 0xfe8a;\n t.yehhamzaaboveinitialarabic = 0xfe8b;\n t.yehhamzaabovemedialarabic = 0xfe8c;\n t.yehinitialarabic = 0xfef3;\n t.yehmedialarabic = 0xfef4;\n t.yehmeeminitialarabic = 0xfcdd;\n t.yehmeemisolatedarabic = 0xfc58;\n t.yehnoonfinalarabic = 0xfc94;\n t.yehthreedotsbelowarabic = 0x06d1;\n t.yekorean = 0x3156;\n t.yen = 0x00a5;\n t.yenmonospace = 0xffe5;\n t.yeokorean = 0x3155;\n t.yeorinhieuhkorean = 0x3186;\n t.yerahbenyomohebrew = 0x05aa;\n t.yerahbenyomolefthebrew = 0x05aa;\n t.yericyrillic = 0x044b;\n t.yerudieresiscyrillic = 0x04f9;\n t.yesieungkorean = 0x3181;\n t.yesieungpansioskorean = 0x3183;\n t.yesieungsioskorean = 0x3182;\n t.yetivhebrew = 0x059a;\n t.ygrave = 0x1ef3;\n t.yhook = 0x01b4;\n t.yhookabove = 0x1ef7;\n t.yiarmenian = 0x0575;\n t.yicyrillic = 0x0457;\n t.yikorean = 0x3162;\n t.yinyang = 0x262f;\n t.yiwnarmenian = 0x0582;\n t.ymonospace = 0xff59;\n t.yod = 0x05d9;\n t.yoddagesh = 0xfb39;\n t.yoddageshhebrew = 0xfb39;\n t.yodhebrew = 0x05d9;\n t.yodyodhebrew = 0x05f2;\n t.yodyodpatahhebrew = 0xfb1f;\n t.yohiragana = 0x3088;\n t.yoikorean = 0x3189;\n t.yokatakana = 0x30e8;\n t.yokatakanahalfwidth = 0xff96;\n t.yokorean = 0x315b;\n t.yosmallhiragana = 0x3087;\n t.yosmallkatakana = 0x30e7;\n t.yosmallkatakanahalfwidth = 0xff6e;\n t.yotgreek = 0x03f3;\n t.yoyaekorean = 0x3188;\n t.yoyakorean = 0x3187;\n t.yoyakthai = 0x0e22;\n t.yoyingthai = 0x0e0d;\n t.yparen = 0x24b4;\n t.ypogegrammeni = 0x037a;\n t.ypogegrammenigreekcmb = 0x0345;\n t.yr = 0x01a6;\n t.yring = 0x1e99;\n t.ysuperior = 0x02b8;\n t.ytilde = 0x1ef9;\n t.yturned = 0x028e;\n t.yuhiragana = 0x3086;\n t.yuikorean = 0x318c;\n t.yukatakana = 0x30e6;\n t.yukatakanahalfwidth = 0xff95;\n t.yukorean = 0x3160;\n t.yusbigcyrillic = 0x046b;\n t.yusbigiotifiedcyrillic = 0x046d;\n t.yuslittlecyrillic = 0x0467;\n t.yuslittleiotifiedcyrillic = 0x0469;\n t.yusmallhiragana = 0x3085;\n t.yusmallkatakana = 0x30e5;\n t.yusmallkatakanahalfwidth = 0xff6d;\n t.yuyekorean = 0x318b;\n t.yuyeokorean = 0x318a;\n t.yyabengali = 0x09df;\n t.yyadeva = 0x095f;\n t.z = 0x007a;\n t.zaarmenian = 0x0566;\n t.zacute = 0x017a;\n t.zadeva = 0x095b;\n t.zagurmukhi = 0x0a5b;\n t.zaharabic = 0x0638;\n t.zahfinalarabic = 0xfec6;\n t.zahinitialarabic = 0xfec7;\n t.zahiragana = 0x3056;\n t.zahmedialarabic = 0xfec8;\n t.zainarabic = 0x0632;\n t.zainfinalarabic = 0xfeb0;\n t.zakatakana = 0x30b6;\n t.zaqefgadolhebrew = 0x0595;\n t.zaqefqatanhebrew = 0x0594;\n t.zarqahebrew = 0x0598;\n t.zayin = 0x05d6;\n t.zayindagesh = 0xfb36;\n t.zayindageshhebrew = 0xfb36;\n t.zayinhebrew = 0x05d6;\n t.zbopomofo = 0x3117;\n t.zcaron = 0x017e;\n t.zcircle = 0x24e9;\n t.zcircumflex = 0x1e91;\n t.zcurl = 0x0291;\n t.zdot = 0x017c;\n t.zdotaccent = 0x017c;\n t.zdotbelow = 0x1e93;\n t.zecyrillic = 0x0437;\n t.zedescendercyrillic = 0x0499;\n t.zedieresiscyrillic = 0x04df;\n t.zehiragana = 0x305c;\n t.zekatakana = 0x30bc;\n t.zero = 0x0030;\n t.zeroarabic = 0x0660;\n t.zerobengali = 0x09e6;\n t.zerodeva = 0x0966;\n t.zerogujarati = 0x0ae6;\n t.zerogurmukhi = 0x0a66;\n t.zerohackarabic = 0x0660;\n t.zeroinferior = 0x2080;\n t.zeromonospace = 0xff10;\n t.zerooldstyle = 0xf730;\n t.zeropersian = 0x06f0;\n t.zerosuperior = 0x2070;\n t.zerothai = 0x0e50;\n t.zerowidthjoiner = 0xfeff;\n t.zerowidthnonjoiner = 0x200c;\n t.zerowidthspace = 0x200b;\n t.zeta = 0x03b6;\n t.zhbopomofo = 0x3113;\n t.zhearmenian = 0x056a;\n t.zhebrevecyrillic = 0x04c2;\n t.zhecyrillic = 0x0436;\n t.zhedescendercyrillic = 0x0497;\n t.zhedieresiscyrillic = 0x04dd;\n t.zihiragana = 0x3058;\n t.zikatakana = 0x30b8;\n t.zinorhebrew = 0x05ae;\n t.zlinebelow = 0x1e95;\n t.zmonospace = 0xff5a;\n t.zohiragana = 0x305e;\n t.zokatakana = 0x30be;\n t.zparen = 0x24b5;\n t.zretroflexhook = 0x0290;\n t.zstroke = 0x01b6;\n t.zuhiragana = 0x305a;\n t.zukatakana = 0x30ba;\n t[\".notdef\"] = 0x0000;\n t.angbracketleftbig = 0x2329;\n t.angbracketleftBig = 0x2329;\n t.angbracketleftbigg = 0x2329;\n t.angbracketleftBigg = 0x2329;\n t.angbracketrightBig = 0x232a;\n t.angbracketrightbig = 0x232a;\n t.angbracketrightBigg = 0x232a;\n t.angbracketrightbigg = 0x232a;\n t.arrowhookleft = 0x21aa;\n t.arrowhookright = 0x21a9;\n t.arrowlefttophalf = 0x21bc;\n t.arrowleftbothalf = 0x21bd;\n t.arrownortheast = 0x2197;\n t.arrownorthwest = 0x2196;\n t.arrowrighttophalf = 0x21c0;\n t.arrowrightbothalf = 0x21c1;\n t.arrowsoutheast = 0x2198;\n t.arrowsouthwest = 0x2199;\n t.backslashbig = 0x2216;\n t.backslashBig = 0x2216;\n t.backslashBigg = 0x2216;\n t.backslashbigg = 0x2216;\n t.bardbl = 0x2016;\n t.bracehtipdownleft = 0xfe37;\n t.bracehtipdownright = 0xfe37;\n t.bracehtipupleft = 0xfe38;\n t.bracehtipupright = 0xfe38;\n t.braceleftBig = 0x007b;\n t.braceleftbig = 0x007b;\n t.braceleftbigg = 0x007b;\n t.braceleftBigg = 0x007b;\n t.bracerightBig = 0x007d;\n t.bracerightbig = 0x007d;\n t.bracerightbigg = 0x007d;\n t.bracerightBigg = 0x007d;\n t.bracketleftbig = 0x005b;\n t.bracketleftBig = 0x005b;\n t.bracketleftbigg = 0x005b;\n t.bracketleftBigg = 0x005b;\n t.bracketrightBig = 0x005d;\n t.bracketrightbig = 0x005d;\n t.bracketrightbigg = 0x005d;\n t.bracketrightBigg = 0x005d;\n t.ceilingleftbig = 0x2308;\n t.ceilingleftBig = 0x2308;\n t.ceilingleftBigg = 0x2308;\n t.ceilingleftbigg = 0x2308;\n t.ceilingrightbig = 0x2309;\n t.ceilingrightBig = 0x2309;\n t.ceilingrightbigg = 0x2309;\n t.ceilingrightBigg = 0x2309;\n t.circledotdisplay = 0x2299;\n t.circledottext = 0x2299;\n t.circlemultiplydisplay = 0x2297;\n t.circlemultiplytext = 0x2297;\n t.circleplusdisplay = 0x2295;\n t.circleplustext = 0x2295;\n t.contintegraldisplay = 0x222e;\n t.contintegraltext = 0x222e;\n t.coproductdisplay = 0x2210;\n t.coproducttext = 0x2210;\n t.floorleftBig = 0x230a;\n t.floorleftbig = 0x230a;\n t.floorleftbigg = 0x230a;\n t.floorleftBigg = 0x230a;\n t.floorrightbig = 0x230b;\n t.floorrightBig = 0x230b;\n t.floorrightBigg = 0x230b;\n t.floorrightbigg = 0x230b;\n t.hatwide = 0x0302;\n t.hatwider = 0x0302;\n t.hatwidest = 0x0302;\n t.intercal = 0x1d40;\n t.integraldisplay = 0x222b;\n t.integraltext = 0x222b;\n t.intersectiondisplay = 0x22c2;\n t.intersectiontext = 0x22c2;\n t.logicalanddisplay = 0x2227;\n t.logicalandtext = 0x2227;\n t.logicalordisplay = 0x2228;\n t.logicalortext = 0x2228;\n t.parenleftBig = 0x0028;\n t.parenleftbig = 0x0028;\n t.parenleftBigg = 0x0028;\n t.parenleftbigg = 0x0028;\n t.parenrightBig = 0x0029;\n t.parenrightbig = 0x0029;\n t.parenrightBigg = 0x0029;\n t.parenrightbigg = 0x0029;\n t.prime = 0x2032;\n t.productdisplay = 0x220f;\n t.producttext = 0x220f;\n t.radicalbig = 0x221a;\n t.radicalBig = 0x221a;\n t.radicalBigg = 0x221a;\n t.radicalbigg = 0x221a;\n t.radicalbt = 0x221a;\n t.radicaltp = 0x221a;\n t.radicalvertex = 0x221a;\n t.slashbig = 0x002f;\n t.slashBig = 0x002f;\n t.slashBigg = 0x002f;\n t.slashbigg = 0x002f;\n t.summationdisplay = 0x2211;\n t.summationtext = 0x2211;\n t.tildewide = 0x02dc;\n t.tildewider = 0x02dc;\n t.tildewidest = 0x02dc;\n t.uniondisplay = 0x22c3;\n t.unionmultidisplay = 0x228e;\n t.unionmultitext = 0x228e;\n t.unionsqdisplay = 0x2294;\n t.unionsqtext = 0x2294;\n t.uniontext = 0x22c3;\n t.vextenddouble = 0x2225;\n t.vextendsingle = 0x2223;\n});\nconst getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n t.space = 0x0020;\n t.a1 = 0x2701;\n t.a2 = 0x2702;\n t.a202 = 0x2703;\n t.a3 = 0x2704;\n t.a4 = 0x260e;\n t.a5 = 0x2706;\n t.a119 = 0x2707;\n t.a118 = 0x2708;\n t.a117 = 0x2709;\n t.a11 = 0x261b;\n t.a12 = 0x261e;\n t.a13 = 0x270c;\n t.a14 = 0x270d;\n t.a15 = 0x270e;\n t.a16 = 0x270f;\n t.a105 = 0x2710;\n t.a17 = 0x2711;\n t.a18 = 0x2712;\n t.a19 = 0x2713;\n t.a20 = 0x2714;\n t.a21 = 0x2715;\n t.a22 = 0x2716;\n t.a23 = 0x2717;\n t.a24 = 0x2718;\n t.a25 = 0x2719;\n t.a26 = 0x271a;\n t.a27 = 0x271b;\n t.a28 = 0x271c;\n t.a6 = 0x271d;\n t.a7 = 0x271e;\n t.a8 = 0x271f;\n t.a9 = 0x2720;\n t.a10 = 0x2721;\n t.a29 = 0x2722;\n t.a30 = 0x2723;\n t.a31 = 0x2724;\n t.a32 = 0x2725;\n t.a33 = 0x2726;\n t.a34 = 0x2727;\n t.a35 = 0x2605;\n t.a36 = 0x2729;\n t.a37 = 0x272a;\n t.a38 = 0x272b;\n t.a39 = 0x272c;\n t.a40 = 0x272d;\n t.a41 = 0x272e;\n t.a42 = 0x272f;\n t.a43 = 0x2730;\n t.a44 = 0x2731;\n t.a45 = 0x2732;\n t.a46 = 0x2733;\n t.a47 = 0x2734;\n t.a48 = 0x2735;\n t.a49 = 0x2736;\n t.a50 = 0x2737;\n t.a51 = 0x2738;\n t.a52 = 0x2739;\n t.a53 = 0x273a;\n t.a54 = 0x273b;\n t.a55 = 0x273c;\n t.a56 = 0x273d;\n t.a57 = 0x273e;\n t.a58 = 0x273f;\n t.a59 = 0x2740;\n t.a60 = 0x2741;\n t.a61 = 0x2742;\n t.a62 = 0x2743;\n t.a63 = 0x2744;\n t.a64 = 0x2745;\n t.a65 = 0x2746;\n t.a66 = 0x2747;\n t.a67 = 0x2748;\n t.a68 = 0x2749;\n t.a69 = 0x274a;\n t.a70 = 0x274b;\n t.a71 = 0x25cf;\n t.a72 = 0x274d;\n t.a73 = 0x25a0;\n t.a74 = 0x274f;\n t.a203 = 0x2750;\n t.a75 = 0x2751;\n t.a204 = 0x2752;\n t.a76 = 0x25b2;\n t.a77 = 0x25bc;\n t.a78 = 0x25c6;\n t.a79 = 0x2756;\n t.a81 = 0x25d7;\n t.a82 = 0x2758;\n t.a83 = 0x2759;\n t.a84 = 0x275a;\n t.a97 = 0x275b;\n t.a98 = 0x275c;\n t.a99 = 0x275d;\n t.a100 = 0x275e;\n t.a101 = 0x2761;\n t.a102 = 0x2762;\n t.a103 = 0x2763;\n t.a104 = 0x2764;\n t.a106 = 0x2765;\n t.a107 = 0x2766;\n t.a108 = 0x2767;\n t.a112 = 0x2663;\n t.a111 = 0x2666;\n t.a110 = 0x2665;\n t.a109 = 0x2660;\n t.a120 = 0x2460;\n t.a121 = 0x2461;\n t.a122 = 0x2462;\n t.a123 = 0x2463;\n t.a124 = 0x2464;\n t.a125 = 0x2465;\n t.a126 = 0x2466;\n t.a127 = 0x2467;\n t.a128 = 0x2468;\n t.a129 = 0x2469;\n t.a130 = 0x2776;\n t.a131 = 0x2777;\n t.a132 = 0x2778;\n t.a133 = 0x2779;\n t.a134 = 0x277a;\n t.a135 = 0x277b;\n t.a136 = 0x277c;\n t.a137 = 0x277d;\n t.a138 = 0x277e;\n t.a139 = 0x277f;\n t.a140 = 0x2780;\n t.a141 = 0x2781;\n t.a142 = 0x2782;\n t.a143 = 0x2783;\n t.a144 = 0x2784;\n t.a145 = 0x2785;\n t.a146 = 0x2786;\n t.a147 = 0x2787;\n t.a148 = 0x2788;\n t.a149 = 0x2789;\n t.a150 = 0x278a;\n t.a151 = 0x278b;\n t.a152 = 0x278c;\n t.a153 = 0x278d;\n t.a154 = 0x278e;\n t.a155 = 0x278f;\n t.a156 = 0x2790;\n t.a157 = 0x2791;\n t.a158 = 0x2792;\n t.a159 = 0x2793;\n t.a160 = 0x2794;\n t.a161 = 0x2192;\n t.a163 = 0x2194;\n t.a164 = 0x2195;\n t.a196 = 0x2798;\n t.a165 = 0x2799;\n t.a192 = 0x279a;\n t.a166 = 0x279b;\n t.a167 = 0x279c;\n t.a168 = 0x279d;\n t.a169 = 0x279e;\n t.a170 = 0x279f;\n t.a171 = 0x27a0;\n t.a172 = 0x27a1;\n t.a173 = 0x27a2;\n t.a162 = 0x27a3;\n t.a174 = 0x27a4;\n t.a175 = 0x27a5;\n t.a176 = 0x27a6;\n t.a177 = 0x27a7;\n t.a178 = 0x27a8;\n t.a179 = 0x27a9;\n t.a193 = 0x27aa;\n t.a180 = 0x27ab;\n t.a199 = 0x27ac;\n t.a181 = 0x27ad;\n t.a200 = 0x27ae;\n t.a182 = 0x27af;\n t.a201 = 0x27b1;\n t.a183 = 0x27b2;\n t.a184 = 0x27b3;\n t.a197 = 0x27b4;\n t.a185 = 0x27b5;\n t.a194 = 0x27b6;\n t.a198 = 0x27b7;\n t.a186 = 0x27b8;\n t.a195 = 0x27b9;\n t.a187 = 0x27ba;\n t.a188 = 0x27bb;\n t.a189 = 0x27bc;\n t.a190 = 0x27bd;\n t.a191 = 0x27be;\n t.a89 = 0x2768;\n t.a90 = 0x2769;\n t.a93 = 0x276a;\n t.a94 = 0x276b;\n t.a91 = 0x276c;\n t.a92 = 0x276d;\n t.a205 = 0x276e;\n t.a85 = 0x276f;\n t.a206 = 0x2770;\n t.a86 = 0x2771;\n t.a87 = 0x2772;\n t.a88 = 0x2773;\n t.a95 = 0x2774;\n t.a96 = 0x2775;\n t[\".notdef\"] = 0x0000;\n});\n\n;// ./src/core/unicode.js\n\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9;\n t[63193] = 0x00a9;\n t[63720] = 0x00ae;\n t[63194] = 0x00ae;\n t[63722] = 0x2122;\n t[63195] = 0x2122;\n t[63718] = 0x23d0;\n t[63719] = 0x23af;\n t[63733] = 0x23ae;\n t[63729] = 0x23a7;\n t[63730] = 0x23a8;\n t[63731] = 0x23a9;\n t[63740] = 0x23ab;\n t[63741] = 0x23ac;\n t[63742] = 0x23ad;\n t[63726] = 0x23a1;\n t[63727] = 0x23a2;\n t[63728] = 0x23a3;\n t[63737] = 0x23a4;\n t[63738] = 0x23a5;\n t[63739] = 0x23a6;\n t[63723] = 0x239b;\n t[63724] = 0x239c;\n t[63725] = 0x239d;\n t[63734] = 0x239e;\n t[63735] = 0x239f;\n t[63736] = 0x23a0;\n});\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === 0x00ad) {\n return 0x002d;\n }\n return code;\n}\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n let unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n if (name[0] === \"u\") {\n const nameLen = name.length;\n let hexStr;\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\nconst UnicodeRanges = [[0x0000, 0x007f], [0x0080, 0x00ff], [0x0100, 0x017f], [0x0180, 0x024f], [0x0250, 0x02af, 0x1d00, 0x1d7f, 0x1d80, 0x1dbf], [0x02b0, 0x02ff, 0xa700, 0xa71f], [0x0300, 0x036f, 0x1dc0, 0x1dff], [0x0370, 0x03ff], [0x2c80, 0x2cff], [0x0400, 0x04ff, 0x0500, 0x052f, 0x2de0, 0x2dff, 0xa640, 0xa69f], [0x0530, 0x058f], [0x0590, 0x05ff], [0xa500, 0xa63f], [0x0600, 0x06ff, 0x0750, 0x077f], [0x07c0, 0x07ff], [0x0900, 0x097f], [0x0980, 0x09ff], [0x0a00, 0x0a7f], [0x0a80, 0x0aff], [0x0b00, 0x0b7f], [0x0b80, 0x0bff], [0x0c00, 0x0c7f], [0x0c80, 0x0cff], [0x0d00, 0x0d7f], [0x0e00, 0x0e7f], [0x0e80, 0x0eff], [0x10a0, 0x10ff, 0x2d00, 0x2d2f], [0x1b00, 0x1b7f], [0x1100, 0x11ff], [0x1e00, 0x1eff, 0x2c60, 0x2c7f, 0xa720, 0xa7ff], [0x1f00, 0x1fff], [0x2000, 0x206f, 0x2e00, 0x2e7f], [0x2070, 0x209f], [0x20a0, 0x20cf], [0x20d0, 0x20ff], [0x2100, 0x214f], [0x2150, 0x218f], [0x2190, 0x21ff, 0x27f0, 0x27ff, 0x2900, 0x297f, 0x2b00, 0x2bff], [0x2200, 0x22ff, 0x2a00, 0x2aff, 0x27c0, 0x27ef, 0x2980, 0x29ff], [0x2300, 0x23ff], [0x2400, 0x243f], [0x2440, 0x245f], [0x2460, 0x24ff], [0x2500, 0x257f], [0x2580, 0x259f], [0x25a0, 0x25ff], [0x2600, 0x26ff], [0x2700, 0x27bf], [0x3000, 0x303f], [0x3040, 0x309f], [0x30a0, 0x30ff, 0x31f0, 0x31ff], [0x3100, 0x312f, 0x31a0, 0x31bf], [0x3130, 0x318f], [0xa840, 0xa87f], [0x3200, 0x32ff], [0x3300, 0x33ff], [0xac00, 0xd7af], [0xd800, 0xdfff], [0x10900, 0x1091f], [0x4e00, 0x9fff, 0x2e80, 0x2eff, 0x2f00, 0x2fdf, 0x2ff0, 0x2fff, 0x3400, 0x4dbf, 0x20000, 0x2a6df, 0x3190, 0x319f], [0xe000, 0xf8ff], [0x31c0, 0x31ef, 0xf900, 0xfaff, 0x2f800, 0x2fa1f], [0xfb00, 0xfb4f], [0xfb50, 0xfdff], [0xfe20, 0xfe2f], [0xfe10, 0xfe1f], [0xfe50, 0xfe6f], [0xfe70, 0xfeff], [0xff00, 0xffef], [0xfff0, 0xffff], [0x0f00, 0x0fff], [0x0700, 0x074f], [0x0780, 0x07bf], [0x0d80, 0x0dff], [0x1000, 0x109f], [0x1200, 0x137f, 0x1380, 0x139f, 0x2d80, 0x2ddf], [0x13a0, 0x13ff], [0x1400, 0x167f], [0x1680, 0x169f], [0x16a0, 0x16ff], [0x1780, 0x17ff], [0x1800, 0x18af], [0x2800, 0x28ff], [0xa000, 0xa48f], [0x1700, 0x171f, 0x1720, 0x173f, 0x1740, 0x175f, 0x1760, 0x177f], [0x10300, 0x1032f], [0x10330, 0x1034f], [0x10400, 0x1044f], [0x1d000, 0x1d0ff, 0x1d100, 0x1d1ff, 0x1d200, 0x1d24f], [0x1d400, 0x1d7ff], [0xff000, 0xffffd], [0xfe00, 0xfe0f, 0xe0100, 0xe01ef], [0xe0000, 0xe007f], [0x1900, 0x194f], [0x1950, 0x197f], [0x1980, 0x19df], [0x1a00, 0x1a1f], [0x2c00, 0x2c5f], [0x2d30, 0x2d7f], [0x4dc0, 0x4dff], [0xa800, 0xa82f], [0x10000, 0x1007f, 0x10080, 0x100ff, 0x10100, 0x1013f], [0x10140, 0x1018f], [0x10380, 0x1039f], [0x103a0, 0x103df], [0x10450, 0x1047f], [0x10480, 0x104af], [0x10800, 0x1083f], [0x10a00, 0x10a5f], [0x1d300, 0x1d35f], [0x12000, 0x123ff, 0x12400, 0x1247f], [0x1d360, 0x1d37f], [0x1b80, 0x1bbf], [0x1c00, 0x1c4f], [0x1c50, 0x1c7f], [0xa880, 0xa8df], [0xa900, 0xa92f], [0xa930, 0xa95f], [0xaa00, 0xaa5f], [0x10190, 0x101cf], [0x101d0, 0x101ff], [0x102a0, 0x102df, 0x10280, 0x1029f, 0x10920, 0x1093f], [0x1f030, 0x1f09f, 0x1f000, 0x1f02f]];\nfunction getUnicodeRangeFor(value, lastPosition = -1) {\n if (lastPosition !== -1) {\n const range = UnicodeRanges[lastPosition];\n for (let i = 0, ii = range.length; i < ii; i += 2) {\n if (value >= range[i] && value <= range[i + 1]) {\n return lastPosition;\n }\n }\n }\n for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n const range = UnicodeRanges[i];\n for (let j = 0, jj = range.length; j < jj; j += 2) {\n if (value >= range[j] && value <= range[j + 1]) {\n return i;\n }\n }\n }\n return -1;\n}\nconst SpecialCharRegExp = /^(\\s)|(\\p{Mn})|(\\p{Cf})$/u;\nconst CategoryCache = new Map();\nfunction getCharUnicodeCategory(char) {\n const cachedCategory = CategoryCache.get(char);\n if (cachedCategory) {\n return cachedCategory;\n }\n const groups = char.match(SpecialCharRegExp);\n const category = {\n isWhitespace: !!groups?.[1],\n isZeroWidthDiacritic: !!groups?.[2],\n isInvisibleFormatMark: !!groups?.[3]\n };\n CategoryCache.set(char, category);\n return category;\n}\nfunction clearUnicodeCaches() {\n CategoryCache.clear();\n}\n\n;// ./src/core/fonts_utils.js\n\n\n\n\n\nconst SEAC_ANALYSIS_ENABLED = true;\nconst FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144\n};\nconst 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\"];\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n if (unicode !== -1) {\n for (const key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n info(\"Unable to recover a standard glyph name for: \" + name);\n return name;\n}\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n const charCodeToGlyphId = Object.create(null);\n let glyphId, charCode, baseEncoding;\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n if (properties.isInternalFont) {\n baseEncoding = builtInEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n } else if (properties.baseEncodingName) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n } else if (isSymbolicFont) {\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n baseEncoding = StandardEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n }\n const differences = properties.differences;\n let glyphsUnicodeMap;\n if (differences) {\n for (charCode in differences) {\n const glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n if (glyphId === -1) {\n glyphsUnicodeMap ??= getGlyphsUnicode();\n const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n }\n return charCodeToGlyphId;\n}\nfunction normalizeFontName(name) {\n return name.replaceAll(/[,_]/g, \"-\").replaceAll(/\\s/g, \"\");\n}\nconst getVerticalPresentationForm = getLookupTableFactory(t => {\n t[0x2013] = 0xfe32;\n t[0x2014] = 0xfe31;\n t[0x2025] = 0xfe30;\n t[0x2026] = 0xfe19;\n t[0x3001] = 0xfe11;\n t[0x3002] = 0xfe12;\n t[0x3008] = 0xfe3f;\n t[0x3009] = 0xfe40;\n t[0x300a] = 0xfe3d;\n t[0x300b] = 0xfe3e;\n t[0x300c] = 0xfe41;\n t[0x300d] = 0xfe42;\n t[0x300e] = 0xfe43;\n t[0x300f] = 0xfe44;\n t[0x3010] = 0xfe3b;\n t[0x3011] = 0xfe3c;\n t[0x3014] = 0xfe39;\n t[0x3015] = 0xfe3a;\n t[0x3016] = 0xfe17;\n t[0x3017] = 0xfe18;\n t[0xfe4f] = 0xfe34;\n t[0xff01] = 0xfe15;\n t[0xff08] = 0xfe35;\n t[0xff09] = 0xfe36;\n t[0xff0c] = 0xfe10;\n t[0xff1a] = 0xfe13;\n t[0xff1b] = 0xfe14;\n t[0xff1f] = 0xfe16;\n t[0xff3b] = 0xfe47;\n t[0xff3d] = 0xfe48;\n t[0xff3f] = 0xfe33;\n t[0xff5b] = 0xfe37;\n t[0xff5d] = 0xfe38;\n});\nconst MAX_SIZE_TO_COMPILE = 1000;\nfunction compileType3Glyph({\n data: img,\n width,\n height\n}) {\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n const points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n const data = new Uint8Array(lineSize * height);\n let pos = 0;\n for (const elem of img) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const pathBuf = [];\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = new DOMMatrix().scaleSelf(1 / width, -1 / height).translateSelf(0, -height);\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n let x = p % width1;\n let y = i;\n pathBuf.push(DrawOPS.moveTo, a * x + c * y + e, b * x + d * y + f);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n x = p % width1;\n y = p / width1 | 0;\n pathBuf.push(DrawOPS.lineTo, a * x + c * y + e, b * x + d * y + f);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n return [OPS.rawFillPath, [new Float32Array(pathBuf)], new Float32Array([0, 0, width, height])];\n}\n\n;// ./src/core/charsets.js\nconst 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\"];\nconst 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\"];\nconst 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\"];\n\n;// ./src/core/data_builder.js\n\n\nclass DataBuilder {\n #buf;\n #bufLength = 1024;\n #hasExactLength = false;\n #pos = 0;\n #view;\n constructor({\n exactLength = 0,\n minLength = 0\n }) {\n this.#hasExactLength = !!exactLength;\n this.#initBuf(exactLength || minLength);\n }\n #initBuf(minLength) {\n if (this.#hasExactLength) {\n this.#bufLength = minLength;\n } else {\n while (this.#bufLength < minLength) {\n this.#bufLength *= 2;\n }\n }\n const newBuf = new Uint8Array(this.#bufLength);\n if (this.#buf) {\n newBuf.set(this.#buf, 0);\n }\n this.#buf = newBuf;\n this.#view = new DataView(newBuf.buffer);\n }\n get data() {\n return this.#buf.subarray(0, this.#pos);\n }\n get length() {\n return this.#pos;\n }\n skip(n) {\n this.#pos += n;\n }\n setArray(arr) {\n const newPos = this.#pos + arr.length;\n if (!this.#hasExactLength && newPos > this.#bufLength) {\n this.#initBuf(newPos);\n }\n this.#buf.set(arr, this.#pos);\n this.#pos = newPos;\n }\n setInt16(val) {\n const newPos = this.#pos + 2;\n if (!this.#hasExactLength && newPos > this.#bufLength) {\n this.#initBuf(newPos);\n }\n this.#view.setInt16(this.#pos, val);\n this.#pos = newPos;\n }\n setSafeInt16(val) {\n const newPos = this.#pos + 2;\n if (!this.#hasExactLength && newPos > this.#bufLength) {\n this.#initBuf(newPos);\n }\n this.#view.setInt16(this.#pos, MathClamp(val, -0x8000, 0x7fff));\n this.#pos = newPos;\n }\n setInt32(val) {\n const newPos = this.#pos + 4;\n if (!this.#hasExactLength && newPos > this.#bufLength) {\n this.#initBuf(newPos);\n }\n this.#view.setInt32(this.#pos, val);\n this.#pos = newPos;\n }\n}\n\n;// ./src/core/cff_parser.js\n\n\n\n\n\nconst MAX_SUBR_NESTING = 10;\nfunction looksLikeUnsigned16BitNegative(coord) {\n return coord > 0x7fff && coord <= 0xffff;\n}\nfunction recoverSigned16BitBBox(bbox, onlyLowerLeft = false) {\n return Util.normalizeRect(bbox.map((coord, i) => (!onlyLowerLeft || i < 2) && looksLikeUnsigned16BitNegative(coord) ? coord - 0x10000 : coord));\n}\nconst CFFStandardStrings = [\".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\"];\nconst NUM_STANDARD_CFF_STRINGS = 391;\nconst DEFAULT_BLUE_SCALE = 0.039625;\nconst DEFAULT_BLUE_SHIFT = 7;\nconst DEFAULT_BLUE_FUZZ = 1;\nconst DEFAULT_EXPANSION_FACTOR = 0.06;\nconst CharstringValidationData = [null, {\n id: \"hstem\",\n min: 2,\n stackClearing: true,\n stem: true\n}, null, {\n id: \"vstem\",\n min: 2,\n stackClearing: true,\n stem: true\n}, {\n id: \"vmoveto\",\n min: 1,\n stackClearing: true\n}, {\n id: \"rlineto\",\n min: 2,\n resetStack: true\n}, {\n id: \"hlineto\",\n min: 1,\n resetStack: true\n}, {\n id: \"vlineto\",\n min: 1,\n resetStack: true\n}, {\n id: \"rrcurveto\",\n min: 6,\n resetStack: true\n}, null, {\n id: \"callsubr\",\n min: 1\n}, {\n id: \"return\",\n min: 0\n}, null, null, {\n id: \"endchar\",\n min: 0,\n stackClearing: true\n}, null, null, null, {\n id: \"hstemhm\",\n min: 2,\n stackClearing: true,\n stem: true\n}, {\n id: \"hintmask\",\n min: 0,\n stackClearing: true\n}, {\n id: \"cntrmask\",\n min: 0,\n stackClearing: true\n}, {\n id: \"rmoveto\",\n min: 2,\n stackClearing: true\n}, {\n id: \"hmoveto\",\n min: 1,\n stackClearing: true\n}, {\n id: \"vstemhm\",\n min: 2,\n stackClearing: true,\n stem: true\n}, {\n id: \"rcurveline\",\n min: 8,\n resetStack: true\n}, {\n id: \"rlinecurve\",\n min: 8,\n resetStack: true\n}, {\n id: \"vvcurveto\",\n min: 4,\n resetStack: true\n}, {\n id: \"hhcurveto\",\n min: 4,\n resetStack: true\n}, null, {\n id: \"callgsubr\",\n min: 1\n}, {\n id: \"vhcurveto\",\n min: 4,\n resetStack: true\n}, {\n id: \"hvcurveto\",\n min: 4,\n resetStack: true\n}];\nconst CharstringValidationData12 = [null, null, null, {\n id: \"and\",\n min: 2,\n stackDelta: -1\n}, {\n id: \"or\",\n min: 2,\n stackDelta: -1\n}, {\n id: \"not\",\n min: 1,\n stackDelta: 0\n}, null, null, null, {\n id: \"abs\",\n min: 1,\n stackDelta: 0\n}, {\n id: \"add\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n }\n}, {\n id: \"sub\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n }\n}, {\n id: \"div\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n }\n}, null, {\n id: \"neg\",\n min: 1,\n stackDelta: 0,\n stackFn(stack, index) {\n stack[index - 1] = -stack[index - 1];\n }\n}, {\n id: \"eq\",\n min: 2,\n stackDelta: -1\n}, null, null, {\n id: \"drop\",\n min: 1,\n stackDelta: -1\n}, null, {\n id: \"put\",\n min: 2,\n stackDelta: -2\n}, {\n id: \"get\",\n min: 1,\n stackDelta: 0\n}, {\n id: \"ifelse\",\n min: 4,\n stackDelta: -3\n}, {\n id: \"random\",\n min: 0,\n stackDelta: 1\n}, {\n id: \"mul\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n }\n}, null, {\n id: \"sqrt\",\n min: 1,\n stackDelta: 0\n}, {\n id: \"dup\",\n min: 1,\n stackDelta: 1\n}, {\n id: \"exch\",\n min: 2,\n stackDelta: 0\n}, {\n id: \"index\",\n min: 2,\n stackDelta: 0\n}, {\n id: \"roll\",\n min: 3,\n stackDelta: -2\n}, null, null, null, {\n id: \"hflex\",\n min: 7,\n resetStack: true\n}, {\n id: \"flex\",\n min: 13,\n resetStack: true\n}, {\n id: \"hflex1\",\n min: 9,\n resetStack: true\n}, {\n id: \"flex1\",\n min: 11,\n resetStack: true\n}];\nclass CFFParser {\n constructor(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n parse() {\n const properties = this.properties;\n const cff = new CFF(this.bytes.length);\n this.cff = cff;\n const header = this.parseHeader();\n const nameIndex = this.parseIndex(header.endPos);\n const topDictIndex = this.parseIndex(nameIndex.endPos);\n const stringIndex = this.parseIndex(topDictIndex.endPos);\n const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n cff.header = header.obj;\n cff.names = this.parseNameIndex(nameIndex.obj);\n cff.strings = this.parseStringIndex(stringIndex.obj);\n cff.topDict = topDict;\n cff.globalSubrIndex = globalSubrIndex.obj;\n this.parsePrivateDict(cff.topDict);\n cff.isCIDFont = topDict.hasName(\"ROS\");\n const charStringOffset = topDict.getByName(\"CharStrings\");\n const charStringIndex = this.parseIndex(charStringOffset).obj;\n cff.charStringCount = charStringIndex.count;\n const fontMatrix = topDict.getByName(\"FontMatrix\");\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n let fontBBox = topDict.getByName(\"FontBBox\");\n const descriptorBBox = properties.bbox?.some(coord => coord !== 0) ? recoverSigned16BitBBox(properties.bbox) : null;\n const cffBBoxHasUnsignedLowerLeft = fontBBox?.slice(0, 2).some(looksLikeUnsigned16BitNegative);\n const cffBBoxHasUnsignedCoords = fontBBox?.some(looksLikeUnsigned16BitNegative);\n if (fontBBox?.every(coord => coord === 0) && descriptorBBox) {\n fontBBox = descriptorBBox;\n topDict.setByName(\"FontBBox\", fontBBox);\n } else if (cffBBoxHasUnsignedCoords) {\n const recoveredFontBBox = recoverSigned16BitBBox(fontBBox);\n const descriptorCorroborates = descriptorBBox && properties.bbox.some(coord => coord < 0) && !properties.bbox.some(looksLikeUnsigned16BitNegative) && isArrayEqual(recoveredFontBBox, descriptorBBox);\n if (descriptorCorroborates || cffBBoxHasUnsignedLowerLeft) {\n fontBBox = descriptorCorroborates ? recoveredFontBBox : recoverSigned16BitBBox(fontBBox, true);\n topDict.setByName(\"FontBBox\", fontBBox);\n }\n }\n if (fontBBox?.some(coord => coord !== 0)) {\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n let charset, encoding;\n if (cff.isCIDFont) {\n const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n const dictRaw = fdArrayIndex.get(i);\n const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n encoding = null;\n charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, true);\n cff.fdSelect = this.parseFDSelect(topDict.getByName(\"FDSelect\"), charStringIndex.count);\n } else {\n charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, false);\n encoding = this.parseEncoding(topDict.getByName(\"Encoding\"), properties, cff.strings, charset.charset);\n }\n cff.charset = charset;\n cff.encoding = encoding;\n const charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n return cff;\n }\n parseHeader() {\n let bytes = this.bytes;\n const bytesLength = bytes.length;\n let offset = 0;\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n if (offset >= bytesLength) {\n throw new FormatError(\"Invalid CFF header\");\n }\n if (offset !== 0) {\n info(\"cff data is shifted\");\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n const major = bytes[0];\n const minor = bytes[1];\n const hdrSize = bytes[2];\n const offSize = bytes[3];\n const header = new CFFHeader(major, minor, hdrSize, offSize);\n return {\n obj: header,\n endPos: hdrSize\n };\n }\n parseDict(dict) {\n const view = new DataView(dict.buffer, dict.byteOffset, dict.bytesLength);\n let pos = 0;\n function parseOperand() {\n let value = dict[pos++];\n if (value === 30) {\n return parseFloatOperand();\n } else if (value === 28) {\n value = view.getInt16(pos);\n pos += 2;\n return value;\n } else if (value === 29) {\n value = view.getInt32(pos);\n pos += 4;\n return value;\n } else if (value >= 32 && value <= 246) {\n return value - 139;\n } else if (value >= 247 && value <= 250) {\n return (value - 247) * 256 + dict[pos++] + 108;\n } else if (value >= 251 && value <= 254) {\n return -((value - 251) * 256) - dict[pos++] - 108;\n }\n warn(`CFFParser.parseDict: \"${value}\" is a reserved command.`);\n return NaN;\n }\n function parseFloatOperand() {\n let str = \"\";\n const eof = 15;\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n const length = dict.length;\n while (pos < length) {\n const b = dict[pos++];\n const b1 = b >> 4;\n const b2 = b & 15;\n if (b1 === eof) {\n break;\n }\n str += lookup[b1];\n if (b2 === eof) {\n break;\n }\n str += lookup[b2];\n }\n return parseFloat(str);\n }\n let operands = [];\n const entries = [];\n pos = 0;\n const end = dict.length;\n while (pos < end) {\n let b = dict[pos];\n if (b <= 21) {\n if (b === 12) {\n b = b << 8 | dict[++pos];\n }\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n return entries;\n }\n parseIndex(pos) {\n const cffIndex = new CFFIndex();\n const bytes = this.bytes;\n const count = bytes[pos++] << 8 | bytes[pos++];\n const offsets = [];\n let end = pos;\n let i, ii;\n if (count !== 0) {\n const offsetSize = bytes[pos++];\n const startPos = pos + (count + 1) * offsetSize - 1;\n for (i = 0, ii = count + 1; i < ii; ++i) {\n let offset = 0;\n for (let j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n offsets.push(startPos + offset);\n }\n end = offsets[count];\n }\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n const offsetStart = offsets[i];\n const offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n return {\n obj: cffIndex,\n endPos: end\n };\n }\n parseNameIndex(index) {\n const names = [];\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const name = index.get(i);\n names.push(bytesToString(name));\n }\n return names;\n }\n parseStringIndex(index) {\n const strings = new CFFStrings();\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const data = index.get(i);\n strings.add(bytesToString(data));\n }\n return strings;\n }\n createDict(Type, dict, strings) {\n const cffDict = new Type(strings);\n for (const [key, value] of dict) {\n cffDict.setByKey(key, value);\n }\n return cffDict;\n }\n parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n const view = new DataView(data.buffer, data.byteOffset, data.bytesLength);\n let stackSize = state.stackSize;\n const stack = state.stack;\n let length = data.length;\n for (let j = 0; j < length;) {\n const value = data[j++];\n let validationCommand = null;\n if (value === 12) {\n const q = data[j++];\n if (q === 0) {\n data[j - 2] = 139;\n data[j - 1] = 22;\n stackSize = 0;\n } else {\n validationCommand = CharstringValidationData12[q];\n }\n } else if (value === 28) {\n stack[stackSize] = view.getInt16(j);\n j += 2;\n stackSize++;\n } else if (value === 14) {\n if (stackSize >= 4) {\n stackSize -= 4;\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) {\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n stack[stackSize] = view.getInt32(j) / 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n if (state.hints === 0) {\n data.copyWithin(j - 1, j, -1);\n j -= 1;\n length -= 1;\n continue;\n }\n j += state.hints + 7 >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n const subrsIndex = value === 10 ? localSubrIndex : globalSubrIndex;\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n warn(\"Missing subrsIndex for \" + validationCommand.id);\n return false;\n }\n let bias = 32768;\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n const subrNumber = stack[--stackSize] + bias;\n if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {\n validationCommand = CharstringValidationData[value];\n warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n return false;\n }\n state.stackSize = stackSize;\n state.callDepth++;\n const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);\n if (!valid) {\n return false;\n }\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else if (value === 0 && j === data.length) {\n data[j - 1] = 14;\n validationCommand = CharstringValidationData[14];\n } else if (value === 9) {\n data.copyWithin(j - 1, j, -1);\n j -= 1;\n length -= 1;\n continue;\n } else {\n validationCommand = CharstringValidationData[value];\n }\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n if (value === 3 || value === 23) {\n state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\n warn(\"CFF stem hints are in wrong order\");\n data[j - 1] = value === 1 ? 3 : 23;\n }\n }\n if (stackSize < validationCommand.min) {\n warn(\"Not enough parameters for \" + validationCommand.id + \"; actual: \" + stackSize + \", expected: \" + validationCommand.min);\n if (stackSize === 0) {\n data[j - 1] = 14;\n return true;\n }\n return false;\n }\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n stackSize -= validationCommand.min;\n if (stackSize >= 2 && validationCommand.stem) {\n stackSize %= 2;\n } else if (stackSize > 1) {\n warn(\"Found too many parameters for stack-clearing command\");\n }\n if (stackSize > 0) {\n state.width = stack[stackSize - 1];\n }\n }\n if (\"stackDelta\" in validationCommand) {\n if (\"stackFn\" in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\n stackSize += validationCommand.stackDelta;\n } else if (validationCommand.stackClearing || validationCommand.resetStack) {\n stackSize = 0;\n }\n }\n }\n if (length < data.length) {\n data.fill(14, length);\n }\n state.stackSize = stackSize;\n return true;\n }\n parseCharStrings({\n charStrings,\n localSubrIndex,\n globalSubrIndex,\n fdSelect,\n fdArray,\n privateDict\n }) {\n const seacs = [];\n const widths = [];\n const count = charStrings.count;\n for (let i = 0; i < count; i++) {\n const charstring = charStrings.get(i);\n const state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n hasVStems: false\n };\n let valid = true;\n let localSubrToUse = null;\n let privateDictToUse = privateDict;\n if (fdSelect && fdArray.length) {\n const fdIndex = fdSelect.getFDIndex(i);\n if (fdIndex === -1) {\n warn(\"Glyph index is not in fd select.\");\n valid = false;\n }\n if (fdIndex >= fdArray.length) {\n warn(\"Invalid fd index for glyph index.\");\n valid = false;\n }\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n valid &&= this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);\n if (state.width !== null) {\n const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n widths[i] = nominalWidth + state.width;\n } else {\n const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n widths[i] = defaultWidth;\n }\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n if (!valid) {\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n return {\n charStrings,\n seacs,\n widths\n };\n }\n emptyPrivateDictionary(parentDict) {\n const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n }\n parsePrivateDict(parentDict) {\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const privateOffset = parentDict.getByName(\"Private\");\n if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName(\"Private\");\n return;\n }\n const size = privateOffset[0];\n const offset = privateOffset[1];\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n if (offset + size > this.bytes.length) {\n throw new FormatError(\"CFF Private DICT extends past end of font\");\n }\n const privateDictEnd = offset + size;\n const dictData = this.bytes.subarray(offset, privateDictEnd);\n const dict = this.parseDict(dictData);\n const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);\n parentDict.privateDict = privateDict;\n const blueScale = privateDict.getByName(\"BlueScale\");\n const blueShift = privateDict.getByName(\"BlueShift\");\n const blueFuzz = privateDict.getByName(\"BlueFuzz\");\n const expansionFactor = privateDict.getByName(\"ExpansionFactor\");\n if (blueScale === 0 && blueShift === 0 && blueFuzz === 0 && expansionFactor === 0) {\n privateDict.setByName(\"BlueScale\", DEFAULT_BLUE_SCALE);\n privateDict.setByName(\"BlueShift\", DEFAULT_BLUE_SHIFT);\n privateDict.setByName(\"BlueFuzz\", DEFAULT_BLUE_FUZZ);\n }\n if (expansionFactor === 0) {\n privateDict.setByName(\"ExpansionFactor\", DEFAULT_EXPANSION_FACTOR);\n }\n if (blueScale > 0) {\n let maxZoneHeight = 0;\n for (const zones of [privateDict.getByName(\"BlueValues\"), privateDict.getByName(\"OtherBlues\")]) {\n if (!zones) {\n continue;\n }\n for (let i = 1; i < zones.length; i += 2) {\n if (zones[i] > maxZoneHeight) {\n maxZoneHeight = zones[i];\n }\n }\n }\n if (maxZoneHeight > 0) {\n const PRECISION = 1e5;\n const lowerBound = 0.5 / maxZoneHeight;\n const minBlueScale = lowerBound <= DEFAULT_BLUE_SCALE ? Math.ceil(lowerBound * PRECISION) / PRECISION : -Infinity;\n const maxBlueScale = Math.floor(PRECISION / maxZoneHeight) / PRECISION;\n const clamped = MathClamp(blueScale, minBlueScale, maxBlueScale);\n if (clamped !== blueScale) {\n privateDict.setByName(\"BlueScale\", clamped);\n }\n }\n }\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n const subrsOffset = privateDict.getByName(\"Subrs\");\n const relativeOffset = offset + subrsOffset;\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n }\n parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, ISOAdobeCharset);\n } else if (pos === 1) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, ExpertCharset);\n } else if (pos === 2) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, ExpertSubsetCharset);\n }\n const {\n bytes\n } = this;\n const format = bytes[pos++];\n const charset = [cid ? 0 : \".notdef\"];\n let id, count, i;\n length -= 1;\n switch (format) {\n case 0:\n for (i = 0; i < length; i++) {\n id = bytes[pos++] << 8 | bytes[pos++];\n charset.push(cid ? id : strings.get(id));\n }\n break;\n case 1:\n while (charset.length <= length) {\n id = bytes[pos++] << 8 | bytes[pos++];\n count = bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n case 2:\n while (charset.length <= length) {\n id = bytes[pos++] << 8 | bytes[pos++];\n count = bytes[pos++] << 8 | bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n default:\n throw new FormatError(\"Unknown charset format\");\n }\n return new CFFCharset(false, format, charset);\n }\n parseEncoding(pos, properties, strings, charset) {\n const encoding = Object.create(null);\n const bytes = this.bytes;\n let predefined = false;\n let format, i, ii;\n let raw = null;\n function readSupplement() {\n const supplementsCount = bytes[pos++];\n for (i = 0; i < supplementsCount; i++) {\n const code = bytes[pos++];\n const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n for (i = 0, ii = charset.length; i < ii; i++) {\n const index = baseEncoding.indexOf(charset[i]);\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n const dataStart = pos;\n format = bytes[pos++];\n switch (format & 0x7f) {\n case 0:\n const glyphsCount = bytes[pos++];\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n break;\n case 1:\n const rangesCount = bytes[pos++];\n let gid = 1;\n for (i = 0; i < rangesCount; i++) {\n const start = bytes[pos++];\n const left = bytes[pos++];\n for (let j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n break;\n default:\n throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n const dataEnd = pos;\n if (format & 0x80) {\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n raw = bytes.subarray(dataStart, dataEnd);\n }\n format &= 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n }\n parseFDSelect(pos, length) {\n const bytes = this.bytes;\n const format = bytes[pos++];\n const fdSelect = [];\n let i;\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n const id = bytes[pos++];\n fdSelect.push(id);\n }\n break;\n case 3:\n const rangesCount = bytes[pos++] << 8 | bytes[pos++];\n for (i = 0; i < rangesCount; ++i) {\n let first = bytes[pos++] << 8 | bytes[pos++];\n if (i === 0 && first !== 0) {\n warn(\"parseFDSelect: The first range must have a first GID of 0\" + \" -- trying to recover.\");\n first = 0;\n }\n const fdIndex = bytes[pos++];\n const next = bytes[pos] << 8 | bytes[pos + 1];\n for (let j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n pos += 2;\n break;\n default:\n throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n }\n if (fdSelect.length !== length) {\n throw new FormatError(\"parseFDSelect: Invalid font data.\");\n }\n return new CFFFDSelect(format, fdSelect);\n }\n}\nclass CFF {\n header = null;\n names = [];\n topDict = null;\n strings = new CFFStrings();\n globalSubrIndex = null;\n encoding = null;\n charset = null;\n charStrings = null;\n fdArray = [];\n fdSelect = null;\n isCIDFont = false;\n charStringCount = 0;\n constructor(rawFileLength = 0) {\n this.rawFileLength = rawFileLength;\n }\n duplicateFirstGlyph() {\n if (this.charStrings.count >= 65535) {\n warn(\"Not enough space in charstrings to duplicate first glyph.\");\n return;\n }\n const glyphZero = this.charStrings.get(0);\n this.charStrings.add(glyphZero);\n if (this.isCIDFont) {\n this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n }\n }\n hasGlyphId(id) {\n if (id < 0 || id >= this.charStrings.count) {\n return false;\n }\n const glyph = this.charStrings.get(id);\n return glyph.length > 0;\n }\n}\nclass CFFHeader {\n constructor(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n}\nclass CFFStrings {\n strings = [];\n get(index) {\n if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n return CFFStandardStrings[index];\n }\n if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n }\n return CFFStandardStrings[0];\n }\n getSID(str) {\n let index = CFFStandardStrings.indexOf(str);\n if (index !== -1) {\n return index;\n }\n index = this.strings.indexOf(str);\n if (index !== -1) {\n return index + NUM_STANDARD_CFF_STRINGS;\n }\n return -1;\n }\n add(value) {\n this.strings.push(value);\n }\n get count() {\n return this.strings.length;\n }\n}\nclass CFFIndex {\n objects = [];\n length = 0;\n add(data) {\n this.length += data.length;\n this.objects.push(data);\n }\n set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n }\n get(index) {\n return this.objects[index];\n }\n get count() {\n return this.objects.length;\n }\n}\nclass CFFDict {\n constructor(tables, strings) {\n this.keyToNameMap = tables.keyToNameMap;\n this.nameToKeyMap = tables.nameToKeyMap;\n this.defaults = tables.defaults;\n this.types = tables.types;\n this.opcodes = tables.opcodes;\n this.order = tables.order;\n this.strings = strings;\n this.values = Object.create(null);\n }\n setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n if (value.length === 0) {\n return true;\n }\n for (const val of value) {\n if (isNaN(val)) {\n warn(`Invalid CFFDict value: \"${value}\" for key \"${key}\".`);\n return true;\n }\n }\n const type = this.types[key];\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n this.values[key] = value;\n return true;\n }\n setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name \"${name}\"`);\n }\n this.values[this.nameToKeyMap[name]] = value;\n }\n hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n }\n getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name ${name}\"`);\n }\n const key = this.nameToKeyMap[name];\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n return this.values[key];\n }\n removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n static createTables(layout) {\n const tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: []\n };\n for (const entry of layout) {\n const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];\n tables.keyToNameMap[key] = entry[1];\n tables.nameToKeyMap[entry[1]] = key;\n tables.types[key] = entry[2];\n tables.defaults[key] = entry[3];\n tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n tables.order.push(key);\n }\n return tables;\n }\n}\nconst CFFTopDictLayout = [[[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\"], [0.001, 0, 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]];\nclass CFFTopDict extends CFFDict {\n static get tables() {\n return shadow(this, \"tables\", this.createTables(CFFTopDictLayout));\n }\n constructor(strings) {\n super(CFFTopDict.tables, strings);\n this.privateDict = null;\n }\n}\nconst CFFPrivateDictLayout = [[6, \"BlueValues\", \"delta\", null], [7, \"OtherBlues\", \"delta\", null], [8, \"FamilyBlues\", \"delta\", null], [9, \"FamilyOtherBlues\", \"delta\", null], [[12, 9], \"BlueScale\", \"num\", DEFAULT_BLUE_SCALE], [[12, 10], \"BlueShift\", \"num\", DEFAULT_BLUE_SHIFT], [[12, 11], \"BlueFuzz\", \"num\", DEFAULT_BLUE_FUZZ], [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\", DEFAULT_EXPANSION_FACTOR], [[12, 19], \"initialRandomSeed\", \"num\", 0], [20, \"defaultWidthX\", \"num\", 0], [21, \"nominalWidthX\", \"num\", 0], [19, \"Subrs\", \"offset\", null]];\nclass CFFPrivateDict extends CFFDict {\n static get tables() {\n return shadow(this, \"tables\", this.createTables(CFFPrivateDictLayout));\n }\n constructor(strings) {\n super(CFFPrivateDict.tables, strings);\n this.subrsIndex = null;\n }\n}\nconst CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2\n};\nclass CFFCharset {\n constructor(predefined, format, charset) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n }\n}\nclass CFFEncoding {\n constructor(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n}\nclass CFFFDSelect {\n constructor(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n getFDIndex(glyphIndex) {\n return glyphIndex < 0 || glyphIndex >= this.fdSelect.length ? -1 : this.fdSelect[glyphIndex];\n }\n}\nclass CFFOffsetTracker {\n offsets = Object.create(null);\n isTracking(key) {\n return key in this.offsets;\n }\n track(key, location) {\n if (key in this.offsets) {\n throw new FormatError(`Already tracking location of ${key}`);\n }\n this.offsets[key] = location;\n }\n offset(value) {\n for (const key in this.offsets) {\n this.offsets[key] += value;\n }\n }\n setEntryLocation(key, values, output) {\n if (!(key in this.offsets)) {\n throw new FormatError(`Not tracking location of ${key}`);\n }\n const data = output.data;\n const dataOffset = this.offsets[key];\n const size = 5;\n for (let i = 0, ii = values.length; i < ii; ++i) {\n const offset0 = i * size + dataOffset;\n const offset1 = offset0 + 1;\n const offset2 = offset0 + 2;\n const offset3 = offset0 + 3;\n const offset4 = offset0 + 4;\n if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n throw new FormatError(\"writing to an offset that is not empty\");\n }\n const value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = value >> 24 & 0xff;\n data[offset2] = value >> 16 & 0xff;\n data[offset3] = value >> 8 & 0xff;\n data[offset4] = value & 0xff;\n }\n }\n}\nclass CFFCompiler {\n constructor(cff) {\n this.cff = cff;\n }\n compile() {\n const cff = this.cff;\n const output = new DataBuilder({\n minLength: cff.rawFileLength\n });\n const header = this.compileHeader(cff.header);\n output.setArray(header);\n const nameIndex = this.compileNameIndex(cff.names);\n output.setArray(nameIndex);\n if (cff.isCIDFont) {\n if (cff.topDict.hasName(\"FontMatrix\")) {\n const base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n for (const subDict of cff.fdArray) {\n let matrix = base.slice(0);\n if (subDict.hasName(\"FontMatrix\")) {\n matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n }\n subDict.setByName(\"FontMatrix\", matrix);\n }\n }\n }\n const xuid = cff.topDict.getByName(\"XUID\");\n if (xuid?.length > 16) {\n cff.topDict.removeByName(\"XUID\");\n }\n cff.topDict.setByName(\"charset\", 0);\n let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);\n output.setArray(compiled.output);\n const topDictTracker = compiled.trackers[0];\n const stringIndex = this.compileStringIndex(cff.strings.strings);\n output.setArray(stringIndex);\n const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.setArray(globalSubrIndex);\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\"Encoding\", [cff.encoding.format], output);\n } else {\n const encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.setArray(encoding);\n }\n }\n const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.setArray(charset);\n const charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.setArray(charStrings);\n if (cff.isCIDFont) {\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n const fdSelect = this.compileFDSelect(cff.fdSelect);\n output.setArray(fdSelect);\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n output.setArray(compiled.output);\n const fontDictTrackers = compiled.trackers;\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n output.setArray([0]);\n return output.data;\n }\n encodeNumber(value) {\n if (Number.isInteger(value)) {\n return this.encodeInteger(value);\n }\n return this.encodeFloat(value);\n }\n static get EncodeFloatRegExp() {\n return shadow(this, \"EncodeFloatRegExp\", /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/);\n }\n encodeFloat(num) {\n let value = num.toString();\n const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n let nibbles = \"\";\n let i, ii;\n for (i = 0, ii = value.length; i < ii; ++i) {\n const a = value[i];\n if (a === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (a === \".\") {\n nibbles += \"a\";\n } else if (a === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += a;\n }\n }\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n const out = [30];\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substring(i, i + 2), 16));\n }\n return out;\n }\n encodeInteger(value) {\n let code;\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value -= 108;\n code = [(value >> 8) + 247, value & 0xff];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xff];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, value >> 8 & 0xff, value & 0xff];\n } else {\n code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];\n }\n return code;\n }\n compileHeader(header) {\n return [header.major, header.minor, 4, header.offSize];\n }\n compileNameIndex(names) {\n const nameIndex = new CFFIndex();\n for (const name of names) {\n const length = Math.min(name.length, 127);\n let sanitizedName = new Array(length);\n for (let j = 0; j < length; j++) {\n let char = name[j];\n if (char < \"!\" || char > \"~\" || char === \"[\" || char === \"]\" || char === \"(\" || char === \")\" || char === \"{\" || char === \"}\" || char === \"<\" || char === \">\" || char === \"/\" || char === \"%\") {\n char = \"_\";\n }\n sanitizedName[j] = char;\n }\n sanitizedName = sanitizedName.join(\"\");\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n nameIndex.add(stringToBytes(sanitizedName));\n }\n return this.compileIndex(nameIndex);\n }\n compileTopDicts(dicts, length, removeCidKeys) {\n const fontDictTrackers = [];\n let fdArrayIndex = new CFFIndex();\n for (const fontDict of dicts) {\n if (removeCidKeys) {\n fontDict.removeByName(\"CIDFontVersion\");\n fontDict.removeByName(\"CIDFontRevision\");\n fontDict.removeByName(\"CIDFontType\");\n fontDict.removeByName(\"CIDCount\");\n fontDict.removeByName(\"UIDBase\");\n }\n const fontDictTracker = new CFFOffsetTracker();\n const fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex\n };\n }\n compilePrivateDicts(dicts, trackers, output) {\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n const privateDict = fontDict.privateDict;\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new FormatError(\"There must be a private dictionary.\");\n }\n const privateDictTracker = new CFFOffsetTracker();\n const privateDictData = this.compileDict(privateDict, privateDictTracker);\n let outputLength = output.length;\n privateDictTracker.offset(outputLength);\n if (!privateDictData.length) {\n outputLength = 0;\n }\n trackers[i].setEntryLocation(\"Private\", [privateDictData.length, outputLength], output);\n output.setArray(privateDictData);\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n const subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\"Subrs\", [privateDictData.length], output);\n output.setArray(subrs);\n }\n }\n }\n compileDict(dict, offsetTracker) {\n const out = [];\n for (const key of dict.order) {\n if (!(key in dict.values)) {\n continue;\n }\n let values = dict.values[key];\n let types = dict.types[key];\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (!Array.isArray(values)) {\n values = [values];\n }\n if (values.length === 0) {\n continue;\n }\n for (let j = 0, jj = types.length; j < jj; ++j) {\n const type = types[j];\n const value = values[j];\n switch (type) {\n case \"num\":\n case \"sid\":\n out.push(...this.encodeNumber(value));\n break;\n case \"offset\":\n const name = dict.keyToNameMap[key];\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n out.push(0x1d, 0, 0, 0, 0);\n break;\n case \"array\":\n case \"delta\":\n out.push(...this.encodeNumber(value));\n for (let k = 1, kk = values.length; k < kk; ++k) {\n out.push(...this.encodeNumber(values[k]));\n }\n break;\n default:\n throw new FormatError(`Unknown data type of ${type}`);\n }\n }\n out.push(...dict.opcodes[key]);\n }\n return out;\n }\n compileStringIndex(strings) {\n const stringIndex = new CFFIndex();\n for (const string of strings) {\n stringIndex.add(stringToBytes(string));\n }\n return this.compileIndex(stringIndex);\n }\n compileCharStrings(charStrings) {\n const charStringsIndex = new CFFIndex();\n for (let i = 0; i < charStrings.count; i++) {\n const glyph = charStrings.get(i);\n if (glyph.length === 0) {\n charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n continue;\n }\n charStringsIndex.add(glyph);\n }\n return this.compileIndex(charStringsIndex);\n }\n compileCharset(charset, numGlyphs, strings, isCIDFont) {\n let out;\n const numGlyphsLessNotDef = numGlyphs - 1;\n if (isCIDFont) {\n const nLeft = numGlyphsLessNotDef - 1;\n out = new Uint8Array([2, 0, 1, nLeft >> 8 & 0xff, nLeft & 0xff]);\n } else {\n const length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n let charsetIndex = 0;\n const numCharsets = charset.charset.length;\n let warned = false;\n for (let i = 1; i < out.length; i += 2) {\n let sid = 0;\n if (charsetIndex < numCharsets) {\n const name = charset.charset[charsetIndex++];\n sid = strings.getSID(name);\n if (sid === -1) {\n sid = 0;\n if (!warned) {\n warned = true;\n warn(`Couldn't find ${name} in CFF strings`);\n }\n }\n }\n out[i] = sid >> 8 & 0xff;\n out[i + 1] = sid & 0xff;\n }\n }\n return out;\n }\n compileEncoding(encoding) {\n return encoding.raw;\n }\n compileFDSelect(fdSelect) {\n const format = fdSelect.format;\n let out, i;\n switch (format) {\n case 0:\n out = new Uint8Array(1 + fdSelect.fdSelect.length);\n out[0] = format;\n out.set(fdSelect.fdSelect, 1);\n break;\n case 3:\n const start = 0;\n let lastFD = fdSelect.fdSelect[0];\n const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];\n for (i = 1; i < fdSelect.fdSelect.length; i++) {\n const currentFD = fdSelect.fdSelect[i];\n if (currentFD !== lastFD) {\n ranges.push(i >> 8 & 0xff, i & 0xff, currentFD);\n lastFD = currentFD;\n }\n }\n const numRanges = (ranges.length - 3) / 3;\n ranges[1] = numRanges >> 8 & 0xff;\n ranges[2] = numRanges & 0xff;\n ranges.push(i >> 8 & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n return out;\n }\n compileIndex(index, trackers = []) {\n const objects = index.objects;\n const count = objects.length;\n if (count === 0) {\n return new Uint8Array(2);\n }\n let lastOffset = 1,\n i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n let offsetSize;\n if (lastOffset < 0x100) {\n offsetSize = 1;\n } else if (lastOffset < 0x10000) {\n offsetSize = 2;\n } else if (lastOffset < 0x1000000) {\n offsetSize = 3;\n } else {\n offsetSize = 4;\n }\n const data = new Uint8Array(2 + offsetSize * (count + 1) + lastOffset);\n let pos = 0;\n data[pos++] = count >> 8 & 0xff;\n data[pos++] = count & 0xff;\n data[pos++] = offsetSize;\n let relativeOffset = 1;\n for (i = 0; i < count + 1; i++) {\n if (offsetSize === 1) {\n data[pos++] = relativeOffset & 0xff;\n } else if (offsetSize === 2) {\n data[pos++] = relativeOffset >> 8 & 0xff;\n data[pos++] = relativeOffset & 0xff;\n } else if (offsetSize === 3) {\n data[pos++] = relativeOffset >> 16 & 0xff;\n data[pos++] = relativeOffset >> 8 & 0xff;\n data[pos++] = relativeOffset & 0xff;\n } else {\n data[pos++] = relativeOffset >>> 24 & 0xff;\n data[pos++] = relativeOffset >> 16 & 0xff;\n data[pos++] = relativeOffset >> 8 & 0xff;\n data[pos++] = relativeOffset & 0xff;\n }\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n for (i = 0; i < count; i++) {\n trackers[i]?.offset(pos);\n data.set(objects[i], pos);\n pos += objects[i].length;\n }\n return data;\n }\n}\n\n;// ./src/core/standard_fonts.js\n\n\n\nconst getStdFontMap = getLookupTableFactory(function (t) {\n t[\"Times-Roman\"] = \"Times-Roman\";\n t.Helvetica = \"Helvetica\";\n t.Courier = \"Courier\";\n t.Symbol = \"Symbol\";\n t[\"Times-Bold\"] = \"Times-Bold\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t.ZapfDingbats = \"ZapfDingbats\";\n t[\"Times-Italic\"] = \"Times-Italic\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n t.ArialNarrow = \"Helvetica\";\n t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n t.ArialBlack = \"Helvetica\";\n t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-Black\"] = \"Helvetica\";\n t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n t.Arial = \"Helvetica\";\n t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n t.ArialMT = \"Helvetica\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t[\"Arial-BoldItalicMT-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT-Italic\"] = \"Helvetica-Oblique\";\n t.ArialUnicodeMS = \"Helvetica\";\n t[\"ArialUnicodeMS-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialUnicodeMS-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialUnicodeMS-Italic\"] = \"Helvetica-Oblique\";\n t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"Courier-Italic\"] = \"Courier-Oblique\";\n t.CourierNew = \"Courier\";\n t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n t.CourierNewPSMT = \"Courier\";\n t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n t[\"HelveticaLTStd-Bold\"] = \"Helvetica-Bold\";\n t[\"Symbol-Bold\"] = \"Symbol\";\n t[\"Symbol-BoldItalic\"] = \"Symbol\";\n t[\"Symbol-Italic\"] = \"Symbol\";\n t.TimesNewRoman = \"Times-Roman\";\n t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n t.TimesNewRomanPS = \"Times-Roman\";\n t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n t.TimesNewRomanPSMT = \"Times-Roman\";\n t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n t.Courier = \"FoxitFixed.pfb\";\n t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n t.Helvetica = \"LiberationSans-Regular.ttf\";\n t[\"Helvetica-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"Helvetica-BoldOblique\"] = \"LiberationSans-BoldItalic.ttf\";\n t[\"Helvetica-Oblique\"] = \"LiberationSans-Italic.ttf\";\n t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n t.Symbol = \"FoxitSymbol.pfb\";\n t.ZapfDingbats = \"FoxitDingbats.pfb\";\n t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n t.Calibri = \"Helvetica\";\n t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n t.CenturyGothic = \"Helvetica\";\n t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n t.ComicSansMS = \"Comic Sans MS\";\n t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n t.GillSansMT = \"Helvetica\";\n t[\"GillSansMT-Bold\"] = \"Helvetica-Bold\";\n t[\"GillSansMT-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"GillSansMT-Italic\"] = \"Helvetica-Oblique\";\n t.Impact = \"Helvetica\";\n t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ItcSymbol-Book\"] = \"Helvetica\";\n t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n t.LucidaConsole = \"Courier\";\n t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n t[\"MS-Gothic\"] = \"MS Gothic\";\n t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n t[\"MS-Mincho\"] = \"MS Mincho\";\n t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n t[\"MS-PGothic\"] = \"MS PGothic\";\n t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n t[\"MS-PMincho\"] = \"MS PMincho\";\n t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n t.NuptialScript = \"Times-Italic\";\n t.SegoeUISymbol = \"Helvetica\";\n t.TrebuchetMS = \"Helvetica\";\n t[\"TrebuchetMS-Bold\"] = \"Helvetica-Bold\";\n t[\"TrebuchetMS-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"TrebuchetMS-Italic\"] = \"Helvetica-Oblique\";\n});\nconst getSerifFonts = getLookupTableFactory(function (t) {\n t[\"Adobe Jenson\"] = true;\n t[\"Adobe Text\"] = true;\n t.Albertus = true;\n t.Aldus = true;\n t.Alexandria = true;\n t.Algerian = true;\n t[\"American Typewriter\"] = true;\n t.Antiqua = true;\n t.Apex = true;\n t.Arno = true;\n t.Aster = true;\n t.Aurora = true;\n t.Baskerville = true;\n t.Bell = true;\n t.Bembo = true;\n t[\"Bembo Schoolbook\"] = true;\n t.Benguiat = true;\n t[\"Berkeley Old Style\"] = true;\n t[\"Bernhard Modern\"] = true;\n t[\"Berthold City\"] = true;\n t.Bodoni = true;\n t[\"Bauer Bodoni\"] = true;\n t[\"Book Antiqua\"] = true;\n t.Bookman = true;\n t[\"Bordeaux Roman\"] = true;\n t[\"Californian FB\"] = true;\n t.Calisto = true;\n t.Calvert = true;\n t.Capitals = true;\n t.Cambria = true;\n t.Cartier = true;\n t.Caslon = true;\n t.Catull = true;\n t.Centaur = true;\n t[\"Century Old Style\"] = true;\n t[\"Century Schoolbook\"] = true;\n t.Chaparral = true;\n t[\"Charis SIL\"] = true;\n t.Cheltenham = true;\n t[\"Cholla Slab\"] = true;\n t.Clarendon = true;\n t.Clearface = true;\n t.Cochin = true;\n t.Colonna = true;\n t[\"Computer Modern\"] = true;\n t[\"Concrete Roman\"] = true;\n t.Constantia = true;\n t[\"Cooper Black\"] = true;\n t.Corona = true;\n t.Ecotype = true;\n t.Egyptienne = true;\n t.Elephant = true;\n t.Excelsior = true;\n t.Fairfield = true;\n t[\"FF Scala\"] = true;\n t.Folkard = true;\n t.Footlight = true;\n t.FreeSerif = true;\n t[\"Friz Quadrata\"] = true;\n t.Garamond = true;\n t.Gentium = true;\n t.Georgia = true;\n t.Gloucester = true;\n t[\"Goudy Old Style\"] = true;\n t[\"Goudy Schoolbook\"] = true;\n t[\"Goudy Pro Font\"] = true;\n t.Granjon = true;\n t[\"Guardian Egyptian\"] = true;\n t.Heather = true;\n t.Hercules = true;\n t[\"High Tower Text\"] = true;\n t.Hiroshige = true;\n t[\"Hoefler Text\"] = true;\n t[\"Humana Serif\"] = true;\n t.Imprint = true;\n t[\"Ionic No. 5\"] = true;\n t.Janson = true;\n t.Joanna = true;\n t.Korinna = true;\n t.Lexicon = true;\n t.LiberationSerif = true;\n t[\"Liberation Serif\"] = true;\n t[\"Linux Libertine\"] = true;\n t.Literaturnaya = true;\n t.Lucida = true;\n t[\"Lucida Bright\"] = true;\n t.Melior = true;\n t.Memphis = true;\n t.Miller = true;\n t.Minion = true;\n t.Modern = true;\n t[\"Mona Lisa\"] = true;\n t[\"Mrs Eaves\"] = true;\n t[\"MS Serif\"] = true;\n t[\"Museo Slab\"] = true;\n t[\"New York\"] = true;\n t[\"Nimbus Roman\"] = true;\n t[\"NPS Rawlinson Roadway\"] = true;\n t.NuptialScript = true;\n t.Palatino = true;\n t.Perpetua = true;\n t.Plantin = true;\n t[\"Plantin Schoolbook\"] = true;\n t.Playbill = true;\n t[\"Poor Richard\"] = true;\n t[\"Rawlinson Roadway\"] = true;\n t.Renault = true;\n t.Requiem = true;\n t.Rockwell = true;\n t.Roman = true;\n t[\"Rotis Serif\"] = true;\n t.Sabon = true;\n t.Scala = true;\n t.Seagull = true;\n t.Sistina = true;\n t.Souvenir = true;\n t.STIX = true;\n t[\"Stone Informal\"] = true;\n t[\"Stone Serif\"] = true;\n t.Sylfaen = true;\n t.Times = true;\n t.Trajan = true;\n t[\"Trinité\"] = true;\n t[\"Trump Mediaeval\"] = true;\n t.Utopia = true;\n t[\"Vale Type\"] = true;\n t[\"Bitstream Vera\"] = true;\n t[\"Vera Serif\"] = true;\n t.Versailles = true;\n t.Wanted = true;\n t.Weiss = true;\n t[\"Wide Latin\"] = true;\n t.Windsor = true;\n t.XITS = true;\n});\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n t.Wingdings = true;\n t[\"Wingdings-Bold\"] = true;\n t[\"Wingdings-Regular\"] = true;\n});\nconst getGlyphMapForMacOrderedFonts = getLookupTableFactory(function (t) {\n const glyphsUnicode = getGlyphsUnicode();\n t[2] = 10;\n for (let gid = 3; gid < MacStandardGlyphOrdering.length; gid++) {\n const unicode = glyphsUnicode[MacStandardGlyphOrdering[gid]];\n if (unicode !== undefined) {\n t[gid] = unicode;\n }\n }\n});\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n t[2] = 10;\n t[3] = 32;\n t[4] = 33;\n t[5] = 34;\n t[6] = 35;\n t[7] = 36;\n t[8] = 37;\n t[9] = 38;\n t[10] = 39;\n t[11] = 40;\n t[12] = 41;\n t[13] = 42;\n t[14] = 43;\n t[15] = 44;\n t[16] = 45;\n t[17] = 46;\n t[18] = 47;\n t[19] = 48;\n t[20] = 49;\n t[21] = 50;\n t[22] = 51;\n t[23] = 52;\n t[24] = 53;\n t[25] = 54;\n t[26] = 55;\n t[27] = 56;\n t[28] = 57;\n t[29] = 58;\n t[30] = 894;\n t[31] = 60;\n t[32] = 61;\n t[33] = 62;\n t[34] = 63;\n t[35] = 64;\n t[36] = 65;\n t[37] = 66;\n t[38] = 67;\n t[39] = 68;\n t[40] = 69;\n t[41] = 70;\n t[42] = 71;\n t[43] = 72;\n t[44] = 73;\n t[45] = 74;\n t[46] = 75;\n t[47] = 76;\n t[48] = 77;\n t[49] = 78;\n t[50] = 79;\n t[51] = 80;\n t[52] = 81;\n t[53] = 82;\n t[54] = 83;\n t[55] = 84;\n t[56] = 85;\n t[57] = 86;\n t[58] = 87;\n t[59] = 88;\n t[60] = 89;\n t[61] = 90;\n t[62] = 91;\n t[63] = 92;\n t[64] = 93;\n t[65] = 94;\n t[66] = 95;\n t[67] = 96;\n t[68] = 97;\n t[69] = 98;\n t[70] = 99;\n t[71] = 100;\n t[72] = 101;\n t[73] = 102;\n t[74] = 103;\n t[75] = 104;\n t[76] = 105;\n t[77] = 106;\n t[78] = 107;\n t[79] = 108;\n t[80] = 109;\n t[81] = 110;\n t[82] = 111;\n t[83] = 112;\n t[84] = 113;\n t[85] = 114;\n t[86] = 115;\n t[87] = 116;\n t[88] = 117;\n t[89] = 118;\n t[90] = 119;\n t[91] = 120;\n t[92] = 121;\n t[93] = 122;\n t[94] = 123;\n t[95] = 124;\n t[96] = 125;\n t[97] = 126;\n t[98] = 196;\n t[99] = 197;\n t[100] = 199;\n t[101] = 201;\n t[102] = 209;\n t[103] = 214;\n t[104] = 220;\n t[105] = 225;\n t[106] = 224;\n t[107] = 226;\n t[108] = 228;\n t[109] = 227;\n t[110] = 229;\n t[111] = 231;\n t[112] = 233;\n t[113] = 232;\n t[114] = 234;\n t[115] = 235;\n t[116] = 237;\n t[117] = 236;\n t[118] = 238;\n t[119] = 239;\n t[120] = 241;\n t[121] = 243;\n t[122] = 242;\n t[123] = 244;\n t[124] = 246;\n t[125] = 245;\n t[126] = 250;\n t[127] = 249;\n t[128] = 251;\n t[129] = 252;\n t[130] = 8224;\n t[131] = 176;\n t[132] = 162;\n t[133] = 163;\n t[134] = 167;\n t[135] = 8226;\n t[136] = 182;\n t[137] = 223;\n t[138] = 174;\n t[139] = 169;\n t[140] = 8482;\n t[141] = 180;\n t[142] = 168;\n t[143] = 8800;\n t[144] = 198;\n t[145] = 216;\n t[146] = 8734;\n t[147] = 177;\n t[148] = 8804;\n t[149] = 8805;\n t[150] = 165;\n t[151] = 181;\n t[152] = 8706;\n t[153] = 8721;\n t[154] = 8719;\n t[156] = 8747;\n t[157] = 170;\n t[158] = 186;\n t[159] = 8486;\n t[160] = 230;\n t[161] = 248;\n t[162] = 191;\n t[163] = 161;\n t[164] = 172;\n t[165] = 8730;\n t[166] = 402;\n t[167] = 8776;\n t[168] = 8710;\n t[169] = 171;\n t[170] = 187;\n t[171] = 8230;\n t[179] = 8220;\n t[180] = 8221;\n t[181] = 8216;\n t[182] = 8217;\n t[200] = 193;\n t[203] = 205;\n t[207] = 211;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[226] = 352;\n t[227] = 353;\n t[228] = 381;\n t[229] = 382;\n t[233] = 221;\n t[234] = 253;\n t[252] = 263;\n t[253] = 268;\n t[254] = 269;\n t[258] = 258;\n t[260] = 260;\n t[261] = 261;\n t[265] = 280;\n t[266] = 281;\n t[267] = 282;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[283] = 344;\n t[284] = 345;\n t[285] = 346;\n t[286] = 347;\n t[292] = 367;\n t[295] = 377;\n t[296] = 378;\n t[298] = 380;\n t[305] = 963;\n t[306] = 964;\n t[307] = 966;\n t[308] = 8215;\n t[309] = 8252;\n t[310] = 8319;\n t[311] = 8359;\n t[312] = 8592;\n t[313] = 8593;\n t[337] = 9552;\n t[493] = 1039;\n t[494] = 1040;\n t[570] = 1040;\n t[571] = 1041;\n t[572] = 1042;\n t[573] = 1043;\n t[574] = 1044;\n t[575] = 1045;\n t[576] = 1046;\n t[577] = 1047;\n t[578] = 1048;\n t[579] = 1049;\n t[580] = 1050;\n t[581] = 1051;\n t[582] = 1052;\n t[583] = 1053;\n t[584] = 1054;\n t[585] = 1055;\n t[586] = 1056;\n t[587] = 1057;\n t[588] = 1058;\n t[589] = 1059;\n t[590] = 1060;\n t[591] = 1061;\n t[592] = 1062;\n t[593] = 1063;\n t[594] = 1064;\n t[595] = 1065;\n t[596] = 1066;\n t[597] = 1067;\n t[598] = 1068;\n t[599] = 1069;\n t[600] = 1070;\n t[601] = 1071;\n t[602] = 1072;\n t[603] = 1073;\n t[604] = 1074;\n t[605] = 1075;\n t[606] = 1076;\n t[607] = 1077;\n t[608] = 1078;\n t[609] = 1079;\n t[610] = 1080;\n t[611] = 1081;\n t[612] = 1082;\n t[613] = 1083;\n t[614] = 1084;\n t[615] = 1085;\n t[616] = 1086;\n t[617] = 1087;\n t[618] = 1088;\n t[619] = 1089;\n t[620] = 1090;\n t[621] = 1091;\n t[622] = 1092;\n t[623] = 1093;\n t[624] = 1094;\n t[625] = 1095;\n t[626] = 1096;\n t[627] = 1097;\n t[628] = 1098;\n t[629] = 1099;\n t[630] = 1100;\n t[631] = 1101;\n t[632] = 1102;\n t[633] = 1103;\n t[672] = 1488;\n t[673] = 1489;\n t[674] = 1490;\n t[675] = 1491;\n t[676] = 1492;\n t[677] = 1493;\n t[678] = 1494;\n t[679] = 1495;\n t[680] = 1496;\n t[681] = 1497;\n t[682] = 1498;\n t[683] = 1499;\n t[684] = 1500;\n t[685] = 1501;\n t[686] = 1502;\n t[687] = 1503;\n t[688] = 1504;\n t[689] = 1505;\n t[690] = 1506;\n t[691] = 1507;\n t[692] = 1508;\n t[693] = 1509;\n t[694] = 1510;\n t[695] = 1511;\n t[696] = 1512;\n t[697] = 1513;\n t[698] = 1514;\n t[705] = 1524;\n t[706] = 8362;\n t[710] = 64288;\n t[711] = 64298;\n t[759] = 1617;\n t[761] = 1776;\n t[763] = 1778;\n t[775] = 1652;\n t[777] = 1764;\n t[778] = 1780;\n t[779] = 1781;\n t[780] = 1782;\n t[782] = 771;\n t[783] = 64726;\n t[786] = 8363;\n t[788] = 8532;\n t[790] = 768;\n t[791] = 769;\n t[792] = 768;\n t[795] = 803;\n t[797] = 64336;\n t[798] = 64337;\n t[799] = 64342;\n t[800] = 64343;\n t[801] = 64344;\n t[802] = 64345;\n t[803] = 64362;\n t[804] = 64363;\n t[805] = 64364;\n t[2424] = 7821;\n t[2425] = 7822;\n t[2426] = 7823;\n t[2427] = 7824;\n t[2428] = 7825;\n t[2429] = 7826;\n t[2430] = 7827;\n t[2433] = 7682;\n t[2678] = 8045;\n t[2679] = 8046;\n t[2830] = 1552;\n t[2838] = 686;\n t[2840] = 751;\n t[2842] = 753;\n t[2843] = 754;\n t[2844] = 755;\n t[2846] = 757;\n t[2856] = 767;\n t[2857] = 848;\n t[2858] = 849;\n t[2862] = 853;\n t[2863] = 854;\n t[2864] = 855;\n t[2865] = 861;\n t[2866] = 862;\n t[2906] = 7460;\n t[2908] = 7462;\n t[2909] = 7463;\n t[2910] = 7464;\n t[2912] = 7466;\n t[2913] = 7467;\n t[2914] = 7468;\n t[2916] = 7470;\n t[2917] = 7471;\n t[2918] = 7472;\n t[2920] = 7474;\n t[2921] = 7475;\n t[2922] = 7476;\n t[2924] = 7478;\n t[2925] = 7479;\n t[2926] = 7480;\n t[2928] = 7482;\n t[2929] = 7483;\n t[2930] = 7484;\n t[2932] = 7486;\n t[2933] = 7487;\n t[2934] = 7488;\n t[2936] = 7490;\n t[2937] = 7491;\n t[2938] = 7492;\n t[2940] = 7494;\n t[2941] = 7495;\n t[2942] = 7496;\n t[2944] = 7498;\n t[2946] = 7500;\n t[2948] = 7502;\n t[2950] = 7504;\n t[2951] = 7505;\n t[2952] = 7506;\n t[2954] = 7508;\n t[2955] = 7509;\n t[2956] = 7510;\n t[2958] = 7512;\n t[2959] = 7513;\n t[2960] = 7514;\n t[2962] = 7516;\n t[2963] = 7517;\n t[2964] = 7518;\n t[2966] = 7520;\n t[2967] = 7521;\n t[2968] = 7522;\n t[2970] = 7524;\n t[2971] = 7525;\n t[2972] = 7526;\n t[2974] = 7528;\n t[2975] = 7529;\n t[2976] = 7530;\n t[2978] = 1537;\n t[2979] = 1538;\n t[2980] = 1539;\n t[2982] = 1549;\n t[2983] = 1551;\n t[2984] = 1552;\n t[2986] = 1554;\n t[2987] = 1555;\n t[2988] = 1556;\n t[2990] = 1623;\n t[2991] = 1624;\n t[2995] = 1775;\n t[2999] = 1791;\n t[3002] = 64290;\n t[3003] = 64291;\n t[3004] = 64292;\n t[3006] = 64294;\n t[3007] = 64295;\n t[3008] = 64296;\n t[3011] = 1900;\n t[3014] = 8223;\n t[3015] = 8244;\n t[3017] = 7532;\n t[3018] = 7533;\n t[3019] = 7534;\n t[3075] = 7590;\n t[3076] = 7591;\n t[3079] = 7594;\n t[3080] = 7595;\n t[3083] = 7598;\n t[3084] = 7599;\n t[3087] = 7602;\n t[3088] = 7603;\n t[3091] = 7606;\n t[3092] = 7607;\n t[3095] = 7610;\n t[3096] = 7611;\n t[3099] = 7614;\n t[3100] = 7615;\n t[3103] = 7618;\n t[3104] = 7619;\n t[3107] = 8337;\n t[3108] = 8338;\n t[3116] = 1884;\n t[3119] = 1885;\n t[3120] = 1885;\n t[3123] = 1886;\n t[3124] = 1886;\n t[3127] = 1887;\n t[3128] = 1887;\n t[3131] = 1888;\n t[3132] = 1888;\n t[3135] = 1889;\n t[3136] = 1889;\n t[3139] = 1890;\n t[3140] = 1890;\n t[3143] = 1891;\n t[3144] = 1891;\n t[3147] = 1892;\n t[3148] = 1892;\n t[3153] = 580;\n t[3154] = 581;\n t[3157] = 584;\n t[3158] = 585;\n t[3161] = 588;\n t[3162] = 589;\n t[3165] = 891;\n t[3166] = 892;\n t[3169] = 1274;\n t[3170] = 1275;\n t[3173] = 1278;\n t[3174] = 1279;\n t[3181] = 7622;\n t[3182] = 7623;\n t[3282] = 11799;\n t[3316] = 578;\n t[3379] = 42785;\n t[3393] = 1159;\n t[3416] = 8377;\n});\nconst getSupplementalGlyphMapForTrebuchetMS = getLookupTableFactory(function (t) {\n t[151] = 956;\n t[159] = 937;\n t[168] = 916;\n t[189] = 8364;\n t[195] = 8729;\n t[218] = 713;\n t[236] = 222;\n t[237] = 254;\n t[238] = 8722;\n t[239] = 185;\n t[240] = 178;\n t[241] = 179;\n t[242] = 189;\n t[243] = 188;\n t[244] = 190;\n t[245] = 181;\n t[246] = 8486;\n t[247] = 8710;\n t[248] = 253;\n t[249] = 215;\n t[250] = 173;\n t[253] = 8355;\n t[254] = 286;\n t[255] = 287;\n t[256] = 304;\n t[257] = 350;\n t[258] = 351;\n t[259] = 262;\n t[260] = 263;\n t[261] = 268;\n t[262] = 269;\n t[263] = 273;\n t[264] = 175;\n t[266] = 183;\n t[267] = 258;\n t[268] = 259;\n t[269] = 260;\n t[270] = 261;\n t[271] = 270;\n t[272] = 271;\n t[273] = 272;\n t[274] = 280;\n t[275] = 281;\n t[276] = 282;\n t[277] = 283;\n t[278] = 313;\n t[279] = 314;\n t[280] = 317;\n t[281] = 318;\n t[282] = 319;\n t[283] = 320;\n t[284] = 323;\n t[285] = 324;\n t[286] = 327;\n t[287] = 328;\n t[288] = 336;\n t[289] = 337;\n t[290] = 340;\n t[291] = 341;\n t[292] = 344;\n t[293] = 345;\n t[294] = 346;\n t[295] = 347;\n t[296] = 538;\n t[297] = 539;\n t[298] = 356;\n t[299] = 357;\n t[300] = 366;\n t[301] = 367;\n t[302] = 368;\n t[303] = 369;\n t[304] = 377;\n t[305] = 378;\n t[306] = 379;\n t[307] = 380;\n});\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (t) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[5] = 192;\n t[6] = 193;\n t[9] = 196;\n t[17] = 66;\n t[18] = 67;\n t[21] = 268;\n t[24] = 68;\n t[28] = 69;\n t[29] = 200;\n t[30] = 201;\n t[32] = 282;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[48] = 204;\n t[49] = 205;\n t[58] = 74;\n t[60] = 75;\n t[62] = 76;\n t[68] = 77;\n t[69] = 78;\n t[75] = 79;\n t[76] = 210;\n t[80] = 214;\n t[87] = 80;\n t[89] = 81;\n t[90] = 82;\n t[92] = 344;\n t[94] = 83;\n t[97] = 352;\n t[100] = 84;\n t[104] = 85;\n t[109] = 220;\n t[115] = 86;\n t[116] = 87;\n t[121] = 88;\n t[122] = 89;\n t[124] = 221;\n t[127] = 90;\n t[129] = 381;\n t[258] = 97;\n t[259] = 224;\n t[260] = 225;\n t[263] = 228;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[275] = 269;\n t[282] = 100;\n t[286] = 101;\n t[287] = 232;\n t[288] = 233;\n t[290] = 283;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[350] = 236;\n t[351] = 237;\n t[361] = 106;\n t[364] = 107;\n t[367] = 108;\n t[371] = 322;\n t[373] = 109;\n t[374] = 110;\n t[381] = 111;\n t[382] = 242;\n t[383] = 243;\n t[386] = 246;\n t[393] = 112;\n t[395] = 113;\n t[396] = 114;\n t[398] = 345;\n t[400] = 115;\n t[401] = 347;\n t[403] = 353;\n t[410] = 116;\n t[437] = 117;\n t[442] = 252;\n t[448] = 118;\n t[449] = 119;\n t[454] = 120;\n t[455] = 121;\n t[457] = 253;\n t[460] = 122;\n t[462] = 382;\n t[463] = 380;\n t[853] = 44;\n t[855] = 58;\n t[856] = 46;\n t[876] = 47;\n t[878] = 45;\n t[882] = 45;\n t[894] = 40;\n t[895] = 41;\n t[896] = 91;\n t[897] = 93;\n t[923] = 64;\n t[940] = 163;\n t[1004] = 48;\n t[1005] = 49;\n t[1006] = 50;\n t[1007] = 51;\n t[1008] = 52;\n t[1009] = 53;\n t[1010] = 54;\n t[1011] = 55;\n t[1012] = 56;\n t[1013] = 57;\n t[1081] = 37;\n t[1085] = 43;\n t[1086] = 45;\n});\nfunction getStandardFontName(name) {\n const fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n return stdFontMap[fontName];\n}\nfunction isKnownFontName(name) {\n const fontName = normalizeFontName(name);\n return !!(getStdFontMap()[fontName] || getNonStdFontMap()[fontName] || getSerifFonts()[fontName] || getSymbolsFonts()[fontName]);\n}\n\n;// ./src/core/glyf.js\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\nconst GLYPH_HEADER_SIZE = 10;\nclass GlyfTable {\n constructor({\n glyfTable,\n isGlyphLocationsLong,\n locaTable,\n numGlyphs\n }) {\n this.glyphs = [];\n const loca = new DataView(locaTable.buffer, locaTable.byteOffset, locaTable.byteLength);\n const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength);\n const offsetSize = isGlyphLocationsLong ? 4 : 2;\n let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n let pos = 0;\n for (let i = 0; i < numGlyphs; i++) {\n pos += offsetSize;\n const next = isGlyphLocationsLong ? loca.getUint32(pos) : 2 * loca.getUint16(pos);\n if (next === prev) {\n this.glyphs.push(new Glyph({}));\n continue;\n }\n const glyph = Glyph.parse(prev, glyf);\n this.glyphs.push(glyph);\n prev = next;\n }\n }\n getSize() {\n return Math.sumPrecise(this.glyphs.map(g => g.getSize() + 3 & ~3));\n }\n write() {\n const totalSize = this.getSize();\n const glyfTable = new DataView(new ArrayBuffer(totalSize));\n const isLocationLong = totalSize > 0x1fffe;\n const offsetSize = isLocationLong ? 4 : 2;\n const locaTable = new DataView(new ArrayBuffer((this.glyphs.length + 1) * offsetSize));\n if (isLocationLong) {\n locaTable.setUint32(0, 0);\n } else {\n locaTable.setUint16(0, 0);\n }\n let pos = 0;\n let locaIndex = 0;\n for (const glyph of this.glyphs) {\n pos += glyph.write(pos, glyfTable);\n pos = pos + 3 & ~3;\n locaIndex += offsetSize;\n if (isLocationLong) {\n locaTable.setUint32(locaIndex, pos);\n } else {\n locaTable.setUint16(locaIndex, pos >> 1);\n }\n }\n return {\n isLocationLong,\n loca: new Uint8Array(locaTable.buffer),\n glyf: new Uint8Array(glyfTable.buffer)\n };\n }\n scale(factors) {\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n this.glyphs[i].scale(factors[i]);\n }\n }\n}\nclass Glyph {\n constructor({\n header = null,\n simple = null,\n composites = null\n }) {\n this.header = header;\n this.simple = simple;\n this.composites = composites;\n }\n static parse(pos, glyf) {\n const [read, header] = GlyphHeader.parse(pos, glyf);\n pos += read;\n if (header.numberOfContours < 0) {\n const composites = [];\n while (true) {\n const [n, composite] = CompositeGlyph.parse(pos, glyf);\n pos += n;\n composites.push(composite);\n if (!(composite.flags & MORE_COMPONENTS)) {\n break;\n }\n }\n return new Glyph({\n header,\n composites\n });\n }\n const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n return new Glyph({\n header,\n simple\n });\n }\n getSize() {\n if (!this.header) {\n return 0;\n }\n const size = this.simple ? this.simple.getSize() : Math.sumPrecise(this.composites.map(c => c.getSize()));\n return this.header.getSize() + size;\n }\n write(pos, buf) {\n if (!this.header) {\n return 0;\n }\n const spos = pos;\n pos += this.header.write(pos, buf);\n if (this.simple) {\n pos += this.simple.write(pos, buf);\n } else {\n for (const composite of this.composites) {\n pos += composite.write(pos, buf);\n }\n }\n return pos - spos;\n }\n scale(factor) {\n if (!this.header) {\n return;\n }\n const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n this.header.scale(xMiddle, factor);\n if (this.simple) {\n this.simple.scale(xMiddle, factor);\n } else {\n for (const composite of this.composites) {\n composite.scale(xMiddle, factor);\n }\n }\n }\n}\nclass GlyphHeader {\n constructor({\n numberOfContours,\n xMin,\n yMin,\n xMax,\n yMax\n }) {\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n static parse(pos, glyf) {\n return [GLYPH_HEADER_SIZE, new GlyphHeader({\n numberOfContours: glyf.getInt16(pos),\n xMin: glyf.getInt16(pos + 2),\n yMin: glyf.getInt16(pos + 4),\n xMax: glyf.getInt16(pos + 6),\n yMax: glyf.getInt16(pos + 8)\n })];\n }\n getSize() {\n return GLYPH_HEADER_SIZE;\n }\n write(pos, buf) {\n buf.setInt16(pos, this.numberOfContours);\n buf.setInt16(pos + 2, this.xMin);\n buf.setInt16(pos + 4, this.yMin);\n buf.setInt16(pos + 6, this.xMax);\n buf.setInt16(pos + 8, this.yMax);\n return GLYPH_HEADER_SIZE;\n }\n scale(x, factor) {\n this.xMin = Math.round(x + (this.xMin - x) * factor);\n this.xMax = Math.round(x + (this.xMax - x) * factor);\n }\n}\nclass Contour {\n constructor({\n flags,\n xCoordinates,\n yCoordinates\n }) {\n this.xCoordinates = xCoordinates;\n this.yCoordinates = yCoordinates;\n this.flags = flags;\n }\n}\nclass SimpleGlyph {\n constructor({\n contours,\n instructions\n }) {\n this.contours = contours;\n this.instructions = instructions;\n }\n static parse(pos, glyf, numberOfContours) {\n const endPtsOfContours = [];\n for (let i = 0; i < numberOfContours; i++) {\n const endPt = glyf.getUint16(pos);\n pos += 2;\n endPtsOfContours.push(endPt);\n }\n const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n const instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n const flags = [];\n for (let i = 0; i < numberOfPt; pos++, i++) {\n let flag = glyf.getUint8(pos);\n flags.push(flag);\n if (flag & REPEAT_FLAG) {\n const count = glyf.getUint8(++pos);\n flag ^= REPEAT_FLAG;\n for (let m = 0; m < count; m++) {\n flags.push(flag);\n }\n i += count;\n }\n }\n const allXCoordinates = [];\n let xCoordinates = [];\n let yCoordinates = [];\n let pointFlags = [];\n const contours = [];\n let endPtsOfContoursIndex = 0;\n let lastCoordinate = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n const x = glyf.getUint8(pos++);\n lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n xCoordinates.push(lastCoordinate);\n } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n xCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n xCoordinates.push(lastCoordinate);\n }\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n endPtsOfContoursIndex++;\n allXCoordinates.push(xCoordinates);\n xCoordinates = [];\n }\n }\n lastCoordinate = 0;\n endPtsOfContoursIndex = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n const y = glyf.getUint8(pos++);\n lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n yCoordinates.push(lastCoordinate);\n } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n yCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n yCoordinates.push(lastCoordinate);\n }\n pointFlags.push(flag & ON_CURVE_POINT | flag & OVERLAP_SIMPLE);\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n endPtsOfContoursIndex++;\n contours.push(new Contour({\n flags: pointFlags,\n xCoordinates,\n yCoordinates\n }));\n yCoordinates = [];\n pointFlags = [];\n }\n }\n return new SimpleGlyph({\n contours,\n instructions\n });\n }\n getSize() {\n let size = this.contours.length * 2 + 2 + this.instructions.length;\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n size += contour.flags.length;\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n const x = contour.xCoordinates[i];\n const y = contour.yCoordinates[i];\n let abs = Math.abs(x - lastX);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastX = x;\n abs = Math.abs(y - lastY);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastY = y;\n }\n }\n return size;\n }\n write(pos, buf) {\n const spos = pos;\n const xCoordinates = [];\n const yCoordinates = [];\n const flags = [];\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n let flag = contour.flags[i];\n const x = contour.xCoordinates[i];\n let delta = x - lastX;\n if (delta === 0) {\n flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n xCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |= delta >= 0 ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR : X_SHORT_VECTOR;\n xCoordinates.push(abs);\n } else {\n xCoordinates.push(delta);\n }\n }\n lastX = x;\n const y = contour.yCoordinates[i];\n delta = y - lastY;\n if (delta === 0) {\n flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n yCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |= delta >= 0 ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR : Y_SHORT_VECTOR;\n yCoordinates.push(abs);\n } else {\n yCoordinates.push(delta);\n }\n }\n lastY = y;\n flags.push(flag);\n }\n buf.setUint16(pos, xCoordinates.length - 1);\n pos += 2;\n }\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);\n pos += this.instructions.length;\n }\n for (const flag of flags) {\n buf.setUint8(pos++, flag);\n }\n for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n const x = xCoordinates[i];\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n buf.setUint8(pos++, x);\n } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n buf.setInt16(pos, x);\n pos += 2;\n }\n }\n for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n const y = yCoordinates[i];\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n buf.setUint8(pos++, y);\n } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n buf.setInt16(pos, y);\n pos += 2;\n }\n }\n return pos - spos;\n }\n scale(x, factor) {\n for (const contour of this.contours) {\n if (contour.xCoordinates.length === 0) {\n continue;\n }\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n contour.xCoordinates[i] = Math.round(x + (contour.xCoordinates[i] - x) * factor);\n }\n }\n }\n}\nclass CompositeGlyph {\n constructor({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions\n }) {\n this.flags = flags;\n this.glyphIndex = glyphIndex;\n this.argument1 = argument1;\n this.argument2 = argument2;\n this.transf = transf;\n this.instructions = instructions;\n }\n static parse(pos, glyf) {\n const spos = pos;\n const transf = [];\n let flags = glyf.getUint16(pos);\n const glyphIndex = glyf.getUint16(pos + 2);\n pos += 4;\n let argument1, argument2;\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt16(pos);\n argument2 = glyf.getInt16(pos + 2);\n } else {\n argument1 = glyf.getUint16(pos);\n argument2 = glyf.getUint16(pos + 2);\n }\n pos += 4;\n flags ^= ARG_1_AND_2_ARE_WORDS;\n } else {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt8(pos);\n argument2 = glyf.getInt8(pos + 1);\n } else {\n argument1 = glyf.getUint8(pos);\n argument2 = glyf.getUint8(pos + 1);\n }\n pos += 2;\n }\n if (flags & WE_HAVE_A_SCALE) {\n transf.push(glyf.getUint16(pos));\n pos += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n pos += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2), glyf.getUint16(pos + 4), glyf.getUint16(pos + 6));\n pos += 8;\n }\n let instructions = null;\n if (flags & WE_HAVE_INSTRUCTIONS) {\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n }\n return [pos - spos, new CompositeGlyph({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions\n })];\n }\n getSize() {\n let size = 2 + 2 + this.transf.length * 2;\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n size += 2 + this.instructions.length;\n }\n size += 2;\n if (this.flags & 2) {\n if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) {\n size += 2;\n }\n } else if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {\n size += 2;\n }\n return size;\n }\n write(pos, buf) {\n const spos = pos;\n if (this.flags & ARGS_ARE_XY_VALUES) {\n if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n } else if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n buf.setUint16(pos, this.flags);\n buf.setUint16(pos + 2, this.glyphIndex);\n pos += 4;\n if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n if (this.flags & ARGS_ARE_XY_VALUES) {\n buf.setInt16(pos, this.argument1);\n buf.setInt16(pos + 2, this.argument2);\n } else {\n buf.setUint16(pos, this.argument1);\n buf.setUint16(pos + 2, this.argument2);\n }\n pos += 4;\n } else {\n buf.setUint8(pos, this.argument1);\n buf.setUint8(pos + 1, this.argument2);\n pos += 2;\n }\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);\n pos += this.instructions.length;\n }\n }\n return pos - spos;\n }\n scale(x, factor) {}\n}\nfunction pruneCompositeGlyphCycles(glyfTable, locaEntries, numGlyphs) {\n const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength);\n const components = new Array(numGlyphs);\n for (let i = 0; i < numGlyphs; i++) {\n const offset = locaEntries[i].offset;\n const endOffset = Math.min(locaEntries[i].endOffset, glyf.byteLength);\n if (endOffset - offset <= GLYPH_HEADER_SIZE || glyf.getInt16(offset) >= 0) {\n continue;\n }\n const comps = [];\n let p = offset + GLYPH_HEADER_SIZE;\n while (p + 4 <= endOffset) {\n const flags = glyf.getUint16(p);\n const gid = glyf.getUint16(p + 2);\n let size = 4 + (flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n if (flags & WE_HAVE_A_SCALE) {\n size += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n size += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n size += 8;\n }\n comps.push({\n gid,\n offset: p,\n size,\n flags\n });\n p += size;\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n }\n if (comps.length) {\n components[i] = comps;\n }\n }\n const WHITE = 0,\n GRAY = 1,\n BLACK = 2;\n const state = new Uint8Array(numGlyphs);\n const backEdges = new Map();\n for (let start = 0; start < numGlyphs; start++) {\n if (state[start] !== WHITE || !components[start]) {\n continue;\n }\n const stack = [{\n node: start,\n idx: 0\n }];\n state[start] = GRAY;\n while (stack.length > 0) {\n const top = stack.at(-1);\n const comps = components[top.node];\n if (!comps || top.idx >= comps.length) {\n state[top.node] = BLACK;\n stack.pop();\n continue;\n }\n const compIdx = top.idx++;\n const next = comps[compIdx].gid;\n if (next >= numGlyphs || state[next] === BLACK) {\n continue;\n }\n if (state[next] === WHITE) {\n state[next] = GRAY;\n stack.push({\n node: next,\n idx: 0\n });\n continue;\n }\n backEdges.getOrInsertComputed(top.node, makeSet).add(compIdx);\n }\n }\n const droppedGlyphs = new Set();\n for (const [gIdx, removeSet] of backEdges) {\n const comps = components[gIdx];\n const remaining = [];\n for (let ci = 0; ci < comps.length; ci++) {\n if (!removeSet.has(ci)) {\n remaining.push(comps[ci]);\n }\n }\n if (remaining.length === 0) {\n droppedGlyphs.add(gIdx);\n continue;\n }\n const start = locaEntries[gIdx].offset;\n const endOffset = Math.min(locaEntries[gIdx].endOffset, glyf.byteLength);\n let writePos = start + GLYPH_HEADER_SIZE;\n for (let ci = 0; ci < remaining.length; ci++) {\n const c = remaining[ci];\n const isLast = ci === remaining.length - 1;\n let newFlags = c.flags & ~WE_HAVE_INSTRUCTIONS;\n newFlags = isLast ? newFlags & ~MORE_COMPONENTS : newFlags | MORE_COMPONENTS;\n if (writePos !== c.offset) {\n glyfTable.copyWithin(writePos, c.offset, c.offset + c.size);\n }\n glyf.setUint16(writePos, newFlags);\n writePos += c.size;\n }\n if (writePos < endOffset) {\n glyfTable.fill(0, writePos, endOffset);\n }\n }\n return droppedGlyphs;\n}\n\n;// ./src/core/to_unicode_map.js\n\nclass ToUnicodeMap {\n constructor(cmap = []) {\n this._map = cmap;\n }\n get length() {\n return this._map.length;\n }\n forEach(callback) {\n for (const charCode in this._map) {\n callback(charCode, this._map[charCode].codePointAt(0));\n }\n }\n has(i) {\n return this._map[i] !== undefined;\n }\n get(i) {\n return this._map[i];\n }\n charCodeOf(value) {\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n amend(map) {\n for (const charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n}\nclass IdentityToUnicodeMap {\n constructor(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n get length() {\n return this.lastChar + 1 - this.firstChar;\n }\n forEach(callback) {\n for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n }\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n }\n get(i) {\n return this.firstChar <= i && i <= this.lastChar ? String.fromCharCode(i) : undefined;\n }\n charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1;\n }\n amend(map) {\n unreachable(\"Should not call amend()\");\n }\n}\n\n;// ./src/core/cff_font.js\n\n\n\nclass CFFFont {\n constructor(file, properties) {\n this.properties = properties;\n const parser = new CFFParser(file, properties, (/* inlined export .SEAC_ANALYSIS_ENABLED */true));\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n try {\n this.data = compiler.compile();\n } catch (ex) {\n warn(`Failed to compile font \"${properties.loadedName}\": \"${ex}\".`);\n file.reset();\n this.data = file.getBytes();\n }\n this._createBuiltInEncoding();\n }\n get numGlyphs() {\n return this.cff.charStrings.count;\n }\n getCharset() {\n return this.cff.charset.charset;\n }\n getGlyphMapping() {\n const cff = this.cff;\n const properties = this.properties;\n const {\n cidToGidMap,\n cMap\n } = properties;\n const charsets = cff.charset.charset;\n let charCodeToGlyphId;\n let glyphId;\n if (properties.composite) {\n let invCidToGidMap;\n if (cidToGidMap?.length > 0) {\n invCidToGidMap = Object.create(null);\n for (let i = 0, ii = cidToGidMap.length; i < ii; i++) {\n const gid = cidToGidMap[i];\n if (gid !== undefined) {\n invCidToGidMap[gid] = i;\n }\n }\n }\n charCodeToGlyphId = Object.create(null);\n let charCode;\n if (cff.isCIDFont) {\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n const cid = charsets[glyphId];\n charCode = cMap.charCodeOf(cid);\n if (invCidToGidMap?.[charCode] !== undefined) {\n charCode = invCidToGidMap[charCode];\n }\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n return charCodeToGlyphId;\n }\n let encoding = cff.encoding ? cff.encoding.encoding : null;\n if (properties.isInternalFont) {\n encoding = properties.defaultEncoding;\n }\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n }\n hasGlyphId(id) {\n return this.cff.hasGlyphId(id);\n }\n _createBuiltInEncoding() {\n const {\n charset,\n encoding\n } = this.cff;\n if (!charset || !encoding) {\n return;\n }\n const charsets = charset.charset,\n encodings = encoding.encoding;\n const map = [];\n for (const charCode in encodings) {\n const glyphId = encodings[charCode];\n if (glyphId >= 0) {\n const glyphName = charsets[glyphId];\n if (glyphName) {\n map[charCode] = glyphName;\n }\n }\n }\n if (map.length > 0) {\n this.properties.builtInEncoding = map;\n }\n }\n}\n\n;// ./src/shared/obj_bin_transform_utils.js\n\nclass CSS_FONT_INFO {\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n}\nclass SYSTEM_FONT_INFO {\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n}\nclass FONT_INFO {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static OFFSET_BBOX = this.OFFSET_NUMBERS + this.numbers.length * 8;\n static OFFSET_FONT_MATRIX = this.OFFSET_BBOX + 1 + 2 * 4;\n static OFFSET_DEFAULT_VMETRICS = this.OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static OFFSET_STRINGS = this.OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n}\nclass PATTERN_INFO {\n static KIND = 0;\n static HAS_BBOX = 1;\n static HAS_BACKGROUND = 2;\n static SHADING_TYPE = 3;\n static N_COORD = 4;\n static N_COLOR = 8;\n static N_STOP = 12;\n static N_FIGURES = 16;\n}\nclass InfoUtils {\n static get decoder() {\n return shadow(this, \"decoder\", new TextDecoder());\n }\n static get encoder() {\n return shadow(this, \"encoder\", new TextEncoder());\n }\n}\n\n;// ./src/core/obj_bin_transform_core.js\n\n\nfunction compileCssFontInfo(info) {\n const {\n encoder\n } = InfoUtils;\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of CSS_FONT_INFO.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n const buffer = new ArrayBuffer(stringsLength);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n for (const prop of CSS_FONT_INFO.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n assert(offset === buffer.byteLength, \"compileCssFontInfo: Buffer overflow\");\n return buffer;\n}\nfunction compileSystemFontInfo(info) {\n const {\n encoder\n } = InfoUtils;\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of SYSTEM_FONT_INFO.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n stringsLength += 4;\n let encodedStyleStyle,\n encodedStyleWeight,\n lengthEstimate = 1 + stringsLength;\n if (info.style) {\n encodedStyleStyle = encoder.encode(info.style.style);\n encodedStyleWeight = encoder.encode(info.style.weight);\n lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n }\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n view.setUint8(offset++, info.guessFallback ? 1 : 0);\n view.setUint32(offset, 0);\n offset += 4;\n stringsLength = 0;\n for (const prop of SYSTEM_FONT_INFO.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n stringsLength += 4 + length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(offset - stringsLength - 4, stringsLength);\n if (info.style) {\n view.setUint32(offset, encodedStyleStyle.length);\n data.set(encodedStyleStyle, offset + 4);\n offset += 4 + encodedStyleStyle.length;\n view.setUint32(offset, encodedStyleWeight.length);\n data.set(encodedStyleWeight, offset + 4);\n offset += 4 + encodedStyleWeight.length;\n }\n assert(offset <= buffer.byteLength, \"compileSystemFontInfo: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n}\nfunction compileFontInfo(font) {\n const systemFontInfoBuffer = font.systemFontInfo ? compileSystemFontInfo(font.systemFontInfo) : null;\n const cssFontInfoBuffer = font.cssFontInfo ? compileCssFontInfo(font.cssFontInfo) : null;\n const {\n encoder\n } = InfoUtils;\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of FONT_INFO.strings) {\n encodedStrings[prop] = encoder.encode(font[prop]);\n stringsLength += 4 + encodedStrings[prop].length;\n }\n const lengthEstimate = FONT_INFO.OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer?.byteLength ?? 0) + 4 + (cssFontInfoBuffer?.byteLength ?? 0) + 4 + (font.data?.length ?? 0);\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n const numBools = FONT_INFO.bools.length;\n let boolByte = 0,\n boolBit = 0;\n for (let i = 0; i < numBools; i++) {\n const value = font[FONT_INFO.bools[i]];\n const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01;\n boolByte |= bits << boolBit;\n boolBit += 2;\n if (boolBit === 8 || i === numBools - 1) {\n view.setUint8(offset++, boolByte);\n boolByte = 0;\n boolBit = 0;\n }\n }\n assert(offset === FONT_INFO.OFFSET_NUMBERS, \"compileFontInfo: Boolean properties offset mismatch\");\n for (const prop of FONT_INFO.numbers) {\n view.setFloat64(offset, font[prop]);\n offset += 8;\n }\n assert(offset === FONT_INFO.OFFSET_BBOX, \"compileFontInfo: Number properties offset mismatch\");\n if (font.bbox) {\n view.setUint8(offset++, 4);\n for (const coord of font.bbox) {\n view.setInt16(offset, coord, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 2 * 4;\n }\n assert(offset === FONT_INFO.OFFSET_FONT_MATRIX, \"compileFontInfo: BBox properties offset mismatch\");\n if (font.fontMatrix) {\n view.setUint8(offset++, 6);\n for (const point of font.fontMatrix) {\n view.setFloat64(offset, point, true);\n offset += 8;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 8 * 6;\n }\n assert(offset === FONT_INFO.OFFSET_DEFAULT_VMETRICS, \"compileFontInfo: FontMatrix properties offset mismatch\");\n if (font.defaultVMetrics) {\n view.setUint8(offset++, 3);\n for (const metric of font.defaultVMetrics) {\n view.setInt16(offset, metric, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 3 * 2;\n }\n assert(offset === FONT_INFO.OFFSET_STRINGS, \"compileFontInfo: DefaultVMetrics properties offset mismatch\");\n view.setUint32(FONT_INFO.OFFSET_STRINGS, 0);\n offset += 4;\n for (const prop of FONT_INFO.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(FONT_INFO.OFFSET_STRINGS, offset - FONT_INFO.OFFSET_STRINGS - 4);\n if (!systemFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = systemFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"compileFontInfo: Buffer overflow at systemFontInfo\");\n data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (!cssFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = cssFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"compileFontInfo: Buffer overflow at cssFontInfo\");\n data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (font.data === undefined) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n view.setUint32(offset, font.data.length);\n data.set(font.data, offset + 4);\n offset += 4 + font.data.length;\n }\n assert(offset <= buffer.byteLength, \"compileFontInfo: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n}\nfunction compilePatternInfo(ir) {\n let kind,\n bbox = null,\n coords = [],\n colors = [],\n colorStops = [],\n shadingType = null,\n background = null;\n switch (ir[0]) {\n case \"RadialAxial\":\n kind = ir[1] === \"axial\" ? 1 : 2;\n bbox = ir[2];\n colorStops = ir[3];\n if (kind === 1) {\n coords.push(...ir[4], ...ir[5]);\n } else {\n coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]);\n }\n break;\n case \"Mesh\":\n kind = 3;\n shadingType = ir[1];\n coords = ir[2];\n colors = ir[3];\n bbox = ir[6];\n background = ir[7];\n break;\n default:\n throw new Error(`Unsupported pattern type: ${ir[0]}`);\n }\n const nCoord = Math.floor(coords.length / 2);\n const nColor = Math.floor(colors.length / 4);\n const nStop = colorStops.length;\n const byteLen = 20 + nCoord * 8 + nColor * 4 + nStop * 8 + (bbox ? 16 : 0) + (background ? 3 : 0);\n const buffer = new ArrayBuffer(byteLen);\n const dataView = new DataView(buffer);\n const u8data = new Uint8Array(buffer);\n dataView.setUint8(PATTERN_INFO.KIND, kind);\n dataView.setUint8(PATTERN_INFO.HAS_BBOX, bbox ? 1 : 0);\n dataView.setUint8(PATTERN_INFO.HAS_BACKGROUND, background ? 1 : 0);\n dataView.setUint8(PATTERN_INFO.SHADING_TYPE, shadingType);\n dataView.setUint32(PATTERN_INFO.N_COORD, nCoord, true);\n dataView.setUint32(PATTERN_INFO.N_COLOR, nColor, true);\n dataView.setUint32(PATTERN_INFO.N_STOP, nStop, true);\n dataView.setUint32(PATTERN_INFO.N_FIGURES, 0, true);\n let offset = 20;\n const coordsView = new Float32Array(buffer, offset, nCoord * 2);\n coordsView.set(coords);\n offset += nCoord * 8;\n u8data.set(colors, offset);\n offset += nColor * 4;\n for (const [pos, hex] of colorStops) {\n dataView.setFloat32(offset, pos, true);\n offset += 4;\n dataView.setUint32(offset, parseInt(hex.slice(1), 16), true);\n offset += 4;\n }\n if (bbox) {\n for (const v of bbox) {\n dataView.setFloat32(offset, v, true);\n offset += 4;\n }\n }\n if (background) {\n u8data.set(background, offset);\n }\n return buffer;\n}\nfunction compileFontPathInfo(path) {\n return path.slice().buffer;\n}\n\n;// ./src/core/font_renderer.js\n\n\n\n\n\n\n\nfunction getFloat214(view, offset) {\n return view.getInt16(offset) / 16384;\n}\nfunction getSubroutineBias(subrs) {\n const numSubrs = subrs.length;\n if (numSubrs >= 33900) {\n return 32768;\n }\n return numSubrs < 1240 ? 107 : 1131;\n}\nfunction parseCmap(data, start, end) {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const offset = view.getUint16(start + 2) === 1 ? view.getUint32(start + 8) : view.getUint32(start + 16);\n const format = view.getUint16(start + offset);\n let ranges, p, i;\n if (format === 4) {\n const segCount = view.getUint16(start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = {\n end: view.getUint16(p)\n };\n }\n p += 2;\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = view.getUint16(p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = view.getUint16(p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n let idOffset = view.getUint16(p);\n if (idOffset === 0) {\n continue;\n }\n ranges[i].ids = [];\n for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = view.getUint16(p + idOffset);\n idOffset += 2;\n }\n }\n return ranges;\n } else if (format === 12) {\n const groups = view.getUint32(start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n for (i = 0; i < groups; i++) {\n start = view.getUint32(p);\n ranges.push({\n start,\n end: view.getUint32(p + 4),\n idDelta: view.getUint32(p + 8) - start\n });\n p += 12;\n }\n return ranges;\n }\n throw new FormatError(`unsupported cmap: ${format}`);\n}\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n const properties = {};\n const parser = new CFFParser(new Stream(data, start, end - start), properties, seacAnalysisEnabled);\n const cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs: cff.topDict.privateDict?.subrsIndex?.objects,\n gsubrs: cff.globalSubrIndex?.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray\n };\n}\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n const view = new DataView(loca.buffer, loca.byteOffset, loca.byteLength);\n let itemSize, itemDecode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = (dv, offset) => dv.getUint32(offset);\n } else {\n itemSize = 2;\n itemDecode = (dv, offset) => 2 * dv.getUint16(offset);\n }\n const glyphs = [];\n let startOffset = itemDecode(view, 0);\n for (let j = itemSize; j < loca.length; j += itemSize) {\n const endOffset = itemDecode(view, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n return glyphs;\n}\nfunction lookupCmap(ranges, unicode) {\n const code = unicode.codePointAt(0);\n let gid = 0,\n l = 0,\n r = ranges.length - 1;\n while (l < r) {\n const c = l + r + 1 >> 1;\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff;\n }\n return {\n charCode: code,\n glyphId: gid\n };\n}\nfunction compileGlyf(code, cmds, font, visitedGlyphs = new Set()) {\n if (!code?.length) {\n return;\n }\n if (visitedGlyphs.has(code)) {\n warn(\"compileGlyf: skipping recursive composite glyph reference.\");\n return;\n }\n visitedGlyphs.add(code);\n function moveTo(x, y) {\n if (firstPoint) {\n cmds.add(DrawOPS.lineTo, firstPoint);\n }\n firstPoint = [x, y];\n cmds.add(DrawOPS.moveTo, [x, y]);\n }\n function lineTo(x, y) {\n cmds.add(DrawOPS.lineTo, [x, y]);\n }\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.add(DrawOPS.quadraticCurveTo, [xa, ya, x, y]);\n }\n const view = new DataView(code.buffer, code.byteOffset, code.byteLength);\n let i = 0;\n const numberOfContours = view.getInt16(i);\n let flags;\n let firstPoint = null;\n let x = 0,\n y = 0;\n i += 10;\n if (numberOfContours < 0) {\n do {\n flags = view.getUint16(i);\n const glyphIndex = view.getUint16(i + 2);\n i += 4;\n let arg1, arg2;\n if (flags & 0x01) {\n if (flags & 0x02) {\n arg1 = view.getInt16(i);\n arg2 = view.getInt16(i + 2);\n } else {\n arg1 = view.getUint16(i);\n arg2 = view.getUint16(i + 2);\n }\n i += 4;\n } else if (flags & 0x02) {\n arg1 = view.getInt8(i++);\n arg2 = view.getInt8(i++);\n } else {\n arg1 = code[i++];\n arg2 = code[i++];\n }\n if (flags & 0x02) {\n x = arg1;\n y = arg2;\n } else {\n x = 0;\n y = 0;\n }\n let scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n if (flags & 0x08) {\n scaleX = scaleY = getFloat214(view, i);\n i += 2;\n } else if (flags & 0x40) {\n scaleX = getFloat214(view, i);\n scaleY = getFloat214(view, i + 2);\n i += 4;\n } else if (flags & 0x80) {\n scaleX = getFloat214(view, i);\n scale01 = getFloat214(view, i + 2);\n scale10 = getFloat214(view, i + 4);\n scaleY = getFloat214(view, i + 6);\n i += 8;\n }\n const subglyph = font.glyphs[glyphIndex];\n if (subglyph) {\n cmds.save();\n cmds.transform([scaleX, scale01, scale10, scaleY, x, y]);\n if (!(flags & 0x02)) {}\n compileGlyf(subglyph, cmds, font, visitedGlyphs);\n cmds.restore();\n }\n } while (flags & 0x20);\n } else {\n const endPtsOfContours = [];\n let j, jj;\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push(view.getUint16(i));\n i += 2;\n }\n const instructionLength = view.getUint16(i);\n i += 2 + instructionLength;\n const numberOfPoints = endPtsOfContours.at(-1) + 1;\n const points = [];\n while (points.length < numberOfPoints) {\n flags = code[i++];\n let repeat = 1;\n if (flags & 0x08) {\n repeat += code[i++];\n }\n while (repeat-- > 0) {\n points.push({\n flags\n });\n }\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x12) {\n case 0x00:\n x += view.getInt16(i);\n i += 2;\n break;\n case 0x02:\n x -= code[i++];\n break;\n case 0x12:\n x += code[i++];\n break;\n }\n points[j].x = x;\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x24) {\n case 0x00:\n y += view.getInt16(i);\n i += 2;\n break;\n case 0x04:\n y -= code[i++];\n break;\n case 0x24:\n y += code[i++];\n break;\n }\n points[j].y = y;\n }\n let startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n const endPoint = endPtsOfContours[i];\n const contour = points.slice(startPoint, endPoint + 1);\n if (contour[0].flags & 1) {\n contour.push(contour[0]);\n } else if (contour.at(-1).flags & 1) {\n contour.unshift(contour.at(-1));\n } else {\n const p = {\n flags: 1,\n x: (contour[0].x + contour.at(-1).x) / 2,\n y: (contour[0].y + contour.at(-1).y) / 2\n };\n contour.unshift(p);\n contour.push(p);\n }\n moveTo(contour[0].x, contour[0].y);\n for (j = 1, jj = contour.length; j < jj; j++) {\n if (contour[j].flags & 1) {\n lineTo(contour[j].x, contour[j].y);\n } else if (contour[j + 1].flags & 1) {\n quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y);\n j++;\n } else {\n quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2);\n }\n }\n startPoint = endPoint + 1;\n }\n }\n visitedGlyphs.delete(code);\n}\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n if (firstPoint) {\n cmds.add(DrawOPS.lineTo, firstPoint);\n }\n firstPoint = [x, y];\n cmds.add(DrawOPS.moveTo, [x, y]);\n }\n function lineTo(x, y) {\n cmds.add(DrawOPS.lineTo, [x, y]);\n }\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.add(DrawOPS.curveTo, [x1, y1, x2, y2, x, y]);\n }\n const stack = [];\n let x = 0,\n y = 0;\n let stems = 0;\n let firstPoint = null;\n function parse(code) {\n const view = new DataView(code.buffer, code.byteOffset, code.byteLength);\n let i = 0;\n while (i < code.length) {\n let stackClean = false;\n let v = code[i++];\n let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n switch (v) {\n case 1:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 3:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 4:\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 5:\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 6:\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 7:\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n lineTo(x, y);\n }\n break;\n case 8:\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 10:\n n = stack.pop();\n subrCode = null;\n if (font.isCFFCIDFont) {\n const fdIndex = font.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n const fontDict = font.fdArray[fdIndex];\n let subrs;\n if (fontDict.privateDict?.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n if (subrs) {\n n += getSubroutineBias(subrs);\n subrCode = subrs[n];\n }\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n } else {\n subrCode = font.subrs[n + font.subrsBias];\n }\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 11:\n return;\n case 12:\n v = code[i++];\n switch (v) {\n case 34:\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y1 = y + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y, xb, y1, x, y1);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y, x, y);\n break;\n case 35:\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n stack.pop();\n break;\n case 36:\n xa = x + stack.shift();\n y1 = y + stack.shift();\n xb = xa + stack.shift();\n y2 = y1 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y2, x, y2);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y3 = y2 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y2, xb, y3, x, y);\n break;\n case 37:\n const x0 = x,\n y0 = y;\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb;\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n default:\n throw new FormatError(`unknown operator: 12 ${v}`);\n }\n break;\n case 14:\n if (stack.length >= 4) {\n const achar = stack.pop();\n const bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.save();\n cmds.translate(x, y);\n let cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n cmds.restore();\n cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n }\n return;\n case 18:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 19:\n stems += stack.length >> 1;\n i += stems + 7 >> 3;\n stackClean = true;\n break;\n case 20:\n stems += stack.length >> 1;\n i += stems + 7 >> 3;\n stackClean = true;\n break;\n case 21:\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 22:\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 23:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 24:\n while (stack.length > 2) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n case 25:\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n case 26:\n if (stack.length % 2) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 27:\n if (stack.length % 2) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb;\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 28:\n stack.push(view.getInt16(i));\n i += 2;\n break;\n case 29:\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 30:\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 31:\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n default:\n if (v < 32) {\n throw new FormatError(`unknown operator: ${v}`);\n }\n if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n stack.push((v - 247) * 256 + code[i++] + 108);\n } else if (v < 255) {\n stack.push(-(v - 251) * 256 - code[i++] - 108);\n } else {\n stack.push(view.getInt32(i) / 65536);\n i += 4;\n }\n break;\n }\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n parse(charStringCode);\n}\nclass Commands {\n cmds = [];\n transformStack = [];\n currentTransform = [1, 0, 0, 1, 0, 0];\n add(cmd, args) {\n if (args) {\n const {\n currentTransform\n } = this;\n for (let i = 0, ii = args.length; i < ii; i += 2) {\n Util.applyTransform(args, currentTransform, i);\n }\n this.cmds.push(cmd, ...args);\n } else {\n this.cmds.push(cmd);\n }\n }\n transform(transf) {\n this.currentTransform = Util.transform(this.currentTransform, transf);\n }\n translate(x, y) {\n this.transform([1, 0, 0, 1, x, y]);\n }\n save() {\n this.transformStack.push(this.currentTransform.slice());\n }\n restore() {\n this.currentTransform = this.transformStack.pop() || [1, 0, 0, 1, 0, 0];\n }\n getPath() {\n if (FeatureTest.isFloat16ArraySupported) {\n return new Float16Array(this.cmds);\n }\n return new Float32Array(this.cmds);\n }\n}\nclass CompiledFont {\n #compiledCharCodes = new Set();\n #compiledGlyphs = new Map();\n constructor(fontMatrix) {\n this.fontMatrix = fontMatrix;\n }\n static get NOOP() {\n return shadow(this, \"NOOP\", FeatureTest.isFloat16ArraySupported ? new Float16Array(0) : new Float32Array(0));\n }\n getPath(unicode) {\n const {\n charCode,\n glyphId\n } = lookupCmap(this.cmap, unicode);\n if (this.#compiledGlyphs.has(glyphId) && this.#compiledCharCodes.has(charCode)) {\n return null;\n }\n const path = this.#compiledGlyphs.getOrInsertComputed(glyphId, () => {\n try {\n return this.compileGlyph(this.glyphs[glyphId], glyphId);\n } catch (ex) {\n return ex;\n }\n });\n this.#compiledCharCodes.add(charCode);\n if (path instanceof Error) {\n throw path;\n }\n return compileFontPathInfo(path);\n }\n compileGlyph(code, glyphId) {\n if (!code?.length || code[0] === 14) {\n return CompiledFont.NOOP;\n }\n let fontMatrix = this.fontMatrix;\n if (this.isCFFCIDFont) {\n const fdIndex = this.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n const fontDict = this.fdArray[fdIndex];\n fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n }\n assert(isNumberArray(fontMatrix, 6), \"Expected a valid fontMatrix.\");\n const cmds = new Commands();\n cmds.transform(fontMatrix.slice());\n this.compileGlyphImpl(code, cmds, glyphId);\n cmds.add(DrawOPS.closePath);\n return cmds.getPath();\n }\n compileGlyphImpl() {\n unreachable(\"Children classes should implement this.\");\n }\n}\nclass TrueTypeCompiled extends CompiledFont {\n constructor(glyphs, cmap, fontMatrix) {\n super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n}\nclass Type2Compiled extends CompiledFont {\n constructor(cffInfo, cmap, fontMatrix) {\n super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = getGlyphsUnicode();\n this.gsubrsBias = getSubroutineBias(this.gsubrs);\n this.subrsBias = getSubroutineBias(this.subrs);\n this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n this.fdSelect = cffInfo.fdSelect;\n this.fdArray = cffInfo.fdArray;\n }\n compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\n }\n}\nclass FontRendererFactory {\n static create(font, seacAnalysisEnabled) {\n const data = new Uint8Array(font.data),\n view = new DataView(data.buffer);\n let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n const numTables = view.getUint16(4);\n for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n const tag = bytesToString(data.subarray(p, p + 4));\n const offset = view.getUint32(p + 8);\n const length = view.getUint32(p + 12);\n switch (tag) {\n case \"cmap\":\n cmap = parseCmap(data, offset, offset + length);\n break;\n case \"glyf\":\n glyf = data.subarray(offset, offset + length);\n break;\n case \"loca\":\n loca = data.subarray(offset, offset + length);\n break;\n case \"head\":\n unitsPerEm = view.getUint16(offset + 18);\n indexToLocFormat = view.getUint16(offset + 50);\n break;\n case \"CFF \":\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n if (glyf) {\n const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n }\n return new Type2Compiled(cff, cmap, font.fontMatrix);\n }\n}\n\n;// ./src/core/metrics.js\n\nconst getMetrics = getLookupTableFactory(function (t) {\n t.Courier = 600;\n t[\"Courier-Bold\"] = 600;\n t[\"Courier-BoldOblique\"] = 600;\n t[\"Courier-Oblique\"] = 600;\n t.Helvetica = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t.Symbol = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.universal = 713;\n t.numbersign = 500;\n t.existential = 549;\n t.percent = 833;\n t.ampersand = 778;\n t.suchthat = 439;\n t.parenleft = 333;\n t.parenright = 333;\n t.asteriskmath = 500;\n t.plus = 549;\n t.comma = 250;\n t.minus = 549;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 549;\n t.equal = 549;\n t.greater = 549;\n t.question = 444;\n t.congruent = 549;\n t.Alpha = 722;\n t.Beta = 667;\n t.Chi = 722;\n t.Delta = 612;\n t.Epsilon = 611;\n t.Phi = 763;\n t.Gamma = 603;\n t.Eta = 722;\n t.Iota = 333;\n t.theta1 = 631;\n t.Kappa = 722;\n t.Lambda = 686;\n t.Mu = 889;\n t.Nu = 722;\n t.Omicron = 722;\n t.Pi = 768;\n t.Theta = 741;\n t.Rho = 556;\n t.Sigma = 592;\n t.Tau = 611;\n t.Upsilon = 690;\n t.sigma1 = 439;\n t.Omega = 768;\n t.Xi = 645;\n t.Psi = 795;\n t.Zeta = 611;\n t.bracketleft = 333;\n t.therefore = 863;\n t.bracketright = 333;\n t.perpendicular = 658;\n t.underscore = 500;\n t.radicalex = 500;\n t.alpha = 631;\n t.beta = 549;\n t.chi = 549;\n t.delta = 494;\n t.epsilon = 439;\n t.phi = 521;\n t.gamma = 411;\n t.eta = 603;\n t.iota = 329;\n t.phi1 = 603;\n t.kappa = 549;\n t.lambda = 549;\n t.mu = 576;\n t.nu = 521;\n t.omicron = 549;\n t.pi = 549;\n t.theta = 521;\n t.rho = 549;\n t.sigma = 603;\n t.tau = 439;\n t.upsilon = 576;\n t.omega1 = 713;\n t.omega = 686;\n t.xi = 493;\n t.psi = 686;\n t.zeta = 494;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.similar = 549;\n t.Euro = 750;\n t.Upsilon1 = 620;\n t.minute = 247;\n t.lessequal = 549;\n t.fraction = 167;\n t.infinity = 713;\n t.florin = 500;\n t.club = 753;\n t.diamond = 753;\n t.heart = 753;\n t.spade = 753;\n t.arrowboth = 1042;\n t.arrowleft = 987;\n t.arrowup = 603;\n t.arrowright = 987;\n t.arrowdown = 603;\n t.degree = 400;\n t.plusminus = 549;\n t.second = 411;\n t.greaterequal = 549;\n t.multiply = 549;\n t.proportional = 713;\n t.partialdiff = 494;\n t.bullet = 460;\n t.divide = 549;\n t.notequal = 549;\n t.equivalence = 549;\n t.approxequal = 549;\n t.ellipsis = 1000;\n t.arrowvertex = 603;\n t.arrowhorizex = 1000;\n t.carriagereturn = 658;\n t.aleph = 823;\n t.Ifraktur = 686;\n t.Rfraktur = 795;\n t.weierstrass = 987;\n t.circlemultiply = 768;\n t.circleplus = 768;\n t.emptyset = 823;\n t.intersection = 768;\n t.union = 768;\n t.propersuperset = 713;\n t.reflexsuperset = 713;\n t.notsubset = 713;\n t.propersubset = 713;\n t.reflexsubset = 713;\n t.element = 713;\n t.notelement = 713;\n t.angle = 768;\n t.gradient = 713;\n t.registerserif = 790;\n t.copyrightserif = 790;\n t.trademarkserif = 890;\n t.product = 823;\n t.radical = 549;\n t.dotmath = 250;\n t.logicalnot = 713;\n t.logicaland = 603;\n t.logicalor = 603;\n t.arrowdblboth = 1042;\n t.arrowdblleft = 987;\n t.arrowdblup = 603;\n t.arrowdblright = 987;\n t.arrowdbldown = 603;\n t.lozenge = 494;\n t.angleleft = 329;\n t.registersans = 790;\n t.copyrightsans = 790;\n t.trademarksans = 786;\n t.summation = 713;\n t.parenlefttp = 384;\n t.parenleftex = 384;\n t.parenleftbt = 384;\n t.bracketlefttp = 384;\n t.bracketleftex = 384;\n t.bracketleftbt = 384;\n t.bracelefttp = 494;\n t.braceleftmid = 494;\n t.braceleftbt = 494;\n t.braceex = 494;\n t.angleright = 329;\n t.integral = 274;\n t.integraltp = 686;\n t.integralex = 686;\n t.integralbt = 686;\n t.parenrighttp = 384;\n t.parenrightex = 384;\n t.parenrightbt = 384;\n t.bracketrighttp = 384;\n t.bracketrightex = 384;\n t.bracketrightbt = 384;\n t.bracerighttp = 494;\n t.bracerightmid = 494;\n t.bracerightbt = 494;\n t.apple = 790;\n });\n t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 408;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 564;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 564;\n t.equal = 564;\n t.greater = 564;\n t.question = 444;\n t.at = 921;\n t.A = 722;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 556;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 389;\n t.K = 722;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 556;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 722;\n t.W = 944;\n t.X = 722;\n t.Y = 722;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 469;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 444;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 333;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.asciitilde = 541;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 180;\n t.quotedblleft = 444;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 453;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 444;\n t.quotedblright = 444;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 444;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 889;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 444;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 564;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 444;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 444;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 444;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 444;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 444;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 444;\n t.Amacron = 722;\n t.rcaron = 333;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 556;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 588;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 564;\n t.uacute = 500;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 444;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 722;\n t.Iacute = 333;\n t.plusminus = 564;\n t.brokenbar = 200;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 333;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 326;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 444;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 344;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 722;\n t.zdotaccent = 444;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 500;\n t.minus = 564;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 564;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 1000;\n t.ampersand = 833;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 930;\n t.A = 722;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 778;\n t.L = 667;\n t.M = 944;\n t.N = 722;\n t.O = 778;\n t.P = 611;\n t.Q = 778;\n t.R = 722;\n t.S = 556;\n t.T = 667;\n t.U = 722;\n t.V = 722;\n t.W = 1000;\n t.X = 722;\n t.Y = 722;\n t.Z = 667;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 581;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 556;\n t.c = 444;\n t.d = 556;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 333;\n t.k = 556;\n t.l = 278;\n t.m = 833;\n t.n = 556;\n t.o = 500;\n t.p = 556;\n t.q = 556;\n t.r = 444;\n t.s = 389;\n t.t = 333;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 394;\n t.bar = 220;\n t.braceright = 394;\n t.asciitilde = 520;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 540;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 300;\n t.Lslash = 667;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 330;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 556;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 570;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 667;\n t.Cacute = 722;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 722;\n t.rcaron = 444;\n t.ccedilla = 444;\n t.Zdotaccent = 667;\n t.Thorn = 611;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 556;\n t.dcaron = 672;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 667;\n t.partialdiff = 494;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 778;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 444;\n t.omacron = 500;\n t.Zacute = 667;\n t.Zcaron = 667;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 416;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 300;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 394;\n t.Kcommaaccent = 778;\n t.Lacute = 667;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 667;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 444;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 667;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 444;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 556;\n t.minus = 570;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 333;\n t.logicalnot = 570;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 389;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 832;\n t.A = 667;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 667;\n t.F = 667;\n t.G = 722;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 667;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 889;\n t.X = 667;\n t.Y = 611;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 570;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 556;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 556;\n t.v = 444;\n t.w = 667;\n t.x = 500;\n t.y = 444;\n t.z = 389;\n t.braceleft = 348;\n t.bar = 220;\n t.braceright = 348;\n t.asciitilde = 570;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 500;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 944;\n t.ordfeminine = 266;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 300;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 611;\n t.divide = 570;\n t.Yacute = 611;\n t.Acircumflex = 667;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 667;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 608;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 444;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 722;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 366;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 576;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 382;\n t.Kcommaaccent = 667;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 500;\n t.minus = 606;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 606;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 420;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 675;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 675;\n t.equal = 675;\n t.greater = 675;\n t.question = 500;\n t.at = 920;\n t.A = 611;\n t.B = 611;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 611;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 444;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 667;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 611;\n t.S = 500;\n t.T = 556;\n t.U = 722;\n t.V = 611;\n t.W = 833;\n t.X = 611;\n t.Y = 556;\n t.Z = 556;\n t.bracketleft = 389;\n t.backslash = 278;\n t.bracketright = 389;\n t.asciicircum = 422;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 278;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 444;\n t.l = 278;\n t.m = 722;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 444;\n t.w = 667;\n t.x = 444;\n t.y = 444;\n t.z = 389;\n t.braceleft = 400;\n t.bar = 275;\n t.braceright = 400;\n t.asciitilde = 541;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 214;\n t.quotedblleft = 556;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 523;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 556;\n t.quotedblright = 556;\n t.guillemotright = 500;\n t.ellipsis = 889;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 889;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 556;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 667;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 556;\n t.divide = 675;\n t.Yacute = 556;\n t.Acircumflex = 611;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 667;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 556;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 611;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 500;\n t.Amacron = 611;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 556;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 611;\n t.Sacute = 500;\n t.dcaron = 544;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 611;\n t.Abreve = 611;\n t.multiply = 675;\n t.uacute = 500;\n t.Tcaron = 556;\n t.partialdiff = 476;\n t.ydieresis = 444;\n t.Nacute = 667;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 667;\n t.Iacute = 333;\n t.plusminus = 675;\n t.brokenbar = 275;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 556;\n t.Zcaron = 556;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 300;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 611;\n t.Adieresis = 611;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 500;\n t.lcaron = 300;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 500;\n t.Scommaaccent = 500;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 667;\n t.otilde = 500;\n t.Rcommaaccent = 611;\n t.Lcommaaccent = 556;\n t.Atilde = 611;\n t.Aogonek = 611;\n t.Aring = 611;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 444;\n t.minus = 675;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 675;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t.ZapfDingbats = getLookupTableFactory(function (t) {\n t.space = 278;\n t.a1 = 974;\n t.a2 = 961;\n t.a202 = 974;\n t.a3 = 980;\n t.a4 = 719;\n t.a5 = 789;\n t.a119 = 790;\n t.a118 = 791;\n t.a117 = 690;\n t.a11 = 960;\n t.a12 = 939;\n t.a13 = 549;\n t.a14 = 855;\n t.a15 = 911;\n t.a16 = 933;\n t.a105 = 911;\n t.a17 = 945;\n t.a18 = 974;\n t.a19 = 755;\n t.a20 = 846;\n t.a21 = 762;\n t.a22 = 761;\n t.a23 = 571;\n t.a24 = 677;\n t.a25 = 763;\n t.a26 = 760;\n t.a27 = 759;\n t.a28 = 754;\n t.a6 = 494;\n t.a7 = 552;\n t.a8 = 537;\n t.a9 = 577;\n t.a10 = 692;\n t.a29 = 786;\n t.a30 = 788;\n t.a31 = 788;\n t.a32 = 790;\n t.a33 = 793;\n t.a34 = 794;\n t.a35 = 816;\n t.a36 = 823;\n t.a37 = 789;\n t.a38 = 841;\n t.a39 = 823;\n t.a40 = 833;\n t.a41 = 816;\n t.a42 = 831;\n t.a43 = 923;\n t.a44 = 744;\n t.a45 = 723;\n t.a46 = 749;\n t.a47 = 790;\n t.a48 = 792;\n t.a49 = 695;\n t.a50 = 776;\n t.a51 = 768;\n t.a52 = 792;\n t.a53 = 759;\n t.a54 = 707;\n t.a55 = 708;\n t.a56 = 682;\n t.a57 = 701;\n t.a58 = 826;\n t.a59 = 815;\n t.a60 = 789;\n t.a61 = 789;\n t.a62 = 707;\n t.a63 = 687;\n t.a64 = 696;\n t.a65 = 689;\n t.a66 = 786;\n t.a67 = 787;\n t.a68 = 713;\n t.a69 = 791;\n t.a70 = 785;\n t.a71 = 791;\n t.a72 = 873;\n t.a73 = 761;\n t.a74 = 762;\n t.a203 = 762;\n t.a75 = 759;\n t.a204 = 759;\n t.a76 = 892;\n t.a77 = 892;\n t.a78 = 788;\n t.a79 = 784;\n t.a81 = 438;\n t.a82 = 138;\n t.a83 = 277;\n t.a84 = 415;\n t.a97 = 392;\n t.a98 = 392;\n t.a99 = 668;\n t.a100 = 668;\n t.a89 = 390;\n t.a90 = 390;\n t.a93 = 317;\n t.a94 = 317;\n t.a91 = 276;\n t.a92 = 276;\n t.a205 = 509;\n t.a85 = 509;\n t.a206 = 410;\n t.a86 = 410;\n t.a87 = 234;\n t.a88 = 234;\n t.a95 = 334;\n t.a96 = 334;\n t.a101 = 732;\n t.a102 = 544;\n t.a103 = 544;\n t.a104 = 910;\n t.a106 = 667;\n t.a107 = 760;\n t.a108 = 760;\n t.a112 = 776;\n t.a111 = 595;\n t.a110 = 694;\n t.a109 = 626;\n t.a120 = 788;\n t.a121 = 788;\n t.a122 = 788;\n t.a123 = 788;\n t.a124 = 788;\n t.a125 = 788;\n t.a126 = 788;\n t.a127 = 788;\n t.a128 = 788;\n t.a129 = 788;\n t.a130 = 788;\n t.a131 = 788;\n t.a132 = 788;\n t.a133 = 788;\n t.a134 = 788;\n t.a135 = 788;\n t.a136 = 788;\n t.a137 = 788;\n t.a138 = 788;\n t.a139 = 788;\n t.a140 = 788;\n t.a141 = 788;\n t.a142 = 788;\n t.a143 = 788;\n t.a144 = 788;\n t.a145 = 788;\n t.a146 = 788;\n t.a147 = 788;\n t.a148 = 788;\n t.a149 = 788;\n t.a150 = 788;\n t.a151 = 788;\n t.a152 = 788;\n t.a153 = 788;\n t.a154 = 788;\n t.a155 = 788;\n t.a156 = 788;\n t.a157 = 788;\n t.a158 = 788;\n t.a159 = 788;\n t.a160 = 894;\n t.a161 = 838;\n t.a163 = 1016;\n t.a164 = 458;\n t.a196 = 748;\n t.a165 = 924;\n t.a192 = 748;\n t.a166 = 918;\n t.a167 = 927;\n t.a168 = 928;\n t.a169 = 928;\n t.a170 = 834;\n t.a171 = 873;\n t.a172 = 828;\n t.a173 = 924;\n t.a162 = 924;\n t.a174 = 917;\n t.a175 = 930;\n t.a176 = 931;\n t.a177 = 463;\n t.a178 = 883;\n t.a179 = 836;\n t.a193 = 836;\n t.a180 = 867;\n t.a199 = 867;\n t.a181 = 696;\n t.a200 = 696;\n t.a182 = 874;\n t.a201 = 874;\n t.a183 = 760;\n t.a184 = 946;\n t.a197 = 771;\n t.a185 = 865;\n t.a194 = 771;\n t.a198 = 888;\n t.a186 = 967;\n t.a195 = 888;\n t.a187 = 831;\n t.a188 = 873;\n t.a189 = 927;\n t.a190 = 970;\n t.a191 = 918;\n });\n});\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\n t.Courier = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: -426\n };\n t[\"Courier-Bold\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 439\n };\n t[\"Courier-Oblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426\n };\n t[\"Courier-BoldOblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426\n };\n t.Helvetica = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523\n };\n t[\"Helvetica-Bold\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532\n };\n t[\"Helvetica-Oblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523\n };\n t[\"Helvetica-BoldOblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532\n };\n t[\"Times-Roman\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 662,\n xHeight: 450\n };\n t[\"Times-Bold\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 676,\n xHeight: 461\n };\n t[\"Times-Italic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 653,\n xHeight: 441\n };\n t[\"Times-BoldItalic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 669,\n xHeight: 462\n };\n t.Symbol = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN\n };\n t.ZapfDingbats = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN\n };\n});\n\n;// ./src/core/opentype_file_builder.js\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\nclass OpenTypeFileBuilder {\n #tables = new Map();\n constructor(sfnt) {\n this.sfnt = sfnt;\n }\n static getSearchParams(entriesCount, entrySize) {\n let maxPower2 = 1,\n log2 = 0;\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n const searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange\n };\n }\n toArray() {\n let sfnt = this.sfnt;\n const tables = this.#tables;\n const tablesNames = [...tables.keys()].sort();\n const numTables = tablesNames.length;\n let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n const tableOffsets = [offset];\n for (let i = 0; i < numTables; i++) {\n const table = tables.get(tablesNames[i]);\n const paddedLength = (table.length + 3 & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n const file = new Uint8Array(offset),\n view = new DataView(file.buffer);\n for (let i = 0; i < numTables; i++) {\n const table = tables.get(tablesNames[i]);\n file.set(table, tableOffsets[i]);\n }\n if (sfnt === \"true\") {\n sfnt = \"\\x00\\x01\\x00\\x00\";\n }\n file.set(stringToBytes(sfnt), 0);\n view.setInt16(4, numTables);\n const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n view.setInt16(6, searchParams.range);\n view.setInt16(8, searchParams.entry);\n view.setInt16(10, searchParams.rangeShift);\n offset = OTF_HEADER_SIZE;\n for (let i = 0; i < numTables; i++) {\n const tableName = tablesNames[i];\n file.set(stringToBytes(tableName), offset);\n let checksum = 0;\n for (let j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n const quad = view.getUint32(j);\n checksum = checksum + quad >>> 0;\n }\n view.setInt32(offset + 4, checksum);\n view.setInt32(offset + 8, tableOffsets[i]);\n view.setInt32(offset + 12, tables.get(tableName).length);\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n this.#tables.clear();\n return file;\n }\n addTable(tag, data) {\n if (this.#tables.has(tag)) {\n throw new Error(`Table ${tag} already exists`);\n }\n this.#tables.set(tag, data);\n }\n}\n\n;// ./src/core/type1_parser.js\n\n\n\n\nconst HINTING_ENABLED = false;\nconst COMMAND_MAP = {\n hstem: [1],\n vstem: [3],\n vmoveto: [4],\n rlineto: [5],\n hlineto: [6],\n vlineto: [7],\n rrcurveto: [8],\n callsubr: [10],\n flex: [12, 35],\n drop: [12, 18],\n endchar: [14],\n rmoveto: [21],\n hmoveto: [22],\n vhcurveto: [30],\n hvcurveto: [31]\n};\nclass Type1CharString {\n width = 0;\n lsb = 0;\n flexing = false;\n output = [];\n stack = [];\n convert(encoded, subrs, seacAnalysisEnabled) {\n const count = encoded.length;\n let error = false;\n let wx, sbx, subrNumber;\n for (let i = 0; i < count; i++) {\n let value = encoded[i];\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n switch (value) {\n case 1:\n if (true) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case 3:\n if (true) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case 4:\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n const dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n case 5:\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n case 6:\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n case 7:\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n case 8:\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n case 9:\n this.stack = [];\n break;\n case 10:\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n if (!subrs[subrNumber]) {\n error = true;\n break;\n }\n error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);\n break;\n case 11:\n return error;\n case 13:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n wx = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx);\n error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n break;\n case 14:\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n case 21:\n if (this.flexing) {\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n case 22:\n if (this.flexing) {\n this.stack.push(0);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n case 30:\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n case 31:\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n case (12 << 8) + 0:\n this.stack = [];\n break;\n case (12 << 8) + 1:\n if (true) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case (12 << 8) + 2:\n if (true) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case (12 << 8) + 6:\n if (seacAnalysisEnabled) {\n const asb = this.stack.at(-5);\n this.seac = this.stack.splice(-4, 4);\n this.seac[0] += this.lsb - asb;\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n break;\n case (12 << 8) + 7:\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n this.stack.pop();\n wx = this.stack.pop();\n const sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n case (12 << 8) + 12:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n const num2 = this.stack.pop();\n const num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n case (12 << 8) + 16:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n const numArgs = this.stack.pop();\n if (subrNumber === 0 && numArgs === 3) {\n const flexArgs = this.stack.splice(-17, 17);\n this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]);\n error = this.executeCommand(13, COMMAND_MAP.flex, true);\n this.flexing = false;\n this.stack.push(flexArgs[15], flexArgs[16]);\n } else if (subrNumber === 1 && numArgs === 0) {\n this.flexing = true;\n }\n break;\n case (12 << 8) + 17:\n break;\n case (12 << 8) + 33:\n this.stack = [];\n break;\n default:\n warn('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n if (error) {\n break;\n }\n continue;\n } else if (value <= 246) {\n value -= 139;\n } else if (value <= 250) {\n value = (value - 247) * 256 + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;\n }\n this.stack.push(value);\n }\n return error;\n }\n executeCommand(howManyArgs, command, keepStack) {\n const stackLength = this.stack.length;\n if (howManyArgs > stackLength) {\n return true;\n }\n const start = stackLength - howManyArgs;\n for (let i = start; i < stackLength; i++) {\n let value = this.stack[i];\n if (Number.isInteger(value)) {\n this.output.push(28, value >> 8 & 0xff, value & 0xff);\n } else {\n value = 65536 * value | 0;\n this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n }\n }\n this.output.push(...command);\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n return false;\n }\n}\nconst EEXEC_ENCRYPT_KEY = 55665;\nconst CHAR_STRS_ENCRYPT_KEY = 4330;\nfunction isHexDigit(code) {\n return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102;\n}\nfunction decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0,\n i,\n j;\n for (i = 0; i < discardNumber; i++) {\n r = (data[i] + r) * c1 + c2 & (1 << 16) - 1;\n }\n const count = data.length - discardNumber;\n const decrypted = new Uint8Array(count);\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n const value = data[i];\n decrypted[j] = value ^ r >> 8;\n r = (value + r) * c1 + c2 & (1 << 16) - 1;\n }\n return decrypted;\n}\nfunction decryptAscii(data, key, discardNumber) {\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0;\n const count = data.length,\n maybeLength = count >>> 1;\n const decrypted = new Uint8Array(maybeLength);\n let i, j;\n for (i = 0, j = 0; i < count; i++) {\n const digit1 = data[i];\n if (!isHexDigit(digit1)) {\n continue;\n }\n i++;\n let digit2;\n while (i < count && !isHexDigit(digit2 = data[i])) {\n i++;\n }\n if (i < count) {\n const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ r >> 8;\n r = (value + r) * c1 + c2 & (1 << 16) - 1;\n }\n }\n return decrypted.slice(discardNumber, j);\n}\nfunction isSpecial(c) {\n return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29;\n}\nclass Type1Parser {\n constructor(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n const data = stream.getBytes();\n const isBinary = !((isHexDigit(data[0]) || isWhiteSpace(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7]));\n stream = new Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));\n }\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n this.stream = stream;\n this.nextChar();\n }\n readNumberArray() {\n this.getToken();\n const array = [];\n while (true) {\n const token = this.getToken();\n if (token === null || token === \"]\" || token === \"}\") {\n break;\n }\n array.push(parseFloat(token || 0));\n }\n return array;\n }\n readNumber() {\n const token = this.getToken();\n return parseFloat(token || 0);\n }\n readInt() {\n const token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n }\n readBoolean() {\n const token = this.getToken();\n return token === \"true\" ? 1 : 0;\n }\n nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n prevChar() {\n this.stream.skip(-2);\n return this.currentChar = this.stream.getByte();\n }\n getToken() {\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch === -1) {\n return null;\n }\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n let token = \"\";\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n return token;\n }\n readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n return bytes;\n }\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n }\n extractFontProgram(properties) {\n const stream = this.stream;\n const subrs = [],\n charstrings = [];\n const privateData = new Map([[\"lenIV\", 4]]);\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData\n }\n };\n let token, length, data;\n let subrsParsed = false;\n let charStringsParsed = false;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"CharStrings\":\n if (charStringsParsed) {\n break;\n }\n charStringsParsed = true;\n this.getToken();\n this.getToken();\n this.getToken();\n this.getToken();\n while (true) {\n token = this.getToken();\n if (token === null || token === \"end\") {\n break;\n }\n if (token !== \"/\") {\n continue;\n }\n const glyph = this.getToken();\n length = this.readInt();\n this.getToken();\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n const encoded = this.readCharStrings(data, privateData.get(\"lenIV\"));\n this.nextChar();\n token = this.getToken();\n if (token === \"noaccess\") {\n this.getToken();\n } else if (token === \"/\") {\n this.prevChar();\n }\n charstrings.push({\n glyph,\n encoded\n });\n }\n break;\n case \"Subrs\":\n if (subrsParsed) {\n break;\n }\n subrsParsed = true;\n this.readInt();\n this.getToken();\n while (this.getToken() === \"dup\") {\n const index = this.readInt();\n length = this.readInt();\n this.getToken();\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n const encoded = this.readCharStrings(data, privateData.get(\"lenIV\"));\n this.nextChar();\n token = this.getToken();\n if (token === \"noaccess\") {\n this.getToken();\n }\n subrs[index] = encoded;\n }\n break;\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n const blueArray = this.readNumberArray();\n if (false) // removed by dead control flow\n{}\n break;\n case \"StemSnapH\":\n case \"StemSnapV\":\n privateData.set(token, this.readNumberArray());\n break;\n case \"StdHW\":\n case \"StdVW\":\n privateData.set(token, this.readNumberArray()[0]);\n break;\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n privateData.set(token, this.readNumber());\n break;\n case \"ExpansionFactor\":\n privateData.set(token, this.readNumber() || 0.06);\n break;\n case \"ForceBold\":\n privateData.set(token, this.readBoolean());\n break;\n }\n }\n for (const {\n encoded,\n glyph\n } of charstrings) {\n const charString = new Type1CharString();\n const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);\n const output = !error ? charString.output : [14];\n const charStringObject = {\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac\n };\n if (glyph === \".notdef\") {\n program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n if (properties.builtInEncoding) {\n const index = properties.builtInEncoding.indexOf(glyph);\n if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) {\n properties.widths[index] = charString.width;\n }\n }\n }\n return program;\n }\n extractCidKeyedFontProgram(properties) {\n const stream = this.stream;\n const privateData = new Map([[\"lenIV\", 4]]);\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData\n }\n };\n let cidCount = 0;\n let cidMapOffset = -1;\n let fdBytes = 1;\n let gdBytes = 0;\n let subrMapOffset = -1;\n let sdBytes = 0;\n let subrCount = 0;\n let startDataLength = 0;\n let startDataIsHex = false;\n let foundStartData = false;\n const previousTokens = [];\n function rememberToken(value) {\n previousTokens.push(value);\n if (previousTokens.length > 4) {\n previousTokens.shift();\n }\n }\n let token;\n while ((token = this.getToken()) !== null) {\n if (token === \"StartData\") {\n const dataType = previousTokens.at(-3);\n const dataLength = previousTokens.at(-1);\n if (previousTokens.at(-4) !== \"(\" || previousTokens.at(-2) !== \")\" || dataType !== \"Binary\" && dataType !== \"Hex\" || !/^\\d+$/.test(dataLength)) {\n return null;\n }\n startDataLength = parseInt(dataLength, 10);\n if (startDataLength <= 0) {\n return null;\n }\n startDataIsHex = dataType === \"Hex\";\n foundStartData = true;\n break;\n }\n rememberToken(token);\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n rememberToken(token);\n switch (token) {\n case \"FontMatrix\":\n properties.fontMatrix = this.readNumberArray();\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n case \"CIDCount\":\n cidCount = this.readInt();\n break;\n case \"CIDMapOffset\":\n cidMapOffset = this.readInt();\n break;\n case \"FDBytes\":\n fdBytes = this.readInt();\n break;\n case \"GDBytes\":\n gdBytes = this.readInt();\n break;\n case \"SubrMapOffset\":\n subrMapOffset = this.readInt();\n break;\n case \"SDBytes\":\n sdBytes = this.readInt();\n break;\n case \"SubrCount\":\n subrCount = this.readInt();\n break;\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n this.readNumberArray();\n break;\n case \"StemSnapH\":\n case \"StemSnapV\":\n privateData.set(token, this.readNumberArray());\n break;\n case \"StdHW\":\n case \"StdVW\":\n privateData.set(token, this.readNumberArray()[0]);\n break;\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n privateData.set(token, this.readNumber());\n break;\n case \"ExpansionFactor\":\n privateData.set(token, this.readNumber() || 0.06);\n break;\n case \"ForceBold\":\n privateData.set(token, this.readBoolean());\n break;\n }\n }\n if (!foundStartData || cidCount <= 0 || cidMapOffset < 0 || fdBytes < 0 || fdBytes > 4 || gdBytes < 1 || gdBytes > 4) {\n return null;\n }\n const maxLength = stream.end - stream.pos;\n if (startDataLength > maxLength) {\n if (!startDataIsHex) {\n startDataLength = maxLength;\n } else if (startDataLength > 2 * maxLength) {\n return null;\n }\n }\n let binary = stream.getBytes(startDataIsHex ? undefined : startDataLength);\n if (startDataIsHex) {\n const decoded = new Uint8Array(startDataLength);\n let digit1 = -1,\n j = 0;\n for (let i = 0, ii = binary.length; i < ii && j < startDataLength; i++) {\n const digit = binary[i];\n if (!isHexDigit(digit)) {\n continue;\n }\n if (digit1 < 0) {\n digit1 = digit;\n continue;\n }\n decoded[j++] = parseInt(String.fromCharCode(digit1, digit), 16);\n digit1 = -1;\n }\n if (j !== startDataLength) {\n return null;\n }\n binary = decoded;\n }\n const lenIV = privateData.get(\"lenIV\");\n const cidEntrySize = fdBytes + gdBytes;\n const subrs = [];\n function readUint(offset, byteCount) {\n let n = 0;\n for (let i = 0; i < byteCount; i++) {\n n = n << 8 | binary[offset + i];\n }\n return n >>> 0;\n }\n if (cidMapOffset + (cidCount + 1) * cidEntrySize > binary.length || subrCount > 0 && (subrMapOffset < 0 || sdBytes < 1 || sdBytes > 4 || subrMapOffset + (subrCount + 1) * sdBytes > binary.length)) {\n return null;\n }\n if (fdBytes > 0) {\n for (let cid = 0; cid < cidCount; cid++) {\n if (readUint(cidMapOffset + cid * cidEntrySize, fdBytes) !== 0) {\n return null;\n }\n }\n }\n if (subrCount > 0) {\n const subrOffsets = new Array(subrCount + 1);\n for (let i = 0; i <= subrCount; i++) {\n subrOffsets[i] = readUint(subrMapOffset + i * sdBytes, sdBytes);\n }\n for (let i = 0; i < subrCount; i++) {\n const start = subrOffsets[i];\n const end = subrOffsets[i + 1];\n if (end > binary.length || end < start) {\n subrs[i] = new Uint8Array(0);\n continue;\n }\n subrs[i] = this.readCharStrings(binary.subarray(start, end), lenIV);\n }\n }\n const charstrings = [];\n let prevOffset = readUint(cidMapOffset + fdBytes, gdBytes);\n for (let cid = 0; cid < cidCount; cid++) {\n const nextOffset = readUint(cidMapOffset + (cid + 1) * cidEntrySize + fdBytes, gdBytes);\n const glyphName = cid === 0 ? \".notdef\" : `cid${cid}`;\n if (nextOffset > prevOffset && nextOffset <= binary.length) {\n const encoded = this.readCharStrings(binary.subarray(prevOffset, nextOffset), lenIV);\n const charString = new Type1CharString();\n const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);\n charstrings.push({\n glyphName,\n charstring: error ? [14] : charString.output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac\n });\n } else {\n const notDef = charstrings[0];\n charstrings.push({\n glyphName,\n charstring: notDef?.charstring.slice() || [0x8b, 0x0e],\n width: notDef?.width || 0,\n lsb: notDef?.lsb || 0\n });\n }\n prevOffset = nextOffset;\n }\n program.subrs = subrs;\n program.charstrings = charstrings;\n return program;\n }\n extractFontHeader(properties) {\n let token;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"FontMatrix\":\n const matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n case \"Encoding\":\n const encodingArg = this.getToken();\n let encoding;\n if (!/^\\d+$/.test(encodingArg)) {\n encoding = getEncoding(encodingArg);\n } else {\n encoding = [];\n const size = parseInt(encodingArg, 10) | 0;\n this.getToken();\n for (let j = 0; j < size; j++) {\n token = this.getToken();\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n if (token === null) {\n return;\n }\n }\n if (token === \"def\") {\n break;\n }\n const index = this.readInt();\n this.getToken();\n const glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken();\n }\n }\n properties.builtInEncoding = encoding;\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n }\n }\n }\n}\n\n;// ./src/core/type1_font.js\n\n\n\n\n\n\nfunction findBlock(streamBytes, signature, startIndex) {\n const streamBytesLength = streamBytes.length;\n const signatureLength = signature.length;\n const scanLength = streamBytesLength - signatureLength;\n let i = startIndex,\n found = false;\n while (i < scanLength) {\n let j = 0;\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n i += j;\n while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n i++;\n }\n found = true;\n break;\n }\n i++;\n }\n return {\n found,\n length: i\n };\n}\nfunction getHeaderBlock(stream, suggestedLength) {\n const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n const streamStartPos = stream.pos;\n let headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch {}\n if (headerBytesLength === suggestedLength) {\n block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length);\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new Stream(headerBytes),\n length: suggestedLength\n };\n }\n }\n warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos;\n const SCAN_BLOCK_LENGTH = 2048;\n let actualLength;\n while (true) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n if (block.length === 0) {\n break;\n }\n stream.pos += block.length;\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n stream.pos = streamStartPos;\n if (actualLength) {\n return {\n stream: new Stream(stream.getBytes(actualLength)),\n length: actualLength\n };\n }\n warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength\n };\n}\nfunction getEexecBlock(stream, suggestedLength) {\n const eexecBytes = stream.getBytes();\n if (eexecBytes.length === 0) {\n throw new FormatError(\"getEexecBlock - no font program found.\");\n }\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length\n };\n}\nfunction isCidKeyedType1File(file) {\n const sample = file.peekBytes(2048);\n if (sample.length < 2 || sample[0] !== 0x25 || sample[1] !== 0x21) {\n return false;\n }\n const text = bytesToString(sample);\n return text.includes(\"Resource-CIDFont\") || /\\/CIDFontType\\s+0\\b/.test(text);\n}\nclass Type1Font {\n #rawFileLength;\n constructor(name, file, properties) {\n let data;\n if (properties.composite && isCidKeyedType1File(file)) {\n data = this.#parseCidKeyedType1(file, properties);\n }\n data ||= this.#parseType1(file, properties);\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n const charstrings = data.charstrings;\n const type2Charstrings = this.getType2Charstrings(charstrings);\n const subrs = this.getType2Subrs(data.subrs);\n this.charstrings = charstrings;\n this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties);\n this.seacs = this.getSeacs(data.charstrings);\n }\n #parseType1(file, properties) {\n const PFB_HEADER_SIZE = 6;\n let headerBlockLength = properties.length1;\n let eexecBlockLength = properties.length2;\n let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n }\n const headerBlock = getHeaderBlock(file, headerBlockLength);\n const headerBlockParser = new Type1Parser(headerBlock.stream, false, (/* inlined export .SEAC_ANALYSIS_ENABLED */true));\n headerBlockParser.extractFontHeader(properties);\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n }\n const eexecBlock = getEexecBlock(file, eexecBlockLength);\n const eexecBlockParser = new Type1Parser(eexecBlock.stream, true, (/* inlined export .SEAC_ANALYSIS_ENABLED */true));\n const data = eexecBlockParser.extractFontProgram(properties);\n this.#rawFileLength = headerBlock.length + eexecBlock.length;\n return data;\n }\n #parseCidKeyedType1(file, properties) {\n const fileStart = file.pos;\n const length = file.end - fileStart;\n const parser = new Type1Parser(file, false, (/* inlined export .SEAC_ANALYSIS_ENABLED */true));\n const data = parser.extractCidKeyedFontProgram(properties);\n if (!data) {\n file.pos = fileStart;\n warn(\"Type1Font: unable to parse CID-keyed Type 1 font.\");\n return null;\n }\n this.#rawFileLength = length;\n return data;\n }\n get numGlyphs() {\n return this.charstrings.length + 1;\n }\n getCharset() {\n const charset = [\".notdef\"];\n for (const {\n glyphName\n } of this.charstrings) {\n charset.push(glyphName);\n }\n return charset;\n }\n getGlyphMapping(properties) {\n const charstrings = this.charstrings;\n if (properties.composite) {\n const charCodeToGlyphId = Object.create(null);\n for (let glyphId = 0, charstringsLen = charstrings.length; glyphId < charstringsLen; glyphId++) {\n const charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId + 1;\n }\n return charCodeToGlyphId;\n }\n const glyphNames = [\".notdef\"];\n let builtInEncoding, glyphId;\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n const encoding = properties.builtInEncoding;\n if (encoding) {\n builtInEncoding = Object.create(null);\n for (const charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n }\n hasGlyphId(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n if (id === 0) {\n return true;\n }\n const glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n }\n getSeacs(charstrings) {\n const seacMap = [];\n for (let i = 0, ii = charstrings.length; i < ii; i++) {\n const charstring = charstrings[i];\n if (charstring.seac) {\n seacMap[i + 1] = charstring.seac;\n }\n }\n return seacMap;\n }\n getType2Charstrings(type1Charstrings) {\n const type2Charstrings = [];\n for (const type1Charstring of type1Charstrings) {\n type2Charstrings.push(type1Charstring.charstring);\n }\n return type2Charstrings;\n }\n getType2Subrs(type1Subrs) {\n let bias = 0;\n const count = type1Subrs.length;\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n const type2Subrs = [];\n let i;\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0b]);\n }\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n return type2Subrs;\n }\n wrap(name, glyphs, charstrings, subrs, properties) {\n const cff = new CFF(this.#rawFileLength);\n cff.header = new CFFHeader(1, 0, 4, 4);\n cff.names = [name];\n const topDict = new CFFTopDict();\n topDict.setByName(\"version\", 391);\n topDict.setByName(\"Notice\", 392);\n topDict.setByName(\"FullName\", 393);\n topDict.setByName(\"FamilyName\", 394);\n topDict.setByName(\"Weight\", 395);\n topDict.setByName(\"Encoding\", null);\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null);\n topDict.setByName(\"CharStrings\", null);\n topDict.setByName(\"Private\", null);\n cff.topDict = topDict;\n const strings = new CFFStrings();\n strings.add(\"Version 0.11\");\n strings.add(\"See original notice\");\n strings.add(name);\n strings.add(name);\n strings.add(\"Medium\");\n cff.strings = strings;\n cff.globalSubrIndex = new CFFIndex();\n const count = glyphs.length;\n const charsetArray = [\".notdef\"];\n for (let i = 0; i < count; i++) {\n const {\n glyphName\n } = charstrings[i];\n const index = CFFStandardStrings.indexOf(glyphName);\n if (index === -1) {\n strings.add(glyphName);\n }\n charsetArray.push(glyphName);\n }\n cff.charset = new CFFCharset(false, 0, charsetArray);\n const charStringsIndex = new CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]);\n for (let i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n cff.charStrings = charStringsIndex;\n const privateDict = new CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null);\n const fields = [\"BlueValues\", \"OtherBlues\", \"FamilyBlues\", \"FamilyOtherBlues\", \"StemSnapH\", \"StemSnapV\", \"BlueShift\", \"BlueFuzz\", \"BlueScale\", \"LanguageGroup\", \"ExpansionFactor\", \"ForceBold\", \"StdHW\", \"StdVW\"];\n for (const field of fields) {\n if (!properties.privateData.has(field)) {\n continue;\n }\n const value = properties.privateData.get(field);\n if (Array.isArray(value)) {\n for (let j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1];\n }\n }\n privateDict.setByName(field, value);\n }\n cff.topDict.privateDict = privateDict;\n const subrIndex = new CFFIndex();\n for (const subr of subrs) {\n subrIndex.add(subr);\n }\n privateDict.subrsIndex = subrIndex;\n const compiler = new CFFCompiler(cff);\n return compiler.compile();\n }\n}\n\n;// ./src/core/fonts.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];\nconst PDF_GLYPH_SPACE_UNITS = 1000;\nconst EXPORT_DATA_PROPERTIES = [\"ascent\", \"bbox\", \"black\", \"bold\", \"cssFontInfo\", \"data\", \"defaultVMetrics\", \"defaultWidth\", \"descent\", \"disableFontFace\", \"fallbackName\", \"fontExtraProperties\", \"fontMatrix\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"loadedName\", \"mimetype\", \"missingFile\", \"name\", \"remeasure\", \"systemFontInfo\", \"vertical\"];\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\"cMap\", \"composite\", \"defaultEncoding\", \"differences\", \"isMonospace\", \"isSerifFont\", \"isSymbolicFont\", \"seacMap\", \"subtype\", \"toFontChar\", \"toUnicode\", \"type\", \"vmetrics\", \"widths\"];\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n const scale = 0.001 / properties.fontMatrix[0];\n const glyphsWidths = properties.widths;\n for (const glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n properties.defaultWidth *= scale;\n}\nfunction adjustTrueTypeToUnicode(properties, isSymbolicFont, nameRecords) {\n if (properties.isInternalFont) {\n return;\n }\n if (properties.hasIncludedToUnicodeMap) {\n return;\n }\n if (properties.hasEncoding) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n if (!isSymbolicFont) {\n return;\n }\n if (nameRecords.length === 0) {\n return;\n }\n if (properties.defaultEncoding === WinAnsiEncoding) {\n return;\n }\n for (const r of nameRecords) {\n if (!isWinNameRecord(r)) {\n return;\n }\n }\n const encoding = WinAnsiEncoding;\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in encoding) {\n const glyphName = encoding[charCode];\n if (glyphName === \"\") {\n continue;\n }\n const unicode = glyphsUnicodeMap[glyphName];\n if (unicode === undefined) {\n continue;\n }\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\nfunction adjustType1ToUnicode(properties, builtInEncoding) {\n if (properties.isInternalFont) {\n return;\n }\n if (properties.hasIncludedToUnicodeMap) {\n return;\n }\n if (builtInEncoding === properties.defaultEncoding) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in builtInEncoding) {\n if (properties.hasEncoding) {\n if (properties.baseEncodingName || properties.differences[charCode] !== undefined) {\n continue;\n }\n }\n const glyphName = builtInEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\nfunction amendFallbackToUnicode(properties) {\n if (!properties.fallbackToUnicode) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [];\n for (const charCode in properties.fallbackToUnicode) {\n if (properties.toUnicode.has(charCode)) {\n continue;\n }\n toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\nclass fonts_Glyph {\n constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n this.originalCharCode = originalCharCode;\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n }\n get category() {\n return shadow(this, \"category\", getCharUnicodeCategory(this.unicode), true);\n }\n}\nfunction int16(b0, b1) {\n return (b0 << 8) + b1;\n}\nfunction writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n}\nfunction signedInt16(b0, b1) {\n const value = (b0 << 8) + b1;\n return value & 1 << 15 ? value - 0x10000 : value;\n}\nfunction writeUint32(bytes, index, value) {\n bytes[index + 3] = value & 0xff;\n bytes[index + 2] = value >>> 8;\n bytes[index + 1] = value >>> 16;\n bytes[index] = value >>> 24;\n}\nfunction isTrueTypeFile(file) {\n const header = file.peekBytes(4),\n str = bytesToString(header);\n return str === \"\\x00\\x01\\x00\\x00\" || str === \"true\";\n}\nfunction isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"ttcf\";\n}\nfunction isOpenTypeFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"OTTO\";\n}\nfunction isType1File(file) {\n const header = file.peekBytes(2);\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n return false;\n}\nfunction isCFFFile(file) {\n const header = file.peekBytes(4);\n if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {\n return true;\n }\n return false;\n}\nfunction getFontFileType(file, {\n type,\n subtype,\n composite\n}) {\n let fileType, fileSubtype;\n if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n fileType = composite ? \"CIDFontType2\" : \"TrueType\";\n } else if (isOpenTypeFile(file)) {\n fileType = composite ? \"CIDFontType2\" : \"OpenType\";\n } else if (isType1File(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n }\n } else if (isCFFFile(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n fileSubtype = \"CIDFontType0C\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n fileSubtype = \"Type1C\";\n }\n } else {\n warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n fileType = type;\n fileSubtype = subtype;\n }\n return [fileType, fileSubtype];\n}\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n for (const charCode in glyphMap) {\n map[+charCode] = glyphMap[charCode];\n }\n}\nconst getSymbolGlyphIdEncoding = getLookupTableFactory(t => {\n let glyphId = 3;\n for (const [firstCharCode, lastCharCode] of [[0x20, 0x7e], [0xa1, 0xfe]]) {\n for (let charCode = firstCharCode; charCode <= lastCharCode; charCode++) {\n t[glyphId++] = SymbolSetEncoding[charCode];\n }\n }\n}, true);\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n const toFontChar = [];\n let unicode;\n for (let i = 0, ii = encoding.length; i < ii; i++) {\n unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n for (const charCode in differences) {\n unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n return toFontChar;\n}\nfunction isMacNameRecord(r) {\n return r.platform === 1 && r.encoding === 0 && r.language === 0;\n}\nfunction isWinNameRecord(r) {\n return r.platform === 3 && r.encoding === 1 && r.language === 0x409;\n}\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n switch (cid.length) {\n case 1:\n return cid.charCodeAt(0);\n case 2:\n return cid.charCodeAt(0) << 8 | cid.charCodeAt(1);\n }\n const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n if (shouldThrow) {\n throw new FormatError(msg);\n }\n warn(msg);\n return cid;\n}\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) {\n const newMap = Object.create(null);\n const toUnicodeExtraMap = new Map();\n const toFontChar = [];\n const usedGlyphIds = new Set();\n let privateUseAreaIndex = 0;\n const privateUseOffetStart = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n let nextAvailableFontCharCode = privateUseOffetStart;\n let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n const isInPrivateArea = code => PRIVATE_USE_AREAS[0][0] <= code && code <= PRIVATE_USE_AREAS[0][1] || PRIVATE_USE_AREAS[1][0] <= code && code <= PRIVATE_USE_AREAS[1][1];\n let LIGATURE_TO_UNICODE = null;\n for (const originalCharCode in charCodeToGlyphId) {\n let glyphId = charCodeToGlyphId[originalCharCode];\n if (!hasGlyph(glyphId)) {\n continue;\n }\n if (nextAvailableFontCharCode > privateUseOffetEnd) {\n privateUseAreaIndex++;\n if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n warn(\"Ran out of space in font private use area.\");\n break;\n }\n nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n }\n const fontCharCode = nextAvailableFontCharCode++;\n if (glyphId === 0) {\n glyphId = newGlyphZeroId;\n }\n let unicode = toUnicode.get(originalCharCode);\n if (typeof unicode === \"string\") {\n if (unicode.length === 1) {\n unicode = unicode.codePointAt(0);\n } else {\n if (!LIGATURE_TO_UNICODE) {\n LIGATURE_TO_UNICODE = new Map();\n for (let i = 0xfb00; i <= 0xfb4f; i++) {\n const normalized = String.fromCharCode(i).normalize(\"NFKD\");\n if (normalized.length > 1) {\n LIGATURE_TO_UNICODE.set(normalized, i);\n }\n }\n }\n unicode = LIGATURE_TO_UNICODE.get(unicode) || unicode.codePointAt(0);\n }\n }\n if (unicode && !isInPrivateArea(unicode) && !usedGlyphIds.has(glyphId)) {\n toUnicodeExtraMap.set(unicode, glyphId);\n usedGlyphIds.add(glyphId);\n }\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n toUnicodeExtraMap,\n nextAvailableFontCharCode\n };\n}\nfunction getRanges(glyphs, toUnicodeExtraMap, numGlyphs) {\n const codes = [];\n for (const charCode in glyphs) {\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n codes.push({\n fontCharCode: charCode | 0,\n glyphId: glyphs[charCode]\n });\n }\n if (toUnicodeExtraMap) {\n for (const [unicode, glyphId] of toUnicodeExtraMap) {\n if (glyphId >= numGlyphs) {\n continue;\n }\n codes.push({\n fontCharCode: unicode,\n glyphId\n });\n }\n }\n if (codes.length === 0) {\n codes.push({\n fontCharCode: 0,\n glyphId: 0\n });\n }\n codes.sort((a, b) => a.fontCharCode - b.fontCharCode);\n const ranges = [];\n const length = codes.length;\n for (let n = 0; n < length;) {\n const start = codes[n].fontCharCode;\n const codeIndices = [codes[n].glyphId];\n ++n;\n let end = start;\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n if (end === 0xffff) {\n break;\n }\n }\n ranges.push([start, end, codeIndices]);\n }\n return ranges;\n}\nfunction createCmapTable(glyphs, toUnicodeExtraMap, numGlyphs) {\n const ranges = getRanges(glyphs, toUnicodeExtraMap, numGlyphs);\n const hasNonBmp = ranges.at(-1)[1] > 0xffff;\n let i, ii, j, jj;\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n const bmpLength = i + 1;\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n const segCount = bmpLength + trailingRangesCount;\n const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n const segmentsLength = bmpLength * 2 + trailingRangesCount * 2;\n const startCount = new DataBuilder({\n exactLength: segmentsLength\n }),\n endCount = new DataBuilder({\n exactLength: segmentsLength\n }),\n idDeltas = new DataBuilder({\n exactLength: segmentsLength\n }),\n idRangeOffsets = new DataBuilder({\n exactLength: segmentsLength\n }),\n glyphsIds = new DataBuilder({});\n let bias = 0;\n let format4Overflow = false;\n for (i = 0, ii = bmpLength; i < ii; i++) {\n const [start, end, codes] = ranges[i];\n startCount.setInt16(start);\n endCount.setInt16(end);\n let contiguous = true;\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n contiguous = false;\n break;\n }\n }\n if (!contiguous) {\n const offset = (segCount - i) * 2 + bias * 2;\n bias += end - start + 1;\n idDeltas.skip(2);\n if (offset > 0xffff) {\n format4Overflow = true;\n idRangeOffsets.skip(2);\n } else {\n idRangeOffsets.setInt16(offset);\n }\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds.setInt16(codes[j]);\n }\n } else {\n const startCode = codes[0];\n idDeltas.setInt16(startCode - start & 0xffff);\n idRangeOffsets.skip(2);\n }\n }\n if (trailingRangesCount > 0) {\n endCount.setArray([0xff, 0xff]);\n startCount.setArray([0xff, 0xff]);\n idDeltas.setArray([0x00, 0x01]);\n idRangeOffsets.skip(2);\n }\n const format314 = new DataBuilder({\n exactLength: 12 + startCount.length + endCount.length + idDeltas.length + idRangeOffsets.length + glyphsIds.length\n });\n format314.skip(2);\n format314.setInt16(2 * segCount);\n format314.setInt16(searchParams.range);\n format314.setInt16(searchParams.entry);\n format314.setInt16(searchParams.rangeShift);\n format314.setArray(endCount.data);\n format314.skip(2);\n format314.setArray(startCount.data);\n format314.setArray(idDeltas.data);\n format314.setArray(idRangeOffsets.data);\n format314.setArray(glyphsIds.data);\n const useFormat4 = !format4Overflow && format314.length + 4 <= 0xffff;\n const useFormat12 = hasNonBmp || !useFormat4;\n const numTables = (useFormat4 ? 1 : 0) + (useFormat12 ? 1 : 0);\n let format31012 = null,\n header31012 = null;\n if (useFormat12) {\n format31012 = new DataBuilder({});\n for (const range of ranges) {\n let start = range[0];\n const codes = range[2];\n let code = codes[0];\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n const end = range[0] + j - 1;\n format31012.setInt32(start);\n format31012.setInt32(end);\n format31012.setInt32(code);\n start = end + 1;\n code = codes[j];\n }\n }\n format31012.setInt32(start);\n format31012.setInt32(range[1]);\n format31012.setInt32(code);\n }\n header31012 = new DataBuilder({\n exactLength: 16\n });\n header31012.setArray([0x00, 0x0c]);\n header31012.skip(2);\n header31012.setInt32(format31012.length + 16);\n header31012.skip(4);\n header31012.setInt32(format31012.length / 12);\n }\n const headerLength = 4 + numTables * 8;\n const format4Length = useFormat4 ? 4 + format314.length : 0;\n const cmap = new DataBuilder({\n exactLength: headerLength\n });\n cmap.skip(2);\n cmap.setInt16(numTables);\n let tableOffset = headerLength;\n if (useFormat4) {\n cmap.setArray([0x00, 0x03]);\n cmap.setArray([0x00, 0x01]);\n cmap.setInt32(tableOffset);\n tableOffset += format4Length;\n }\n if (useFormat12) {\n cmap.setArray([0x00, 0x03]);\n cmap.setArray([0x00, 0x0a]);\n cmap.setInt32(tableOffset);\n }\n const table = new DataBuilder({\n exactLength: cmap.length + format4Length + (header31012?.length ?? 0) + (format31012?.length ?? 0)\n });\n table.setArray(cmap.data);\n if (useFormat4) {\n table.setArray([0x00, 0x04]);\n table.setInt16(format314.length + 4);\n table.setArray(format314.data);\n }\n if (useFormat12) {\n table.setArray(header31012.data);\n table.setArray(format31012.data);\n }\n return table.data;\n}\nfunction validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n const version = file.getUint16();\n const minLength = [78, 86, 96, 96, 96, 100][version];\n if (minLength === undefined || os2.length < minLength) {\n return false;\n }\n file.skip(60);\n const selection = file.getUint16();\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n const firstChar = file.getUint16();\n const lastChar = file.getUint16();\n if (firstChar > lastChar) {\n return false;\n }\n file.skip(6);\n const usWinAscent = file.getUint16();\n if (usWinAscent === 0) {\n return false;\n }\n os2.data[8] = os2.data[9] = 0;\n return true;\n}\nfunction createOS2Table(properties, charstrings, override) {\n override ||= {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0\n };\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n let firstCharIndex = null;\n let lastCharIndex = 0;\n let position = -1;\n if (charstrings) {\n for (let code in charstrings) {\n code |= 0;\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n position = getUnicodeRangeFor(code, position);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << position - 32;\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << position - 64;\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << position - 96;\n } else {\n throw new FormatError(\"Unicode ranges Bits > 123 are reserved for internal usage\");\n }\n }\n if (lastCharIndex > 0xffff) {\n lastCharIndex = 0xffff;\n }\n } else {\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n const bbox = properties.bbox || [0, 0, 0, 0];\n const unitsPerEm = override.unitsPerEm || (properties.fontMatrix ? 1 / Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000);\n const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent;\n }\n const winAscent = override.yMax || typoAscent;\n const winDescent = -override.yMin || -typoDescent;\n const os2 = new DataBuilder({\n exactLength: 96\n });\n os2.setArray([0x00, 0x03]);\n os2.setArray([0x02, 0x24]);\n os2.setArray([0x01, 0xf4]);\n os2.setArray([0x00, 0x05]);\n os2.skip(2);\n os2.setArray([0x02, 0x8a]);\n os2.setArray([0x02, 0xbb]);\n os2.skip(2);\n os2.setArray([0x00, 0x8c]);\n os2.setArray([0x02, 0x8a]);\n os2.setArray([0x02, 0xbb]);\n os2.skip(2);\n os2.setArray([0x01, 0xdf]);\n os2.setArray([0x00, 0x31]);\n os2.setArray([0x01, 0x02]);\n os2.skip(2);\n os2.setArray([0x00, 0x00, 0x06, properties.fixedPitch ? 0x09 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n os2.setInt32(ulUnicodeRange1);\n os2.setInt32(ulUnicodeRange2);\n os2.setInt32(ulUnicodeRange3);\n os2.setInt32(ulUnicodeRange4);\n os2.setArray([0x2a, 0x32, 0x31, 0x2a]);\n os2.setInt16(properties.italicAngle ? 1 : 0);\n os2.setInt16(firstCharIndex || properties.firstChar);\n os2.setInt16(lastCharIndex || properties.lastChar);\n os2.setInt16(typoAscent);\n os2.setInt16(typoDescent);\n os2.setArray([0x00, 0x64]);\n os2.setInt16(winAscent);\n os2.setInt16(winDescent);\n os2.skip(4 + 4);\n os2.setInt16(properties.xHeight);\n os2.setInt16(properties.capHeight);\n os2.skip(2);\n os2.setInt16(firstCharIndex || properties.firstChar);\n os2.setArray([0x00, 0x03]);\n return os2.data;\n}\nfunction createPostTable(properties) {\n const post = new DataBuilder({\n exactLength: 32\n });\n post.setArray([0x00, 0x03, 0x00, 0x00]);\n post.setInt32(Math.floor(properties.italicAngle * 2 ** 16));\n post.skip(2 + 2);\n post.setInt32(properties.fixedPitch ? 1 : 0);\n post.skip(4 + 4 + 4 + 4);\n return post.data;\n}\nfunction createPostscriptName(name) {\n return name.replaceAll(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\nfunction createNameTable(name, proto) {\n proto ||= [[], []];\n const strings = [proto[0][0] || \"Original licence\", proto[0][1] || name, proto[0][2] || \"Unknown\", proto[0][3] || \"uniqueID\", proto[0][4] || name, proto[0][5] || \"Version 0.11\", proto[0][6] || createPostscriptName(name), proto[0][7] || \"Unknown\", proto[0][8] || \"Unknown\", proto[0][9] || \"Unknown\"];\n const stringsBytes = strings.map(stringToBytes);\n const stringsUnicodeBytes = new Array(strings.length);\n let i, ii, j, jj, str;\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n const strUnicode = new DataBuilder({\n exactLength: str.length * 2\n });\n for (j = 0, jj = str.length; j < jj; j++) {\n strUnicode.setInt16(str.charCodeAt(j));\n }\n stringsUnicodeBytes[i] = strUnicode.data;\n }\n const namesBytes = [stringsBytes, stringsUnicodeBytes];\n const platformsBytes = [[0x00, 0x01], [0x00, 0x03]];\n const encodingsBytes = [[0x00, 0x00], [0x00, 0x01]];\n const languagesBytes = [[0x00, 0x00], [0x04, 0x09]];\n const nameRecords = [];\n let strOffset = 0;\n for (i = 0, ii = platformsBytes.length; i < ii; i++) {\n const strs = namesBytes[i];\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n const nameRecord = new DataBuilder({\n exactLength: 6 + platformsBytes[i].length + encodingsBytes[i].length + languagesBytes[i].length\n });\n nameRecord.setArray(platformsBytes[i]);\n nameRecord.setArray(encodingsBytes[i]);\n nameRecord.setArray(languagesBytes[i]);\n nameRecord.setInt16(j);\n nameRecord.setInt16(str.length);\n nameRecord.setInt16(strOffset);\n nameRecords.push(nameRecord.data);\n strOffset += str.length;\n }\n }\n const namesRecordCount = stringsBytes.length * platformsBytes.length;\n const nameTable = new DataBuilder({\n exactLength: 6 + Math.sumPrecise(nameRecords.map(arr => arr.length)) + Math.sumPrecise(stringsBytes.map(arr => arr.length)) + Math.sumPrecise(stringsUnicodeBytes.map(arr => arr.length))\n });\n nameTable.skip(2);\n nameTable.setInt16(namesRecordCount);\n nameTable.setInt16(namesRecordCount * 12 + 6);\n for (const arr of nameRecords) {\n nameTable.setArray(arr);\n }\n for (const arr of stringsBytes) {\n nameTable.setArray(arr);\n }\n for (const arr of stringsUnicodeBytes) {\n nameTable.setArray(arr);\n }\n return nameTable.data;\n}\nclass Font {\n #charsCache = new Map();\n #glyphCache = new Map();\n charProcOperatorList;\n constructor(name, file, properties, evaluatorOptions) {\n this.name = name;\n this.psName = null;\n this.mimetype = null;\n this.disableFontFace = evaluatorOptions.disableFontFace;\n this.fontExtraProperties = evaluatorOptions.fontExtraProperties;\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.cssFontInfo = properties.cssFontInfo;\n let isSerifFont = !!(properties.flags & FontFlags.Serif);\n if (!isSerifFont && !properties.isSimulatedFlags) {\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap(),\n serifFonts = getSerifFonts();\n for (const namePart of name.split(\"+\")) {\n let fontName = normalizeFontName(namePart);\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n fontName = fontName.split(\"-\", 1)[0];\n if (serifFonts[fontName]) {\n isSerifFont = true;\n break;\n }\n }\n }\n this.isSerifFont = isSerifFont;\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n let {\n type,\n subtype\n } = properties;\n this.type = type;\n this.subtype = subtype;\n this.systemFontInfo = properties.systemFontInfo;\n const matches = name.match(/^InvalidPDFjsFont_(.*)_\\d+$/);\n this.isInvalidPDFjsFont = !!matches;\n if (this.isInvalidPDFjsFont) {\n this.fallbackName = matches[1];\n } else if (this.isMonospace) {\n this.fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n this.fallbackName = \"serif\";\n } else {\n this.fallbackName = \"sans-serif\";\n }\n if (this.systemFontInfo?.guessFallback) {\n this.systemFontInfo.guessFallback = false;\n this.systemFontInfo.css += `,${this.fallbackName}`;\n }\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.cMap = properties.cMap;\n this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.lineHeight = this.ascent - this.descent;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n this.toUnicode = properties.toUnicode;\n this.toFontChar = [];\n if (properties.type === \"Type3\") {\n for (let charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n return;\n }\n this.cidEncoding = properties.cidEncoding || \"\";\n this.vertical = !!properties.vertical;\n if (this.vertical) {\n this.vmetrics = properties.vmetrics;\n this.defaultVMetrics = properties.defaultVMetrics;\n }\n if (!file || file.isEmpty) {\n if (file) {\n warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n this.fallbackToSystemFont(properties);\n return;\n }\n [type, subtype] = getFontFileType(file, properties);\n if (type !== this.type || subtype !== this.subtype) {\n info(\"Inconsistent font file Type/SubType, expected: \" + `${this.type}/${this.subtype} but found: ${type}/${subtype}.`);\n }\n let data;\n try {\n switch (type) {\n case \"MMType1\":\n info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n const cff = subtype === \"Type1C\" || subtype === \"CIDFontType0C\" ? new CFFFont(file, properties) : new Type1Font(name, file, properties);\n adjustWidths(properties);\n data = this.convert(name, cff, properties);\n break;\n case \"OpenType\":\n case \"TrueType\":\n case \"CIDFontType2\":\n this.mimetype = \"font/opentype\";\n data = this.checkAndRepair(name, file, properties);\n adjustWidths(properties);\n if (this.isOpenType) {\n type = \"OpenType\";\n }\n break;\n default:\n throw new FormatError(`Font ${type} is not supported`);\n }\n } catch (e) {\n warn(e);\n this.fallbackToSystemFont(properties);\n return;\n }\n amendFallbackToUnicode(properties);\n this.data = data;\n this.type = type;\n this.subtype = subtype;\n this.fontMatrix = properties.fontMatrix;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.toUnicode = properties.toUnicode;\n this.seacMap = properties.seacMap;\n }\n get renderer() {\n const renderer = FontRendererFactory.create(this, (/* inlined export .SEAC_ANALYSIS_ENABLED */true));\n return shadow(this, \"renderer\", renderer);\n }\n #getExportData(props) {\n const data = Object.create(null);\n for (const prop of props) {\n const value = this[prop];\n if (value !== undefined) {\n data[prop] = value;\n }\n }\n return data;\n }\n exportData() {\n return {\n buffer: compileFontInfo(this.#getExportData(EXPORT_DATA_PROPERTIES)),\n charProcOperatorList: this.charProcOperatorList,\n extra: this.fontExtraProperties ? this.#getExportData(EXPORT_DATA_EXTRA_PROPERTIES) : undefined\n };\n }\n fallbackToSystemFont(properties) {\n this.missingFile = true;\n const {\n name,\n type\n } = this;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap();\n const isStandardFont = !!stdFontMap[fontName];\n const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n const fontBasicMetricsMap = getFontBasicMetrics();\n const metrics = fontBasicMetricsMap[fontName];\n if (metrics) {\n if (isNaN(this.ascent)) {\n this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.descent)) {\n this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.capHeight)) {\n this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;\n }\n }\n this.bold = /bold/i.test(fontName);\n this.italic = /oblique|italic/i.test(fontName);\n this.black = /Black/.test(name);\n const isNarrow = /Narrow/.test(name);\n this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n if ((isStandardFont || isMappedToStandardFont) && type === \"CIDFontType2\" && this.cidEncoding.startsWith(\"Identity-\")) {\n const cidToGidMap = properties.cidToGidMap;\n const map = [];\n if (/Trebuchet/i.test(name)) {\n applyStandardFontGlyphMap(map, getGlyphMapForMacOrderedFonts());\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForTrebuchetMS());\n } else {\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n if (/Arial-?Black/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n } else if (/Calibri/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n }\n }\n if (cidToGidMap) {\n for (const charCode in map) {\n const cid = map[charCode];\n if (cidToGidMap[cid] !== undefined) {\n map[+charCode] = cidToGidMap[cid];\n }\n }\n if (cidToGidMap.length !== this.toUnicode.length && properties.hasIncludedToUnicodeMap && this.toUnicode instanceof IdentityToUnicodeMap) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n const cid = map[charCode];\n if (cidToGidMap[cid] === undefined) {\n map[+charCode] = unicodeCharCode;\n }\n });\n }\n }\n if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n const isCidKeyed = this.composite && this.cidEncoding.startsWith(\"Identity-\");\n this.toFontChar = buildToFontChar(isCidKeyed ? getSymbolGlyphIdEncoding() : SymbolSetEncoding, getGlyphsUnicode(), this.differences);\n } else if (/Dingbats/i.test(fontName)) {\n this.toFontChar = buildToFontChar(ZapfDingbatsEncoding, getDingbatsGlyphsUnicode(), this.differences);\n } else if (isStandardFont || isMappedToStandardFont) {\n const map = buildToFontChar(this.defaultEncoding, getGlyphsUnicode(), this.differences);\n if (type === \"CIDFontType2\" && !this.cidEncoding.startsWith(\"Identity-\") && !(this.toUnicode instanceof IdentityToUnicodeMap)) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n } else {\n const glyphsUnicodeMap = getGlyphsUnicode();\n const map = [];\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n const glyphName = this.differences[charCode] || this.defaultEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n map[+charCode] = unicodeCharCode;\n });\n if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Tahoma|Verdana/i.test(name)) {\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n }\n }\n this.toFontChar = map;\n }\n amendFallbackToUnicode(properties);\n this.loadedName = fontName.split(\"-\", 1)[0];\n }\n checkAndRepair(name, font, properties) {\n const VALID_TABLES = [\"OS/2\", \"cmap\", \"head\", \"hhea\", \"hmtx\", \"maxp\", \"name\", \"post\", \"loca\", \"glyf\", \"fpgm\", \"prep\", \"cvt \", \"CFF \"];\n function readTables(file, numTables) {\n const tables = Object.create(null);\n tables[\"OS/2\"] = null;\n tables.cmap = null;\n tables.head = null;\n tables.hhea = null;\n tables.hmtx = null;\n tables.maxp = null;\n tables.name = null;\n tables.post = null;\n for (let i = 0; i < numTables; i++) {\n const table = readTableEntry(file);\n if (!VALID_TABLES.includes(table.tag)) {\n continue;\n }\n if (table.length === 0) {\n continue;\n }\n tables[table.tag] = table;\n }\n return tables;\n }\n function readTableEntry(file) {\n const tag = file.getString(4);\n const checksum = file.getInt32() >>> 0;\n const offset = file.getInt32() >>> 0;\n const length = file.getInt32() >>> 0;\n const previousPosition = file.pos;\n file.pos = file.start || 0;\n file.skip(offset);\n const data = file.getBytes(length);\n file.pos = previousPosition;\n if (tag === \"head\") {\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20;\n }\n const view = tag === \"CFF \" ? null : new DataView(data.buffer, data.byteOffset, data.byteLength);\n return {\n tag,\n checksum,\n length,\n offset,\n data,\n view\n };\n }\n function readOpenTypeHeader(ttf) {\n return {\n version: ttf.getString(4),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16()\n };\n }\n function readTrueTypeCollectionHeader(ttc) {\n const ttcTag = ttc.getString(4);\n assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n const majorVersion = ttc.getUint16();\n const minorVersion = ttc.getUint16();\n const numFonts = ttc.getInt32() >>> 0;\n const offsetTable = [];\n for (let i = 0; i < numFonts; i++) {\n offsetTable.push(ttc.getInt32() >>> 0);\n }\n const header = {\n ttcTag,\n majorVersion,\n minorVersion,\n numFonts,\n offsetTable\n };\n switch (majorVersion) {\n case 1:\n return header;\n case 2:\n header.dsigTag = ttc.getInt32() >>> 0;\n header.dsigLength = ttc.getInt32() >>> 0;\n header.dsigOffset = ttc.getInt32() >>> 0;\n return header;\n }\n throw new FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`);\n }\n function readTrueTypeCollectionData(ttc, fontName) {\n const {\n numFonts,\n offsetTable\n } = readTrueTypeCollectionHeader(ttc);\n const fontNameParts = fontName.split(\"+\");\n let fallbackData;\n for (let i = 0; i < numFonts; i++) {\n ttc.pos = (ttc.start || 0) + offsetTable[i];\n const potentialHeader = readOpenTypeHeader(ttc);\n const potentialTables = readTables(ttc, potentialHeader.numTables);\n if (!potentialTables.name) {\n throw new FormatError('TrueType Collection font must contain a \"name\" table.');\n }\n const [nameTable] = readNameTable(potentialTables.name);\n for (const nameArr of nameTable) {\n for (const entry of nameArr) {\n const nameEntry = entry?.replaceAll(/\\s/g, \"\");\n if (!nameEntry) {\n continue;\n }\n if (nameEntry === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables\n };\n }\n if (fontNameParts.length < 2) {\n continue;\n }\n for (const part of fontNameParts) {\n if (nameEntry === part) {\n fallbackData = {\n name: part,\n header: potentialHeader,\n tables: potentialTables\n };\n }\n }\n }\n }\n }\n if (fallbackData) {\n warn(`TrueType Collection does not contain \"${fontName}\" font, ` + `falling back to \"${fallbackData.name}\" font instead.`);\n return {\n header: fallbackData.header,\n tables: fallbackData.tables\n };\n }\n throw new FormatError(`TrueType Collection does not contain \"${fontName}\" font.`);\n }\n function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n warn(\"No cmap table available.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n let segment;\n let start = (file.start || 0) + cmap.offset;\n file.pos = start;\n file.skip(2);\n const numTables = file.getUint16();\n let potentialTable;\n let canBreak = false;\n for (let i = 0; i < numTables; i++) {\n const platformId = file.getUint16();\n const encodingId = file.getUint16();\n const offset = file.getInt32() >>> 0;\n let useTable = false;\n if (potentialTable?.platformId === platformId && potentialTable?.encodingId === encodingId) {\n continue;\n }\n if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) {\n useTable = true;\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {\n useTable = true;\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n let correctlySorted = true;\n if (i < numTables - 1) {\n const nextBytes = file.peekBytes(2),\n nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n if (nextPlatformId < platformId) {\n correctlySorted = false;\n }\n }\n if (correctlySorted) {\n canBreak = true;\n }\n }\n if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset\n };\n }\n if (canBreak) {\n break;\n }\n }\n if (potentialTable) {\n file.pos = start + potentialTable.offset;\n }\n if (!potentialTable || file.peekByte() === -1) {\n warn(\"Could not find a preferred cmap table.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n const format = file.getUint16();\n let hasShortCmap = false;\n const mappings = [];\n let j, glyphId;\n if (format === 0) {\n file.skip(2 + 2);\n for (j = 0; j < 256; j++) {\n const index = file.getByte();\n if (!index) {\n continue;\n }\n mappings.push({\n charCode: j,\n glyphId: index\n });\n }\n hasShortCmap = true;\n } else if (format === 2) {\n file.skip(2 + 2);\n const subHeaderKeys = [];\n let maxSubHeaderKey = 0;\n for (let i = 0; i < 256; i++) {\n const subHeaderKey = file.getUint16() >> 3;\n subHeaderKeys.push(subHeaderKey);\n maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n }\n const subHeaders = [];\n for (let i = 0; i <= maxSubHeaderKey; i++) {\n subHeaders.push({\n firstCode: file.getUint16(),\n entryCount: file.getUint16(),\n idDelta: signedInt16(file.getByte(), file.getByte()),\n idRangePos: file.pos + file.getUint16()\n });\n }\n for (let i = 0; i < 256; i++) {\n if (subHeaderKeys[i] === 0) {\n file.pos = subHeaders[0].idRangePos + 2 * i;\n glyphId = file.getUint16();\n mappings.push({\n charCode: i,\n glyphId\n });\n } else {\n const s = subHeaders[subHeaderKeys[i]];\n for (j = 0; j < s.entryCount; j++) {\n const charCode = (i << 8) + j + s.firstCode;\n file.pos = s.idRangePos + 2 * j;\n glyphId = file.getUint16();\n if (glyphId !== 0) {\n glyphId = (glyphId + s.idDelta) % 65536;\n }\n mappings.push({\n charCode,\n glyphId\n });\n }\n }\n }\n } else if (format === 4) {\n file.skip(2 + 2);\n const segCount = file.getUint16() >> 1;\n file.skip(6);\n const segments = [];\n let segIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({\n end: file.getUint16()\n });\n }\n file.skip(2);\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\n }\n let offsetsCount = 0,\n offsetIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n const rangeOffset = file.getUint16();\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);\n }\n const offsets = [];\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\n }\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n const end = segment.end;\n const delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\n }\n glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n glyphId = glyphId + delta & 0xffff;\n mappings.push({\n charCode: j,\n glyphId\n });\n }\n }\n } else if (format === 6) {\n file.skip(2 + 2);\n const firstCode = file.getUint16();\n const entryCount = file.getUint16();\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n const charCode = firstCode + j;\n mappings.push({\n charCode,\n glyphId\n });\n }\n } else if (format === 12) {\n file.skip(2 + 4 + 4);\n const nGroups = file.getInt32() >>> 0;\n for (j = 0; j < nGroups; j++) {\n const startCharCode = file.getInt32() >>> 0;\n const endCharCode = file.getInt32() >>> 0;\n let glyphCode = file.getInt32() >>> 0;\n for (let charCode = startCharCode; charCode <= endCharCode; charCode++) {\n mappings.push({\n charCode,\n glyphId: glyphCode++\n });\n }\n }\n } else {\n warn(\"cmap table has unsupported format: \" + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n const finalMappings = [],\n seenCharCodes = new Set();\n for (const map of mappings) {\n const {\n charCode\n } = map;\n if (seenCharCodes.has(charCode)) {\n continue;\n }\n seenCharCodes.add(charCode);\n finalMappings.push(map);\n }\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings: finalMappings.sort((a, b) => a.charCode - b.charCode),\n hasShortCmap\n };\n }\n function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n return;\n }\n file.pos = (file.start || 0) + header.offset;\n file.pos += 4;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n const caretOffset = file.getUint16();\n file.pos += 8;\n file.pos += 2;\n let numOfMetrics = file.getUint16();\n if (caretOffset !== 0) {\n const macStyle = int16(headTable.data[44], headTable.data[45]);\n if (!(macStyle & 2)) {\n header.data[22] = 0;\n header.data[23] = 0;\n }\n }\n if (numOfMetrics > numGlyphs) {\n info(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs (${numGlyphs}).`);\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n const numOfSidebearings = numGlyphs - numOfMetrics;\n const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);\n if (numMissing > 0) {\n const entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n if (dupFirstEntry) {\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n metrics.data = entries;\n }\n }\n function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {\n const glyphProfile = {\n length: 0,\n sizeOfInstructions: 0\n };\n if (sourceStart < 0 || sourceStart >= source.length || sourceEnd > source.length || sourceEnd - sourceStart <= 12) {\n return glyphProfile;\n }\n const glyf = source.subarray(sourceStart, sourceEnd);\n const xMin = signedInt16(glyf[2], glyf[3]);\n const yMin = signedInt16(glyf[4], glyf[5]);\n const xMax = signedInt16(glyf[6], glyf[7]);\n const yMax = signedInt16(glyf[8], glyf[9]);\n if (xMin > xMax) {\n writeSignedInt16(glyf, 2, xMax);\n writeSignedInt16(glyf, 6, xMin);\n }\n if (yMin > yMax) {\n writeSignedInt16(glyf, 4, yMax);\n writeSignedInt16(glyf, 8, yMin);\n }\n const contoursCount = signedInt16(glyf[0], glyf[1]);\n if (contoursCount < 0) {\n if (contoursCount < -1) {\n return glyphProfile;\n }\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n let i,\n j = 10,\n flagsCount = 0;\n for (i = 0; i < contoursCount; i++) {\n const endPoint = glyf[j] << 8 | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n const instructionsStart = j;\n const instructionsLength = glyf[j] << 8 | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n const instructionsEnd = j;\n let coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n const flag = glyf[j++];\n if (flag & 0xc0) {\n glyf[j - 1] = flag & 0x3f;\n }\n let xLength = 2;\n if (flag & 2) {\n xLength = 1;\n } else if (flag & 16) {\n xLength = 0;\n }\n let yLength = 2;\n if (flag & 4) {\n yLength = 1;\n } else if (flag & 32) {\n yLength = 0;\n }\n const xyLength = xLength + yLength;\n coordinatesLength += xyLength;\n if (flag & 8) {\n const repeat = glyf[j++];\n if (repeat === 0) {\n glyf[j - 1] ^= 8;\n }\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n let glyphDataLength = j + coordinatesLength;\n if (glyphDataLength > glyf.length) {\n return glyphProfile;\n }\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);\n glyphDataLength -= instructionsLength;\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = glyphDataLength + 3 & ~3;\n }\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = glyphDataLength + 3 & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n function sanitizeHead(head, numGlyphs, locaLength) {\n const {\n data,\n view\n } = head;\n const version = view.getInt32(0);\n if (version >> 16 !== 1) {\n info(\"Attempting to fix invalid version in head table: \" + version);\n view.setInt32(0, 0x00010000);\n }\n const indexToLocFormat = signedInt16(data[50], data[51]);\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n info(\"Attempting to fix invalid indexToLocFormat in head table: \" + indexToLocFormat);\n const numGlyphsPlusOne = numGlyphs + 1;\n if (locaLength === numGlyphsPlusOne << 1) {\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new FormatError(\"Could not fix indexToLocFormat: \" + indexToLocFormat);\n }\n }\n }\n function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) {\n let itemSize, itemDecode, itemEncode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n };\n itemEncode = function fontItemEncodeLong(data, offset, value) {\n data[offset] = value >>> 24 & 0xff;\n data[offset + 1] = value >> 16 & 0xff;\n data[offset + 2] = value >> 8 & 0xff;\n data[offset + 3] = value & 0xff;\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return data[offset] << 9 | data[offset + 1] << 1;\n };\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = value >> 9 & 0xff;\n data[offset + 1] = value >> 1 & 0xff;\n };\n }\n const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n const locaDataSize = itemSize * (1 + numGlyphsOut);\n const locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n const oldGlyfData = glyf.data;\n const oldGlyfDataLength = oldGlyfData.length;\n const newGlyfData = new Uint8Array(oldGlyfDataLength);\n let i, j;\n const locaEntries = [];\n for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n let offset = itemDecode(locaData, j);\n if (offset > oldGlyfDataLength) {\n offset = oldGlyfDataLength;\n }\n locaEntries.push({\n index: i,\n offset,\n endOffset: 0\n });\n }\n locaEntries.sort((a, b) => a.offset - b.offset);\n for (i = 0; i < numGlyphs; i++) {\n locaEntries[i].endOffset = locaEntries[i + 1].offset;\n }\n locaEntries.sort((a, b) => a.index - b.index);\n for (i = 0; i < numGlyphs; i++) {\n const {\n offset,\n endOffset\n } = locaEntries[i];\n if (offset !== 0 || endOffset !== 0) {\n break;\n }\n const nextOffset = locaEntries[i + 1].offset;\n if (nextOffset === 0) {\n continue;\n }\n locaEntries[i].endOffset = nextOffset;\n break;\n }\n const last = locaEntries.at(-2);\n if (last.offset !== 0 && last.endOffset === 0) {\n last.endOffset = oldGlyfDataLength;\n }\n const droppedGlyphs = pruneCompositeGlyphCycles(oldGlyfData, locaEntries, numGlyphs);\n const missingGlyphs = Object.create(null);\n let writeOffset = 0;\n itemEncode(locaData, 0, writeOffset);\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n const glyphProfile = droppedGlyphs.has(i) ? {\n length: 0,\n sizeOfInstructions: 0\n } : sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, newGlyfData, writeOffset, hintsValid);\n const newLength = glyphProfile.length;\n if (newLength === 0) {\n missingGlyphs[i] = true;\n }\n if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n }\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n }\n if (writeOffset === 0) {\n const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);\n for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n itemEncode(locaData, j, simpleGlyph.length);\n }\n glyf.data = simpleGlyph;\n } else if (dupFirstEntry) {\n const firstEntryLength = itemDecode(locaData, itemSize);\n if (newGlyfData.length > firstEntryLength + writeOffset) {\n glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n } else {\n glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n glyf.data.set(newGlyfData.subarray(0, writeOffset));\n }\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n return {\n missingGlyphs,\n maxSizeOfInstructions\n };\n }\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n const start = (font.start || 0) + post.offset;\n font.pos = start;\n const length = post.length,\n end = start + length;\n const version = font.getInt32();\n font.skip(28);\n let glyphNames;\n let valid = true;\n let i;\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n case 0x00020000:\n const numGlyphs = font.getUint16();\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n const glyphNameIndexes = [];\n for (i = 0; i < numGlyphs; ++i) {\n const index = font.getUint16();\n if (index >= 32768) {\n valid = false;\n break;\n }\n glyphNameIndexes.push(index);\n }\n if (!valid) {\n break;\n }\n const customNames = [];\n while (font.pos < end) {\n const strLen = font.getByte(),\n str = font.getString(strLen);\n customNames.push(str);\n }\n glyphNames = [];\n for (i = 0; i < numGlyphs; ++i) {\n const j = glyphNameIndexes[i];\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n glyphNames.push(customNames[j - 258]);\n }\n break;\n case 0x00030000:\n break;\n default:\n warn(\"Unknown/unsupported post table version \" + version);\n valid = false;\n if (propertiesObj.defaultEncoding) {\n glyphNames = propertiesObj.defaultEncoding;\n }\n break;\n }\n propertiesObj.glyphNames = glyphNames;\n return valid;\n }\n function readNameTable(nameTable) {\n const start = (font.start || 0) + nameTable.offset;\n font.pos = start;\n const names = [[], []],\n records = [];\n const length = nameTable.length,\n end = start + length;\n const format = font.getUint16();\n const FORMAT_0_HEADER_LENGTH = 6;\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n return [names, records];\n }\n const numRecords = font.getUint16();\n const stringsStart = font.getUint16();\n const NAME_RECORD_LENGTH = 12;\n let i, ii;\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n const r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16()\n };\n if (isMacNameRecord(r) || isWinNameRecord(r)) {\n records.push(r);\n }\n }\n for (i = 0, ii = records.length; i < ii; i++) {\n const record = records[i];\n if (record.length <= 0) {\n continue;\n }\n const pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue;\n }\n font.pos = pos;\n const nameIndex = record.name;\n if (record.encoding) {\n let str = \"\";\n for (let j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = font.getString(record.length);\n }\n }\n return [names, records];\n }\n const TTOpsStackDeltas = [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];\n function sanitizeTTProgram(table, ttContext) {\n let data = table.data;\n let i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n const stack = [];\n const callstack = [];\n const functionsCalled = [];\n let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n let inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n for (let ii = data.length; i < ii;) {\n const op = data[i++];\n if (op === 0x40) {\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if (op === 0x41) {\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push(signedInt16(b, data[i++]));\n }\n }\n } else if ((op & 0xf8) === 0xb0) {\n n = op - 0xb0 + 1;\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb8) {\n n = op - 0xb8 + 1;\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push(signedInt16(b, data[i++]));\n }\n }\n } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n if (!inFDEF && !inELSE) {\n funcId = stack.at(-1);\n if (isNaN(funcId)) {\n info(\"TT: CALL empty stack (or invalid entry).\");\n } else {\n ttContext.functionsUsed[funcId] = true;\n if (funcId in ttContext.functionsStackDeltas) {\n const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];\n if (newStackLength < 0) {\n warn(\"TT: CALL invalid functions stack delta.\");\n ttContext.hintsValid = false;\n return;\n }\n stack.length = newStackLength;\n } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {\n callstack.push({\n data,\n i,\n stackTop: stack.length - 1\n });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n if (!pc) {\n warn(\"TT: CALL non-existent function\");\n ttContext.hintsValid = false;\n return;\n }\n data = pc.data;\n i = pc.i;\n }\n }\n }\n } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n if (inFDEF || inELSE) {\n warn(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = {\n data,\n i\n };\n } else if (op === 0x2d) {\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n if (!pc) {\n warn(\"TT: ENDF bad stack\");\n ttContext.hintsValid = false;\n return;\n }\n funcId = functionsCalled.pop();\n data = pc.data;\n i = pc.i;\n ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n }\n } else if (op === 0x89) {\n if (inFDEF || inELSE) {\n warn(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n lastDeff = i;\n } else if (op === 0x58) {\n ++ifLevel;\n } else if (op === 0x1b) {\n inELSE = ifLevel;\n } else if (op === 0x59) {\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n --ifLevel;\n } else if (op === 0x1c) {\n if (!inFDEF && !inELSE) {\n const offset = stack.at(-1);\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n if (!inFDEF && !inELSE) {\n let stackDelta = 0;\n if (op <= 0x8e) {\n stackDelta = TTOpsStackDeltas[op];\n } else if (op >= 0xc0 && op <= 0xdf) {\n stackDelta = -1;\n } else if (op >= 0xe0) {\n stackDelta = -2;\n }\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n while (stackDelta > 0) {\n stack.push(NaN);\n stackDelta--;\n }\n }\n }\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n const content = [data];\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n if (lastDeff > lastEndf) {\n warn(\"TT: complementing a missing function tail\");\n content.push(new Uint8Array([0x22, 0x2d]));\n }\n foldTTTable(table, content);\n }\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n warn(\"TT: more functions defined than expected\");\n ttContext.hintsValid = false;\n return;\n }\n for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n warn(\"TT: invalid function id: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n warn(\"TT: undefined function: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n }\n }\n function foldTTTable(table, content) {\n if (content.length > 1) {\n let newLength = 0;\n let j, jj;\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n newLength = newLength + 3 & ~3;\n const result = new Uint8Array(newLength);\n let pos = 0;\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n table.data = result;\n table.length = newLength;\n }\n }\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n const ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true\n };\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n if (cvt && cvt.length & 1) {\n const cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n return ttContext.hintsValid;\n }\n font = new Stream(new Uint8Array(font.getBytes()));\n let header, tables;\n if (isTrueTypeCollectionFile(font)) {\n const ttcData = readTrueTypeCollectionData(font, this.name);\n header = ttcData.header;\n tables = ttcData.tables;\n } else {\n header = readOpenTypeHeader(font);\n tables = readTables(font, header.numTables);\n }\n const isTrueType = !tables[\"CFF \"];\n let parsedCff = null;\n if (!isTrueType) {\n try {\n parsedCff = new CFFParser(new Stream(tables[\"CFF \"].data), properties, (/* inlined export .SEAC_ANALYSIS_ENABLED */true)).parse();\n } catch {\n warn(\"Failed to parse font \" + properties.loadedName);\n }\n if (header.version === \"OTTO\" && (!properties.composite || properties.fontFileN === \"FontFile3\" && parsedCff?.isCIDFont) || !tables.head || !tables.hhea || !tables.maxp || !tables.post) {\n return this.convert(name, new CFFFont(new Stream(tables[\"CFF \"].data), properties), properties);\n }\n delete tables.glyf;\n delete tables.loca;\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n this.isOpenType = true;\n } else {\n if (!tables.loca) {\n throw new FormatError('Required \"loca\" table is not found');\n }\n if (!tables.glyf) {\n warn('Required \"glyf\" table is not found -- trying to recover.');\n tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0)\n };\n }\n this.isOpenType = false;\n }\n if (!tables.maxp) {\n throw new FormatError('Required \"maxp\" table is not found');\n }\n let numGlyphsFromCFF;\n if (parsedCff) {\n try {\n parsedCff.duplicateFirstGlyph();\n tables[\"CFF \"].data = new CFFCompiler(parsedCff).compile();\n numGlyphsFromCFF = parsedCff.charStringCount;\n } catch {\n warn(\"Failed to compile font \" + properties.loadedName);\n }\n }\n font.pos = (font.start || 0) + tables.maxp.offset;\n let version = font.getInt32();\n const numGlyphs = numGlyphsFromCFF ?? font.getUint16();\n if (version === 0x00005000 && tables.maxp.length !== 6) {\n tables.maxp.data = tables.maxp.data.subarray(0, 6);\n tables.maxp.length = 6;\n }\n if (version !== 0x00010000 && version !== 0x00005000) {\n if (tables.maxp.length === 6) {\n version = 0x0005000;\n } else if (tables.maxp.length >= 32) {\n version = 0x00010000;\n } else {\n throw new FormatError(`\"maxp\" table has a wrong version number`);\n }\n writeUint32(tables.maxp.data, 0, version);\n }\n let isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);\n if (tables.loca) {\n const locaLength = isGlyphLocationsLong ? (numGlyphs + 1) * 4 : (numGlyphs + 1) * 2;\n if (tables.loca.length !== locaLength) {\n warn(\"Incorrect 'loca' table length -- attempting to fix it.\");\n const sortedTables = Object.values(tables).filter(Boolean).sort((a, b) => a.offset - b.offset);\n const locaIndex = sortedTables.indexOf(tables.loca);\n const nextTable = sortedTables[locaIndex + 1] || null;\n if (nextTable && tables.loca.offset + locaLength < nextTable.offset) {\n const previousPos = font.pos;\n font.pos = font.start || 0;\n font.skip(tables.loca.offset);\n tables.loca.data = font.getBytes(locaLength);\n tables.loca.length = locaLength;\n font.pos = previousPos;\n }\n }\n }\n if (properties.scaleFactors?.length === numGlyphs && isTrueType) {\n const {\n scaleFactors\n } = properties;\n const glyphs = new GlyfTable({\n glyfTable: tables.glyf.data,\n isGlyphLocationsLong,\n locaTable: tables.loca.data,\n numGlyphs\n });\n glyphs.scale(scaleFactors);\n const {\n glyf,\n loca,\n isLocationLong\n } = glyphs.write();\n tables.glyf.data = glyf;\n tables.loca.data = loca;\n if (isLocationLong !== !!isGlyphLocationsLong) {\n tables.head.data[50] = 0;\n isGlyphLocationsLong = tables.head.data[51] = isLocationLong ? 1 : 0;\n }\n const metrics = tables.hmtx.data;\n for (let i = 0; i < numGlyphs; i++) {\n const j = 4 * i;\n const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1]));\n metrics[j] = advanceWidth >> 8 & 0xff;\n metrics[j + 1] = advanceWidth & 0xff;\n const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3]));\n writeSignedInt16(metrics, j + 2, lsb);\n }\n }\n let numGlyphsOut = numGlyphs + 1;\n let dupFirstEntry = true;\n if (numGlyphsOut > 0xffff) {\n dupFirstEntry = false;\n numGlyphsOut = numGlyphs;\n warn(\"Not enough space in glyfs to duplicate first glyph.\");\n }\n let maxFunctionDefs = 0;\n let maxSizeOfInstructions = 0;\n if (version >= 0x00010000 && tables.maxp.length >= 32) {\n font.pos += 8;\n const maxZones = font.getUint16();\n if (maxZones > 2) {\n tables.maxp.data[14] = 0;\n tables.maxp.data[15] = 2;\n }\n font.pos += 4;\n maxFunctionDefs = font.getUint16();\n font.pos += 4;\n maxSizeOfInstructions = font.getUint16();\n } else if (isTrueType && version === 0x00005000) {\n const newMaxp = new Uint8Array(32);\n writeUint32(newMaxp, 0, 0x00010000);\n newMaxp[4] = numGlyphs >> 8 & 0xff;\n newMaxp[5] = numGlyphs & 0xff;\n newMaxp.fill(0xff, 6, 14);\n newMaxp[15] = 2;\n newMaxp[28] = 0xff;\n newMaxp[29] = 0xff;\n newMaxp[31] = 0x10;\n tables.maxp.data = newMaxp;\n tables.maxp.length = 32;\n version = 0x00010000;\n }\n tables.maxp.data[4] = numGlyphsOut >> 8;\n tables.maxp.data[5] = numGlyphsOut & 255;\n const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables[\"cvt \"], maxFunctionDefs);\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry);\n if (!tables.head) {\n throw new FormatError('Required \"head\" table is not found');\n }\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n let missingGlyphs = Object.create(null);\n if (isTrueType) {\n const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions);\n missingGlyphs = glyphsInfo.missingGlyphs;\n if (version >= 0x00010000 && tables.maxp.length >= 32) {\n tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n }\n }\n if (!tables.hhea) {\n throw new FormatError('Required \"hhea\" table is not found');\n }\n if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n tables.hhea.data[10] = 0xff;\n tables.hhea.data[11] = 0xff;\n }\n const metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: signedInt16(tables.head.data[42], tables.head.data[43]),\n yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9])\n };\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n if (this.cssFontInfo?.lineHeight) {\n this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n this.lineGap = this.cssFontInfo.metrics.lineGap;\n } else {\n this.lineHeight = this.ascent - this.descent + this.lineGap;\n }\n if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties)\n };\n const charCodeToGlyphId = Object.create(null);\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n if (properties.composite) {\n const cidToGidMap = properties.cidToGidMap || [];\n const isCidToGidMapEmpty = cidToGidMap.length === 0;\n properties.cMap.forEach(function (charCode, cid) {\n if (typeof cid === \"string\") {\n cid = convertCidString(charCode, cid, true);\n }\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n let glyphId = -1;\n if (isCidToGidMapEmpty) {\n glyphId = cid;\n } else if (cidToGidMap[cid] !== undefined) {\n glyphId = cidToGidMap[cid];\n }\n if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n } else {\n const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding);\n const cmapPlatformId = cmapTable.platformId;\n const cmapEncodingId = cmapTable.encodingId;\n const cmapMappings = cmapTable.mappings;\n let baseEncoding = [],\n forcePostTable = false;\n if (properties.hasEncoding && (properties.baseEncodingName === \"MacRomanEncoding\" || properties.baseEncodingName === \"WinAnsiEncoding\")) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n }\n if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0)) {\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (let charCode = 0; charCode < 256; charCode++) {\n let glyphName;\n if (this.differences[charCode] !== undefined) {\n glyphName = this.differences[charCode];\n } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = StandardEncoding[charCode];\n }\n if (!glyphName) {\n continue;\n }\n const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n let unicodeOrCharCode;\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n }\n if (unicodeOrCharCode === undefined) {\n if (!properties.glyphNames && properties.hasIncludedToUnicodeMap && !(this.toUnicode instanceof IdentityToUnicodeMap)) {\n const unicode = this.toUnicode.get(charCode);\n if (unicode) {\n unicodeOrCharCode = unicode.codePointAt(0);\n }\n }\n if (unicodeOrCharCode === undefined) {\n continue;\n }\n }\n for (const mapping of cmapMappings) {\n if (mapping.charCode !== unicodeOrCharCode) {\n continue;\n }\n charCodeToGlyphId[charCode] = mapping.glyphId;\n break;\n }\n }\n } else if (cmapPlatformId === 0) {\n for (const mapping of cmapMappings) {\n charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\n }\n forcePostTable = true;\n } else if (cmapPlatformId === 3 && cmapEncodingId === 0) {\n for (const mapping of cmapMappings) {\n let charCode = mapping.charCode;\n if (charCode >= 0xf000 && charCode <= 0xf0ff) {\n charCode &= 0xff;\n }\n charCodeToGlyphId[charCode] = mapping.glyphId;\n }\n } else {\n for (const mapping of cmapMappings) {\n charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\n }\n }\n if (properties.glyphNames && (baseEncoding.length || this.differences.length)) {\n for (let i = 0; i < 256; ++i) {\n if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n continue;\n }\n const glyphName = this.differences[i] || baseEncoding[i];\n if (!glyphName) {\n continue;\n }\n const glyphId = properties.glyphNames.indexOf(glyphName);\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[i] = glyphId;\n }\n }\n }\n if (!properties.isInternalFont && charCodeToGlyphId[0] === undefined && hasGlyph(0)) {\n charCodeToGlyphId[0] = 0;\n }\n }\n if (charCodeToGlyphId.length === 0) {\n charCodeToGlyphId[0] = 0;\n }\n const glyphZeroId = dupFirstEntry ? numGlyphsOut - 1 : 0;\n if (!properties.cssFontInfo) {\n const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId, this.toUnicode);\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(newMapping.charCodeToGlyphId, newMapping.toUnicodeExtraMap, numGlyphsOut)\n };\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)\n };\n }\n }\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name)\n };\n } else {\n const [namePrototype, nameRecords] = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n this.psName = namePrototype[0][6] || null;\n if (!properties.composite) {\n adjustTrueTypeToUnicode(properties, this.isSymbolicFont, nameRecords);\n }\n }\n const builder = new OpenTypeFileBuilder(header.version);\n for (const tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n return builder.toArray();\n }\n convert(fontName, font, properties) {\n properties.fixedPitch = false;\n if (properties.builtInEncoding) {\n adjustType1ToUnicode(properties, properties.builtInEncoding);\n }\n const glyphZeroId = font instanceof CFFFont ? font.numGlyphs - 1 : 1;\n const mapping = font.getGlyphMapping(properties);\n let newMapping = null;\n let newCharCodeToGlyphId = mapping;\n let toUnicodeExtraMap = null;\n if (!properties.cssFontInfo) {\n newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId, this.toUnicode);\n this.toFontChar = newMapping.toFontChar;\n newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n toUnicodeExtraMap = newMapping.toUnicodeExtraMap;\n }\n const numGlyphs = font.numGlyphs;\n function getCharCodes(charCodeToGlyphId, glyphId) {\n let charCodes = null;\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n (charCodes ||= []).push(charCode | 0);\n }\n }\n return charCodes;\n }\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n const seacs = font.seacs;\n if (newMapping && (/* inlined export .SEAC_ANALYSIS_ENABLED */true) && seacs?.length) {\n const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n const charset = font.getCharset();\n const seacMap = Object.create(null);\n for (let glyphId in seacs) {\n glyphId |= 0;\n const seac = seacs[glyphId];\n const baseGlyphName = StandardEncoding[seac[2]];\n const accentGlyphName = StandardEncoding[seac[3]];\n const baseGlyphId = charset.indexOf(baseGlyphName);\n const accentGlyphId = charset.indexOf(accentGlyphName);\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n const accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]\n };\n const charCodes = getCharCodes(mapping, glyphId);\n if (!charCodes) {\n continue;\n }\n for (const charCode of charCodes) {\n const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);\n const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset\n };\n }\n }\n properties.seacMap = seacMap;\n }\n const unitsPerEm = properties.fontMatrix ? 1 / Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000;\n const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n builder.addTable(\"CFF \", font.data);\n builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, toUnicodeExtraMap, numGlyphs));\n builder.addTable(\"head\", function fontTableHead() {\n const dateArr = [0x00, 0x00, 0x00, 0x00, 0x9e, 0x0b, 0x7e, 0x27];\n const head = new DataBuilder({\n exactLength: 54\n });\n head.setArray([0x00, 0x01, 0x00, 0x00]);\n head.setArray([0x00, 0x00, 0x10, 0x00]);\n head.skip(4);\n head.setArray([0x5f, 0x0f, 0x3c, 0xf5]);\n head.skip(2);\n head.setSafeInt16(unitsPerEm);\n head.setArray(dateArr);\n head.setArray(dateArr);\n head.skip(2);\n head.setSafeInt16(properties.descent);\n head.setArray([0x0f, 0xff]);\n head.setSafeInt16(properties.ascent);\n head.setInt16(properties.italicAngle ? 2 : 0);\n head.setArray([0x00, 0x11]);\n head.skip(2 + 2 + 2);\n return head.data;\n }());\n builder.addTable(\"hhea\", function fontTableHhea() {\n const hhea = new DataBuilder({\n exactLength: 36\n });\n hhea.setArray([0x00, 0x01, 0x00, 0x00]);\n hhea.setSafeInt16(properties.ascent);\n hhea.setSafeInt16(properties.descent);\n hhea.skip(2);\n hhea.setArray([0xff, 0xff]);\n hhea.skip(2 + 2 + 2);\n hhea.setSafeInt16(properties.capHeight);\n hhea.setSafeInt16(Math.tan(properties.italicAngle) * properties.xHeight);\n hhea.skip(2 + 2 + 2 + 2 + 2 + 2);\n hhea.setInt16(numGlyphs);\n return hhea.data;\n }());\n builder.addTable(\"hmtx\", function fontTableHmtx() {\n const charstrings = font.charstrings;\n const cffWidths = font.cff?.widths ?? null;\n const hmtx = new DataBuilder({\n exactLength: numGlyphs * 4\n });\n hmtx.skip(4);\n for (let i = 1, ii = numGlyphs; i < ii; i++) {\n let width = 0;\n if (charstrings) {\n width = charstrings[i - 1].width || 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[i] || 0);\n }\n hmtx.setInt16(width);\n hmtx.skip(2);\n }\n return hmtx.data;\n }());\n builder.addTable(\"maxp\", function fontTableMaxp() {\n const maxp = new DataBuilder({\n exactLength: 6\n });\n maxp.setArray([0x00, 0x00, 0x50, 0x00]);\n maxp.setInt16(numGlyphs);\n return maxp.data;\n }());\n builder.addTable(\"name\", createNameTable(fontName));\n builder.addTable(\"post\", createPostTable(properties));\n return builder.toArray();\n }\n get _spaceWidth() {\n const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n let width;\n for (const glyphName of possibleSpaceReplacements) {\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n const glyphUnicode = glyphsUnicodeMap[glyphName];\n let charcode = 0;\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n if (typeof charcode === \"string\") {\n charcode = convertCidString(glyphUnicode, charcode);\n }\n }\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n width = this.widths[charcode];\n if (width) {\n break;\n }\n }\n return shadow(this, \"_spaceWidth\", width || this.defaultWidth);\n }\n _charToGlyph(charcode, isSpace = false) {\n let glyph = this.#glyphCache.get(charcode);\n if (glyph?.isSpace === isSpace) {\n return glyph;\n }\n let fontCharCode, width, operatorListId;\n let widthCode = charcode;\n if (this.cMap?.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n if (typeof widthCode === \"string\") {\n widthCode = convertCidString(charcode, widthCode);\n }\n }\n width = this.widths[widthCode];\n if (typeof width !== \"number\") {\n width = this.defaultWidth;\n }\n const vmetric = this.vmetrics?.[widthCode] || this.defaultVMetrics;\n let unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n let isInFont = this.toFontChar[charcode] !== undefined;\n fontCharCode = this.toFontChar[charcode] || charcode;\n if (this.missingFile) {\n const glyphName = this.differences[charcode] || this.defaultEncoding[charcode];\n if ((glyphName === \".notdef\" || glyphName === \"\") && this.type === \"Type1\") {\n fontCharCode = 0x20;\n if (glyphName === \"\") {\n width ||= this._spaceWidth;\n unicode = String.fromCharCode(fontCharCode);\n }\n }\n fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n }\n if (this.isType3Font) {\n operatorListId = fontCharCode;\n }\n let accent = null;\n if (this.seacMap?.[charcode]) {\n isInFont = true;\n const seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCodePoint(seac.accentFontCharCode),\n offset: seac.accentOffset\n };\n }\n let fontChar = \"\";\n if (typeof fontCharCode === \"number\") {\n if (fontCharCode <= 0x10ffff) {\n fontChar = String.fromCodePoint(fontCharCode);\n } else {\n warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n }\n }\n if (this.missingFile && this.vertical && fontChar.length === 1) {\n const vertical = getVerticalPresentationForm()[fontChar.charCodeAt(0)];\n if (vertical) {\n fontChar = unicode = String.fromCharCode(vertical);\n }\n }\n glyph = new fonts_Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);\n this.#glyphCache.set(charcode, glyph);\n return glyph;\n }\n charsToGlyphs(chars) {\n let glyphs = this.#charsCache.get(chars);\n if (glyphs) {\n return glyphs;\n }\n glyphs = [];\n if (this.cMap) {\n const c = Object.create(null),\n ii = chars.length;\n let i = 0;\n while (i < ii) {\n this.cMap.readCharCode(chars, i, c);\n const {\n charcode,\n length\n } = c;\n i += length;\n const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20);\n glyphs.push(glyph);\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n const charcode = chars.charCodeAt(i);\n const glyph = this._charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n this.#charsCache.set(chars, glyphs);\n return glyphs;\n }\n getCharPositions(chars) {\n const positions = [];\n if (this.cMap) {\n const c = Object.create(null);\n let i = 0;\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n const length = c.length;\n positions.push([i, i + length]);\n i += length;\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n positions.push([i, i + 1]);\n }\n }\n return positions;\n }\n get glyphCacheValues() {\n return this.#glyphCache.values();\n }\n encodeString(str) {\n const buffers = [];\n const currentBuf = [];\n const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n const getCharCode = this.toUnicode instanceof IdentityToUnicodeMap ? unicode => this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n for (let i = 0, ii = str.length; i < ii; i++) {\n const unicode = str.codePointAt(i);\n if (unicode > 0xffff) {\n i++;\n }\n if (this.toUnicode) {\n const charCode = getCharCode(unicode);\n if (charCode !== -1) {\n if (hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1;\n for (let j = charCodeLength - 1; j >= 0; j--) {\n currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff));\n }\n continue;\n }\n }\n if (!hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n currentBuf.push(String.fromCodePoint(unicode));\n }\n buffers.push(currentBuf.join(\"\"));\n return buffers;\n }\n}\nclass ErrorFont {\n constructor(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n charsToGlyphs() {\n return [];\n }\n encodeString(chars) {\n return [chars];\n }\n exportData() {\n return {\n error: this.error\n };\n }\n}\n\n;// ./src/core/calibri_factors.js\nconst CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.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, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.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, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriBoldMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\nconst CalibriBoldItalicFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.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, 0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.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, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriBoldItalicMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\nconst CalibriItalicFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.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, 0.85865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.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, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.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];\nconst CalibriItalicMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\nconst CalibriRegularFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.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, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.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, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriRegularMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\n\n;// ./src/core/helvetica_factors.js\nconst HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.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, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.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, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.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, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaBoldMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst HelveticaBoldItalicFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.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, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.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, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaBoldItalicMetrics = {\n lineHeight: 1.35,\n lineGap: 0.2\n};\nconst HelveticaItalicFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.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, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaItalicMetrics = {\n lineHeight: 1.35,\n lineGap: 0.2\n};\nconst HelveticaRegularFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.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, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaRegularMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\n\n;// ./src/core/liberationsans_widths.js\nconst 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, 1000, 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, 1000, 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, 1000, 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, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 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, 1000, 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];\nconst 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];\nconst 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, 1000, 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, 1000, 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, 1000, 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, 1000, 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, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 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, 1000, 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];\nconst 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];\nconst 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, 1000, 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, 1000, 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, 1000, 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, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 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, 1000, 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];\nconst 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];\nconst 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, 1000, 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, 1000, 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, 1000, 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, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 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, 1000, 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];\nconst 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];\n\n;// ./src/core/myriadpro_factors.js\nconst MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.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, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.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];\nconst MyriadProBoldMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst MyriadProBoldItalicFactors = [1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.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, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.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, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, 0.79199, 0.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];\nconst MyriadProBoldItalicMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst MyriadProItalicFactors = [1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, 0.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, 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.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, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.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];\nconst MyriadProItalicMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst MyriadProRegularFactors = [1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.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, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.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];\nconst MyriadProRegularMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\n\n;// ./src/core/segoeui_factors.js\nconst SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, 0.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, 0.97138, 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.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, 0.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, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.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, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.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];\nconst SegoeuiBoldMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\nconst SegoeuiBoldItalicFactors = [1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.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, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.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, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.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];\nconst SegoeuiBoldItalicMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\nconst SegoeuiItalicFactors = [1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675, 1.0326, 0.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, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.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, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.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];\nconst SegoeuiItalicMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\nconst SegoeuiRegularFactors = [1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.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, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.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, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.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];\nconst SegoeuiRegularMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\n\n;// ./src/core/xfa_fonts.js\n\n\n\n\n\n\n\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: MyriadProRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: MyriadProRegularMetrics\n };\n t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: MyriadProBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: MyriadProBoldMetrics\n };\n t[\"MyriadPro-It\"] = t[\"MyriadPro-Italic\"] = t[\"PdfJS-Fallback-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: MyriadProItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: MyriadProItalicMetrics\n };\n t[\"MyriadPro-BoldIt\"] = t[\"MyriadPro-BoldItalic\"] = t[\"PdfJS-Fallback-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: MyriadProBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: MyriadProBoldItalicMetrics\n };\n t.ArialMT = t.Arial = t[\"Arial-Regular\"] = {\n name: \"LiberationSans-Regular\",\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping\n };\n t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n name: \"LiberationSans-Bold\",\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping\n };\n t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n name: \"LiberationSans-Italic\",\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping\n };\n t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping\n };\n t[\"Calibri-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: CalibriRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: CalibriRegularMetrics\n };\n t[\"Calibri-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: CalibriBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: CalibriBoldMetrics\n };\n t[\"Calibri-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: CalibriItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: CalibriItalicMetrics\n };\n t[\"Calibri-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: CalibriBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: CalibriBoldItalicMetrics\n };\n t[\"Segoeui-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: SegoeuiRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: SegoeuiRegularMetrics\n };\n t[\"Segoeui-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: SegoeuiBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: SegoeuiBoldMetrics\n };\n t[\"Segoeui-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: SegoeuiItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: SegoeuiItalicMetrics\n };\n t[\"Segoeui-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: SegoeuiBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: SegoeuiBoldItalicMetrics\n };\n t[\"Helvetica-Regular\"] = t.Helvetica = {\n name: \"LiberationSans-Regular\",\n factors: HelveticaRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: HelveticaRegularMetrics\n };\n t[\"Helvetica-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: HelveticaBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: HelveticaBoldMetrics\n };\n t[\"Helvetica-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: HelveticaItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: HelveticaItalicMetrics\n };\n t[\"Helvetica-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: HelveticaBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: HelveticaBoldItalicMetrics\n };\n});\nfunction getXfaFontName(name) {\n const fontName = normalizeFontName(name);\n const fontMap = getXFAFontMap();\n return fontMap[fontName];\n}\nfunction getXfaFontWidths(name) {\n const info = getXfaFontName(name);\n if (!info) {\n return null;\n }\n const {\n baseWidths,\n baseMapping,\n factors\n } = info;\n const rescaledBaseWidths = !factors ? baseWidths : baseWidths.map((w, i) => w * factors[i]);\n let currentCode = -2;\n let currentArray;\n const newWidths = [];\n for (const [unicode, glyphIndex] of baseMapping.map((charUnicode, index) => [charUnicode, index]).sort(([unicode1], [unicode2]) => unicode1 - unicode2)) {\n if (unicode === -1) {\n continue;\n }\n if (unicode === currentCode + 1) {\n currentArray.push(rescaledBaseWidths[glyphIndex]);\n currentCode += 1;\n } else {\n currentCode = unicode;\n currentArray = [rescaledBaseWidths[glyphIndex]];\n newWidths.push(unicode, currentArray);\n }\n }\n return newWidths;\n}\nfunction getXfaFontDict(name) {\n const widths = getXfaFontWidths(name);\n const dict = new Dict(null);\n dict.set(\"BaseFont\", Name.get(name));\n dict.set(\"Type\", Name.get(\"Font\"));\n dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n dict.set(\"W\", widths);\n dict.set(\"FirstChar\", widths[0]);\n dict.set(\"LastChar\", widths.at(-2) + widths.at(-1).length - 1);\n const descriptor = new Dict(null);\n dict.set(\"FontDescriptor\", descriptor);\n const systemInfo = new Dict(null);\n systemInfo.set(\"Ordering\", \"Identity\");\n systemInfo.set(\"Registry\", \"Adobe\");\n systemInfo.set(\"Supplement\", 0);\n dict.set(\"CIDSystemInfo\", systemInfo);\n return dict;\n}\n\n;// ./src/core/postscript/lexer.js\nconst TOKEN = {\n number: 0,\n lbrace: 1,\n rbrace: 2,\n true: 3,\n false: 4,\n add: 5,\n sub: 6,\n mul: 7,\n div: 8,\n idiv: 9,\n mod: 10,\n exp: 11,\n eq: 12,\n ne: 13,\n gt: 14,\n ge: 15,\n lt: 16,\n le: 17,\n and: 18,\n or: 19,\n xor: 20,\n bitshift: 21,\n abs: 22,\n neg: 23,\n ceiling: 24,\n floor: 25,\n round: 26,\n truncate: 27,\n not: 28,\n sqrt: 29,\n sin: 30,\n cos: 31,\n ln: 32,\n log: 33,\n atan: 34,\n cvi: 35,\n cvr: 36,\n dup: 37,\n exch: 38,\n pop: 39,\n copy: 40,\n index: 41,\n roll: 42,\n if: 43,\n ifelse: 44,\n eof: 45,\n min: 46,\n max: 47\n};\nclass Token {\n constructor(id, value = null) {\n this.id = id;\n this.value = value;\n }\n}\nclass lexer_Lexer {\n static #singletons = null;\n static #operatorSingletons = null;\n static #initSingletons() {\n const singletons = Object.create(null);\n const operatorSingletons = Object.create(null);\n for (const [name, id] of Object.entries(TOKEN)) {\n if (name === \"number\") {\n continue;\n }\n const isOperator = id >= TOKEN.true && id <= TOKEN.ifelse;\n const token = new Token(id, isOperator ? name : null);\n singletons[name] = token;\n if (isOperator) {\n operatorSingletons[name] = token;\n }\n }\n this.#singletons = singletons;\n this.#operatorSingletons = operatorSingletons;\n }\n constructor(data) {\n if (!lexer_Lexer.#singletons) {\n lexer_Lexer.#initSingletons();\n }\n this.data = data;\n this.pos = 0;\n this.len = data.length;\n this._numberPattern = /[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?/iy;\n this._identifierPattern = /[a-z]+/y;\n }\n _skipComment() {\n const lf = this.data.indexOf(\"\\n\", this.pos);\n const cr = this.data.indexOf(\"\\r\", this.pos);\n const eol = Math.min(lf < 0 ? this.len : lf, cr < 0 ? this.len : cr);\n this.pos = Math.min(eol + 1, this.len);\n }\n _getNumber() {\n this._numberPattern.lastIndex = this.pos;\n const match = this._numberPattern.exec(this.data);\n if (!match) {\n return new Token(TOKEN.number, 0);\n }\n const number = parseFloat(match[0]);\n if (!Number.isFinite(number)) {\n return new Token(TOKEN.number, 0);\n }\n this.pos = this._numberPattern.lastIndex;\n return new Token(TOKEN.number, number);\n }\n _getOperator() {\n this._identifierPattern.lastIndex = this.pos;\n const match = this._identifierPattern.exec(this.data);\n if (!match) {\n return new Token(TOKEN.number, 0);\n }\n this.pos = this._identifierPattern.lastIndex;\n const op = match[0];\n const token = lexer_Lexer.#operatorSingletons[op];\n if (!token) {\n return new Token(TOKEN.number, 0);\n }\n return token;\n }\n next() {\n while (this.pos < this.len) {\n const ch = this.data.charCodeAt(this.pos++);\n switch (ch) {\n case 0x00:\n case 0x09:\n case 0x0a:\n case 0x0c:\n case 0x0d:\n case 0x20:\n break;\n case 0x25:\n this._skipComment();\n break;\n case 0x7b:\n return lexer_Lexer.#singletons.lbrace;\n case 0x7d:\n return lexer_Lexer.#singletons.rbrace;\n case 0x2b:\n case 0x2d:\n this.pos--;\n return this._getNumber();\n case 0x2e:\n this.pos--;\n return this._getNumber();\n default:\n if (ch >= 0x30 && ch <= 0x39) {\n this.pos--;\n return this._getNumber();\n }\n if (ch >= 0x61 && ch <= 0x7a) {\n this.pos--;\n return this._getOperator();\n }\n return new Token(TOKEN.number, 0);\n }\n }\n return lexer_Lexer.#singletons.eof;\n }\n}\n\n;// ./src/core/postscript/ast.js\n\n\nconst PS_VALUE_TYPE = {\n numeric: 0,\n boolean: 1,\n unknown: 2\n};\nconst PS_NODE = {\n program: 0,\n block: 1,\n number: 2,\n operator: 3,\n if: 4,\n ifelse: 5,\n arg: 6,\n const: 7,\n unary: 8,\n binary: 9,\n ternary: 10\n};\nclass PsNode {\n constructor(type) {\n this.type = type;\n }\n}\nclass PsProgram extends PsNode {\n constructor(body) {\n super(PS_NODE.program);\n this.body = body;\n }\n}\nclass PsBlock extends PsNode {\n constructor(instructions) {\n super(PS_NODE.block);\n this.instructions = instructions;\n }\n}\nclass PsNumber extends PsNode {\n constructor(value) {\n super(PS_NODE.number);\n this.value = value;\n }\n}\nclass PsOperator extends PsNode {\n constructor(op) {\n super(PS_NODE.operator);\n this.op = op;\n }\n}\nclass PsIf extends PsNode {\n constructor(then) {\n super(PS_NODE.if);\n this.then = then;\n }\n}\nclass PsIfElse extends PsNode {\n constructor(then, otherwise) {\n super(PS_NODE.ifelse);\n this.then = then;\n this.otherwise = otherwise;\n }\n}\nclass PsArgNode extends PsNode {\n constructor(index) {\n super(PS_NODE.arg);\n this.index = index;\n this.valueType = PS_VALUE_TYPE.numeric;\n }\n}\nclass PsConstNode extends PsNode {\n constructor(value) {\n super(PS_NODE.const);\n this.value = value;\n this.valueType = typeof value === \"boolean\" ? PS_VALUE_TYPE.boolean : PS_VALUE_TYPE.numeric;\n }\n}\nclass PsUnaryNode extends PsNode {\n constructor(op, operand, valueType = PS_VALUE_TYPE.unknown) {\n super(PS_NODE.unary);\n this.op = op;\n this.operand = operand;\n this.valueType = valueType;\n }\n}\nclass PsBinaryNode extends PsNode {\n constructor(op, first, second, valueType = PS_VALUE_TYPE.unknown) {\n super(PS_NODE.binary);\n this.op = op;\n this.first = first;\n this.second = second;\n this.valueType = valueType;\n }\n}\nclass PsTernaryNode extends PsNode {\n constructor(cond, then, otherwise, valueType = PS_VALUE_TYPE.unknown) {\n super(PS_NODE.ternary);\n this.cond = cond;\n this.then = then;\n this.otherwise = otherwise;\n this.valueType = valueType;\n }\n}\nclass ast_Parser {\n constructor(lexer) {\n this.lexer = lexer;\n this._token = null;\n }\n static _isRegularOperator(id) {\n return id >= TOKEN.true && id < TOKEN.if;\n }\n _advance() {\n this._token = this.lexer.next();\n }\n _expect(id) {\n if (this._token.id !== id) {\n throw new FormatError(`PostScript function: expected token id ${id}, got ${this._token.id}.`);\n }\n const tok = this._token;\n this._advance();\n return tok;\n }\n parse() {\n this._advance();\n this._expect(TOKEN.lbrace);\n const block = this._parseBlock();\n this._expect(TOKEN.rbrace);\n if (this._token.id !== TOKEN.eof) {\n warn(\"PostScript function: unexpected content after closing brace.\");\n }\n return new PsProgram(block);\n }\n _parseBlock() {\n const instructions = [];\n while (true) {\n const tok = this._token;\n switch (tok.id) {\n case TOKEN.number:\n instructions.push(new PsNumber(tok.value));\n this._advance();\n break;\n case TOKEN.lbrace:\n {\n this._advance();\n const thenBlock = this._parseBlock();\n this._expect(TOKEN.rbrace);\n if (this._token.id === TOKEN.if) {\n this._advance();\n instructions.push(new PsIf(thenBlock));\n } else if (this._token.id === TOKEN.lbrace) {\n this._advance();\n const elseBlock = this._parseBlock();\n this._expect(TOKEN.rbrace);\n this._expect(TOKEN.ifelse);\n instructions.push(new PsIfElse(thenBlock, elseBlock));\n } else {\n throw new FormatError(\"PostScript function: a procedure block must be followed by 'if' or '{…} ifelse'.\");\n }\n break;\n }\n case TOKEN.rbrace:\n case TOKEN.eof:\n return new PsBlock(instructions);\n case TOKEN.if:\n case TOKEN.ifelse:\n throw new FormatError(`PostScript function: unexpected '${tok.value}' operator.`);\n default:\n if (ast_Parser._isRegularOperator(tok.id)) {\n instructions.push(new PsOperator(tok.id));\n this._advance();\n break;\n }\n throw new FormatError(`PostScript function: unexpected token id ${tok.id}.`);\n }\n }\n }\n}\nfunction parsePostScriptFunction(source) {\n return new ast_Parser(new lexer_Lexer(source)).parse();\n}\nfunction _nodesEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a.type !== b.type) {\n return false;\n }\n switch (a.type) {\n case PS_NODE.arg:\n return a.index === b.index;\n case PS_NODE.const:\n return a.value === b.value;\n case PS_NODE.unary:\n return a.op === b.op && _nodesEqual(a.operand, b.operand);\n case PS_NODE.binary:\n return a.op === b.op && _nodesEqual(a.first, b.first) && _nodesEqual(a.second, b.second);\n case PS_NODE.ternary:\n return _nodesEqual(a.cond, b.cond) && _nodesEqual(a.then, b.then) && _nodesEqual(a.otherwise, b.otherwise);\n default:\n return false;\n }\n}\nfunction _evalBinaryConst(op, a, b) {\n switch (op) {\n case TOKEN.add:\n return a + b;\n case TOKEN.sub:\n return a - b;\n case TOKEN.mul:\n return a * b;\n case TOKEN.div:\n return b !== 0 ? a / b : 0;\n case TOKEN.idiv:\n return b !== 0 ? Math.trunc(a / b) : 0;\n case TOKEN.mod:\n return b !== 0 ? a - Math.trunc(a / b) * b : 0;\n case TOKEN.exp:\n {\n const r = a ** b;\n return Number.isFinite(r) ? r : undefined;\n }\n case TOKEN.atan:\n {\n let deg = Math.atan2(a, b) * (180 / Math.PI);\n if (deg < 0) {\n deg += 360;\n }\n return deg;\n }\n case TOKEN.eq:\n return a === b;\n case TOKEN.ne:\n return a !== b;\n case TOKEN.gt:\n return a > b;\n case TOKEN.ge:\n return a >= b;\n case TOKEN.lt:\n return a < b;\n case TOKEN.le:\n return a <= b;\n case TOKEN.and:\n return typeof a === \"boolean\" ? a && b : a & b | 0;\n case TOKEN.or:\n return typeof a === \"boolean\" ? a || b : a | b | 0;\n case TOKEN.xor:\n return typeof a === \"boolean\" ? a !== b : a ^ b | 0;\n case TOKEN.bitshift:\n return b >= 0 ? a << b | 0 : a >> -b | 0;\n case TOKEN.min:\n return Math.min(a, b);\n case TOKEN.max:\n return Math.max(a, b);\n default:\n return undefined;\n }\n}\nfunction _evalUnaryConst(op, v) {\n switch (op) {\n case TOKEN.abs:\n return Math.abs(v);\n case TOKEN.neg:\n return -v;\n case TOKEN.ceiling:\n return Math.ceil(v);\n case TOKEN.floor:\n return Math.floor(v);\n case TOKEN.round:\n return Math.round(v);\n case TOKEN.truncate:\n return Math.trunc(v);\n case TOKEN.sqrt:\n {\n const r = Math.sqrt(v);\n return Number.isFinite(r) ? r : undefined;\n }\n case TOKEN.sin:\n return Math.sin(v % 360 * Math.PI / 180);\n case TOKEN.cos:\n return Math.cos(v % 360 * Math.PI / 180);\n case TOKEN.ln:\n {\n const r = Math.log(v);\n return Number.isFinite(r) ? r : undefined;\n }\n case TOKEN.log:\n {\n const r = Math.log10(v);\n return Number.isFinite(r) ? r : undefined;\n }\n case TOKEN.cvi:\n return Math.trunc(v);\n case TOKEN.cvr:\n return v;\n case TOKEN.not:\n return typeof v === \"boolean\" ? !v : ~v;\n default:\n return undefined;\n }\n}\nconst MAX_STACK_SIZE = 100;\nfunction _unaryValueType(op, operandType) {\n return op === TOKEN.not ? operandType : PS_VALUE_TYPE.numeric;\n}\nfunction _binaryValueType(op, firstType, secondType) {\n switch (op) {\n case TOKEN.eq:\n case TOKEN.ne:\n case TOKEN.gt:\n case TOKEN.ge:\n case TOKEN.lt:\n case TOKEN.le:\n return PS_VALUE_TYPE.boolean;\n case TOKEN.and:\n case TOKEN.or:\n case TOKEN.xor:\n return firstType === secondType && firstType !== PS_VALUE_TYPE.unknown ? firstType : PS_VALUE_TYPE.unknown;\n default:\n return PS_VALUE_TYPE.numeric;\n }\n}\nclass PSStackToTree {\n static #binaryOps = null;\n static #unaryOps = null;\n static #idempotentUnary = null;\n static #negatedComparison = null;\n static #init() {\n this.#binaryOps = new Set([TOKEN.add, TOKEN.sub, TOKEN.mul, TOKEN.div, TOKEN.idiv, TOKEN.mod, TOKEN.exp, TOKEN.atan, TOKEN.eq, TOKEN.ne, TOKEN.gt, TOKEN.ge, TOKEN.lt, TOKEN.le, TOKEN.and, TOKEN.or, TOKEN.xor, TOKEN.bitshift]);\n this.#unaryOps = new Set([TOKEN.abs, TOKEN.neg, TOKEN.ceiling, TOKEN.floor, TOKEN.round, TOKEN.truncate, TOKEN.sqrt, TOKEN.sin, TOKEN.cos, TOKEN.ln, TOKEN.log, TOKEN.cvi, TOKEN.cvr, TOKEN.not]);\n this.#idempotentUnary = new Set([TOKEN.abs, TOKEN.ceiling, TOKEN.cvi, TOKEN.cvr, TOKEN.floor, TOKEN.round, TOKEN.truncate]);\n this.#negatedComparison = new Map([[TOKEN.eq, TOKEN.ne], [TOKEN.ne, TOKEN.eq], [TOKEN.lt, TOKEN.ge], [TOKEN.le, TOKEN.gt], [TOKEN.gt, TOKEN.le], [TOKEN.ge, TOKEN.lt]]);\n }\n evaluate(program, numInputs) {\n if (!PSStackToTree.#binaryOps) {\n PSStackToTree.#init();\n }\n this._failed = false;\n if (numInputs > MAX_STACK_SIZE) {\n return null;\n }\n const stack = [];\n for (let i = 0; i < numInputs; i++) {\n stack.push(new PsArgNode(i));\n }\n this._evalBlock(program.body, stack);\n if (this._failed) {\n return null;\n }\n PSStackToTree.#markShared(stack);\n return stack;\n }\n static #markShared(outputs) {\n const refCount = new Map();\n const visit = node => {\n if (!node || node.type === PS_NODE.arg || node.type === PS_NODE.const) {\n return;\n }\n const prev = refCount.get(node) ?? 0;\n refCount.set(node, prev + 1);\n if (prev > 0) {\n return;\n }\n switch (node.type) {\n case PS_NODE.unary:\n visit(node.operand);\n break;\n case PS_NODE.binary:\n visit(node.first);\n visit(node.second);\n break;\n case PS_NODE.ternary:\n visit(node.cond);\n visit(node.then);\n visit(node.otherwise);\n break;\n }\n };\n for (const output of outputs) {\n visit(output);\n }\n for (const [node, count] of refCount) {\n if (count > 1) {\n node.shared = true;\n node.sharedCount = count;\n }\n }\n }\n _evalBlock(block, stack) {\n this._evalBlockFrom(block.instructions, 0, stack);\n }\n _evalBlockFrom(instructions, startIdx, stack) {\n for (let idx = startIdx; idx < instructions.length; idx++) {\n if (this._failed) {\n break;\n }\n const instr = instructions[idx];\n switch (instr.type) {\n case PS_NODE.number:\n stack.push(new PsConstNode(instr.value));\n if (stack.length > MAX_STACK_SIZE) {\n this._failed = true;\n }\n break;\n case PS_NODE.operator:\n this._evalOp(instr.op, stack);\n break;\n case PS_NODE.if:\n {\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n const cond = stack.pop();\n const saved = stack.slice();\n this._evalBlock(instr.then, stack);\n if (this._failed) {\n break;\n }\n if (stack.length === saved.length) {\n for (let i = 0; i < stack.length; i++) {\n if (stack[i] !== saved[i]) {\n stack[i] = this._makeTernary(cond, stack[i], saved[i]);\n }\n }\n } else if (stack.length > saved.length) {\n if (cond.type === PS_NODE.const) {\n if (!cond.value) {\n stack.length = 0;\n stack.push(...saved);\n }\n break;\n }\n const trueStack = stack.slice();\n this._evalBlockFrom(instructions, idx + 1, trueStack);\n if (this._failed) {\n break;\n }\n const falseStack = saved;\n this._evalBlockFrom(instructions, idx + 1, falseStack);\n if (this._failed) {\n break;\n }\n if (trueStack.length !== falseStack.length) {\n const zero = new PsConstNode(0);\n while (trueStack.length < falseStack.length) {\n trueStack.push(zero);\n }\n while (falseStack.length < trueStack.length) {\n falseStack.push(zero);\n }\n }\n stack.length = 0;\n for (let i = 0; i < trueStack.length; i++) {\n stack.push(this._makeTernary(cond, trueStack[i], falseStack[i]));\n }\n return;\n } else {\n this._failed = true;\n }\n break;\n }\n case PS_NODE.ifelse:\n {\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n const cond = stack.pop();\n const snapshot = stack.slice();\n const thenStack = snapshot.slice();\n this._evalBlock(instr.then, thenStack);\n if (this._failed) {\n break;\n }\n const elseStack = snapshot.slice();\n this._evalBlock(instr.otherwise, elseStack);\n if (this._failed) {\n break;\n }\n if (thenStack.length !== elseStack.length) {\n const zero = new PsConstNode(0);\n while (thenStack.length < elseStack.length) {\n thenStack.push(zero);\n }\n while (elseStack.length < thenStack.length) {\n elseStack.push(zero);\n }\n }\n stack.length = 0;\n for (let i = 0; i < thenStack.length; i++) {\n stack.push(this._makeTernary(cond, thenStack[i], elseStack[i]));\n }\n break;\n }\n }\n }\n }\n _evalOp(op, stack) {\n if (PSStackToTree.#binaryOps.has(op)) {\n if (stack.length < 2) {\n this._failed = true;\n return;\n }\n const first = stack.pop();\n const second = stack.pop();\n stack.push(this._makeBinary(op, first, second));\n return;\n }\n if (PSStackToTree.#unaryOps.has(op)) {\n if (stack.length < 1) {\n this._failed = true;\n return;\n }\n stack.push(this._makeUnary(op, stack.pop()));\n return;\n }\n switch (op) {\n case TOKEN.true:\n stack.push(new PsConstNode(true));\n if (stack.length > MAX_STACK_SIZE) {\n this._failed = true;\n }\n break;\n case TOKEN.false:\n stack.push(new PsConstNode(false));\n if (stack.length > MAX_STACK_SIZE) {\n this._failed = true;\n }\n break;\n case TOKEN.dup:\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n stack.push(stack.at(-1));\n if (stack.length > MAX_STACK_SIZE) {\n this._failed = true;\n }\n break;\n case TOKEN.exch:\n {\n if (stack.length < 2) {\n this._failed = true;\n break;\n }\n const a = stack.pop();\n const b = stack.pop();\n stack.push(a, b);\n break;\n }\n case TOKEN.pop:\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n stack.pop();\n break;\n case TOKEN.copy:\n {\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n const nNode = stack.pop();\n if (nNode.type === PS_NODE.const) {\n const n = nNode.value | 0;\n if (n === 0) {} else if (n < 0 || n > stack.length) {\n this._failed = true;\n } else {\n stack.push(...stack.slice(-n));\n if (stack.length > MAX_STACK_SIZE) {\n this._failed = true;\n }\n }\n } else {\n this._failed = true;\n }\n break;\n }\n case TOKEN.index:\n {\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n const nNode = stack.pop();\n if (nNode.type === PS_NODE.const) {\n const n = nNode.value | 0;\n if (n < 0 || n >= stack.length) {\n this._failed = true;\n } else {\n stack.push(stack.at(-n - 1));\n }\n } else {\n this._failed = true;\n }\n break;\n }\n case TOKEN.roll:\n {\n if (stack.length < 2) {\n this._failed = true;\n break;\n }\n const jNode = stack.pop();\n const nNode = stack.pop();\n if (nNode.type === PS_NODE.const && jNode.type === PS_NODE.const) {\n const n = nNode.value | 0;\n if (n === 0) {} else if (n < 0 || n > stack.length) {\n this._failed = true;\n } else {\n const j = ((jNode.value | 0) % n + n) % n;\n if (j > 0) {\n const slice = stack.splice(-n, n);\n stack.push(...slice.slice(n - j), ...slice.slice(0, n - j));\n }\n }\n } else {\n this._failed = true;\n }\n break;\n }\n default:\n this._failed = true;\n break;\n }\n }\n _makeBinary(op, first, second) {\n if (first.type === PS_NODE.const && second.type === PS_NODE.const) {\n const v = _evalBinaryConst(op, second.value, first.value);\n if (v !== undefined) {\n return new PsConstNode(v);\n }\n }\n if (_nodesEqual(first, second)) {\n switch (op) {\n case TOKEN.sub:\n return new PsConstNode(0);\n case TOKEN.xor:\n return new PsConstNode(first.valueType === PS_VALUE_TYPE.boolean ? false : 0);\n case TOKEN.and:\n case TOKEN.or:\n return first;\n case TOKEN.min:\n case TOKEN.max:\n return first;\n case TOKEN.eq:\n case TOKEN.ge:\n case TOKEN.le:\n return new PsConstNode(true);\n case TOKEN.ne:\n case TOKEN.gt:\n case TOKEN.lt:\n return new PsConstNode(false);\n }\n }\n if (first.type === PS_NODE.const) {\n const b = first.value;\n switch (op) {\n case TOKEN.add:\n if (b === 0) {\n return second;\n }\n break;\n case TOKEN.sub:\n if (b === 0) {\n return second;\n }\n break;\n case TOKEN.mul:\n if (b === 1) {\n return second;\n }\n if (b === 0) {\n return first;\n }\n if (b === -1) {\n return this._makeUnary(TOKEN.neg, second);\n }\n break;\n case TOKEN.div:\n if (b !== 0) {\n return this._makeBinary(TOKEN.mul, new PsConstNode(1 / b), second);\n }\n break;\n case TOKEN.idiv:\n if (b === 1) {\n return second;\n }\n break;\n case TOKEN.exp:\n if (b === 1) {\n return second;\n }\n if (b === -1) {\n return this._makeBinary(TOKEN.div, second, new PsConstNode(1));\n }\n if (b === 0.5) {\n return this._makeUnary(TOKEN.sqrt, second);\n }\n if (b === 0.25) {\n const sqrtOnce = this._makeUnary(TOKEN.sqrt, second);\n return this._makeUnary(TOKEN.sqrt, sqrtOnce);\n }\n if (b === 2) {\n return this._makeBinary(TOKEN.mul, second, second);\n }\n if (b === 3) {\n return this._makeBinary(TOKEN.mul, this._makeBinary(TOKEN.mul, second, second), second);\n }\n if (b === 4) {\n const square = this._makeBinary(TOKEN.mul, second, second);\n return this._makeBinary(TOKEN.mul, square, square);\n }\n if (b === 0) {\n return new PsConstNode(1);\n }\n break;\n case TOKEN.and:\n if (b === true) {\n return second;\n }\n if (b === false) {\n return first;\n }\n break;\n case TOKEN.or:\n if (b === false) {\n return second;\n }\n if (b === true) {\n return first;\n }\n break;\n case TOKEN.min:\n if (second.type === PS_NODE.binary && second.op === TOKEN.max && second.first.type === PS_NODE.const && second.first.value >= b) {\n return first;\n }\n break;\n case TOKEN.max:\n if (second.type === PS_NODE.binary && second.op === TOKEN.min && second.first.type === PS_NODE.const && second.first.value <= b) {\n return first;\n }\n break;\n }\n }\n if (second.type === PS_NODE.const) {\n const a = second.value;\n switch (op) {\n case TOKEN.add:\n if (a === 0) {\n return first;\n }\n break;\n case TOKEN.sub:\n if (a === 0) {\n return this._makeUnary(TOKEN.neg, first);\n }\n break;\n case TOKEN.mul:\n if (a === 1) {\n return first;\n }\n if (a === 0) {\n return second;\n }\n if (a === -1) {\n return this._makeUnary(TOKEN.neg, first);\n }\n break;\n case TOKEN.and:\n if (a === true) {\n return first;\n }\n if (a === false) {\n return second;\n }\n break;\n case TOKEN.or:\n if (a === false) {\n return first;\n }\n if (a === true) {\n return second;\n }\n break;\n }\n }\n return new PsBinaryNode(op, first, second, _binaryValueType(op, first.valueType, second.valueType));\n }\n _makeUnary(op, operand) {\n if (operand.type === PS_NODE.const) {\n const v = _evalUnaryConst(op, operand.value);\n if (v !== undefined) {\n return new PsConstNode(v);\n }\n }\n if (op === TOKEN.not && operand.type === PS_NODE.binary) {\n const negated = PSStackToTree.#negatedComparison.get(operand.op);\n if (negated !== undefined) {\n return new PsBinaryNode(negated, operand.first, operand.second, PS_VALUE_TYPE.boolean);\n }\n }\n if (op === TOKEN.neg && operand.type === PS_NODE.binary && operand.op === TOKEN.sub) {\n return this._makeBinary(TOKEN.sub, operand.second, operand.first);\n }\n if (operand.type === PS_NODE.unary) {\n if (op === TOKEN.neg && operand.op === TOKEN.neg || op === TOKEN.not && operand.op === TOKEN.not) {\n return operand.operand;\n }\n if (op === TOKEN.abs && operand.op === TOKEN.neg) {\n return this._makeUnary(TOKEN.abs, operand.operand);\n }\n if (PSStackToTree.#idempotentUnary.has(op) && op === operand.op) {\n return operand;\n }\n }\n return new PsUnaryNode(op, operand, _unaryValueType(op, operand.valueType));\n }\n _makeTernary(cond, then, otherwise) {\n if (cond.type === PS_NODE.const) {\n return cond.value ? then : otherwise;\n }\n if (_nodesEqual(then, otherwise)) {\n return then;\n }\n if (then.type === PS_NODE.const && otherwise.type === PS_NODE.const) {\n if (then.value === true && otherwise.value === false) {\n return cond;\n }\n if (then.value === false && otherwise.value === true) {\n return this._makeUnary(TOKEN.not, cond);\n }\n }\n if (cond.type === PS_NODE.binary) {\n const {\n op: cop,\n first: cf,\n second: cs\n } = cond;\n if (cop === TOKEN.gt || cop === TOKEN.ge) {\n if (_nodesEqual(then, cf) && _nodesEqual(otherwise, cs)) {\n return this._makeBinary(TOKEN.min, cf, cs);\n }\n if (_nodesEqual(then, cs) && _nodesEqual(otherwise, cf)) {\n return this._makeBinary(TOKEN.max, cf, cs);\n }\n } else if (cop === TOKEN.lt || cop === TOKEN.le) {\n if (_nodesEqual(then, cf) && _nodesEqual(otherwise, cs)) {\n return this._makeBinary(TOKEN.max, cf, cs);\n }\n if (_nodesEqual(then, cs) && _nodesEqual(otherwise, cf)) {\n return this._makeBinary(TOKEN.min, cf, cs);\n }\n }\n }\n return new PsTernaryNode(cond, then, otherwise, then.valueType === otherwise.valueType ? then.valueType : PS_VALUE_TYPE.unknown);\n }\n}\n\n;// ./src/core/postscript/js_evaluator.js\n\n\n\nconst OP = {\n ARG: 0,\n CONST: 1,\n STORE: 2,\n IF: 3,\n JUMP: 4,\n ABS: 5,\n NEG: 6,\n CEIL: 7,\n FLOOR: 8,\n ROUND: 9,\n TRUNC: 10,\n NOT_B: 11,\n NOT_N: 12,\n SQRT: 13,\n SIN: 14,\n COS: 15,\n LN: 16,\n LOG10: 17,\n CVI: 18,\n SHIFT: 19,\n ADD: 20,\n SUB: 21,\n MUL: 22,\n DIV: 23,\n IDIV: 24,\n MOD: 25,\n POW: 26,\n EQ: 27,\n NE: 28,\n GT: 29,\n GE: 30,\n LT: 31,\n LE: 32,\n AND: 33,\n OR: 34,\n XOR: 35,\n ATAN: 36,\n MIN: 37,\n MAX: 38,\n TEE_TMP: 39,\n LOAD_TMP: 40\n};\nconst _DEG_TO_RAD = Math.PI / 180;\nconst _RAD_TO_DEG = 180 / Math.PI;\nclass PsJsCompiler {\n static #stack = new Float64Array(64);\n static #tmp = new Float64Array(64);\n constructor(domain, range) {\n this.nIn = domain.length >> 1;\n this.nOut = range.length >> 1;\n this.range = range;\n this.ir = [];\n this._tmpMap = new Map();\n this._nextTmp = 0;\n }\n _compileNode(node) {\n if (node.shared) {\n const cached = this._tmpMap.get(node);\n if (cached !== undefined) {\n this.ir.push(OP.LOAD_TMP, cached);\n return true;\n }\n if (!this._compileNodeImpl(node)) {\n return false;\n }\n const slot = this._nextTmp++;\n this._tmpMap.set(node, slot);\n this.ir.push(OP.TEE_TMP, slot);\n return true;\n }\n return this._compileNodeImpl(node);\n }\n _compileNodeImpl(node) {\n switch (node.type) {\n case PS_NODE.arg:\n this.ir.push(OP.ARG, node.index);\n return true;\n case PS_NODE.const:\n {\n const v = node.value;\n this.ir.push(OP.CONST, typeof v === \"boolean\" ? Number(v) : v);\n return true;\n }\n case PS_NODE.unary:\n return this._compileUnary(node);\n case PS_NODE.binary:\n return this._compileBinary(node);\n case PS_NODE.ternary:\n return this._compileTernary(node);\n default:\n return false;\n }\n }\n _compileUnary(node) {\n const {\n op,\n operand,\n valueType\n } = node;\n if (op === TOKEN.cvr) {\n return this._compileNode(operand);\n }\n if (!this._compileNode(operand)) {\n return false;\n }\n switch (op) {\n case TOKEN.abs:\n this.ir.push(OP.ABS);\n break;\n case TOKEN.neg:\n this.ir.push(OP.NEG);\n break;\n case TOKEN.ceiling:\n this.ir.push(OP.CEIL);\n break;\n case TOKEN.floor:\n this.ir.push(OP.FLOOR);\n break;\n case TOKEN.round:\n this.ir.push(OP.ROUND);\n break;\n case TOKEN.truncate:\n this.ir.push(OP.TRUNC);\n break;\n case TOKEN.sqrt:\n this.ir.push(OP.SQRT);\n break;\n case TOKEN.sin:\n this.ir.push(OP.SIN);\n break;\n case TOKEN.cos:\n this.ir.push(OP.COS);\n break;\n case TOKEN.ln:\n this.ir.push(OP.LN);\n break;\n case TOKEN.log:\n this.ir.push(OP.LOG10);\n break;\n case TOKEN.cvi:\n this.ir.push(OP.CVI);\n break;\n case TOKEN.not:\n if (valueType === PS_VALUE_TYPE.boolean) {\n this.ir.push(OP.NOT_B);\n } else if (valueType === PS_VALUE_TYPE.numeric) {\n this.ir.push(OP.NOT_N);\n } else {\n return false;\n }\n break;\n default:\n return false;\n }\n return true;\n }\n _compileBinary(node) {\n const {\n op,\n first,\n second\n } = node;\n if (op === TOKEN.bitshift) {\n if (first.type !== PS_NODE.const || !Number.isInteger(first.value)) {\n return false;\n }\n if (!this._compileNode(second)) {\n return false;\n }\n this.ir.push(OP.SHIFT, first.value);\n return true;\n }\n if (!this._compileNode(second)) {\n return false;\n }\n if (!this._compileNode(first)) {\n return false;\n }\n switch (op) {\n case TOKEN.add:\n this.ir.push(OP.ADD);\n break;\n case TOKEN.sub:\n this.ir.push(OP.SUB);\n break;\n case TOKEN.mul:\n this.ir.push(OP.MUL);\n break;\n case TOKEN.div:\n this.ir.push(OP.DIV);\n break;\n case TOKEN.idiv:\n this.ir.push(OP.IDIV);\n break;\n case TOKEN.mod:\n this.ir.push(OP.MOD);\n break;\n case TOKEN.exp:\n this.ir.push(OP.POW);\n break;\n case TOKEN.eq:\n this.ir.push(OP.EQ);\n break;\n case TOKEN.ne:\n this.ir.push(OP.NE);\n break;\n case TOKEN.gt:\n this.ir.push(OP.GT);\n break;\n case TOKEN.ge:\n this.ir.push(OP.GE);\n break;\n case TOKEN.lt:\n this.ir.push(OP.LT);\n break;\n case TOKEN.le:\n this.ir.push(OP.LE);\n break;\n case TOKEN.and:\n this.ir.push(OP.AND);\n break;\n case TOKEN.or:\n this.ir.push(OP.OR);\n break;\n case TOKEN.xor:\n this.ir.push(OP.XOR);\n break;\n case TOKEN.atan:\n this.ir.push(OP.ATAN);\n break;\n case TOKEN.min:\n this.ir.push(OP.MIN);\n break;\n case TOKEN.max:\n this.ir.push(OP.MAX);\n break;\n default:\n return false;\n }\n return true;\n }\n _compileTernary(node) {\n if (!this._compileNode(node.cond)) {\n return false;\n }\n this.ir.push(OP.IF, 0);\n const ifPatch = this.ir.length - 1;\n if (!this._compileNode(node.then)) {\n return false;\n }\n this.ir.push(OP.JUMP, 0);\n const jumpPatch = this.ir.length - 1;\n this.ir[ifPatch] = this.ir.length;\n if (!this._compileNode(node.otherwise)) {\n return false;\n }\n this.ir[jumpPatch] = this.ir.length;\n return true;\n }\n compile(program) {\n const outputs = new PSStackToTree().evaluate(program, this.nIn);\n if (!outputs || outputs.length < this.nOut) {\n return null;\n }\n for (let i = 0; i < this.nOut; i++) {\n if (!this._compileNode(outputs[i])) {\n return null;\n }\n const min = this.range[i * 2];\n const max = this.range[i * 2 + 1];\n this.ir.push(OP.STORE, i, min, max);\n }\n return new Float64Array(this.ir);\n }\n static execute(ir, src, srcOffset, dest, destOffset) {\n let ip = 0,\n sp = 0;\n const n = ir.length;\n const stack = this.#stack;\n const tmp = this.#tmp;\n while (ip < n) {\n switch (ir[ip++] | 0) {\n case OP.ARG:\n stack[sp++] = src[srcOffset + (ir[ip++] | 0)];\n break;\n case OP.CONST:\n stack[sp++] = ir[ip++];\n break;\n case OP.STORE:\n {\n const slot = ir[ip++] | 0;\n const min = ir[ip++];\n const max = ir[ip++];\n dest[destOffset + slot] = MathClamp(stack[--sp], min, max);\n break;\n }\n case OP.IF:\n {\n const tgt = ir[ip++];\n if (stack[--sp] === 0) {\n ip = tgt;\n }\n break;\n }\n case OP.JUMP:\n ip = ir[ip];\n break;\n case OP.ABS:\n stack[sp - 1] = Math.abs(stack[sp - 1]);\n break;\n case OP.NEG:\n stack[sp - 1] = -stack[sp - 1];\n break;\n case OP.CEIL:\n stack[sp - 1] = Math.ceil(stack[sp - 1]);\n break;\n case OP.FLOOR:\n stack[sp - 1] = Math.floor(stack[sp - 1]);\n break;\n case OP.ROUND:\n stack[sp - 1] = Math.floor(stack[sp - 1] + 0.5);\n break;\n case OP.TRUNC:\n stack[sp - 1] = Math.trunc(stack[sp - 1]);\n break;\n case OP.NOT_B:\n stack[sp - 1] = stack[sp - 1] !== 0 ? 0 : 1;\n break;\n case OP.NOT_N:\n stack[sp - 1] = ~(stack[sp - 1] | 0);\n break;\n case OP.SQRT:\n stack[sp - 1] = Math.sqrt(stack[sp - 1]);\n break;\n case OP.SIN:\n stack[sp - 1] = Math.sin(stack[sp - 1] % 360 * _DEG_TO_RAD);\n break;\n case OP.COS:\n stack[sp - 1] = Math.cos(stack[sp - 1] % 360 * _DEG_TO_RAD);\n break;\n case OP.LN:\n stack[sp - 1] = Math.log(stack[sp - 1]);\n break;\n case OP.LOG10:\n stack[sp - 1] = Math.log10(stack[sp - 1]);\n break;\n case OP.CVI:\n stack[sp - 1] = Math.trunc(stack[sp - 1]) | 0;\n break;\n case OP.SHIFT:\n {\n const amt = ir[ip++];\n const v = stack[sp - 1] | 0;\n if (amt > 0) {\n stack[sp - 1] = v << amt;\n } else if (amt < 0) {\n stack[sp - 1] = v >> -amt;\n } else {\n stack[sp - 1] = v;\n }\n break;\n }\n case OP.ADD:\n {\n const b = stack[--sp];\n stack[sp - 1] += b;\n break;\n }\n case OP.SUB:\n {\n const b = stack[--sp];\n stack[sp - 1] -= b;\n break;\n }\n case OP.MUL:\n {\n const b = stack[--sp];\n stack[sp - 1] *= b;\n break;\n }\n case OP.DIV:\n {\n const b = stack[--sp];\n stack[sp - 1] = b !== 0 ? stack[sp - 1] / b : 0;\n break;\n }\n case OP.IDIV:\n {\n const b = stack[--sp];\n stack[sp - 1] = b !== 0 ? Math.trunc(stack[sp - 1] / b) : 0;\n break;\n }\n case OP.MOD:\n {\n const b = stack[--sp];\n stack[sp - 1] = b !== 0 ? stack[sp - 1] % b : 0;\n break;\n }\n case OP.POW:\n {\n const b = stack[--sp];\n stack[sp - 1] **= b;\n break;\n }\n case OP.EQ:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] === b ? 1 : 0;\n break;\n }\n case OP.NE:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] !== b ? 1 : 0;\n break;\n }\n case OP.GT:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] > b ? 1 : 0;\n break;\n }\n case OP.GE:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] >= b ? 1 : 0;\n break;\n }\n case OP.LT:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] < b ? 1 : 0;\n break;\n }\n case OP.LE:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] <= b ? 1 : 0;\n break;\n }\n case OP.AND:\n {\n const b = stack[--sp] | 0;\n stack[sp - 1] = (stack[sp - 1] | 0) & b;\n break;\n }\n case OP.OR:\n {\n const b = stack[--sp] | 0;\n stack[sp - 1] = stack[sp - 1] | 0 | b;\n break;\n }\n case OP.XOR:\n {\n const b = stack[--sp] | 0;\n stack[sp - 1] = (stack[sp - 1] | 0) ^ b;\n break;\n }\n case OP.ATAN:\n {\n const b = stack[--sp];\n const deg = Math.atan2(stack[sp - 1], b) * _RAD_TO_DEG;\n stack[sp - 1] = deg < 0 ? deg + 360 : deg;\n break;\n }\n case OP.MIN:\n {\n const b = stack[--sp];\n stack[sp - 1] = Math.min(stack[sp - 1], b);\n break;\n }\n case OP.MAX:\n {\n const b = stack[--sp];\n stack[sp - 1] = Math.max(stack[sp - 1], b);\n break;\n }\n case OP.TEE_TMP:\n tmp[ir[ip++] | 0] = stack[sp - 1];\n break;\n case OP.LOAD_TMP:\n stack[sp++] = tmp[ir[ip++] | 0];\n break;\n }\n }\n }\n}\nclass PSStackBasedInterpreter {\n static #stack = new Float64Array(100);\n static #sp = 0;\n static #push(v) {\n if (this.#sp < this.#stack.length) {\n this.#stack[this.#sp++] = v;\n }\n }\n static #execOp(op) {\n const stack = this.#stack;\n switch (op) {\n case TOKEN.true:\n this.#push(1);\n break;\n case TOKEN.false:\n this.#push(0);\n break;\n case TOKEN.abs:\n stack[this.#sp - 1] = Math.abs(stack[this.#sp - 1]);\n break;\n case TOKEN.neg:\n stack[this.#sp - 1] = -stack[this.#sp - 1];\n break;\n case TOKEN.ceiling:\n stack[this.#sp - 1] = Math.ceil(stack[this.#sp - 1]);\n break;\n case TOKEN.floor:\n stack[this.#sp - 1] = Math.floor(stack[this.#sp - 1]);\n break;\n case TOKEN.round:\n stack[this.#sp - 1] = Math.floor(stack[this.#sp - 1] + 0.5);\n break;\n case TOKEN.truncate:\n stack[this.#sp - 1] = Math.trunc(stack[this.#sp - 1]);\n break;\n case TOKEN.sqrt:\n stack[this.#sp - 1] = Math.sqrt(stack[this.#sp - 1]);\n break;\n case TOKEN.sin:\n stack[this.#sp - 1] = Math.sin(stack[this.#sp - 1] % 360 * _DEG_TO_RAD);\n break;\n case TOKEN.cos:\n stack[this.#sp - 1] = Math.cos(stack[this.#sp - 1] % 360 * _DEG_TO_RAD);\n break;\n case TOKEN.ln:\n stack[this.#sp - 1] = Math.log(stack[this.#sp - 1]);\n break;\n case TOKEN.log:\n stack[this.#sp - 1] = Math.log10(stack[this.#sp - 1]);\n break;\n case TOKEN.cvi:\n stack[this.#sp - 1] = Math.trunc(stack[this.#sp - 1]) | 0;\n break;\n case TOKEN.cvr:\n break;\n case TOKEN.not:\n {\n const v = stack[this.#sp - 1];\n stack[this.#sp - 1] = v === 0 || v === 1 ? 1 - v : ~(v | 0);\n break;\n }\n case TOKEN.add:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] += b;\n break;\n }\n case TOKEN.sub:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] -= b;\n break;\n }\n case TOKEN.mul:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] *= b;\n break;\n }\n case TOKEN.div:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = b !== 0 ? stack[this.#sp - 1] / b : 0;\n break;\n }\n case TOKEN.idiv:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = b !== 0 ? Math.trunc(stack[this.#sp - 1] / b) : 0;\n break;\n }\n case TOKEN.mod:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = b !== 0 ? stack[this.#sp - 1] % b : 0;\n break;\n }\n case TOKEN.exp:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] **= b;\n break;\n }\n case TOKEN.atan:\n {\n const dx = stack[--this.#sp];\n const deg = Math.atan2(stack[this.#sp - 1], dx) * _RAD_TO_DEG;\n stack[this.#sp - 1] = deg < 0 ? deg + 360 : deg;\n break;\n }\n case TOKEN.eq:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] === b ? 1 : 0;\n break;\n }\n case TOKEN.ne:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] !== b ? 1 : 0;\n break;\n }\n case TOKEN.gt:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] > b ? 1 : 0;\n break;\n }\n case TOKEN.ge:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] >= b ? 1 : 0;\n break;\n }\n case TOKEN.lt:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] < b ? 1 : 0;\n break;\n }\n case TOKEN.le:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] <= b ? 1 : 0;\n break;\n }\n case TOKEN.and:\n {\n const b = stack[--this.#sp] | 0;\n stack[this.#sp - 1] = (stack[this.#sp - 1] | 0) & b;\n break;\n }\n case TOKEN.or:\n {\n const b = stack[--this.#sp] | 0;\n stack[this.#sp - 1] = stack[this.#sp - 1] | 0 | b;\n break;\n }\n case TOKEN.xor:\n {\n const b = stack[--this.#sp] | 0;\n stack[this.#sp - 1] = (stack[this.#sp - 1] | 0) ^ b;\n break;\n }\n case TOKEN.bitshift:\n {\n const amt = stack[--this.#sp] | 0;\n const v = stack[this.#sp - 1] | 0;\n stack[this.#sp - 1] = amt > 0 ? v << amt : v >> -amt;\n break;\n }\n case TOKEN.min:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = Math.min(stack[this.#sp - 1], b);\n break;\n }\n case TOKEN.max:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = Math.max(stack[this.#sp - 1], b);\n break;\n }\n case TOKEN.dup:\n this.#push(stack[this.#sp - 1]);\n break;\n case TOKEN.exch:\n {\n const a = stack[--this.#sp];\n const b = stack[--this.#sp];\n this.#push(a);\n this.#push(b);\n break;\n }\n case TOKEN.pop:\n this.#sp--;\n break;\n case TOKEN.copy:\n {\n const n = Math.trunc(stack[--this.#sp]);\n const base = this.#sp - n;\n for (let k = 0; k < n; k++) {\n this.#push(stack[base + k]);\n }\n break;\n }\n case TOKEN.index:\n {\n const i = Math.trunc(stack[--this.#sp]);\n this.#push(stack[this.#sp - 1 - i]);\n break;\n }\n case TOKEN.roll:\n {\n const j = Math.trunc(stack[--this.#sp]);\n const n = Math.trunc(stack[--this.#sp]);\n if (n > 1 && j !== 0) {\n const mod = (j % n + n) % n;\n if (mod !== 0) {\n const base = this.#sp - n;\n const sub = stack.slice(base, this.#sp);\n for (let k = 0; k < n; k++) {\n stack[base + k] = sub[(k - mod + n) % n];\n }\n }\n }\n break;\n }\n }\n }\n static #execBlock(instructions) {\n for (const instr of instructions) {\n switch (instr.type) {\n case PS_NODE.number:\n this.#push(instr.value);\n break;\n case PS_NODE.operator:\n this.#execOp(instr.op);\n break;\n case PS_NODE.if:\n if (this.#stack[--this.#sp] !== 0) {\n this.#execBlock(instr.then.instructions);\n }\n break;\n case PS_NODE.ifelse:\n if (this.#stack[--this.#sp] !== 0) {\n this.#execBlock(instr.then.instructions);\n } else {\n this.#execBlock(instr.otherwise.instructions);\n }\n break;\n }\n }\n }\n static build(program, domain, range) {\n const nIn = domain.length >> 1;\n const nOut = range.length >> 1;\n const {\n instructions\n } = program.body;\n return (src, srcOffset, dest, destOffset) => {\n this.#sp = 0;\n for (let i = 0; i < nIn; i++) {\n this.#push(src[srcOffset + i]);\n }\n this.#execBlock(instructions);\n const base = this.#sp - nOut;\n for (let i = 0; i < nOut; i++) {\n const v = base + i >= 0 ? this.#stack[base + i] : 0;\n dest[destOffset + i] = MathClamp(v, range[i * 2], range[i * 2 + 1]);\n }\n };\n }\n}\nfunction buildPostScriptJsFunction(source, domain, range, forceInterpreter = false) {\n const program = parsePostScriptFunction(source);\n const ir = !forceInterpreter && new PsJsCompiler(domain, range).compile(program);\n if (ir) {\n return (src, srcOffset, dest, destOffset) => {\n PsJsCompiler.execute(ir, src, srcOffset, dest, destOffset);\n };\n }\n return PSStackBasedInterpreter.build(program, domain, range);\n}\n\n;// ./src/core/postscript/wasm_compiler.js\n\n\n\nconst wasm_compiler_OP = {\n if: 0x04,\n else: 0x05,\n end: 0x0b,\n select: 0x1b,\n call: 0x10,\n local_get: 0x20,\n local_set: 0x21,\n local_tee: 0x22,\n i32_const: 0x41,\n i32_eqz: 0x45,\n i32_and: 0x71,\n i32_or: 0x72,\n i32_xor: 0x73,\n i32_shl: 0x74,\n i32_shr_s: 0x75,\n i32_trunc_f64_s: 0xaa,\n f64_const: 0x44,\n f64_eq: 0x61,\n f64_ne: 0x62,\n f64_lt: 0x63,\n f64_gt: 0x64,\n f64_le: 0x65,\n f64_ge: 0x66,\n f64_abs: 0x99,\n f64_neg: 0x9a,\n f64_ceil: 0x9b,\n f64_floor: 0x9c,\n f64_trunc: 0x9d,\n f64_nearest: 0x9e,\n f64_sqrt: 0x9f,\n f64_add: 0xa0,\n f64_sub: 0xa1,\n f64_mul: 0xa2,\n f64_div: 0xa3,\n f64_min: 0xa4,\n f64_max: 0xa5,\n f64_convert_i32_s: 0xb7,\n f64_store: 0x39\n};\nconst FUNC_TYPE = 0x60;\nconst F64 = 0x7c;\nconst SECTION = {\n type: 0x01,\n import: 0x02,\n function: 0x03,\n memory: 0x05,\n export: 0x07,\n code: 0x0a\n};\nconst EXTERN_FUNC = 0x00;\nconst EXTERN_MEM = 0x02;\nfunction unsignedLEB128(n) {\n const out = [];\n do {\n let byte = n & 0x7f;\n n >>>= 7;\n if (n !== 0) {\n byte |= 0x80;\n }\n out.push(byte);\n } while (n !== 0);\n return out;\n}\nfunction encodeASCIIString(s) {\n return [...unsignedLEB128(s.length), ...stringToBytes(s)];\n}\nfunction section(id, data) {\n return [id, ...unsignedLEB128(data.length), ...data];\n}\nfunction vec(items) {\n const out = unsignedLEB128(items.length);\n for (const item of items) {\n if (typeof item === \"number\") {\n out.push(item);\n continue;\n }\n for (const byte of item) {\n out.push(byte);\n }\n }\n return out;\n}\nconst MATH_IMPORTS = [[\"sin\", \"Math\", \"sin\", [F64], [F64]], [\"cos\", \"Math\", \"cos\", [F64], [F64]], [\"atan2\", \"Math\", \"atan2\", [F64, F64], [F64]], [\"log\", \"Math\", \"log\", [F64], [F64]], [\"log10\", \"Math\", \"log10\", [F64], [F64]], [\"pow\", \"Math\", \"pow\", [F64, F64], [F64]]];\nconst _mathImportObject = {\n Math: Object.fromEntries(MATH_IMPORTS.map(([name]) => [name, Math[name]]))\n};\nclass PsWasmCompiler {\n static #initialized = false;\n static #comparisonToOp = null;\n static #importIdx = null;\n static #degToRad = 0;\n static #radToDeg = 0;\n static #importTypeEntries = null;\n static #importSection = null;\n static #functionSection = null;\n static #memorySection = null;\n static #exportSection = null;\n static #wasmMagicVersion = null;\n static #f64View = null;\n static #f64Arr = null;\n static #init() {\n this.#comparisonToOp = new Map([[TOKEN.eq, wasm_compiler_OP.f64_eq], [TOKEN.ne, wasm_compiler_OP.f64_ne], [TOKEN.lt, wasm_compiler_OP.f64_lt], [TOKEN.le, wasm_compiler_OP.f64_le], [TOKEN.gt, wasm_compiler_OP.f64_gt], [TOKEN.ge, wasm_compiler_OP.f64_ge]]);\n this.#importIdx = Object.create(null);\n for (let i = 0; i < MATH_IMPORTS.length; i++) {\n this.#importIdx[MATH_IMPORTS[i][0]] = i;\n }\n this.#degToRad = Math.PI / 180;\n this.#radToDeg = 180 / Math.PI;\n this.#importTypeEntries = MATH_IMPORTS.map(([,,, params, results]) => [FUNC_TYPE, ...vec(params), ...vec(results)]);\n this.#importSection = new Uint8Array(section(SECTION.import, vec(MATH_IMPORTS.map(([, mod, field], i) => [...encodeASCIIString(mod), ...encodeASCIIString(field), EXTERN_FUNC, ...unsignedLEB128(i + 1)]))));\n this.#functionSection = new Uint8Array(section(SECTION.function, vec([[0]])));\n this.#memorySection = new Uint8Array(section(SECTION.memory, vec([[0x00, 0x01]])));\n this.#exportSection = new Uint8Array(section(SECTION.export, vec([[...encodeASCIIString(\"fn\"), EXTERN_FUNC, ...unsignedLEB128(MATH_IMPORTS.length)], [...encodeASCIIString(\"mem\"), EXTERN_MEM, 0x00]])));\n this.#wasmMagicVersion = new Uint8Array([0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00]);\n const f64Buf = new ArrayBuffer(8);\n this.#f64View = new DataView(f64Buf);\n this.#f64Arr = new Uint8Array(f64Buf);\n this.#initialized = true;\n }\n constructor(domain, range) {\n if (!PsWasmCompiler.#initialized) {\n PsWasmCompiler.#init();\n }\n this._nIn = domain.length >> 1;\n this._nOut = range.length >> 1;\n this._range = range;\n this._code = [];\n this._nextLocal = this._nIn;\n this._freeLocals = [];\n this._sharedLocals = new Map();\n }\n _allocLocal() {\n return this._freeLocals.pop() ?? this._nextLocal++;\n }\n _releaseLocal(idx) {\n this._freeLocals.push(idx);\n }\n _emitULEB128(n) {\n do {\n let b = n & 0x7f;\n n >>>= 7;\n if (n !== 0) {\n b |= 0x80;\n }\n this._code.push(b);\n } while (n !== 0);\n }\n _emitSLEB128(n) {\n for (;;) {\n const b = n & 0x7f;\n n >>= 7;\n if (n === 0 && (b & 0x40) === 0 || n === -1 && (b & 0x40) !== 0) {\n this._code.push(b);\n return;\n }\n this._code.push(b | 0x80);\n }\n }\n _emitF64Const(value) {\n this._code.push(wasm_compiler_OP.f64_const);\n PsWasmCompiler.#f64View.setFloat64(0, value, true);\n for (let i = 0; i < 8; i++) {\n this._code.push(PsWasmCompiler.#f64Arr[i]);\n }\n }\n _emitLocalGet(idx) {\n this._code.push(wasm_compiler_OP.local_get);\n this._emitULEB128(idx);\n }\n _emitLocalSet(idx) {\n this._code.push(wasm_compiler_OP.local_set);\n this._emitULEB128(idx);\n }\n _emitLocalTee(idx) {\n this._code.push(wasm_compiler_OP.local_tee);\n this._emitULEB128(idx);\n }\n _compileNode(node) {\n if (node.shared) {\n const entry = this._sharedLocals.get(node);\n if (entry !== undefined) {\n this._emitLocalGet(entry.local);\n if (--entry.remaining === 0) {\n this._releaseLocal(entry.local);\n }\n return true;\n }\n if (!this._compileNodeImpl(node)) {\n return false;\n }\n const local = this._allocLocal();\n this._sharedLocals.set(node, {\n local,\n remaining: node.sharedCount - 1\n });\n this._emitLocalTee(local);\n return true;\n }\n return this._compileNodeImpl(node);\n }\n _compileNodeImpl(node) {\n switch (node.type) {\n case PS_NODE.arg:\n this._emitLocalGet(node.index);\n return true;\n case PS_NODE.const:\n {\n let v = node.value;\n if (typeof v === \"boolean\") {\n v = v ? 1 : 0;\n }\n this._emitF64Const(v);\n return true;\n }\n case PS_NODE.unary:\n return this._compileUnaryNode(node);\n case PS_NODE.binary:\n return this._compileBinaryNode(node);\n case PS_NODE.ternary:\n return this._compileTernaryNode(node);\n default:\n return false;\n }\n }\n _compileSinCosNode(node) {\n const local = this._allocLocal();\n try {\n if (!this._compileNode(node.operand)) {\n return false;\n }\n const code = this._code;\n this._emitLocalSet(local);\n this._emitLocalGet(local);\n this._emitLocalGet(local);\n this._emitF64Const(360);\n code.push(wasm_compiler_OP.f64_div, wasm_compiler_OP.f64_trunc);\n this._emitF64Const(360);\n code.push(wasm_compiler_OP.f64_mul, wasm_compiler_OP.f64_sub);\n this._emitF64Const(PsWasmCompiler.#degToRad);\n code.push(wasm_compiler_OP.f64_mul, wasm_compiler_OP.call);\n this._emitULEB128(PsWasmCompiler.#importIdx[node.op === TOKEN.sin ? \"sin\" : \"cos\"]);\n return true;\n } finally {\n this._releaseLocal(local);\n }\n }\n _compileUnaryNode(node) {\n const code = this._code;\n if (node.op === TOKEN.sin || node.op === TOKEN.cos) {\n return this._compileSinCosNode(node);\n }\n if (node.op === TOKEN.not) {\n if (node.valueType === PS_VALUE_TYPE.boolean) {\n if (!this._compileNodeAsBoolI32(node.operand)) {\n return false;\n }\n code.push(wasm_compiler_OP.i32_eqz, wasm_compiler_OP.f64_convert_i32_s);\n return true;\n }\n if (node.valueType === PS_VALUE_TYPE.numeric) {\n if (!this._compileNode(node.operand)) {\n return false;\n }\n code.push(wasm_compiler_OP.i32_trunc_f64_s, wasm_compiler_OP.i32_const, 0x7f, wasm_compiler_OP.i32_xor, wasm_compiler_OP.f64_convert_i32_s);\n return true;\n }\n return false;\n }\n if (!this._compileNode(node.operand)) {\n return false;\n }\n switch (node.op) {\n case TOKEN.abs:\n code.push(wasm_compiler_OP.f64_abs);\n break;\n case TOKEN.neg:\n code.push(wasm_compiler_OP.f64_neg);\n break;\n case TOKEN.sqrt:\n code.push(wasm_compiler_OP.f64_sqrt);\n break;\n case TOKEN.floor:\n code.push(wasm_compiler_OP.f64_floor);\n break;\n case TOKEN.ceiling:\n code.push(wasm_compiler_OP.f64_ceil);\n break;\n case TOKEN.round:\n this._emitF64Const(0.5);\n code.push(wasm_compiler_OP.f64_add, wasm_compiler_OP.f64_floor);\n break;\n case TOKEN.truncate:\n code.push(wasm_compiler_OP.f64_trunc);\n break;\n case TOKEN.cvi:\n code.push(wasm_compiler_OP.i32_trunc_f64_s, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.cvr:\n break;\n case TOKEN.ln:\n code.push(wasm_compiler_OP.call);\n this._emitULEB128(PsWasmCompiler.#importIdx.log);\n break;\n case TOKEN.log:\n code.push(wasm_compiler_OP.call);\n this._emitULEB128(PsWasmCompiler.#importIdx.log10);\n break;\n default:\n return false;\n }\n return true;\n }\n _compileSafeDivNode(first, second) {\n const tmp = this._allocLocal();\n try {\n if (!this._compileNode(second)) {\n return false;\n }\n if (!this._compileNode(first)) {\n return false;\n }\n const code = this._code;\n this._emitLocalTee(tmp);\n code.push(wasm_compiler_OP.f64_div);\n this._emitF64Const(0);\n this._emitLocalGet(tmp);\n this._emitF64Const(0);\n code.push(wasm_compiler_OP.f64_ne, wasm_compiler_OP.select);\n return true;\n } finally {\n this._releaseLocal(tmp);\n }\n }\n _compileSafeIdivNode(first, second) {\n const tmp = this._allocLocal();\n try {\n if (!this._compileNode(second)) {\n return false;\n }\n if (!this._compileNode(first)) {\n return false;\n }\n const code = this._code;\n this._emitLocalTee(tmp);\n code.push(wasm_compiler_OP.f64_div, wasm_compiler_OP.f64_trunc);\n this._emitF64Const(0);\n this._emitLocalGet(tmp);\n this._emitF64Const(0);\n code.push(wasm_compiler_OP.f64_ne, wasm_compiler_OP.select);\n return true;\n } finally {\n this._releaseLocal(tmp);\n }\n }\n _compileBitshiftNode(first, second) {\n if (first.type !== PS_NODE.const || !Number.isInteger(first.value)) {\n return false;\n }\n if (!this._compileNode(second)) {\n return false;\n }\n const code = this._code;\n code.push(wasm_compiler_OP.i32_trunc_f64_s);\n const shift = first.value;\n if (shift > 0) {\n code.push(wasm_compiler_OP.i32_const);\n this._emitSLEB128(shift);\n code.push(wasm_compiler_OP.i32_shl);\n } else if (shift < 0) {\n code.push(wasm_compiler_OP.i32_const);\n this._emitSLEB128(-shift);\n code.push(wasm_compiler_OP.i32_shr_s);\n }\n code.push(wasm_compiler_OP.f64_convert_i32_s);\n return true;\n }\n _compileModNode(first, second) {\n if (first.type === PS_NODE.const && first.value === 0) {\n if (!this._compileNode(second)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.drop);\n this._emitF64Const(0);\n return true;\n }\n const localA = this._allocLocal();\n try {\n if (!this._compileNode(second)) {\n return false;\n }\n this._emitLocalTee(localA);\n const code = this._code;\n if (first.type === PS_NODE.const) {\n this._emitLocalGet(localA);\n this._emitF64Const(first.value);\n code.push(wasm_compiler_OP.f64_div, wasm_compiler_OP.f64_trunc);\n this._emitF64Const(first.value);\n code.push(wasm_compiler_OP.f64_mul, wasm_compiler_OP.f64_sub);\n } else {\n const localB = this._allocLocal();\n try {\n if (!this._compileNode(first)) {\n return false;\n }\n this._emitLocalSet(localB);\n this._emitLocalGet(localA);\n this._emitLocalGet(localB);\n code.push(wasm_compiler_OP.f64_div, wasm_compiler_OP.f64_trunc);\n this._emitLocalGet(localB);\n code.push(wasm_compiler_OP.f64_mul, wasm_compiler_OP.f64_sub);\n this._emitF64Const(0);\n this._emitLocalGet(localB);\n this._emitF64Const(0);\n code.push(wasm_compiler_OP.f64_ne, wasm_compiler_OP.select);\n } finally {\n this._releaseLocal(localB);\n }\n }\n return true;\n } finally {\n this._releaseLocal(localA);\n }\n }\n _compileAtanNode(first, second) {\n const localR = this._allocLocal();\n try {\n if (!this._compileNode(second)) {\n return false;\n }\n if (!this._compileNode(first)) {\n return false;\n }\n const code = this._code;\n code.push(wasm_compiler_OP.call);\n this._emitULEB128(PsWasmCompiler.#importIdx.atan2);\n this._emitF64Const(PsWasmCompiler.#radToDeg);\n code.push(wasm_compiler_OP.f64_mul);\n this._emitLocalTee(localR);\n this._emitF64Const(0);\n code.push(wasm_compiler_OP.f64_lt, wasm_compiler_OP.if, F64);\n this._emitLocalGet(localR);\n this._emitF64Const(360);\n code.push(wasm_compiler_OP.f64_add, wasm_compiler_OP.else);\n this._emitLocalGet(localR);\n code.push(wasm_compiler_OP.end);\n return true;\n } finally {\n this._releaseLocal(localR);\n }\n }\n _compileBitwiseNode(op, first, second) {\n if (!this._compileBitwiseOperandI32(second)) {\n return false;\n }\n if (!this._compileBitwiseOperandI32(first)) {\n return false;\n }\n const code = this._code;\n switch (op) {\n case TOKEN.and:\n code.push(wasm_compiler_OP.i32_and);\n break;\n case TOKEN.or:\n code.push(wasm_compiler_OP.i32_or);\n break;\n case TOKEN.xor:\n code.push(wasm_compiler_OP.i32_xor);\n break;\n default:\n return false;\n }\n code.push(wasm_compiler_OP.f64_convert_i32_s);\n return true;\n }\n _compileBitwiseOperandI32(node) {\n if (node.valueType === PS_VALUE_TYPE.boolean) {\n return this._compileNodeAsBoolI32(node);\n }\n if (!this._compileNode(node)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.i32_trunc_f64_s);\n return true;\n }\n _compileStandardBinaryNode(op, first, second) {\n if (first === second && first.type !== PS_NODE.arg && first.type !== PS_NODE.const && !first.shared) {\n const tmp = this._allocLocal();\n try {\n if (!this._compileNode(first)) {\n return false;\n }\n this._emitLocalTee(tmp);\n this._emitLocalGet(tmp);\n } finally {\n this._releaseLocal(tmp);\n }\n } else {\n if (!this._compileNode(second)) {\n return false;\n }\n if (!this._compileNode(first)) {\n return false;\n }\n }\n const code = this._code;\n switch (op) {\n case TOKEN.add:\n code.push(wasm_compiler_OP.f64_add);\n break;\n case TOKEN.sub:\n code.push(wasm_compiler_OP.f64_sub);\n break;\n case TOKEN.mul:\n code.push(wasm_compiler_OP.f64_mul);\n break;\n case TOKEN.exp:\n code.push(wasm_compiler_OP.call);\n this._emitULEB128(PsWasmCompiler.#importIdx.pow);\n break;\n case TOKEN.eq:\n code.push(wasm_compiler_OP.f64_eq, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.ne:\n code.push(wasm_compiler_OP.f64_ne, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.lt:\n code.push(wasm_compiler_OP.f64_lt, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.le:\n code.push(wasm_compiler_OP.f64_le, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.gt:\n code.push(wasm_compiler_OP.f64_gt, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.ge:\n code.push(wasm_compiler_OP.f64_ge, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.min:\n code.push(wasm_compiler_OP.f64_min);\n break;\n case TOKEN.max:\n code.push(wasm_compiler_OP.f64_max);\n break;\n default:\n return false;\n }\n return true;\n }\n _compileBinaryNode(node) {\n const {\n op,\n first,\n second\n } = node;\n if (op === TOKEN.bitshift) {\n return this._compileBitshiftNode(first, second);\n }\n if (op === TOKEN.div) {\n return this._compileSafeDivNode(first, second);\n }\n if (op === TOKEN.idiv) {\n return this._compileSafeIdivNode(first, second);\n }\n if (op === TOKEN.mod) {\n return this._compileModNode(first, second);\n }\n if (op === TOKEN.atan) {\n return this._compileAtanNode(first, second);\n }\n if (op === TOKEN.and || op === TOKEN.or || op === TOKEN.xor) {\n return this._compileBitwiseNode(op, first, second);\n }\n return this._compileStandardBinaryNode(op, first, second);\n }\n _compileNodeAsBoolI32(node) {\n if (node.type === PS_NODE.binary) {\n const wasmOp = PsWasmCompiler.#comparisonToOp.get(node.op);\n if (wasmOp !== undefined) {\n if (!this._compileNode(node.second)) {\n return false;\n }\n if (!this._compileNode(node.first)) {\n return false;\n }\n this._code.push(wasmOp);\n return true;\n }\n if (node.valueType === PS_VALUE_TYPE.boolean && (node.op === TOKEN.and || node.op === TOKEN.or || node.op === TOKEN.xor)) {\n if (!this._compileNodeAsBoolI32(node.second)) {\n return false;\n }\n if (!this._compileNodeAsBoolI32(node.first)) {\n return false;\n }\n switch (node.op) {\n case TOKEN.and:\n this._code.push(wasm_compiler_OP.i32_and);\n break;\n case TOKEN.or:\n this._code.push(wasm_compiler_OP.i32_or);\n break;\n case TOKEN.xor:\n this._code.push(wasm_compiler_OP.i32_xor);\n break;\n }\n return true;\n }\n }\n if (node.type === PS_NODE.unary && node.op === TOKEN.not && node.valueType === PS_VALUE_TYPE.boolean) {\n if (!this._compileNodeAsBoolI32(node.operand)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.i32_eqz);\n return true;\n }\n if (!this._compileNode(node)) {\n return false;\n }\n if (node.valueType === PS_VALUE_TYPE.boolean) {\n this._code.push(wasm_compiler_OP.i32_trunc_f64_s);\n } else {\n this._emitF64Const(0);\n this._code.push(wasm_compiler_OP.f64_ne);\n }\n return true;\n }\n _compileTernaryNode(node) {\n if (!this._compileNodeAsBoolI32(node.cond)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.if, F64);\n if (!this._compileNode(node.then)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.else);\n if (!this._compileNode(node.otherwise)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.end);\n return true;\n }\n compile(program) {\n const outputs = new PSStackToTree().evaluate(program, this._nIn);\n if (!outputs || outputs.length < this._nOut) {\n return null;\n }\n const code = this._code;\n for (let i = 0; i < this._nOut; i++) {\n const min = this._range[i * 2];\n const max = this._range[i * 2 + 1];\n code.push(wasm_compiler_OP.i32_const);\n this._emitSLEB128(i * 8);\n if (!this._compileNode(outputs[i])) {\n return null;\n }\n this._emitF64Const(max);\n code.push(wasm_compiler_OP.f64_min);\n this._emitF64Const(min);\n code.push(wasm_compiler_OP.f64_max, wasm_compiler_OP.f64_store, 0x03, 0x00);\n }\n code.push(wasm_compiler_OP.end);\n const nIn = this._nIn;\n const nLocals = this._nextLocal - nIn;\n const paramTypes = Array(nIn).fill(F64);\n const resultTypes = [];\n const funcType = [FUNC_TYPE, ...vec(paramTypes), ...vec(resultTypes)];\n const typeSectionBytes = new Uint8Array(section(SECTION.type, vec([funcType, ...PsWasmCompiler.#importTypeEntries])));\n const localDecls = nLocals > 0 ? vec([[...unsignedLEB128(nLocals), F64]]) : vec([]);\n const funcBodyLen = localDecls.length + code.length;\n const codeSectionBytes = new Uint8Array(section(SECTION.code, vec([[...unsignedLEB128(funcBodyLen), ...localDecls, ...code]])));\n const magicVersion = PsWasmCompiler.#wasmMagicVersion;\n const importSection = PsWasmCompiler.#importSection;\n const functionSection = PsWasmCompiler.#functionSection;\n const memorySection = PsWasmCompiler.#memorySection;\n const exportSection = PsWasmCompiler.#exportSection;\n const totalLen = magicVersion.length + typeSectionBytes.length + importSection.length + functionSection.length + memorySection.length + exportSection.length + codeSectionBytes.length;\n const result = new Uint8Array(totalLen);\n let off = 0;\n result.set(magicVersion, off);\n off += magicVersion.length;\n result.set(typeSectionBytes, off);\n off += typeSectionBytes.length;\n result.set(importSection, off);\n off += importSection.length;\n result.set(functionSection, off);\n off += functionSection.length;\n result.set(memorySection, off);\n off += memorySection.length;\n result.set(exportSection, off);\n off += exportSection.length;\n result.set(codeSectionBytes, off);\n return result;\n }\n}\nfunction compilePostScriptToWasm(source, domain, range) {\n return new PsWasmCompiler(domain, range).compile(parsePostScriptFunction(source));\n}\nfunction _makeWrapper(exports, nIn, nOut) {\n const {\n fn,\n mem\n } = exports;\n const outView = new Float64Array(mem.buffer, 0, nOut);\n let writeOut;\n switch (nOut) {\n case 1:\n writeOut = (dest, destOffset) => {\n dest[destOffset] = outView[0];\n };\n break;\n case 2:\n writeOut = (dest, destOffset) => {\n dest[destOffset] = outView[0];\n dest[destOffset + 1] = outView[1];\n };\n break;\n case 3:\n writeOut = (dest, destOffset) => {\n dest[destOffset] = outView[0];\n dest[destOffset + 1] = outView[1];\n dest[destOffset + 2] = outView[2];\n };\n break;\n case 4:\n writeOut = (dest, destOffset) => {\n dest[destOffset] = outView[0];\n dest[destOffset + 1] = outView[1];\n dest[destOffset + 2] = outView[2];\n dest[destOffset + 3] = outView[3];\n };\n break;\n default:\n writeOut = (dest, destOffset) => {\n for (let i = 0; i < nOut; i++) {\n dest[destOffset + i] = outView[i];\n }\n };\n }\n switch (nIn) {\n case 1:\n return (src, srcOffset, dest, destOffset) => {\n fn(src[srcOffset]);\n writeOut(dest, destOffset);\n };\n case 2:\n return (src, srcOffset, dest, destOffset) => {\n fn(src[srcOffset], src[srcOffset + 1]);\n writeOut(dest, destOffset);\n };\n case 3:\n return (src, srcOffset, dest, destOffset) => {\n fn(src[srcOffset], src[srcOffset + 1], src[srcOffset + 2]);\n writeOut(dest, destOffset);\n };\n case 4:\n return (src, srcOffset, dest, destOffset) => {\n fn(src[srcOffset], src[srcOffset + 1], src[srcOffset + 2], src[srcOffset + 3]);\n writeOut(dest, destOffset);\n };\n default:\n {\n const inBuf = new Float64Array(nIn);\n return (src, srcOffset, dest, destOffset) => {\n for (let i = 0; i < nIn; i++) {\n inBuf[i] = src[srcOffset + i];\n }\n fn(...inBuf);\n writeOut(dest, destOffset);\n };\n }\n }\n}\nfunction buildPostScriptWasmFunction(source, domain, range) {\n const bytes = compilePostScriptToWasm(source, domain, range);\n if (!bytes) {\n return null;\n }\n try {\n const instance = new WebAssembly.Instance(new WebAssembly.Module(bytes), _mathImportObject);\n return _makeWrapper(instance.exports, domain.length >> 1, range.length >> 1);\n } catch {\n return null;\n }\n}\n\n;// ./src/core/image_utils.js\n\n\nclass BaseLocalCache {\n constructor(options) {\n this._onlyRefs = options?.onlyRefs === true;\n if (!this._onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n this._imageCache = new RefMap();\n }\n getByName(name) {\n if (this._onlyRefs) {\n unreachable(\"Should not call `getByName` method.\");\n }\n const ref = this._nameRefMap.get(name);\n if (ref) {\n return this.getByRef(ref);\n }\n return this._imageMap.get(name) || null;\n }\n getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n set(name, ref, data) {\n unreachable(\"Abstract method `set` called.\");\n }\n}\nclass LocalImageCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalImageCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\nclass LocalColorSpaceCache extends BaseLocalCache {\n set(name = null, ref = null, data) {\n if (typeof name !== \"string\" && !ref) {\n throw new Error('LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n if (name !== null) {\n this._nameRefMap.set(name, ref);\n }\n this._imageCache.put(ref, data);\n return;\n }\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\nclass LocalFunctionCache extends BaseLocalCache {\n constructor(options) {\n super({\n onlyRefs: true\n });\n }\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\nclass LocalGStateCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\nclass LocalTilingPatternCache extends BaseLocalCache {\n constructor(options) {\n super({\n onlyRefs: true\n });\n }\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\nclass RegionalImageCache extends BaseLocalCache {\n constructor(options) {\n super({\n onlyRefs: true\n });\n }\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('RegionalImageCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\nclass GlobalColorSpaceCache extends BaseLocalCache {\n constructor(options) {\n super({\n onlyRefs: true\n });\n }\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('GlobalColorSpaceCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n clear() {\n this._imageCache.clear();\n }\n}\nclass GlobalImageCache {\n static NUM_PAGES_THRESHOLD = 2;\n static MIN_IMAGES_TO_CACHE = 10;\n static MAX_BYTE_SIZE = 5e7;\n #decodeFailedSet = new RefSet();\n constructor() {\n this._refCache = new RefMap();\n this._imageCache = new RefMap();\n }\n get #byteSize() {\n let byteSize = 0;\n for (const imageData of this._imageCache) {\n byteSize += imageData.byteSize;\n }\n return byteSize;\n }\n get #cacheLimitReached() {\n if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n return false;\n }\n if (this.#byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n return false;\n }\n return true;\n }\n shouldCache(ref, pageIndex) {\n const pageIndexSet = this._refCache.getOrPutComputed(ref, makeSet);\n pageIndexSet.add(pageIndex);\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return false;\n }\n if (!this._imageCache.has(ref) && this.#cacheLimitReached) {\n return false;\n }\n return true;\n }\n addDecodeFailed(ref) {\n this.#decodeFailedSet.put(ref);\n }\n hasDecodeFailed(ref) {\n return this.#decodeFailedSet.has(ref);\n }\n addByteSize(ref, byteSize) {\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return;\n }\n if (imageData.byteSize) {\n return;\n }\n imageData.byteSize = byteSize;\n }\n getData(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n return null;\n }\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return null;\n }\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return null;\n }\n pageIndexSet.add(pageIndex);\n return imageData;\n }\n setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error('GlobalImageCache.setData - expected \"shouldCache\" to have been called.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n if (this.#cacheLimitReached) {\n warn(\"GlobalImageCache.setData - cache limit reached.\");\n return;\n }\n this._imageCache.put(ref, data);\n }\n clear(onlyData = false) {\n if (!onlyData) {\n this.#decodeFailedSet.clear();\n this._refCache.clear();\n }\n this._imageCache.clear();\n }\n}\n\n;// ./src/core/function.js\n\n\n\n\n\n\n\n\nconst FunctionType = {\n SAMPLED: 0,\n EXPONENTIAL_INTERPOLATION: 2,\n STITCHING: 3,\n POSTSCRIPT_CALCULATOR: 4\n};\nclass PDFFunctionFactory {\n static #useWasm = true;\n static setOptions({\n useWasm\n }) {\n this.#useWasm = useWasm;\n }\n constructor({\n xref\n }) {\n this.xref = xref;\n }\n get useWasm() {\n return PDFFunctionFactory.#useWasm;\n }\n create(fn, parseArray = false) {\n let fnRef, parsedFn;\n if (fn instanceof Ref) {\n fnRef = fn;\n } else if (fn instanceof Dict) {\n fnRef = fn.objId;\n } else if (fn instanceof BaseStream) {\n fnRef = fn.dict?.objId;\n }\n if (fnRef) {\n const cachedFn = this._localFunctionCache.getByRef(fnRef);\n if (cachedFn) {\n return cachedFn;\n }\n }\n const fnObj = this.xref.fetchIfRef(fn);\n if (Array.isArray(fnObj)) {\n if (!parseArray) {\n throw new Error('PDFFunctionFactory.create - expected \"parseArray\" argument.');\n }\n parsedFn = PDFFunction.parseArray(this, fnObj);\n } else {\n parsedFn = PDFFunction.parse(this, fnObj);\n }\n if (fnRef) {\n this._localFunctionCache.set(null, fnRef, parsedFn);\n }\n return parsedFn;\n }\n get _localFunctionCache() {\n return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n }\n}\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n if (!isNumberArray(arr, null)) {\n return arr.map(x => +x);\n }\n return arr;\n}\nclass PDFFunction {\n static getSampleArray(size, outputSize, bps, stream) {\n let length = outputSize;\n for (const s of size) {\n length *= s;\n }\n const array = new Array(length);\n let codeSize = 0;\n let codeBuf = 0;\n const sampleMul = 1.0 / (2.0 ** bps - 1);\n const strBytes = stream.getBytes((length * bps + 7) / 8);\n let strIdx = 0;\n for (let i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n return array;\n }\n static parse(factory, fn) {\n const dict = fn.dict || fn;\n const typeNum = dict.get(\"FunctionType\");\n switch (typeNum) {\n case FunctionType.SAMPLED:\n return this.constructSampled(factory, fn, dict);\n case FunctionType.EXPONENTIAL_INTERPOLATION:\n return this.constructInterpolated(factory, dict);\n case FunctionType.STITCHING:\n return this.constructStiched(factory, dict);\n case FunctionType.POSTSCRIPT_CALCULATOR:\n return this.constructPostScript(factory, fn, dict);\n }\n throw new FormatError(`Unknown function type: ${typeNum}`);\n }\n static parseArray(factory, fnObj) {\n const {\n xref\n } = factory;\n const fnArray = [];\n for (const fn of fnObj) {\n fnArray.push(this.parse(factory, xref.fetchIfRef(fn)));\n }\n return function (src, srcOffset, dest, destOffset) {\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n }\n static constructSampled(factory, fn, dict) {\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n if (!domain || !range) {\n throw new FormatError(\"No domain or range\");\n }\n const inputSize = domain.length / 2;\n const outputSize = range.length / 2;\n const size = toNumberArray(dict.getArray(\"Size\"));\n const bps = dict.get(\"BitsPerSample\");\n const order = dict.get(\"Order\") || 1;\n if (order !== 1) {\n info(\"No support for cubic spline interpolation: \" + order);\n }\n let encode = toNumberArray(dict.getArray(\"Encode\"));\n if (!encode) {\n encode = [];\n for (let i = 0; i < inputSize; ++i) {\n encode.push(0, size[i] - 1);\n }\n }\n const decode = toNumberArray(dict.getArray(\"Decode\")) || range;\n const samples = this.getSampleArray(size, outputSize, bps, fn);\n return function constructSampledFn(src, srcOffset, dest, destOffset) {\n const cubeVertices = 1 << inputSize;\n const cubeN = new Float64Array(cubeVertices).fill(1);\n const cubeVertex = new Uint32Array(cubeVertices);\n let i, j;\n let k = outputSize,\n pos = 1;\n for (i = 0; i < inputSize; ++i) {\n const domain_2i = domain[2 * i];\n const domain_2i_1 = domain[2 * i + 1];\n const xi = MathClamp(src[srcOffset + i], domain_2i, domain_2i_1);\n let e = interpolate(xi, domain_2i, domain_2i_1, encode[2 * i], encode[2 * i + 1]);\n const size_i = size[i];\n e = MathClamp(e, 0, size_i - 1);\n const e0 = e < size_i - 1 ? Math.floor(e) : e - 1;\n const n0 = e0 + 1 - e;\n const n1 = e - e0;\n const offset0 = e0 * k;\n const offset1 = offset0 + k;\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n k *= size_i;\n pos <<= 1;\n }\n for (j = 0; j < outputSize; ++j) {\n let rj = 0;\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n rj = interpolate(rj, 0, 1, decode[2 * j], decode[2 * j + 1]);\n dest[destOffset + j] = MathClamp(rj, range[2 * j], range[2 * j + 1]);\n }\n };\n }\n static constructInterpolated(factory, dict) {\n const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n const n = dict.get(\"N\");\n const diff = [];\n for (let i = 0, ii = c0.length; i < ii; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n const length = diff.length;\n return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n for (let j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n }\n static constructStiched(factory, dict) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n if (!domain) {\n throw new FormatError(\"No domain\");\n }\n const inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError(\"Bad domain for stiched function\");\n }\n const {\n xref\n } = factory;\n const fns = [];\n for (const fn of dict.get(\"Functions\")) {\n fns.push(this.parse(factory, xref.fetchIfRef(fn)));\n }\n const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n const encode = toNumberArray(dict.getArray(\"Encode\"));\n const tmpBuf = new Float32Array(1);\n return function constructStichedFn(src, srcOffset, dest, destOffset) {\n const v = MathClamp(src[srcOffset], domain[0], domain[1]);\n const length = bounds.length;\n let i;\n for (i = 0; i < length; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n const dmin = i > 0 ? bounds[i - 1] : domain[0];\n const dmax = i < length ? bounds[i] : domain[1];\n const rmin = encode[2 * i];\n const rmax = encode[2 * i + 1];\n tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n }\n static constructPostScript(factory, fn, dict) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n if (!domain) {\n throw new FormatError(\"No domain.\");\n }\n if (!range) {\n throw new FormatError(\"No range.\");\n }\n const psCode = fn.getString();\n try {\n if (factory.useWasm) {\n const wasmFn = buildPostScriptWasmFunction(psCode, domain, range);\n if (wasmFn) {\n return wasmFn;\n }\n }\n } catch {}\n warn(\"Failed to compile PostScript function to wasm, falling back to JS\");\n return buildPostScriptJsFunction(psCode, domain, range);\n }\n}\nfunction isPDFFunction(v) {\n let fnDict;\n if (v instanceof Dict) {\n fnDict = v;\n } else if (v instanceof BaseStream) {\n fnDict = v.dict;\n } else {\n return false;\n }\n return fnDict.has(\"FunctionType\");\n}\n\n;// ./src/core/evaluator_utils.js\n\n\nfunction textSinkWrapper(sink) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n const resolved = sink ? null : Promise.resolve();\n return {\n enqueueInvoked: false,\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink?.enqueue(chunk, size);\n },\n get desiredSize() {\n return sink?.desiredSize ?? TEXT_CONTENT_CHUNK_SIZE;\n },\n get ready() {\n return sink?.ready ?? resolved;\n }\n };\n}\nfunction _parseVisibilityExpression(xref, array, nestingCounter, currentResult) {\n const MAX_NESTING = 10;\n if (++nestingCounter > MAX_NESTING) {\n warn(\"Visibility expression is too deeply nested\");\n return;\n }\n const length = array.length;\n const operator = xref.fetchIfRef(array[0]);\n if (length < 2 || !(operator instanceof Name)) {\n warn(\"Invalid visibility expression\");\n return;\n }\n switch (operator.name) {\n case \"And\":\n case \"Or\":\n case \"Not\":\n currentResult.push(operator.name);\n break;\n default:\n warn(`Invalid operator ${operator.name} in visibility expression`);\n return;\n }\n for (let i = 1; i < length; i++) {\n const raw = array[i];\n const object = xref.fetchIfRef(raw);\n if (Array.isArray(object)) {\n const nestedResult = [];\n currentResult.push(nestedResult);\n _parseVisibilityExpression(xref, object, nestingCounter, nestedResult);\n } else if (raw instanceof Ref) {\n currentResult.push(raw.toString());\n }\n }\n}\nfunction parseMarkedContentProps(xref, contentProperties, resources) {\n let optionalContent;\n if (contentProperties instanceof Name) {\n const properties = resources.get(\"Properties\");\n optionalContent = properties.get(contentProperties.name);\n } else if (contentProperties instanceof Dict) {\n optionalContent = contentProperties;\n } else {\n throw new FormatError(\"Optional content properties malformed.\");\n }\n const optionalContentType = optionalContent.get(\"Type\")?.name;\n if (optionalContentType === \"OCG\") {\n return {\n type: optionalContentType,\n id: optionalContent.objId\n };\n } else if (optionalContentType === \"OCMD\") {\n const expression = optionalContent.get(\"VE\");\n if (Array.isArray(expression)) {\n const result = [];\n _parseVisibilityExpression(xref, expression, 0, result);\n if (result.length > 0) {\n return {\n type: \"OCMD\",\n expression: result\n };\n }\n }\n const optionalContentGroups = optionalContent.get(\"OCGs\");\n if (Array.isArray(optionalContentGroups) || optionalContentGroups instanceof Dict) {\n const groupIds = [];\n if (Array.isArray(optionalContentGroups)) {\n for (const ocg of optionalContentGroups) {\n groupIds.push(ocg.toString());\n }\n } else {\n groupIds.push(optionalContentGroups.objId);\n }\n const p = optionalContent.get(\"P\");\n return {\n type: optionalContentType,\n ids: groupIds,\n policy: p instanceof Name ? p.name : null,\n expression: null\n };\n } else if (optionalContentGroups instanceof Ref) {\n return {\n type: optionalContentType,\n id: optionalContentGroups.toString()\n };\n }\n }\n return null;\n}\n\n;// ./src/core/bidi.js\n\nconst baseTypes = [\"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\"];\nconst arabicTypes = [\"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\"];\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\nfunction isEven(i) {\n return (i & 1) === 0;\n}\nfunction findUnequal(arr, start, value) {\n let j, jj;\n for (j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n return j;\n}\nfunction reverseValues(arr, start, end) {\n for (let i = start, j = end - 1; i < j; ++i, --j) {\n const temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\nfunction createBidiText(str, isLTR, vertical = false) {\n let dir = \"ltr\";\n if (vertical) {\n dir = \"ttb\";\n } else if (!isLTR) {\n dir = \"rtl\";\n }\n return {\n str,\n dir\n };\n}\nconst chars = [];\nconst types = [];\nfunction bidi(str, startLevel = -1, vertical = false) {\n let isLTR = true;\n const strLength = str.length;\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n chars.length = strLength;\n types.length = strLength;\n let numBidi = 0;\n let i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n const charCode = str.charCodeAt(i);\n let charType = \"L\";\n if (charCode <= 0x00ff) {\n charType = baseTypes[charCode];\n } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n charType = \"R\";\n } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n charType = arabicTypes[charCode & 0xff];\n if (!charType) {\n warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08ac || 0xfb50 <= charCode && charCode <= 0xfdff || 0xfe70 <= charCode && charCode <= 0xfeff) {\n charType = \"AL\";\n }\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n types[i] = charType;\n }\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n if (startLevel === -1) {\n if (numBidi / strLength < 0.3 && strLength > 4) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n const levels = [];\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n const e = isOdd(startLevel) ? \"R\" : \"L\";\n const sor = e;\n const eor = sor;\n let lastType = sor;\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"NSM\") {\n types[i] = lastType;\n } else {\n lastType = types[i];\n }\n }\n lastType = sor;\n let t;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n lastType = t;\n }\n }\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"AL\") {\n types[i] = \"R\";\n }\n }\n for (i = 1; i < strLength - 1; ++i) {\n if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n types[i] = \"EN\";\n }\n if (types[i] === \"CS\" && (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") && types[i + 1] === types[i - 1]) {\n types[i] = types[i - 1];\n }\n }\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n for (let j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n for (let j = i + 1; j < strLength; ++j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n }\n }\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n types[i] = \"ON\";\n }\n }\n lastType = sor;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n } else if (t === \"R\" || t === \"L\") {\n lastType = t;\n }\n }\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n const end = findUnequal(types, i + 1, \"ON\");\n let before = sor;\n for (let j = i - 1; j >= 0; j--) {\n const tt = types[j];\n if (tt === \"L\") {\n before = \"L\";\n break;\n }\n if (tt === \"R\" || tt === \"EN\" || tt === \"AN\") {\n before = \"R\";\n break;\n }\n }\n let after = eor;\n for (let j = end; j < strLength; j++) {\n const tt = types[j];\n if (tt === \"L\") {\n after = \"L\";\n break;\n }\n if (tt === \"R\" || tt === \"EN\" || tt === \"AN\") {\n after = \"R\";\n break;\n }\n }\n if (before === after) {\n types.fill(before, i, end);\n }\n i = end - 1;\n }\n }\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\n }\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (isEven(levels[i])) {\n if (t === \"R\") {\n levels[i] += 1;\n } else if (t === \"AN\" || t === \"EN\") {\n levels[i] += 2;\n }\n } else if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\n let highestLevel = -1;\n let lowestOddLevel = 99;\n let level;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n if (highestLevel < level) {\n highestLevel = level;\n }\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n let start = -1;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n if (levels[i] < level) {\n if (start >= 0) {\n reverseValues(chars, start, i);\n start = -1;\n }\n } else if (start < 0) {\n start = i;\n }\n }\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n for (i = 0, ii = chars.length; i < ii; ++i) {\n const ch = chars[i];\n if (ch === \"<\" || ch === \">\") {\n chars[i] = \"\";\n }\n }\n return createBidiText(chars.join(\"\"), isLTR);\n}\n\n;// ./src/core/font_substitutions.js\n\n\n\nconst NORMAL = {\n style: \"normal\",\n weight: \"normal\"\n};\nconst MEDIUM = {\n style: \"normal\",\n weight: \"500\"\n};\nconst BOLD = {\n style: \"normal\",\n weight: \"bold\"\n};\nconst ITALIC = {\n style: \"italic\",\n weight: \"normal\"\n};\nconst BOLDITALIC = {\n style: \"italic\",\n weight: \"bold\"\n};\nconst substitutionMap = new Map([[\"Times-Roman\", {\n 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\", \"PT Astra Serif\", \"DejaVu Serif\", \"Bitstream Vera Serif\", \"Ubuntu\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"Times-Bold\", {\n alias: \"Times-Roman\",\n style: BOLD,\n ultimate: \"serif\"\n}], [\"Times-Italic\", {\n alias: \"Times-Roman\",\n style: ITALIC,\n ultimate: \"serif\"\n}], [\"Times-BoldItalic\", {\n alias: \"Times-Roman\",\n style: BOLDITALIC,\n ultimate: \"serif\"\n}], [\"Helvetica\", {\n 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\"],\n path: \"LiberationSans-Regular.ttf\",\n style: NORMAL,\n ultimate: \"sans-serif\"\n}], [\"Helvetica-Bold\", {\n alias: \"Helvetica\",\n path: \"LiberationSans-Bold.ttf\",\n style: BOLD,\n ultimate: \"sans-serif\"\n}], [\"Helvetica-Oblique\", {\n alias: \"Helvetica\",\n path: \"LiberationSans-Italic.ttf\",\n style: ITALIC,\n ultimate: \"sans-serif\"\n}], [\"Helvetica-BoldOblique\", {\n alias: \"Helvetica\",\n path: \"LiberationSans-BoldItalic.ttf\",\n style: BOLDITALIC,\n ultimate: \"sans-serif\"\n}], [\"Courier\", {\n local: [\"Courier\", \"Courier New\", \"Liberation Mono\", \"Nimbus Mono\", \"Nimbus Mono L\", \"Cousine\", \"Cumberland\", \"TeX Gyre Cursor\", \"FreeMono\", \"Linux Libertine Mono O\", \"Libertinus Mono\"],\n style: NORMAL,\n ultimate: \"monospace\"\n}], [\"Courier-Bold\", {\n alias: \"Courier\",\n style: BOLD,\n ultimate: \"monospace\"\n}], [\"Courier-Oblique\", {\n alias: \"Courier\",\n style: ITALIC,\n ultimate: \"monospace\"\n}], [\"Courier-BoldOblique\", {\n alias: \"Courier\",\n style: BOLDITALIC,\n ultimate: \"monospace\"\n}], [\"ArialBlack\", {\n local: [\"Arial Black\"],\n style: {\n style: \"normal\",\n weight: \"900\"\n },\n fallback: \"Helvetica-Bold\"\n}], [\"ArialBlack-Bold\", {\n alias: \"ArialBlack\"\n}], [\"ArialBlack-Italic\", {\n alias: \"ArialBlack\",\n style: {\n style: \"italic\",\n weight: \"900\"\n },\n fallback: \"Helvetica-BoldOblique\"\n}], [\"ArialBlack-BoldItalic\", {\n alias: \"ArialBlack-Italic\"\n}], [\"ArialNarrow\", {\n local: [\"Arial Narrow\", \"Liberation Sans Narrow\", \"Helvetica Condensed\", \"Nimbus Sans Narrow\", \"TeX Gyre Heros Cn\"],\n style: NORMAL,\n fallback: \"Helvetica\"\n}], [\"ArialNarrow-Bold\", {\n alias: \"ArialNarrow\",\n style: BOLD,\n fallback: \"Helvetica-Bold\"\n}], [\"ArialNarrow-Italic\", {\n alias: \"ArialNarrow\",\n style: ITALIC,\n fallback: \"Helvetica-Oblique\"\n}], [\"ArialNarrow-BoldItalic\", {\n alias: \"ArialNarrow\",\n style: BOLDITALIC,\n fallback: \"Helvetica-BoldOblique\"\n}], [\"Calibri\", {\n local: [\"Calibri\", \"Carlito\"],\n style: NORMAL,\n fallback: \"Helvetica\"\n}], [\"Calibri-Bold\", {\n alias: \"Calibri\",\n style: BOLD,\n fallback: \"Helvetica-Bold\"\n}], [\"Calibri-Italic\", {\n alias: \"Calibri\",\n style: ITALIC,\n fallback: \"Helvetica-Oblique\"\n}], [\"Calibri-BoldItalic\", {\n alias: \"Calibri\",\n style: BOLDITALIC,\n fallback: \"Helvetica-BoldOblique\"\n}], [\"Wingdings\", {\n local: [\"Wingdings\", \"URW Dingbats\"],\n style: NORMAL\n}], [\"Wingdings-Regular\", {\n alias: \"Wingdings\"\n}], [\"Wingdings-Bold\", {\n alias: \"Wingdings\"\n}], [\"\\xCB\\xCE\\xCC\\xE5\", {\n local: [\"SimSun\", \"SimSun Regular\", \"NSimSun\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"\\xBA\\xDA\\xCC\\xE5\", {\n local: [\"SimHei\", \"SimHei Regular\"],\n style: NORMAL,\n ultimate: \"sans-serif\"\n}], [\"\\xBF\\xAC\\xCC\\xE5\", {\n local: [\"KaiTi\", \"SimKai\", \"SimKai Regular\"],\n style: NORMAL,\n ultimate: \"sans-serif\"\n}], [\"\\xB7\\xC2\\xCB\\xCE\", {\n local: [\"FangSong\", \"SimFang\", \"SimFang Regular\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"\\xBF\\xAC\\xCC\\xE5_GB2312\", {\n alias: \"\\xBF\\xAC\\xCC\\xE5\"\n}], [\"\\xB7\\xC2\\xCB\\xCE_GB2312\", {\n alias: \"\\xB7\\xC2\\xCB\\xCE\"\n}], [\"\\xC1\\xA5\\xCA\\xE9\", {\n local: [\"SimLi\", \"SimLi Regular\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"\\xD0\\xC2\\xCB\\xCE\", {\n alias: \"\\xCB\\xCE\\xCC\\xE5\"\n}], [\"HeiseiMin-W3\", {\n local: [\"Hiragino Mincho ProN\", \"Hiragino Mincho Pro\", \"Yu Mincho\", \"YuMincho\", \"Source Han Serif JP\", \"Noto Serif JP\", \"Noto Serif CJK JP\", \"IPAexMincho\", \"IPAMincho\", \"Takao Mincho\", \"MS Mincho\", \"MS PMincho\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"HeiseiKakuGo-W5\", {\n local: [\"Hiragino Kaku Gothic ProN\", \"Hiragino Kaku Gothic Pro\", \"Hiragino Sans\", \"Yu Gothic\", \"YuGothic\", \"Source Han Sans JP\", \"Noto Sans JP\", \"Noto Sans CJK JP\", \"IPAexGothic\", \"IPAGothic\", \"Takao Gothic\", \"Meiryo\", \"MS Gothic\", \"MS PGothic\"],\n style: MEDIUM,\n ultimate: \"sans-serif\"\n}], [\"HeiseiMin-W3-Acro\", {\n alias: \"HeiseiMin-W3\"\n}], [\"HeiseiKakuGo-W5-Acro\", {\n alias: \"HeiseiKakuGo-W5\"\n}], [\"KozMinPro-Regular\", {\n alias: \"HeiseiMin-W3\"\n}], [\"KozMinProVI-Regular\", {\n alias: \"HeiseiMin-W3\"\n}], [\"KozMinPr6N-Regular\", {\n alias: \"HeiseiMin-W3\"\n}], [\"KozGoPro-Regular\", {\n alias: \"HeiseiKakuGo-W5\"\n}], [\"KozGoProVI-Regular\", {\n alias: \"HeiseiKakuGo-W5\"\n}], [\"KozGoPr6N-Regular\", {\n alias: \"HeiseiKakuGo-W5\"\n}], [\"STSong-Light\", {\n local: [\"STSong\", \"Songti SC\", \"Source Han Serif SC\", \"Source Han Serif CN\", \"Noto Serif SC\", \"Noto Serif CJK SC\", \"AR PL UMing CN\", \"SimSun\", \"NSimSun\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"STHeiti-Regular\", {\n local: [\"STHeiti\", \"Heiti SC\", \"PingFang SC\", \"Source Han Sans SC\", \"Source Han Sans CN\", \"Noto Sans SC\", \"Noto Sans CJK SC\", \"Microsoft YaHei\", \"SimHei\", \"WenQuanYi Zen Hei\"],\n style: NORMAL,\n ultimate: \"sans-serif\"\n}], [\"STSongStd-Light\", {\n alias: \"STSong-Light\"\n}], [\"AdobeSongStd-Light\", {\n alias: \"STSong-Light\"\n}], [\"AdobeHeitiStd-Regular\", {\n alias: \"STHeiti-Regular\"\n}], [\"AdobeKaitiStd-Regular\", {\n alias: \"\\xBF\\xAC\\xCC\\xE5\"\n}], [\"AdobeFangsongStd-Regular\", {\n alias: \"\\xB7\\xC2\\xCB\\xCE\"\n}], [\"MSung-Light\", {\n local: [\"Songti TC\", \"LiSong Pro\", \"Source Han Serif TC\", \"Source Han Serif TW\", \"Noto Serif TC\", \"Noto Serif CJK TC\", \"AR PL UMing TW\", \"PMingLiU\", \"MingLiU\", \"MingLiU_HKSCS\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"MHei-Medium\", {\n local: [\"Heiti TC\", \"STHeiti\", \"Source Han Sans TC\", \"Source Han Sans TW\", \"Noto Sans TC\", \"Noto Sans CJK TC\", \"PingFang TC\", \"Microsoft JhengHei\"],\n style: MEDIUM,\n ultimate: \"sans-serif\"\n}], [\"MSungStd-Light\", {\n alias: \"MSung-Light\"\n}], [\"AdobeMingStd-Light\", {\n alias: \"MSung-Light\"\n}], [\"HYSMyeongJo-Medium\", {\n local: [\"AppleMyungjo\", \"Source Han Serif KR\", \"Noto Serif KR\", \"Noto Serif CJK KR\", \"Nanum Myeongjo\", \"Batang\"],\n style: MEDIUM,\n ultimate: \"serif\"\n}], [\"HYGoThic-Medium\", {\n local: [\"Apple SD Gothic Neo\", \"AppleGothic\", \"Source Han Sans KR\", \"Noto Sans KR\", \"Noto Sans CJK KR\", \"Nanum Gothic\", \"Malgun Gothic\", \"Dotum\", \"Gulim\"],\n style: MEDIUM,\n ultimate: \"sans-serif\"\n}], [\"HYSMyeongJoStd-Medium\", {\n alias: \"HYSMyeongJo-Medium\"\n}], [\"AdobeMyungjoStd-Medium\", {\n alias: \"HYSMyeongJo-Medium\"\n}], [\"HYGoThic-Bold\", {\n alias: \"HYGoThic-Medium\",\n style: BOLD\n}], [\"AdobeGothicStd-Bold\", {\n alias: \"HYGoThic-Medium\",\n style: BOLD\n}]]);\nconst fontAliases = new Map([[\"Arial-Black\", \"ArialBlack\"]]);\nfunction getStyleToAppend(style) {\n switch (style) {\n case BOLD:\n return \"Bold\";\n case ITALIC:\n return \"Italic\";\n case BOLDITALIC:\n return \"Bold Italic\";\n default:\n if (style?.weight === \"bold\") {\n return \"Bold\";\n }\n if (style?.style === \"italic\") {\n return \"Italic\";\n }\n }\n return \"\";\n}\nfunction getFamilyName(str) {\n const keywords = 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\"]);\n return str.split(/[- ,+]+/g).filter(tok => !keywords.has(tok.toLowerCase())).join(\" \");\n}\nfunction generateFont({\n alias,\n local,\n path,\n fallback,\n style,\n ultimate\n}, src, localFontPath, useFallback = true, usePath = true, append = \"\") {\n const result = {\n style: null,\n ultimate: null\n };\n if (local) {\n const extra = append ? ` ${append}` : \"\";\n for (const name of local) {\n src.push(`local(${name}${extra})`);\n }\n }\n if (alias) {\n const substitution = substitutionMap.get(alias);\n const aliasAppend = append || getStyleToAppend(style);\n Object.assign(result, generateFont(substitution, src, localFontPath, useFallback && !fallback, usePath && !path, aliasAppend));\n }\n if (style) {\n result.style = style;\n }\n if (ultimate) {\n result.ultimate = ultimate;\n }\n if (useFallback && fallback) {\n const fallbackInfo = substitutionMap.get(fallback);\n const {\n ultimate: fallbackUltimate\n } = generateFont(fallbackInfo, src, localFontPath, useFallback, usePath && !path, append);\n result.ultimate ||= fallbackUltimate;\n }\n if (usePath && path && localFontPath) {\n src.push(`url(${localFontPath}${path})`);\n }\n return result;\n}\nfunction getFontSubstitution(systemFontCache, idFactory, localFontPath, baseFontName, standardFontName, type) {\n if (baseFontName.startsWith(\"InvalidPDFjsFont_\")) {\n return null;\n }\n if ((type === \"TrueType\" || type === \"Type1\") && /^[A-Z]{6}\\+/.test(baseFontName)) {\n baseFontName = baseFontName.slice(7);\n }\n baseFontName = normalizeFontName(baseFontName);\n const key = baseFontName;\n let substitutionInfo = systemFontCache.get(key);\n if (substitutionInfo) {\n return substitutionInfo;\n }\n let substitution = substitutionMap.get(baseFontName);\n if (!substitution) {\n for (const [alias, subst] of fontAliases) {\n if (baseFontName.startsWith(alias)) {\n baseFontName = `${subst}${baseFontName.substring(alias.length)}`;\n substitution = substitutionMap.get(baseFontName);\n break;\n }\n }\n }\n let mustAddBaseFont = false;\n if (!substitution) {\n substitution = substitutionMap.get(standardFontName);\n mustAddBaseFont = true;\n }\n const loadedName = `${idFactory.getDocId()}_s${idFactory.createFontId()}`;\n if (!substitution) {\n if (!validateFontName(baseFontName)) {\n warn(`Cannot substitute the font because of its name: ${baseFontName}`);\n systemFontCache.set(key, null);\n return null;\n }\n const bold = /bold/i.test(baseFontName);\n const italic = /oblique|italic/i.test(baseFontName);\n const style = bold && italic && BOLDITALIC || bold && BOLD || italic && ITALIC || NORMAL;\n substitutionInfo = {\n css: `\"${getFamilyName(baseFontName)}\",${loadedName}`,\n guessFallback: true,\n loadedName,\n baseFontName,\n src: `local(${baseFontName})`,\n style\n };\n systemFontCache.set(key, substitutionInfo);\n return substitutionInfo;\n }\n const src = [];\n if (mustAddBaseFont && validateFontName(baseFontName)) {\n src.push(`local(${baseFontName})`);\n }\n const {\n style,\n ultimate\n } = generateFont(substitution, src, localFontPath);\n const guessFallback = ultimate === null;\n const fallback = guessFallback ? \"\" : `,${ultimate}`;\n substitutionInfo = {\n css: `\"${getFamilyName(baseFontName)}\",${loadedName}${fallback}`,\n guessFallback,\n loadedName,\n baseFontName,\n src: src.join(\",\"),\n style\n };\n systemFontCache.set(key, substitutionInfo);\n return substitutionInfo;\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/core/image.js\n\n\n\n\n\n\n\n\n\n\n\nclass PDFImage {\n constructor({\n xref,\n res,\n image,\n isInline = false,\n smask = null,\n mask = null,\n isMask = false,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n }) {\n this.image = image;\n const dict = image.dict;\n const filter = dict.get(\"F\", \"Filter\");\n let filterName;\n if (filter instanceof Name) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = xref.fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n switch (filterName) {\n case \"JPXDecode\":\n ({\n width: image.width,\n height: image.height,\n componentsCount: image.numComps,\n bitsPerComponent: image.bitsPerComponent\n } = JpxImage.parseImageProperties(image.stream));\n image.stream.reset();\n const reducePower = ImageResizer.getReducePowerForJPX(image.width, image.height, image.numComps);\n this.jpxDecoderOptions = {\n numComponents: 0,\n isIndexedColormap: false,\n smaskInData: dict.get(\"SMaskInData\") >= 1,\n reducePower\n };\n if (reducePower) {\n const factor = 2 ** reducePower;\n image.width = Math.ceil(image.width / factor);\n image.height = Math.ceil(image.height / factor);\n }\n break;\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n let width = dict.get(\"W\", \"Width\");\n let height = dict.get(\"H\", \"Height\");\n if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {\n warn(\"PDFImage - using the Width/Height of the image data, \" + \"rather than the image dictionary.\");\n width = image.width;\n height = image.height;\n } else {\n const validWidth = typeof width === \"number\" && width > 0,\n validHeight = typeof height === \"number\" && height > 0;\n if (!validWidth || !validHeight) {\n if (!image.fallbackDims) {\n throw new FormatError(`Invalid image width: ${width} or height: ${height}`);\n }\n warn(\"PDFImage - using the Width/Height of the parent image, for SMask/Mask data.\");\n if (!validWidth) {\n width = image.fallbackDims.width;\n }\n if (!validHeight) {\n height = image.fallbackDims.height;\n }\n }\n }\n this.width = width;\n this.height = height;\n this.interpolate = dict.get(\"I\", \"Interpolate\");\n this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n this.matte = dict.get(\"Matte\") || false;\n let bitsPerComponent = image.bitsPerComponent;\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new FormatError(`Bits per component missing in image: ${this.imageMask}`);\n }\n }\n }\n this.bpc = bitsPerComponent;\n if (!this.imageMask) {\n let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n const hasColorSpace = !!colorSpace;\n if (this.jpxDecoderOptions?.smaskInData && dict.get(\"SMaskInData\") === 2) {\n this.jpxPremultiplied = true;\n if (this.matte) {\n const matteColorSpace = ColorSpaceUtils.parse({\n cs: hasColorSpace ? colorSpace : Name.get(\"DeviceRGB\"),\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n this.preblendMatte = matteColorSpace.getRgb(this.matte, 0);\n }\n }\n if (!hasColorSpace) {\n if (this.jpxDecoderOptions) {\n colorSpace = Name.get(\"DeviceRGBA\");\n } else {\n switch (image.numComps) {\n case 1:\n colorSpace = Name.get(\"DeviceGray\");\n break;\n case 3:\n colorSpace = Name.get(\"DeviceRGB\");\n break;\n case 4:\n colorSpace = Name.get(\"DeviceCMYK\");\n break;\n default:\n throw new Error(`Images with ${image.numComps} color components not supported.`);\n }\n }\n } else if (this.jpxDecoderOptions?.smaskInData) {\n colorSpace = Name.get(\"DeviceRGBA\");\n }\n this.colorSpace = ColorSpaceUtils.parse({\n cs: colorSpace,\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n this.numComps = this.colorSpace.numComps;\n if (this.jpxDecoderOptions) {\n this.jpxDecoderOptions.numComponents = hasColorSpace ? this.numComps : 0;\n this.jpxDecoderOptions.isIndexedColormap = this.colorSpace.name === \"Indexed\";\n }\n } else {\n this.numComps = 1;\n }\n this.decode = dict.getArray(\"D\", \"Decode\");\n this.needsDecode = false;\n if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !ColorSpace.isDefaultDecode(this.decode, 1))) {\n this.needsDecode = true;\n const max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = this.colorSpace?.name === \"Indexed\";\n for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n const dmin = this.decode[i];\n const dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n }\n }\n if (smask) {\n smask.fallbackDims ??= {\n width,\n height\n };\n this.smask = new PDFImage({\n xref,\n res,\n image: smask,\n isInline,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n } else if (mask) {\n if (mask instanceof BaseStream) {\n const maskDict = mask.dict,\n imageMask = maskDict.get(\"IM\", \"ImageMask\");\n if (!imageMask) {\n warn(\"Ignoring /Mask in image without /ImageMask.\");\n } else {\n mask.fallbackDims ??= {\n width,\n height\n };\n this.mask = new PDFImage({\n xref,\n res,\n image: mask,\n isInline,\n isMask: true,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n }\n } else {\n this.mask = mask;\n }\n }\n }\n static async buildImage({\n xref,\n res,\n image,\n isInline = false,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n }) {\n const imageData = image;\n let smaskData = null;\n let maskData = null;\n const smask = image.dict.get(\"SMask\");\n const mask = image.dict.get(\"Mask\");\n if (smask) {\n if (smask instanceof BaseStream) {\n smaskData = smask;\n } else {\n warn(\"Unsupported /SMask format.\");\n }\n } else if (mask) {\n if (mask instanceof BaseStream || Array.isArray(mask)) {\n maskData = mask;\n } else {\n warn(\"Unsupported /Mask format.\");\n }\n }\n return new PDFImage({\n xref,\n res,\n image: imageData,\n isInline,\n smask: smaskData,\n mask: maskData,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n }\n static async createMask({\n image,\n isOffscreenCanvasSupported = false\n }) {\n const {\n dict\n } = image;\n const width = dict.get(\"W\", \"Width\");\n const height = dict.get(\"H\", \"Height\");\n const interpolate = dict.get(\"I\", \"Interpolate\");\n const decode = dict.getArray(\"D\", \"Decode\");\n const inverseDecode = decode?.[0] > 0;\n const computedLength = (width + 7 >> 3) * height;\n const imgArray = await image.getImageData(computedLength);\n const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128));\n if (isSingleOpaquePixel) {\n return {\n isSingleOpaquePixel\n };\n }\n if (isOffscreenCanvasSupported) {\n if (ImageResizer.needsToBeResized(width, height)) {\n const data = new Uint8ClampedArray(width * height * 4);\n convertBlackAndWhiteToRGBA({\n src: imgArray,\n dest: data,\n width,\n height,\n nonBlackColor: 0,\n inverseDecode\n });\n return ImageResizer.createImage({\n kind: ImageKind.RGBA_32BPP,\n data,\n width,\n height,\n interpolate\n });\n }\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n const imgData = ctx.createImageData(width, height);\n convertBlackAndWhiteToRGBA({\n src: imgArray,\n dest: imgData.data,\n width,\n height,\n nonBlackColor: 0,\n inverseDecode\n });\n ctx.putImageData(imgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n return {\n data: null,\n width,\n height,\n interpolate,\n bitmap\n };\n }\n const actualLength = imgArray.byteLength;\n const haveFullData = computedLength === actualLength;\n let data;\n if (image instanceof DecodeStream && (!inverseDecode || haveFullData)) {\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8Array(imgArray);\n } else {\n data = new Uint8Array(computedLength);\n data.set(imgArray);\n data.fill(0xff, actualLength);\n }\n if (inverseDecode) {\n for (let i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n return {\n data,\n width,\n height,\n interpolate\n };\n }\n get drawWidth() {\n return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0);\n }\n get drawHeight() {\n return Math.max(this.height, this.smask?.height || 0, this.mask?.height || 0);\n }\n decodeBuffer(buffer) {\n const bpc = this.bpc;\n const numComps = this.numComps;\n const decodeAddends = this.decodeAddends;\n const decodeCoefficients = this.decodeCoefficients;\n const max = (1 << bpc) - 1;\n let i, ii;\n if (bpc === 1) {\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!buffer[i];\n }\n return;\n }\n let index = 0;\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (let j = 0; j < numComps; j++) {\n buffer[index] = MathClamp(decodeAddends[j] + buffer[index] * decodeCoefficients[j], 0, max);\n index++;\n }\n }\n }\n getComponents(buffer) {\n const bpc = this.bpc;\n if (bpc === 8) {\n return buffer;\n }\n const width = this.width;\n const height = this.height;\n const numComps = this.numComps;\n const length = width * height * numComps;\n let bufferPos = 0;\n let output;\n if (bpc <= 8) {\n output = new Uint8Array(length);\n } else if (bpc <= 16) {\n output = new Uint16Array(length);\n } else {\n output = new Uint32Array(length);\n }\n const rowComps = width * numComps;\n const max = (1 << bpc) - 1;\n let i = 0,\n ii,\n buf;\n if (bpc === 1) {\n let mask, loop1End, loop2End;\n for (let j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n while (i < loop1End) {\n buf = buffer[bufferPos++];\n output[i] = buf >> 7 & 1;\n output[i + 1] = buf >> 6 & 1;\n output[i + 2] = buf >> 5 & 1;\n output[i + 3] = buf >> 4 & 1;\n output[i + 4] = buf >> 3 & 1;\n output[i + 5] = buf >> 2 & 1;\n output[i + 6] = buf >> 1 & 1;\n output[i + 7] = buf & 1;\n i += 8;\n }\n if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n let bits = 0;\n buf = 0;\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n while (bits < bpc) {\n buf = buf << 8 | buffer[bufferPos++];\n bits += 8;\n }\n const remainingBits = bits - bpc;\n output[i] = MathClamp(buf >> remainingBits, 0, max);\n buf &= (1 << remainingBits) - 1;\n bits = remainingBits;\n }\n }\n return output;\n }\n async fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n let apply;\n if (this.smask) {\n apply = (buffer, options) => this.smask.fillGrayBuffer(buffer, {\n ...options,\n destWidth: width,\n destHeight: height\n });\n } else if (this.mask) {\n if (this.mask instanceof PDFImage) {\n apply = (buffer, options) => this.mask.fillGrayBuffer(buffer, {\n ...options,\n invertOutput: true,\n destWidth: width,\n destHeight: height\n });\n } else if (Array.isArray(this.mask)) {\n apply = (buffer, {\n maxRows,\n offset,\n stride\n }) => {\n for (let i = 0, ii = width * maxRows; i < ii; ++i) {\n let opacity = 0;\n const imageOffset = i * this.numComps;\n for (let j = 0; j < this.numComps; ++j) {\n const color = image[imageOffset + j];\n const maskOffset = j * 2;\n if (color < this.mask[maskOffset] || color > this.mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n buffer[i * stride + offset] = opacity;\n }\n };\n } else {\n throw new FormatError(\"Unknown mask format.\");\n }\n } else {\n apply = (buffer, {\n maxRows,\n offset,\n stride\n }) => {\n for (let i = 0, ii = width * maxRows; i < ii; ++i) {\n buffer[i * stride + offset] = 255;\n }\n };\n }\n await apply(rgbaBuf, {\n maxRows: actualHeight,\n offset: 3,\n stride: 4\n });\n }\n static #undoPreblend(buffer, length, matteR, matteG, matteB) {\n for (let i = 0; i < length; i += 4) {\n const alpha = buffer[i + 3];\n if (alpha === 0) {\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n const k = 255 / alpha;\n buffer[i] = (buffer[i] - matteR) * k + matteR;\n buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n }\n }\n undoPreblend(buffer, width, height) {\n const matte = this.smask?.matte;\n if (!matte) {\n return;\n }\n const matteRgb = this.colorSpace.getRgb(matte, 0);\n PDFImage.#undoPreblend(buffer, width * height * 4, matteRgb[0], matteRgb[1], matteRgb[2]);\n }\n async createImageData(forceRGBA = false, isOffscreenCanvasSupported = false) {\n const drawWidth = this.drawWidth;\n const drawHeight = this.drawHeight;\n const imgData = {\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate,\n kind: 0,\n data: null\n };\n const numComps = this.numComps;\n const originalWidth = this.width;\n const originalHeight = this.height;\n const bpc = this.bpc;\n const rowBytes = originalWidth * numComps * bpc + 7 >> 3;\n const mustBeResized = isOffscreenCanvasSupported && ImageResizer.needsToBeResized(drawWidth, drawHeight);\n if (!this.smask && !this.mask && this.colorSpace.name === \"DeviceRGBA\") {\n imgData.kind = ImageKind.RGBA_32BPP;\n const imgArray = imgData.data = await this.getImageBytes(originalHeight * originalWidth * 4, {\n internal: isOffscreenCanvasSupported && mustBeResized\n });\n if (this.jpxPremultiplied) {\n const matteRgb = this.preblendMatte;\n PDFImage.#undoPreblend(imgArray, imgArray.length, matteRgb?.[0] ?? 0, matteRgb?.[1] ?? 0, matteRgb?.[2] ?? 0);\n }\n if (isOffscreenCanvasSupported) {\n if (!mustBeResized) {\n return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, imgArray);\n }\n return ImageResizer.createImage(imgData, false);\n }\n return imgData;\n }\n if (!forceRGBA && !this.smask && !this.mask) {\n let kind;\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = ImageKind.GRAYSCALE_1BPP;\n } else if (this.colorSpace.name === \"DeviceRGB\" && bpc === 8 && !this.needsDecode) {\n kind = ImageKind.RGB_24BPP;\n }\n if (kind && drawWidth === originalWidth && drawHeight === originalHeight) {\n const image = await this.#getImage(originalWidth, originalHeight);\n if (image) {\n return image;\n }\n const data = await this.getImageBytes(originalHeight * rowBytes, {\n internal: isOffscreenCanvasSupported && mustBeResized\n });\n if (isOffscreenCanvasSupported) {\n if (mustBeResized) {\n return ImageResizer.createImage({\n data,\n kind,\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate\n }, this.needsDecode);\n }\n return this.createBitmap(kind, originalWidth, originalHeight, data);\n }\n imgData.kind = kind;\n imgData.data = data;\n if (this.needsDecode) {\n assert(kind === ImageKind.GRAYSCALE_1BPP, \"PDFImage.createImageData: The image must be grayscale.\");\n const buffer = imgData.data;\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n return imgData;\n }\n if (this.image instanceof JpegStream && !this.needsDecode) {\n let isHandled = false;\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n isHandled = true;\n break;\n }\n if (isHandled) {\n if (isOffscreenCanvasSupported) {\n const image = await this.#getImage(drawWidth, drawHeight);\n if (image) {\n return image;\n }\n }\n let imageLength = originalHeight * rowBytes;\n if (isOffscreenCanvasSupported && !mustBeResized) {\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n imageLength *= 4;\n break;\n case \"DeviceRGB\":\n imageLength = imageLength / 3 * 4;\n break;\n }\n const rgba = await this.getImageBytes(imageLength, {\n drawWidth,\n drawHeight,\n forceRGBA: true,\n internal: true\n });\n return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, rgba);\n }\n if (this.colorSpace.name === \"DeviceGray\") {\n imageLength *= 3;\n }\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = await this.getImageBytes(imageLength, {\n drawWidth,\n drawHeight,\n forceRGB: true,\n internal: mustBeResized\n });\n if (mustBeResized) {\n return ImageResizer.createImage(imgData);\n }\n return imgData;\n }\n }\n }\n const imgArray = await this.getImageBytes(originalHeight * rowBytes, {\n internal: true\n });\n const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;\n const comps = this.getComponents(imgArray);\n let alpha01, maybeUndoPreblend;\n let canvas, ctx, canvasImgData, data;\n if (isOffscreenCanvasSupported && !mustBeResized) {\n canvas = new OffscreenCanvas(drawWidth, drawHeight);\n ctx = canvas.getContext(\"2d\");\n canvasImgData = ctx.createImageData(drawWidth, drawHeight);\n data = canvasImgData.data;\n }\n imgData.kind = ImageKind.RGBA_32BPP;\n if (!forceRGBA && !this.smask && !this.mask) {\n if (!isOffscreenCanvasSupported || mustBeResized) {\n imgData.kind = ImageKind.RGB_24BPP;\n data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n } else {\n const arr = new Uint32Array(data.buffer);\n arr.fill(FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff);\n alpha01 = 1;\n }\n maybeUndoPreblend = false;\n } else {\n if (!isOffscreenCanvasSupported || mustBeResized) {\n data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n }\n alpha01 = 1;\n maybeUndoPreblend = true;\n await this.fillOpacity(data, drawWidth, drawHeight, actualHeight, comps);\n }\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n this.colorSpace.fillRgb(data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);\n if (maybeUndoPreblend) {\n this.undoPreblend(data, drawWidth, actualHeight);\n }\n if (isOffscreenCanvasSupported && !mustBeResized) {\n ctx.putImageData(canvasImgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n return {\n data: null,\n width: drawWidth,\n height: drawHeight,\n bitmap,\n interpolate: this.interpolate\n };\n }\n imgData.data = data;\n if (mustBeResized) {\n return ImageResizer.createImage(imgData);\n }\n return imgData;\n }\n async fillGrayBuffer(buffer, {\n destWidth,\n destHeight,\n invertOutput,\n maxRows,\n offset = 0,\n stride = 1\n } = {}) {\n const numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(`Reading gray scale from a color image: ${numComps}`);\n }\n const srcWidth = this.width;\n const srcHeight = this.height;\n const bpc = this.bpc;\n const rowBytes = srcWidth * numComps * bpc + 7 >> 3;\n const imgArray = await this.getImageBytes(srcHeight * rowBytes, {\n internal: true\n });\n const comps = this.getComponents(imgArray);\n const resolvedDestWidth = destWidth ?? srcWidth;\n const resolvedDestHeight = destHeight ?? srcHeight;\n const needsResampling = resolvedDestWidth !== srcWidth || resolvedDestHeight !== srcHeight;\n const rows = maxRows === undefined ? resolvedDestHeight : Math.min(resolvedDestHeight, maxRows);\n let outputWidth = srcWidth;\n let yRatio = 0;\n let xScaled = null;\n if (needsResampling) {\n outputWidth = resolvedDestWidth;\n yRatio = srcHeight / resolvedDestHeight;\n const xRatio = srcWidth / resolvedDestWidth;\n xScaled = new Uint32Array(resolvedDestWidth);\n for (let i = 0; i < resolvedDestWidth; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n }\n const mask = invertOutput ? 0xff : 0;\n if (bpc === 1) {\n if (xScaled) {\n const xMap = xScaled;\n let destIndex = offset;\n if (this.needsDecode) {\n for (let row = 0; row < rows; row++) {\n const py = Math.floor(row * yRatio) * srcWidth;\n for (let col = 0; col < outputWidth; col++) {\n buffer[destIndex] = comps[py + xMap[col]] - 1 & 255 ^ mask;\n destIndex += stride;\n }\n }\n } else {\n for (let row = 0; row < rows; row++) {\n const py = Math.floor(row * yRatio) * srcWidth;\n for (let col = 0; col < outputWidth; col++) {\n buffer[destIndex] = -comps[py + xMap[col]] & 255 ^ mask;\n destIndex += stride;\n }\n }\n }\n } else {\n const length = outputWidth * rows;\n if (this.needsDecode) {\n for (let i = 0; i < length; ++i) {\n buffer[i * stride + offset] = comps[i] - 1 & 255 ^ mask;\n }\n } else {\n for (let i = 0; i < length; ++i) {\n buffer[i * stride + offset] = -comps[i] & 255 ^ mask;\n }\n }\n }\n return;\n }\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n const scale = 255 / ((1 << bpc) - 1);\n if (xScaled) {\n const xMap = xScaled;\n let destIndex = offset;\n for (let row = 0; row < rows; row++) {\n const py = Math.floor(row * yRatio) * srcWidth;\n for (let col = 0; col < outputWidth; col++) {\n buffer[destIndex] = scale * comps[py + xMap[col]] ^ mask;\n destIndex += stride;\n }\n }\n } else {\n const length = outputWidth * rows;\n for (let i = 0; i < length; ++i) {\n buffer[i * stride + offset] = scale * comps[i] ^ mask;\n }\n }\n }\n createBitmap(kind, width, height, src) {\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n let imgData;\n if (kind === ImageKind.RGBA_32BPP) {\n imgData = new ImageData(src, width, height);\n } else {\n imgData = ctx.createImageData(width, height);\n convertToRGBA({\n kind,\n src,\n dest: new Uint32Array(imgData.data.buffer),\n width,\n height,\n inverseDecode: this.needsDecode\n });\n }\n ctx.putImageData(imgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n return {\n data: null,\n width,\n height,\n bitmap,\n interpolate: this.interpolate\n };\n }\n async #getImage(width, height) {\n const bitmap = await this.image.getTransferableImage(width, height);\n if (!bitmap) {\n return null;\n }\n return {\n data: null,\n width: bitmap.displayWidth ?? width,\n height: bitmap.displayHeight ?? height,\n bitmap,\n interpolate: this.interpolate\n };\n }\n async getImageBytes(length, {\n drawWidth,\n drawHeight,\n forceRGBA = false,\n forceRGB = false,\n internal = false\n }) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGBA = !!forceRGBA;\n this.image.forceRGB = !!forceRGB;\n const imageBytes = await this.image.getImageData(length, this.jpxDecoderOptions);\n if (internal || this.image instanceof DecodeStream) {\n return imageBytes;\n }\n assert(imageBytes instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported \"imageBytes\" type.');\n return new Uint8Array(imageBytes);\n }\n}\n\n;// ./src/core/evaluator.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isOffscreenCanvasSupported: false,\n isImageDecoderSupported: false,\n canvasMaxAreaInBytes: -1,\n fontExtraProperties: false,\n useSystemFonts: true,\n useWasm: true,\n useWorkerFetch: true,\n cMapUrl: null,\n cMapPacked: true,\n iccUrl: null,\n standardFontDataUrl: null,\n wasmUrl: null,\n hasGPU: false\n});\nconst PatternType = {\n TILING: 1,\n SHADING: 2\n};\nconst TEXT_CHUNK_BATCH_SIZE = 10;\nconst deferred = Promise.resolve();\nfunction normalizeBlendMode(value, parsingArray = false) {\n if (Array.isArray(value)) {\n for (const val of value) {\n const maybeBM = normalizeBlendMode(val, true);\n if (maybeBM) {\n return maybeBM;\n }\n }\n warn(`Unsupported blend mode Array: ${value}`);\n return \"source-over\";\n }\n if (value instanceof Name) {\n switch (value.name) {\n case \"Normal\":\n case \"Compatible\":\n return \"source-over\";\n case \"Multiply\":\n return \"multiply\";\n case \"Screen\":\n return \"screen\";\n case \"Overlay\":\n return \"overlay\";\n case \"Darken\":\n return \"darken\";\n case \"Lighten\":\n return \"lighten\";\n case \"ColorDodge\":\n return \"color-dodge\";\n case \"ColorBurn\":\n return \"color-burn\";\n case \"HardLight\":\n return \"hard-light\";\n case \"SoftLight\":\n return \"soft-light\";\n case \"Difference\":\n return \"difference\";\n case \"Exclusion\":\n return \"exclusion\";\n case \"Hue\":\n return \"hue\";\n case \"Saturation\":\n return \"saturation\";\n case \"Color\":\n return \"color\";\n case \"Luminosity\":\n return \"luminosity\";\n }\n warn(`Unsupported blend mode: ${value.name}`);\n }\n return parsingArray ? null : \"source-over\";\n}\nfunction addCachedImageOps(opList, {\n objId,\n fn,\n args,\n optionalContent,\n hasMask\n}) {\n if (objId) {\n opList.addDependency(objId);\n }\n opList.addImageOps(fn, args, optionalContent, hasMask);\n if (fn === OPS.paintImageMaskXObject && args[0]?.count > 0) {\n args[0].count++;\n }\n}\nclass TimeSlotManager {\n static TIME_SLOT_DURATION_MS = 20;\n static CHECK_TIME_EVERY = 100;\n constructor() {\n this.reset();\n }\n check() {\n if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n return false;\n }\n this.checked = 0;\n return this.endTime <= Date.now();\n }\n reset() {\n this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n}\nclass PartialEvaluator {\n constructor({\n xref,\n handler,\n pageIndex,\n idFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalColorSpaceCache,\n globalImageCache,\n systemFontCache,\n options = null\n }) {\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalColorSpaceCache = globalColorSpaceCache;\n this.globalImageCache = globalImageCache;\n this.systemFontCache = systemFontCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.type3FontRefs = null;\n this._regionalImageCache = new RegionalImageCache();\n this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n }\n get _pdfFunctionFactory() {\n return shadow(this, \"_pdfFunctionFactory\", new PDFFunctionFactory({\n xref: this.xref\n }));\n }\n get parsingType3Font() {\n return !!this.type3FontRefs;\n }\n clone(newOptions = null) {\n const newEvaluator = Object.create(this);\n newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions);\n return newEvaluator;\n }\n hasBlendModes(resources, nonBlendModesSet) {\n if (!(resources instanceof Dict)) {\n return false;\n }\n if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n return false;\n }\n const processed = new RefSet(nonBlendModesSet);\n if (resources.objId) {\n processed.put(resources.objId);\n }\n const nodes = [resources],\n xref = this.xref;\n while (nodes.length) {\n const node = nodes.shift();\n const graphicStates = node.get(\"ExtGState\");\n if (graphicStates instanceof Dict) {\n for (let graphicState of graphicStates.getRawValues()) {\n if (graphicState instanceof Ref) {\n if (processed.has(graphicState)) {\n continue;\n }\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n processed.put(graphicState);\n info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n continue;\n }\n }\n if (!(graphicState instanceof Dict)) {\n continue;\n }\n if (graphicState.objId) {\n processed.put(graphicState.objId);\n }\n const bm = graphicState.get(\"BM\");\n if (bm instanceof Name) {\n if (bm.name !== \"Normal\") {\n return true;\n }\n continue;\n }\n if (bm !== undefined && Array.isArray(bm)) {\n for (const element of bm) {\n if (element instanceof Name && element.name !== \"Normal\") {\n return true;\n }\n }\n }\n }\n }\n const xObjects = node.get(\"XObject\");\n if (!(xObjects instanceof Dict)) {\n continue;\n }\n for (let xObject of xObjects.getRawValues()) {\n if (xObject instanceof Ref) {\n if (processed.has(xObject)) {\n continue;\n }\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n processed.put(xObject);\n info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n continue;\n }\n }\n if (!(xObject instanceof BaseStream)) {\n continue;\n }\n if (xObject.dict.objId) {\n processed.put(xObject.dict.objId);\n }\n const xResources = xObject.dict.get(\"Resources\");\n if (!(xResources instanceof Dict)) {\n continue;\n }\n if (xResources.objId && processed.has(xResources.objId)) {\n continue;\n }\n nodes.push(xResources);\n if (xResources.objId) {\n processed.put(xResources.objId);\n }\n }\n }\n for (const ref of processed) {\n nonBlendModesSet.put(ref);\n }\n return false;\n }\n async fetchBuiltInCMap(name) {\n const cachedData = this.builtInCMapCache.get(name);\n if (cachedData) {\n return cachedData;\n }\n let data;\n if (this.options.useWorkerFetch) {\n data = {\n cMapData: await fetchBinaryData(`${this.options.cMapUrl}${name}.bcmap`),\n isCompressed: true\n };\n } else {\n data = {\n cMapData: await this.handler.sendWithPromise(\"FetchBinaryData\", {\n kind: \"cMapUrl\",\n filename: `${name}${this.options.cMapPacked ? \".bcmap\" : \"\"}`\n }),\n isCompressed: this.options.cMapPacked\n };\n }\n this.builtInCMapCache.set(name, data);\n return data;\n }\n async fetchStandardFontData(name) {\n const cachedData = this.standardFontDataCache.get(name);\n if (cachedData) {\n return new Stream(cachedData);\n }\n if (this.options.useSystemFonts && name !== \"Symbol\" && name !== \"ZapfDingbats\") {\n return null;\n }\n const standardFontNameToFileName = getFontNameToFileMap(),\n filename = standardFontNameToFileName[name];\n let data;\n try {\n if (this.options.useWorkerFetch) {\n data = await fetchBinaryData(`${this.options.standardFontDataUrl}${filename}`);\n } else {\n data = await this.handler.sendWithPromise(\"FetchBinaryData\", {\n kind: \"standardFontDataUrl\",\n filename\n });\n }\n } catch (ex) {\n warn(ex);\n return null;\n }\n this.standardFontDataCache.set(name, data);\n return new Stream(data);\n }\n async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache, seenRefs) {\n const {\n dict\n } = xobj;\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n const bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n let f32bbox = bbox && new Float32Array(bbox);\n if (f32bbox?.some(x => !isFinite(x))) {\n f32bbox = null;\n }\n let optionalContent, groupOptions;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n const group = dict.get(\"Group\");\n let newOpList;\n const f32matrix = matrix && new Float32Array(matrix);\n const args = [f32matrix, !group && f32bbox || null];\n const localResources = dict.get(\"Resources\");\n if (group) {\n groupOptions = {\n matrix,\n bbox: f32bbox,\n smask,\n isolated: false,\n knockout: false,\n needsIsolation: false,\n hasSoftMask: false,\n isGray: false\n };\n const groupSubtype = group.get(\"S\");\n let colorSpace = null;\n if (isName(groupSubtype, \"Transparency\")) {\n groupOptions.isolated = group.get(\"I\") || false;\n groupOptions.knockout = group.get(\"K\") || false;\n if (group.has(\"CS\")) {\n const cs = this._getColorSpace(group.getRaw(\"CS\"), resources, localColorSpaceCache);\n colorSpace = cs instanceof ColorSpace ? cs : await this._handleColorSpace(cs);\n }\n }\n groupOptions.isGray = colorSpace?.numComps === 1;\n if (smask?.backdrop) {\n colorSpace ||= ColorSpaceUtils.rgb;\n smask.backdrop = colorSpace.getRgbHex(smask.backdrop, 0);\n } else if (smask?.subtype === \"Luminosity\") {\n smask.backdrop = \"#000000\";\n }\n newOpList = new CheckedOperatorList();\n } else {\n newOpList = operatorList;\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n }\n await this.getOperatorList({\n stream: xobj,\n task,\n resources: localResources instanceof Dict ? localResources : resources,\n operatorList: newOpList,\n initialState,\n prevRefs: seenRefs\n });\n if (group) {\n groupOptions.needsIsolation = newOpList.needsIsolation || !!smask;\n groupOptions.hasSoftMask = newOpList.hasSoftMask || !!smask;\n operatorList.addOp(OPS.beginGroup, [groupOptions]);\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n operatorList.addOpList(newOpList);\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n operatorList.addOp(OPS.endGroup, [groupOptions]);\n } else {\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n }\n _sendImgData(objId, imgData, cacheGlobally = false) {\n const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null;\n if (this.parsingType3Font || cacheGlobally) {\n return this.handler.send(\"commonobj\", [objId, \"Image\", imgData], transfers);\n }\n return this.handler.send(\"obj\", [objId, this.pageIndex, \"Image\", imgData], transfers);\n }\n async buildPaintImageXObject({\n resources,\n image,\n isInline = false,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache\n }) {\n const {\n maxImageSize,\n ignoreErrors,\n isOffscreenCanvasSupported\n } = this.options;\n const {\n dict\n } = image;\n const imageRef = dict.objId;\n const w = dict.get(\"W\", \"Width\");\n const h = dict.get(\"H\", \"Height\");\n if (!(w && typeof w === \"number\") || !(h && typeof h === \"number\")) {\n warn(\"Image dimensions are missing, or not numbers.\");\n return;\n }\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n const msg = \"Image exceeded maximum allowed size and was removed.\";\n if (!ignoreErrors) {\n throw new Error(msg);\n }\n warn(msg);\n return;\n }\n let optionalContent;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n }\n const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n let imgData, fn, args;\n if (imageMask) {\n imgData = await PDFImage.createMask({\n image,\n isOffscreenCanvasSupported: isOffscreenCanvasSupported && !this.parsingType3Font\n });\n if (imgData.isSingleOpaquePixel) {\n fn = OPS.paintSolidColorImageMask;\n args = [];\n operatorList.addImageOps(fn, args, optionalContent);\n if (cacheKey) {\n const cacheData = {\n fn,\n args,\n optionalContent\n };\n localImageCache.set(cacheKey, imageRef, cacheData);\n if (imageRef) {\n this._regionalImageCache.set(null, imageRef, cacheData);\n }\n }\n return;\n }\n if (this.parsingType3Font) {\n args = compileType3Glyph(imgData);\n if (args) {\n operatorList.addImageOps(OPS.constructPath, args, optionalContent);\n return;\n }\n warn(\"Cannot compile Type3 glyph.\");\n operatorList.addImageOps(OPS.paintImageMaskXObject, [imgData], optionalContent);\n return;\n }\n const objId = `mask_${this.idFactory.createObjId()}`;\n operatorList.addDependency(objId);\n imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length;\n this._sendImgData(objId, imgData);\n fn = OPS.paintImageMaskXObject;\n args = [{\n data: objId,\n width: imgData.width,\n height: imgData.height,\n interpolate: imgData.interpolate,\n count: 1\n }];\n operatorList.addImageOps(fn, args, optionalContent);\n if (cacheKey) {\n const cacheData = {\n objId,\n fn,\n args,\n optionalContent\n };\n localImageCache.set(cacheKey, imageRef, cacheData);\n if (imageRef) {\n this._regionalImageCache.set(null, imageRef, cacheData);\n }\n }\n return;\n }\n const SMALL_IMAGE_DIMENSIONS = 200;\n const hasMask = dict.has(\"SMask\") || dict.has(\"Mask\");\n if (isInline && w + h < SMALL_IMAGE_DIMENSIONS && !hasMask) {\n try {\n const imageObj = new PDFImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n globalColorSpaceCache: this.globalColorSpaceCache,\n localColorSpaceCache\n });\n imgData = await imageObj.createImageData(true, false);\n operatorList.addImageOps(OPS.paintInlineImageXObject, [imgData], optionalContent);\n } catch (reason) {\n const msg = `Unable to decode inline image: \"${reason}\".`;\n if (!ignoreErrors) {\n throw new Error(msg);\n }\n warn(msg);\n }\n return;\n }\n let objId = `img_${this.idFactory.createObjId()}`,\n cacheGlobally = false,\n globalCacheData = null;\n if (this.parsingType3Font) {\n objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n } else if (cacheKey && imageRef) {\n cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);\n if (cacheGlobally) {\n assert(!isInline, \"Cannot cache an inline image globally.\");\n objId = `${this.idFactory.getDocId()}_${objId}`;\n }\n }\n operatorList.addDependency(objId);\n fn = OPS.paintImageXObject;\n args = [objId, w, h];\n operatorList.addImageOps(fn, args, optionalContent, hasMask);\n if (cacheGlobally) {\n globalCacheData = {\n objId,\n fn,\n args,\n optionalContent,\n hasMask,\n byteSize: 0\n };\n if (this.globalImageCache.hasDecodeFailed(imageRef)) {\n this.globalImageCache.setData(imageRef, globalCacheData);\n this._sendImgData(objId, null, cacheGlobally);\n return;\n }\n if (w * h > 250000 || hasMask) {\n const localLength = await this.handler.sendWithPromise(\"commonobj\", [objId, \"CopyLocalImage\", {\n imageRef\n }]);\n if (localLength) {\n this.globalImageCache.setData(imageRef, globalCacheData);\n this.globalImageCache.addByteSize(imageRef, localLength);\n return;\n }\n }\n }\n PDFImage.buildImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n globalColorSpaceCache: this.globalColorSpaceCache,\n localColorSpaceCache\n }).then(async imageObj => {\n imgData = await imageObj.createImageData(false, isOffscreenCanvasSupported);\n imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length;\n imgData.ref = imageRef;\n if (cacheGlobally) {\n this.globalImageCache.addByteSize(imageRef, imgData.dataLen);\n }\n return this._sendImgData(objId, imgData, cacheGlobally);\n }).catch(reason => {\n warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n if (imageRef) {\n this.globalImageCache.addDecodeFailed(imageRef);\n }\n return this._sendImgData(objId, null, cacheGlobally);\n });\n if (cacheKey) {\n const cacheData = {\n objId,\n fn,\n args,\n optionalContent,\n hasMask\n };\n localImageCache.set(cacheKey, imageRef, cacheData);\n if (imageRef) {\n this._regionalImageCache.set(null, imageRef, cacheData);\n if (cacheGlobally) {\n assert(globalCacheData, \"The global cache-data must be available.\");\n this.globalImageCache.setData(imageRef, globalCacheData);\n }\n }\n }\n }\n #createTransferMap(fn) {\n const transferFn = this._pdfFunctionFactory.create(fn),\n tmp = new Float32Array(1);\n return Uint8Array.from({\n length: 256\n }, (_, i) => {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n return tmp[0] * 255 | 0;\n });\n }\n handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache, seenRefs) {\n const smaskContent = smask.get(\"G\");\n const smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\")\n };\n const transferObj = smask.get(\"TR\");\n if (isPDFFunction(transferObj)) {\n smaskOptions.transferMap = this.#createTransferMap(transferObj);\n }\n return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone({\n newPath: true\n }), localColorSpaceCache, seenRefs);\n }\n handleTransferFunction(tr) {\n let transferArray;\n if (Array.isArray(tr)) {\n transferArray = tr.length > 1 && tr.every(map => map === tr[0]) ? [tr[0]] : tr;\n } else if (isPDFFunction(tr)) {\n transferArray = [tr];\n } else {\n return null;\n }\n const transferMaps = [];\n let numFns = 0,\n numEffectfulFns = 0;\n for (const entry of transferArray) {\n const transferObj = this.xref.fetchIfRef(entry);\n numFns++;\n if (isName(transferObj, \"Identity\")) {\n transferMaps.push(null);\n continue;\n } else if (!isPDFFunction(transferObj)) {\n return null;\n }\n transferMaps.push(this.#createTransferMap(transferObj));\n numEffectfulFns++;\n }\n if (!(numFns === 1 || numFns === 4)) {\n return null;\n }\n if (numEffectfulFns === 0) {\n return null;\n }\n return transferMaps;\n }\n handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, localTilingPatternCache, seenRefs) {\n const tilingOpList = new CheckedOperatorList();\n const patternResources = Dict.merge({\n xref: this.xref,\n dictArray: [patternDict.get(\"Resources\"), resources]\n });\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList,\n prevRefs: seenRefs\n }).then(function () {\n const operatorListIR = tilingOpList.getIR();\n const {\n needsIsolation\n } = tilingOpList;\n const tilingPatternIR = getTilingPatternIR(operatorListIR, patternDict, color, needsIsolation);\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n if (patternDict.objId) {\n localTilingPatternCache.set(null, patternDict.objId, {\n operatorListIR,\n needsIsolation,\n dict: patternDict\n });\n }\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n throw reason;\n });\n }\n async handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, cssFontInfo = null, seenRefs = null) {\n const fontName = fontArgs?.[0] instanceof Name ? fontArgs[0].name : null;\n const translated = await this.loadFont(fontName, fontRef, resources, task, fallbackFontDict, cssFontInfo, seenRefs);\n if (translated.font.isType3Font) {\n operatorList.addDependencies(translated.type3Dependencies);\n }\n state.font = translated.font;\n translated.send(this.handler);\n return translated.loadedName;\n }\n handleText(chars, state) {\n const font = state.font;\n const glyphs = font.charsToGlyphs(chars);\n if (font.data) {\n const isAddToPathSet = !!(state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n if (isAddToPathSet || state.fillColorSpace.name === \"Pattern\" || state.strokeColorSpace.name === \"Pattern\" || font.disableFontFace) {\n PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options);\n }\n }\n return glyphs;\n }\n ensureStateFont(state) {\n if (state.font) {\n return;\n }\n const reason = new FormatError(\"Missing setFont (Tf) operator before text rendering operator.\");\n if (this.options.ignoreErrors) {\n warn(`ensureStateFont: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n async setGState({\n resources,\n gState,\n operatorList,\n cacheKey,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n seenRefs\n }) {\n const gStateRef = gState.objId;\n let isSimpleGState = true;\n const gStateObj = [];\n let promise = Promise.resolve();\n for (const [key, value] of gState) {\n switch (key) {\n case \"Type\":\n break;\n case \"LW\":\n if (typeof value !== \"number\") {\n warn(`Invalid LW (line width): ${value}`);\n break;\n }\n gStateObj.push([key, Math.abs(value)]);\n break;\n case \"LC\":\n case \"LJ\":\n case \"ML\":\n case \"D\":\n case \"RI\":\n case \"FL\":\n case \"CA\":\n case \"ca\":\n gStateObj.push([key, value]);\n break;\n case \"Font\":\n isSimpleGState = false;\n promise = promise.then(() => this.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state, null, null, seenRefs).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n }));\n break;\n case \"BM\":\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n case \"SMask\":\n if (isName(value, \"None\")) {\n gStateObj.push([key, false]);\n break;\n }\n if (value instanceof Dict) {\n isSimpleGState = false;\n promise = promise.then(() => this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache, seenRefs));\n gStateObj.push([key, true]);\n } else {\n warn(\"Unsupported SMask type\");\n }\n break;\n case \"TR\":\n if (gState.has(\"TR2\")) {\n break;\n }\n case \"TR2\":\n {\n const transferMaps = this.handleTransferFunction(value);\n gStateObj.push([\"TR\", transferMaps]);\n break;\n }\n case \"OP\":\n case \"op\":\n case \"OPM\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n case \"HT\":\n case \"SM\":\n case \"SA\":\n case \"AIS\":\n case \"TK\":\n info(\"graphic state operator \" + key);\n break;\n default:\n info(\"Unknown graphic state operator \" + key);\n break;\n }\n }\n await promise;\n if (gStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [gStateObj]);\n }\n if (isSimpleGState) {\n localGStateCache.set(cacheKey, gStateRef, gStateObj);\n }\n }\n loadFont(fontName, font, resources, task, fallbackFontDict = null, cssFontInfo = null, seenRefs = null) {\n const errorFont = async () => new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n dict: font\n });\n let fontRef;\n if (font) {\n if (font instanceof Ref) {\n fontRef = font;\n }\n } else {\n const fontRes = resources.get(\"Font\");\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n if (fontRef) {\n if (this.type3FontRefs?.has(fontRef)) {\n return errorFont();\n }\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n try {\n font = this.xref.fetchIfRef(fontRef);\n } catch (ex) {\n warn(`loadFont - lookup failed: \"${ex}\".`);\n }\n }\n if (!(font instanceof Dict)) {\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n warn(`Font \"${fontName}\" is not available.`);\n return errorFont();\n }\n warn(`Font \"${fontName}\" is not available -- attempting to fallback to a default font.`);\n font = fallbackFontDict || PartialEvaluator.fallbackFontDict;\n }\n if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n return this.fontCache.get(font.cacheKey);\n }\n const {\n promise,\n resolve\n } = Promise.withResolvers();\n let preEvaluatedFont;\n try {\n preEvaluatedFont = this.preEvaluateFont(font);\n preEvaluatedFont.cssFontInfo = cssFontInfo;\n } catch (reason) {\n warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n return errorFont();\n }\n const {\n descriptor,\n hash\n } = preEvaluatedFont;\n const fontRefIsRef = fontRef instanceof Ref;\n let fontID;\n if (hash && descriptor instanceof Dict) {\n const fontAliases = descriptor.fontAliases ||= Object.create(null);\n if (fontAliases[hash]) {\n const aliasFontRef = fontAliases[hash].aliasRef;\n if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n this.fontCache.putAlias(fontRef, aliasFontRef);\n return this.fontCache.get(fontRef);\n }\n } else {\n fontAliases[hash] = {\n fontID: this.idFactory.createFontId()\n };\n }\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n fontID = fontAliases[hash].fontID;\n } else {\n fontID = this.idFactory.createFontId();\n }\n assert(fontID?.startsWith(\"f\"), 'The \"fontID\" must be (correctly) defined.');\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, promise);\n } else {\n font.cacheKey = `cacheKey_${fontID}`;\n this.fontCache.put(font.cacheKey, promise);\n }\n font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n this.translateFont(preEvaluatedFont).then(async translatedFont => {\n const translated = new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font\n });\n if (translatedFont.isType3Font) {\n try {\n await translated.loadType3Data(this, resources, task, seenRefs);\n } catch (reason) {\n throw new Error(`Type3 font load error: ${reason}`);\n }\n }\n resolve(translated);\n }).catch(reason => {\n warn(`loadFont - translateFont failed: \"${reason}\".`);\n resolve(new TranslatedFont({\n loadedName: font.loadedName,\n font: new ErrorFont(reason?.message),\n dict: font\n }));\n });\n return promise;\n }\n buildPath(fn, args, state) {\n const {\n pathMinMax: minMax,\n pathBuffer\n } = state;\n switch (fn | 0) {\n case OPS.rectangle:\n {\n const x = state.currentPointX = args[0];\n const y = state.currentPointY = args[1];\n const width = args[2];\n const height = args[3];\n const xw = x + width;\n const yh = y + height;\n if (width === 0 || height === 0) {\n pathBuffer.push(DrawOPS.moveTo, x, y, DrawOPS.lineTo, xw, yh, DrawOPS.closePath);\n } else {\n pathBuffer.push(DrawOPS.moveTo, x, y, DrawOPS.lineTo, xw, y, DrawOPS.lineTo, xw, yh, DrawOPS.lineTo, x, yh, DrawOPS.closePath);\n }\n Util.rectBoundingBox(x, y, xw, yh, minMax);\n break;\n }\n case OPS.moveTo:\n {\n const x = state.currentPointX = args[0];\n const y = state.currentPointY = args[1];\n pathBuffer.push(DrawOPS.moveTo, x, y);\n Util.pointBoundingBox(x, y, minMax);\n break;\n }\n case OPS.lineTo:\n {\n const x = state.currentPointX = args[0];\n const y = state.currentPointY = args[1];\n pathBuffer.push(DrawOPS.lineTo, x, y);\n Util.pointBoundingBox(x, y, minMax);\n break;\n }\n case OPS.curveTo:\n {\n const startX = state.currentPointX;\n const startY = state.currentPointY;\n const [x1, y1, x2, y2, x, y] = args;\n state.currentPointX = x;\n state.currentPointY = y;\n pathBuffer.push(DrawOPS.curveTo, x1, y1, x2, y2, x, y);\n Util.bezierBoundingBox(startX, startY, x1, y1, x2, y2, x, y, minMax);\n break;\n }\n case OPS.curveTo2:\n {\n const startX = state.currentPointX;\n const startY = state.currentPointY;\n const [x1, y1, x, y] = args;\n state.currentPointX = x;\n state.currentPointY = y;\n pathBuffer.push(DrawOPS.curveTo, startX, startY, x1, y1, x, y);\n Util.bezierBoundingBox(startX, startY, startX, startY, x1, y1, x, y, minMax);\n break;\n }\n case OPS.curveTo3:\n {\n const startX = state.currentPointX;\n const startY = state.currentPointY;\n const [x1, y1, x, y] = args;\n state.currentPointX = x;\n state.currentPointY = y;\n pathBuffer.push(DrawOPS.curveTo, x1, y1, x, y, x, y);\n Util.bezierBoundingBox(startX, startY, x1, y1, x, y, x, y, minMax);\n break;\n }\n case OPS.closePath:\n pathBuffer.push(DrawOPS.closePath);\n break;\n }\n }\n _getColorSpace(cs, resources, localColorSpaceCache) {\n return ColorSpaceUtils.parse({\n cs,\n xref: this.xref,\n resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n globalColorSpaceCache: this.globalColorSpaceCache,\n localColorSpaceCache,\n asyncIfNotCached: true\n });\n }\n async _handleColorSpace(csPromise) {\n try {\n return await csPromise;\n } catch (ex) {\n if (ex instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n warn(`_handleColorSpace - ignoring ColorSpace: \"${ex}\".`);\n return null;\n }\n throw ex;\n }\n }\n parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache\n }) {\n let id = localShadingPatternCache.get(shading);\n if (id) {\n return id;\n }\n let patternIR;\n try {\n const shadingFill = Pattern.parseShading(shading, this.xref, resources, this._pdfFunctionFactory, this.globalColorSpaceCache, localColorSpaceCache);\n patternIR = shadingFill.getIR();\n } catch (reason) {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n warn(`parseShading - ignoring shading: \"${reason}\".`);\n localShadingPatternCache.set(shading, null);\n return null;\n }\n throw reason;\n }\n id = `pattern_${this.idFactory.createObjId()}`;\n if (this.parsingType3Font) {\n id = `${this.idFactory.getDocId()}_type3_${id}`;\n }\n localShadingPatternCache.set(shading, id);\n if (this.parsingType3Font) {\n const buffer = compilePatternInfo(patternIR);\n this.handler.send(\"commonobj\", [id, \"Pattern\", buffer], [buffer]);\n } else {\n this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n }\n return id;\n }\n handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache, seenRefs) {\n const patternName = args.pop();\n if (patternName instanceof Name) {\n const rawPattern = patterns.getRaw(patternName.name);\n const localTilingPattern = rawPattern instanceof Ref && localTilingPatternCache.getByRef(rawPattern);\n if (localTilingPattern) {\n try {\n const color = cs.base ? cs.base.getRgbHex(args, 0) : null;\n const tilingPatternIR = getTilingPatternIR(localTilingPattern.operatorListIR, localTilingPattern.dict, color, localTilingPattern.needsIsolation);\n operatorList.addOp(fn, tilingPatternIR);\n return undefined;\n } catch {}\n }\n const pattern = this.xref.fetchIfRef(rawPattern);\n if (pattern) {\n const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\n const typeNum = dict.get(\"PatternType\");\n if (typeNum === PatternType.TILING) {\n const color = cs.base ? cs.base.getRgbHex(args, 0) : null;\n return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, localTilingPatternCache, seenRefs);\n } else if (typeNum === PatternType.SHADING) {\n const shading = dict.get(\"Shading\");\n const objId = this.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache\n });\n if (objId) {\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n }\n return undefined;\n }\n throw new FormatError(`Unknown PatternType: ${typeNum}`);\n }\n }\n throw new FormatError(`Unknown PatternName: ${patternName}`);\n }\n async parseMarkedContentProps(contentProperties, resources) {\n return parseMarkedContentProps(this.xref, contentProperties, resources);\n }\n async getOperatorList({\n stream,\n task,\n resources,\n operatorList,\n initialState = null,\n fallbackFontDict = null,\n prevRefs = null\n }) {\n if (stream.isAsync) {\n const bytes = await stream.asyncGetBytes();\n if (bytes) {\n stream = new Stream(bytes, 0, bytes.length, stream.dict);\n }\n }\n const objId = stream.dict?.objId;\n const seenRefs = new RefSet(prevRefs);\n if (objId) {\n if (prevRefs?.has(objId)) {\n throw new Error(`getOperatorList - ignoring circular reference: ${objId}`);\n }\n seenRefs.put(objId);\n }\n resources ||= Dict.empty;\n initialState ||= new EvalState();\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n const self = this;\n const xref = this.xref;\n const localImageCache = new LocalImageCache();\n const localColorSpaceCache = new LocalColorSpaceCache();\n const localGStateCache = new LocalGStateCache();\n const localTilingPatternCache = new LocalTilingPatternCache();\n const localShadingPatternCache = new Map();\n const xobjs = resources.get(\"XObject\") || Dict.empty;\n const patterns = resources.get(\"Pattern\") || Dict.empty;\n const stateManager = new StateManager(initialState);\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n const timeSlotManager = new TimeSlotManager();\n let markedContentLevel = 0;\n function closePendingRestoreOPS(argument) {\n for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(OPS.restore, []);\n }\n }\n function closePendingMarkedContentOPS() {\n for (; markedContentLevel > 0; markedContentLevel--) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n }\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n Promise.all([promise, operatorList.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n const operation = {};\n let stop, cs, name, isValidName;\n while (!(stop = timeSlotManager.check())) {\n operation.args = null;\n if (!preprocessor.read(operation)) {\n break;\n }\n let args = operation.args;\n let fn = operation.fn;\n switch (fn | 0) {\n case OPS.paintXObject:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName) {\n const localImage = localImageCache.getByName(name);\n if (localImage) {\n addCachedImageOps(operatorList, localImage);\n args = null;\n continue;\n }\n }\n next(new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n const cachedImage = localImageCache.getByRef(xobj) || self._regionalImageCache.getByRef(xobj) || self.globalImageCache.getData(xobj, self.pageIndex);\n if (cachedImage) {\n addCachedImageOps(operatorList, cachedImage);\n resolveXObject();\n return;\n }\n xobj = xref.fetch(xobj);\n }\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n if (type.name === \"Form\") {\n stateManager.save();\n self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone({\n newPath: true\n }), localColorSpaceCache, seenRefs).then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self.buildPaintImageXObject({\n resources,\n image: xobj,\n operatorList,\n cacheKey: name,\n localImageCache,\n localColorSpaceCache\n }).then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n info(\"Ignored XObject subtype PS\");\n } else {\n throw new FormatError(`Unhandled XObject subtype ${type.name}`);\n }\n resolveXObject();\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.setFont:\n const fontSize = args[1];\n next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict, null, seenRefs).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n }));\n return;\n case OPS.endInlineImage:\n const cacheKey = args[0].cacheKey;\n if (cacheKey) {\n const localImage = localImageCache.getByName(cacheKey);\n if (localImage) {\n addCachedImageOps(operatorList, localImage);\n args = null;\n continue;\n }\n }\n next(self.buildPaintImageXObject({\n resources,\n image: args[0],\n isInline: true,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache\n }));\n return;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n const combinedGlyphs = [],\n state = stateManager.state;\n for (const arrItem of args[0]) {\n if (typeof arrItem === \"string\") {\n combinedGlyphs.push(...self.handleText(arrItem, state));\n } else if (typeof arrItem === \"number\") {\n combinedGlyphs.push(arrItem);\n }\n }\n args[0] = combinedGlyphs;\n fn = OPS.showText;\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n case OPS.setFillColorSpace:\n {\n const fillCS = self._getColorSpace(args[0], resources, localColorSpaceCache);\n if (fillCS instanceof ColorSpace) {\n stateManager.state.fillColorSpace = fillCS;\n continue;\n }\n next(self._handleColorSpace(fillCS).then(colorSpace => {\n stateManager.state.fillColorSpace = colorSpace || ColorSpaceUtils.gray;\n }));\n return;\n }\n case OPS.setStrokeColorSpace:\n {\n const strokeCS = self._getColorSpace(args[0], resources, localColorSpaceCache);\n if (strokeCS instanceof ColorSpace) {\n stateManager.state.strokeColorSpace = strokeCS;\n continue;\n }\n next(self._handleColorSpace(strokeCS).then(colorSpace => {\n stateManager.state.strokeColorSpace = colorSpace || ColorSpaceUtils.gray;\n }));\n return;\n }\n case OPS.setFillColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n cs = stateManager.state.fillColorSpace;\n args = [cs.getRgbHex(args, 0)];\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n cs = stateManager.state.strokeColorSpace;\n args = [cs.getRgbHex(args, 0)];\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillGray:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.fillColorSpace = ColorSpaceUtils.gray;\n args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeGray:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.strokeColorSpace = ColorSpaceUtils.gray;\n args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillCMYKColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.fillColorSpace = ColorSpaceUtils.cmyk;\n args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)];\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeCMYKColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.strokeColorSpace = ColorSpaceUtils.cmyk;\n args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)];\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillRGBColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.fillColorSpace = ColorSpaceUtils.rgb;\n args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)];\n break;\n case OPS.setStrokeRGBColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.strokeColorSpace = ColorSpaceUtils.rgb;\n args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)];\n break;\n case OPS.setFillColorN:\n cs = stateManager.state.patternFillColorSpace;\n if (!cs) {\n if (isNumberArray(args, null)) {\n args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n fn = OPS.setFillRGBColor;\n break;\n }\n args = [];\n fn = OPS.setFillTransparent;\n break;\n }\n if (cs.name === \"Pattern\") {\n if (!Array.isArray(args)) {\n continue;\n }\n next(self.handleColorN(operatorList, OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache, seenRefs));\n return;\n }\n if (!isNumberArray(args, null)) {\n continue;\n }\n args = [cs.getRgbHex(args, 0)];\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColorN:\n cs = stateManager.state.patternStrokeColorSpace;\n if (!cs) {\n if (isNumberArray(args, null)) {\n args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n fn = OPS.setStrokeRGBColor;\n break;\n }\n args = [];\n fn = OPS.setStrokeTransparent;\n break;\n }\n if (cs.name === \"Pattern\") {\n if (!Array.isArray(args)) {\n continue;\n }\n next(self.handleColorN(operatorList, OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache, seenRefs));\n return;\n }\n if (!isNumberArray(args, null)) {\n continue;\n }\n args = [cs.getRgbHex(args, 0)];\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.shadingFill:\n let shading;\n try {\n const shadingRes = resources.get(\"Shading\");\n if (!shadingRes) {\n throw new FormatError(\"No shading resource found\");\n }\n shading = shadingRes.get(args[0].name);\n if (!shading) {\n throw new FormatError(\"No shading object found\");\n }\n } catch (reason) {\n if (reason instanceof AbortException) {\n continue;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring Shading: \"${reason}\".`);\n continue;\n }\n throw reason;\n }\n const patternId = self.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache\n });\n if (!patternId) {\n continue;\n }\n args = [patternId];\n fn = OPS.shadingFill;\n break;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName) {\n const localGStateObj = localGStateCache.getByName(name);\n if (localGStateObj) {\n if (localGStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [localGStateObj]);\n }\n args = null;\n continue;\n }\n }\n next(new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n const gState = extGState.get(name);\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n self.setGState({\n resources,\n gState,\n operatorList,\n cacheKey: name,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n seenRefs\n }).then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.setLineWidth:\n {\n const [thickness] = args;\n if (typeof thickness !== \"number\") {\n warn(`Invalid setLineWidth: ${thickness}`);\n continue;\n }\n args[0] = Math.abs(thickness);\n break;\n }\n case OPS.setDash:\n {\n const dashPhase = args[1];\n if (typeof dashPhase !== \"number\") {\n warn(`Invalid setDash: ${dashPhase}`);\n continue;\n }\n const dashArray = args[0];\n if (!Array.isArray(dashArray)) {\n warn(`Invalid setDash: ${dashArray}`);\n continue;\n }\n if (dashArray.some(x => typeof x !== \"number\")) {\n args[0] = dashArray.filter(x => typeof x === \"number\");\n }\n break;\n }\n case OPS.moveTo:\n case OPS.lineTo:\n case OPS.curveTo:\n case OPS.curveTo2:\n case OPS.curveTo3:\n case OPS.closePath:\n case OPS.rectangle:\n self.buildPath(fn, args, stateManager.state);\n continue;\n case OPS.stroke:\n case OPS.closeStroke:\n case OPS.fill:\n case OPS.eoFill:\n case OPS.fillStroke:\n case OPS.eoFillStroke:\n case OPS.closeFillStroke:\n case OPS.closeEOFillStroke:\n case OPS.endPath:\n {\n const {\n state: {\n pathBuffer,\n pathMinMax\n }\n } = stateManager;\n if (fn === OPS.closeStroke || fn === OPS.closeFillStroke || fn === OPS.closeEOFillStroke) {\n pathBuffer.push(DrawOPS.closePath);\n }\n if (pathBuffer.length === 0) {\n operatorList.addOp(OPS.constructPath, [fn, [null], null]);\n } else {\n operatorList.addOp(OPS.constructPath, [fn, [new Float32Array(pathBuffer)], pathMinMax.slice()]);\n pathBuffer.length = 0;\n pathMinMax.set(BBOX_INIT, 0);\n }\n continue;\n }\n case OPS.setTextMatrix:\n operatorList.addOp(fn, [new Float32Array(args)]);\n continue;\n case OPS.markPoint:\n case OPS.markPointProps:\n case OPS.beginCompat:\n case OPS.endCompat:\n continue;\n case OPS.beginMarkedContentProps:\n markedContentLevel++;\n if (!(args[0] instanceof Name)) {\n warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", null]);\n continue;\n }\n if (args[0].name === \"OC\") {\n next(self.parseMarkedContentProps(args[1], resources).then(data => {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", data]);\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`);\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", null]);\n return;\n }\n throw reason;\n }));\n return;\n }\n args = [args[0].name, args[1] instanceof Dict ? args[1].get(\"MCID\") : null];\n break;\n case OPS.beginMarkedContent:\n if (args?.some(arg => arg instanceof Dict)) {\n warn(`getOperatorList - ignoring operator: ${fn}`);\n continue;\n }\n markedContentLevel++;\n break;\n case OPS.endMarkedContent:\n if (args?.some(arg => arg instanceof Dict)) {\n warn(`getOperatorList - ignoring operator: ${fn}`);\n continue;\n }\n if (markedContentLevel === 0) {\n continue;\n }\n markedContentLevel--;\n break;\n default:\n if (args?.some(arg => arg instanceof Dict)) {\n warn(`getOperatorList - ignoring operator: ${fn}`);\n continue;\n }\n }\n operatorList.addOp(fn, args);\n }\n if (stop) {\n next(deferred);\n return;\n }\n closePendingMarkedContentOPS();\n closePendingRestoreOPS();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n warn(`getOperatorList - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n closePendingMarkedContentOPS();\n closePendingRestoreOPS();\n return;\n }\n throw reason;\n });\n }\n async getTextContent({\n stream,\n task,\n resources,\n stateManager = null,\n includeMarkedContent = false,\n sink,\n seenStyles = new Set(),\n viewBox,\n lang = null,\n disableNormalization = false,\n keepWhiteSpace = false,\n prevRefs = null,\n intersector = null\n }) {\n if (stream.isAsync) {\n const bytes = await stream.asyncGetBytes();\n if (bytes) {\n stream = new Stream(bytes, 0, bytes.length, stream.dict);\n }\n }\n sink ??= textSinkWrapper(null);\n const objId = stream.dict?.objId;\n const seenRefs = new RefSet(prevRefs);\n if (objId) {\n if (prevRefs?.has(objId)) {\n throw new Error(`getTextContent - ignoring circular reference: ${objId}`);\n }\n seenRefs.put(objId);\n }\n resources ||= Dict.empty;\n stateManager ||= new StateManager(new TextState());\n let markedContentLevel = 0;\n let textMarkedContentLevel = null;\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang\n };\n const textContentItem = {\n initialized: false,\n str: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n height: 0,\n vertical: false,\n prevTransform: null,\n prevTextRise: 0,\n textAdvanceScale: 0,\n spaceInFlowMin: 0,\n spaceInFlowMax: 0,\n trackingSpaceMin: Infinity,\n negativeSpaceMax: -Infinity,\n notASpace: -Infinity,\n transform: null,\n fontName: null,\n hasEOL: false\n };\n const twoLastChars = [\" \", \" \"];\n let twoLastCharsPos = 0;\n function saveLastChar(char) {\n const nextPos = (twoLastCharsPos + 1) % 2;\n const ret = twoLastChars[twoLastCharsPos] !== \" \" && twoLastChars[nextPos] === \" \";\n twoLastChars[twoLastCharsPos] = char;\n twoLastCharsPos = nextPos;\n return !keepWhiteSpace && ret;\n }\n function shouldAddWhitepsace() {\n return !keepWhiteSpace && twoLastChars[twoLastCharsPos] !== \" \" && twoLastChars[(twoLastCharsPos + 1) % 2] === \" \";\n }\n function resetLastChars() {\n twoLastChars[0] = twoLastChars[1] = \" \";\n twoLastCharsPos = 0;\n }\n const TRACKING_SPACE_FACTOR = 0.102;\n const NOT_A_SPACE_FACTOR = 0.03;\n const NEGATIVE_SPACE_FACTOR = -0.2;\n const SPACE_IN_FLOW_MIN_FACTOR = 0.102;\n const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n const VERTICAL_SHIFT_RATIO = 0.25;\n const self = this;\n const xref = this.xref;\n const showSpacedTextBuffer = [];\n let xobjs = null;\n const emptyXObjectCache = new LocalImageCache();\n const emptyGStateCache = new LocalGStateCache();\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n let textState, currentTextState;\n function pushWhitespace({\n width = 0,\n height = 0,\n transform = textContentItem.prevTransform,\n fontName = textContentItem.fontName\n }) {\n intersector?.addExtraChar(\" \");\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width,\n height,\n transform,\n fontName,\n hasEOL: false\n });\n }\n function getCurrentTextTransform() {\n const font = textState.font;\n const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];\n if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)) {\n const glyphHeight = font.bbox[3] - font.bbox[1];\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n return Util.transform(textState.ctm, Util.transform(textState.textMatrix, tsm));\n }\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n const {\n font,\n loadedName\n } = textState;\n if (!seenStyles.has(loadedName)) {\n seenStyles.add(loadedName);\n textContent.styles[loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical\n };\n if (self.options.fontExtraProperties && font.systemFontInfo) {\n const style = textContent.styles[loadedName];\n style.fontSubstitution = font.systemFontInfo.css;\n style.fontSubstitutionLoadedName = font.systemFontInfo.loadedName;\n }\n }\n textContentItem.fontName = loadedName;\n const trm = textContentItem.transform = getCurrentTextTransform();\n if (!font.vertical) {\n textContentItem.width = textContentItem.totalWidth = 0;\n textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]);\n textContentItem.vertical = false;\n } else {\n textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]);\n textContentItem.height = textContentItem.totalHeight = 0;\n textContentItem.vertical = true;\n }\n const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n const {\n fontSize\n } = textState;\n textContentItem.trackingSpaceMin = fontSize * TRACKING_SPACE_FACTOR;\n textContentItem.notASpace = fontSize * NOT_A_SPACE_FACTOR;\n textContentItem.negativeSpaceMax = fontSize * NEGATIVE_SPACE_FACTOR;\n textContentItem.spaceInFlowMin = fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n textContentItem.spaceInFlowMax = fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n textContentItem.hasEOL = false;\n textContentItem.initialized = true;\n return textContentItem;\n }\n function updateAdvanceScale() {\n if (!textContentItem.initialized) {\n return;\n }\n const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n const scaleFactor = scaleCtmX * scaleLineX;\n if (scaleFactor === textContentItem.textAdvanceScale) {\n return;\n }\n if (!textContentItem.vertical) {\n textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;\n textContentItem.width = 0;\n } else {\n textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;\n textContentItem.height = 0;\n }\n textContentItem.textAdvanceScale = scaleFactor;\n }\n function runBidiTransform(textChunk) {\n let text = textChunk.str.join(\"\");\n if (!disableNormalization) {\n text = normalizeUnicode(text);\n }\n const bidiResult = bidi(text, -1, textChunk.vertical);\n return {\n str: bidiResult.str,\n dir: bidiResult.dir,\n width: Math.abs(textChunk.totalWidth),\n height: Math.abs(textChunk.totalHeight),\n transform: textChunk.transform,\n fontName: textChunk.fontName,\n hasEOL: textChunk.hasEOL\n };\n }\n async function handleSetFont(fontName, fontRef) {\n const translated = await self.loadFont(fontName, fontRef, resources, task, null, null, seenRefs);\n textState.loadedName = translated.loadedName;\n textState.font = translated.font;\n textState.fontMatrix = translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n }\n function applyInverseRotation(x, y, matrix) {\n const scale = Math.hypot(matrix[0], matrix[1]);\n return [(matrix[0] * x + matrix[1] * y) / scale, (matrix[2] * x + matrix[3] * y) / scale];\n }\n function compareWithLastPosition(glyphWidth) {\n const currentTransform = getCurrentTextTransform();\n let posX = currentTransform[4];\n let posY = currentTransform[5];\n if (textState.font?.vertical) {\n if (posX < viewBox[0] || posX > viewBox[2] || posY + glyphWidth < viewBox[1] || posY > viewBox[3]) {\n return false;\n }\n } else if (posX + glyphWidth < viewBox[0] || posX > viewBox[2] || posY < viewBox[1] || posY > viewBox[3]) {\n return false;\n }\n if (!textState.font || !textContentItem.prevTransform) {\n return true;\n }\n let lastPosX = textContentItem.prevTransform[4];\n let lastPosY = textContentItem.prevTransform[5];\n if (lastPosX === posX && lastPosY === posY) {\n return true;\n }\n let rotate = -1;\n if (currentTransform[0] && currentTransform[1] === 0 && currentTransform[2] === 0) {\n rotate = currentTransform[0] > 0 ? 0 : 180;\n } else if (currentTransform[1] && currentTransform[0] === 0 && currentTransform[3] === 0) {\n rotate = currentTransform[1] > 0 ? 90 : 270;\n }\n switch (rotate) {\n case 0:\n break;\n case 90:\n [posX, posY] = [posY, posX];\n [lastPosX, lastPosY] = [lastPosY, lastPosX];\n break;\n case 180:\n [posX, posY, lastPosX, lastPosY] = [-posX, -posY, -lastPosX, -lastPosY];\n break;\n case 270:\n [posX, posY] = [-posY, -posX];\n [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n break;\n default:\n [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n [lastPosX, lastPosY] = applyInverseRotation(lastPosX, lastPosY, textContentItem.prevTransform);\n }\n if (textState.font.vertical) {\n const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n const advanceX = posX - lastPosX;\n const textOrientation = Math.sign(textContentItem.height || textContentItem.totalHeight);\n if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n if (Math.abs(advanceX) > 0.5 * textContentItem.width) {\n appendEOL();\n return true;\n }\n resetLastChars();\n flushTextContentItem();\n return true;\n }\n if (Math.abs(advanceX) > textContentItem.width) {\n appendEOL();\n return true;\n }\n if (advanceY <= textOrientation * textContentItem.notASpace) {\n resetLastChars();\n }\n if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n if (shouldAddWhitepsace()) {\n resetLastChars();\n flushTextContentItem();\n pushWhitespace({\n height: Math.abs(advanceY)\n });\n } else {\n textContentItem.height += advanceY;\n }\n } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) {\n if (textContentItem.str.length === 0) {\n resetLastChars();\n pushWhitespace({\n height: Math.abs(advanceY)\n });\n } else {\n textContentItem.height += advanceY;\n }\n }\n if (Math.abs(advanceX) > textContentItem.width * VERTICAL_SHIFT_RATIO) {\n flushTextContentItem();\n }\n return true;\n }\n const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n const advanceY = posY - lastPosY;\n const textOrientation = Math.sign(textContentItem.width || textContentItem.totalWidth);\n if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n if (Math.abs(advanceY) > 0.5 * textContentItem.height) {\n appendEOL();\n return true;\n }\n resetLastChars();\n flushTextContentItem();\n return true;\n }\n const textRiseDelta = textState.textRise - textContentItem.prevTextRise;\n const advanceYCorrected = textRiseDelta === 0 ? advanceY : advanceY - currentTransform[3] / textState.fontSize * textRiseDelta;\n if (Math.abs(advanceYCorrected) > textContentItem.height) {\n appendEOL();\n return true;\n }\n if (advanceX <= textOrientation * textContentItem.notASpace) {\n resetLastChars();\n }\n if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n if (shouldAddWhitepsace()) {\n resetLastChars();\n flushTextContentItem();\n pushWhitespace({\n width: Math.abs(advanceX)\n });\n } else {\n textContentItem.width += advanceX;\n }\n } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) {\n if (textContentItem.str.length === 0) {\n resetLastChars();\n pushWhitespace({\n width: Math.abs(advanceX)\n });\n } else {\n textContentItem.width += advanceX;\n }\n }\n if (Math.abs(advanceY) > textContentItem.height * VERTICAL_SHIFT_RATIO) {\n flushTextContentItem();\n }\n return true;\n }\n function buildTextContentItem({\n chars,\n extraSpacing\n }) {\n if (currentTextState !== textState && (currentTextState.fontSize !== textState.fontSize || currentTextState.fontName !== textState.fontName && (currentTextState.font.name !== textState.font.name || currentTextState.font.vertical !== textState.font.vertical))) {\n flushTextContentItem();\n currentTextState = textState.clone();\n }\n const font = textState.font;\n const baseCharSpacing = font.vertical ? -textState.charSpacing : textState.charSpacing;\n if (!chars) {\n const charSpacing = baseCharSpacing + extraSpacing;\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n if (keepWhiteSpace) {\n compareWithLastPosition(0);\n }\n return;\n }\n const glyphs = font.charsToGlyphs(chars);\n const scale = textState.fontMatrix[0] * textState.fontSize;\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const glyph = glyphs[i];\n const {\n category,\n originalCharCode\n } = glyph;\n if (category.isInvisibleFormatMark) {\n continue;\n }\n let charSpacing = baseCharSpacing + (i + 1 === ii ? extraSpacing : 0);\n let glyphWidth = glyph.width;\n if (font.vertical) {\n glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n }\n let scaledDim = glyphWidth * scale;\n if (originalCharCode === 0x20) {\n charSpacing += textState.wordSpacing;\n }\n if (!keepWhiteSpace && category.isWhitespace) {\n if (!font.vertical) {\n charSpacing += scaledDim;\n textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n } else {\n charSpacing += -scaledDim;\n textState.translateTextMatrix(0, -charSpacing);\n }\n saveLastChar(\" \");\n continue;\n }\n if (!category.isZeroWidthDiacritic && !compareWithLastPosition(scaledDim)) {\n if (!font.vertical) {\n textState.translateTextMatrix(scaledDim * textState.textHScale, 0);\n } else {\n textState.translateTextMatrix(0, scaledDim);\n }\n continue;\n }\n const textChunk = ensureTextContentItem();\n if (category.isZeroWidthDiacritic) {\n scaledDim = 0;\n }\n if (!font.vertical) {\n scaledDim *= textState.textHScale;\n intersector?.addGlyph(getCurrentTextTransform(), scaledDim, 0, glyph.unicode);\n textState.translateTextMatrix(scaledDim, 0);\n textChunk.width += scaledDim;\n } else {\n intersector?.addGlyph(getCurrentTextTransform(), 0, scaledDim, glyph.unicode);\n textState.translateTextMatrix(0, scaledDim);\n scaledDim = Math.abs(scaledDim);\n textChunk.height += scaledDim;\n }\n if (scaledDim) {\n textChunk.prevTransform = getCurrentTextTransform();\n textChunk.prevTextRise = textState.textRise;\n }\n const glyphUnicode = glyph.unicode;\n if (saveLastChar(glyphUnicode)) {\n textChunk.str.push(\" \");\n intersector?.addExtraChar(\" \");\n }\n if (!intersector) {\n textChunk.str.push(glyphUnicode);\n }\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n }\n }\n function appendEOL() {\n intersector?.addExtraChar(\"\\n\");\n resetLastChars();\n if (textContentItem.initialized) {\n textContentItem.hasEOL = true;\n flushTextContentItem();\n } else {\n textContent.items.push({\n str: \"\",\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: getCurrentTextTransform(),\n fontName: textState.loadedName,\n hasEOL: true\n });\n }\n }\n function addFakeSpaces(width, transf, textOrientation) {\n if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) {\n if (textContentItem.initialized) {\n resetLastChars();\n textContentItem.str.push(\" \");\n intersector?.addExtraChar(\" \");\n }\n return false;\n }\n const fontName = textContentItem.fontName;\n let height = 0;\n if (textContentItem.vertical) {\n height = width;\n width = 0;\n }\n flushTextContentItem();\n resetLastChars();\n pushWhitespace({\n width: Math.abs(width),\n height: Math.abs(height),\n transform: transf || getCurrentTextTransform(),\n fontName\n });\n return true;\n }\n function flushTextContentItem() {\n if (!textContentItem.initialized || !textContentItem.str) {\n return;\n }\n if (!textContentItem.vertical) {\n textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;\n } else {\n textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;\n }\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n function closePendingMarkedContentItems(level = 0) {\n if (!includeMarkedContent || markedContentLevel <= level) {\n return;\n }\n flushTextContentItem();\n for (; markedContentLevel > level; markedContentLevel--) {\n textContent.items.push({\n type: \"endMarkedContent\"\n });\n }\n }\n function enqueueChunk(batch = false) {\n const length = textContent.items.length;\n if (length === 0) {\n return;\n }\n if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n return;\n }\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n const timeSlotManager = new TimeSlotManager();\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk(true);\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n const operation = {};\n let stop,\n name,\n isValidName,\n args = [];\n while (!(stop = timeSlotManager.check())) {\n args.length = 0;\n operation.args = args;\n if (!preprocessor.read(operation)) {\n break;\n }\n textState = stateManager.state;\n currentTextState ||= textState.clone();\n const fn = operation.fn;\n args = operation.args;\n switch (fn | 0) {\n case OPS.setFont:\n const fontNameArg = args[0].name,\n fontSizeArg = args[1];\n if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {\n break;\n }\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n case OPS.setTextRise:\n textState.textRise = args[0];\n break;\n case OPS.setHScale:\n textState.textHScale = args[0] / 100;\n break;\n case OPS.setLeading:\n textState.leading = args[0];\n break;\n case OPS.moveText:\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.setLeadingMoveText:\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.nextLine:\n textState.carriageReturn();\n break;\n case OPS.setTextMatrix:\n textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n updateAdvanceScale();\n break;\n case OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n case OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n case OPS.beginText:\n textState.textMatrix = IDENTITY_MATRIX.slice();\n textState.textLineMatrix = IDENTITY_MATRIX.slice();\n textMarkedContentLevel = markedContentLevel;\n break;\n case OPS.endText:\n if (textMarkedContentLevel !== null) {\n closePendingMarkedContentItems(textMarkedContentLevel);\n textMarkedContentLevel = null;\n }\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000;\n for (const item of args[0]) {\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n } else if (typeof item === \"number\" && item !== 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: item * spaceFactor\n });\n }\n }\n if (showSpacedTextBuffer.length > 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: 0\n });\n }\n break;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0\n });\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0\n });\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[2],\n extraSpacing: 0\n });\n break;\n case OPS.paintXObject:\n flushTextContentItem();\n xobjs ??= resources.get(\"XObject\") || Dict.empty;\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName && emptyXObjectCache.getByName(name)) {\n break;\n }\n next(new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n if (globalImage) {\n resolveXObject();\n return;\n }\n xobj = xref.fetch(xobj);\n }\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n const {\n dict\n } = xobj;\n const type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, dict.objId, true);\n resolveXObject();\n return;\n }\n const currentState = stateManager.state.clone();\n const xObjStateManager = new StateManager(currentState);\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n if (matrix) {\n xObjStateManager.transform(matrix);\n }\n const localResources = dict.get(\"Resources\");\n enqueueChunk();\n const sinkWrapper = textSinkWrapper(sink);\n self.getTextContent({\n stream: xobj,\n task,\n resources: localResources instanceof Dict ? localResources : resources,\n stateManager: xObjStateManager,\n includeMarkedContent,\n sink: sinkWrapper,\n seenStyles,\n viewBox,\n lang,\n disableNormalization,\n keepWhiteSpace,\n prevRefs: seenRefs\n }).then(function () {\n if (!sinkWrapper.enqueueInvoked) {\n emptyXObjectCache.set(name, dict.objId, true);\n }\n resolveXObject();\n }, rejectXObject);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName && emptyGStateCache.getByName(name)) {\n break;\n }\n next(new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n const gState = extGState.get(name);\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n const gStateFont = gState.get(\"Font\");\n if (!gStateFont) {\n emptyGStateCache.set(name, gState.objId, true);\n resolveGState();\n return;\n }\n flushTextContentItem();\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.beginMarkedContent:\n flushTextContentItem();\n if (includeMarkedContent) {\n markedContentLevel++;\n textContent.items.push({\n type: \"beginMarkedContent\",\n tag: args[0] instanceof Name ? args[0].name : null\n });\n }\n break;\n case OPS.beginMarkedContentProps:\n flushTextContentItem();\n if (includeMarkedContent) {\n markedContentLevel++;\n const mcid = args[1] instanceof Dict ? args[1].get(\"MCID\") : null;\n textContent.items.push({\n type: \"beginMarkedContentProps\",\n id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mc${mcid}` : null,\n tag: args[0] instanceof Name ? args[0].name : null\n });\n }\n break;\n case OPS.endMarkedContent:\n flushTextContentItem();\n if (includeMarkedContent) {\n if (markedContentLevel === 0) {\n break;\n }\n markedContentLevel--;\n textContent.items.push({\n type: \"endMarkedContent\"\n });\n }\n break;\n }\n if (textContent.items.length >= sink.desiredSize) {\n stop = true;\n break;\n }\n }\n if (stop) {\n next(deferred);\n return;\n }\n flushTextContentItem();\n closePendingMarkedContentItems();\n enqueueChunk();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n warn(`getTextContent - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n flushTextContentItem();\n closePendingMarkedContentItems();\n enqueueChunk();\n return;\n }\n throw reason;\n });\n }\n async extractDataStructures(dict, properties) {\n const xref = this.xref;\n let cidToGidBytes;\n const toUnicodePromise = this.readToUnicode(properties.toUnicode);\n if (properties.composite) {\n const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n if (cidSystemInfo instanceof Dict && !properties.cidSystemInfo) {\n properties.cidSystemInfo = {\n registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n supplement: cidSystemInfo.get(\"Supplement\")\n };\n }\n try {\n const cidToGidMap = dict.get(\"CIDToGIDMap\");\n if (cidToGidMap instanceof BaseStream) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`extractDataStructures - ignoring CIDToGIDMap data: \"${ex}\".`);\n }\n }\n const differences = [];\n let baseEncodingName = null;\n let encoding;\n if (dict.has(\"Encoding\")) {\n encoding = dict.get(\"Encoding\");\n if (encoding instanceof Dict) {\n baseEncodingName = encoding.get(\"BaseEncoding\");\n baseEncodingName = baseEncodingName instanceof Name ? baseEncodingName.name : null;\n if (encoding.has(\"Differences\")) {\n const diffEncoding = encoding.get(\"Differences\");\n let index = 0;\n for (const entry of diffEncoding) {\n const data = xref.fetchIfRef(entry);\n if (typeof data === \"number\") {\n index = data;\n } else if (data instanceof Name) {\n differences[index++] = data.name;\n } else {\n throw new FormatError(`Invalid entry in 'Differences' array: ${data}`);\n }\n }\n }\n } else if (encoding instanceof Name) {\n baseEncodingName = encoding.name;\n } else {\n const msg = \"Encoding is not a Name nor a Dict\";\n if (!this.options.ignoreErrors) {\n throw new FormatError(msg);\n }\n warn(msg);\n }\n if (baseEncodingName !== \"MacRomanEncoding\" && baseEncodingName !== \"MacExpertEncoding\" && baseEncodingName !== \"WinAnsiEncoding\") {\n baseEncodingName = null;\n }\n }\n const nonEmbeddedFont = !properties.file || properties.isInternalFont,\n isSymbolsFontName = getSymbolsFonts()[properties.name];\n if (baseEncodingName && nonEmbeddedFont && isSymbolsFontName) {\n baseEncodingName = null;\n }\n if (baseEncodingName === \"WinAnsiEncoding\" && nonEmbeddedFont && properties.name?.charCodeAt(0) >= 0xb7) {\n const fontName = properties.name;\n const chineseFontNames = [\"\\xCB\\xCE\\xCC\\xE5\", \"\\xBA\\xDA\\xCC\\xE5\", \"\\xBF\\xAC\\xCC\\xE5\", \"\\xB7\\xC2\\xCB\\xCE\", \"\\xBF\\xAC\\xCC\\xE5_GB2312\", \"\\xB7\\xC2\\xCB\\xCE_GB2312\", \"\\xC1\\xA5\\xCA\\xE9\", \"\\xD0\\xC2\\xCB\\xCE\", \"\\xB7\\xC2\\xCB\\xCE\\xCC\\xE5\", \"\\xD0\\xA1\\xB1\\xEA\\xCB\\xCE\"];\n if (chineseFontNames.includes(fontName)) {\n baseEncodingName = null;\n properties.defaultEncoding = \"Adobe-GB1-UCS2\";\n properties.composite = true;\n properties.cidEncoding = Name.get(\"GBK-EUC-H\");\n const cMap = await CMapFactory.create({\n encoding: properties.cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n properties.cidSystemInfo = {\n registry: \"Adobe\",\n ordering: \"GB1\",\n supplement: 0\n };\n }\n }\n if (baseEncodingName) {\n properties.defaultEncoding = getEncoding(baseEncodingName);\n } else {\n let isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n if (properties.type === \"TrueType\" && isSymbolicFont && isNonsymbolicFont && differences.length !== 0) {\n properties.flags &= ~FontFlags.Symbolic;\n isSymbolicFont = false;\n }\n encoding = StandardEncoding;\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = WinAnsiEncoding;\n }\n if (isSymbolicFont || isSymbolsFontName) {\n encoding = MacRomanEncoding;\n if (nonEmbeddedFont) {\n if (/Symbol/i.test(properties.name)) {\n encoding = SymbolSetEncoding;\n } else if (/Dingbats/i.test(properties.name)) {\n encoding = ZapfDingbatsEncoding;\n } else if (/Wingdings/i.test(properties.name)) {\n encoding = WinAnsiEncoding;\n }\n }\n }\n properties.defaultEncoding = encoding;\n }\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n properties.toUnicode = await toUnicodePromise;\n const builtToUnicode = await this.buildToUnicode(properties);\n properties.toUnicode = builtToUnicode;\n if (cidToGidBytes) {\n properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);\n }\n return properties;\n }\n _simpleFontToUnicode(properties, forceGlyphs = false) {\n assert(!properties.composite, \"Must be a simple font.\");\n const toUnicode = [];\n const encoding = properties.defaultEncoding.slice();\n const baseEncodingName = properties.baseEncodingName;\n const differences = properties.differences;\n for (const charcode in differences) {\n const glyphName = differences[charcode];\n if (glyphName === \".notdef\") {\n continue;\n }\n encoding[charcode] = glyphName;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (const charcode in encoding) {\n let glyphName = encoding[charcode];\n if (glyphName === \"\") {\n continue;\n }\n let unicode = glyphsUnicodeMap[glyphName];\n if (unicode !== undefined) {\n toUnicode[charcode] = String.fromCharCode(unicode);\n continue;\n }\n let code = 0;\n switch (glyphName[0]) {\n case \"G\":\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"g\":\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"C\":\n case \"c\":\n if (glyphName.length >= 3 && glyphName.length <= 4) {\n const codeStr = glyphName.substring(1);\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n code = +codeStr;\n if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {\n return this._simpleFontToUnicode(properties, true);\n }\n }\n break;\n case \"u\":\n unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n code = unicode;\n }\n break;\n default:\n switch (glyphName) {\n case \"f_h\":\n case \"f_t\":\n case \"T_h\":\n toUnicode[charcode] = glyphName.replaceAll(\"_\", \"\");\n continue;\n }\n break;\n }\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n if (baseEncodingName && code === +charcode) {\n const baseEncoding = getEncoding(baseEncodingName);\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n continue;\n }\n }\n toUnicode[charcode] = String.fromCodePoint(code);\n }\n }\n return toUnicode;\n }\n async buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap = properties.toUnicode?.length > 0;\n if (properties.hasIncludedToUnicodeMap) {\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n }\n return properties.toUnicode;\n }\n if (!properties.composite) {\n return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n }\n if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof IdentityCMap) || properties.cidSystemInfo?.registry === \"Adobe\" && (properties.cidSystemInfo.ordering === \"GB1\" || properties.cidSystemInfo.ordering === \"CNS1\" || properties.cidSystemInfo.ordering === \"Japan1\" || properties.cidSystemInfo.ordering === \"Korea1\"))) {\n const {\n registry,\n ordering\n } = properties.cidSystemInfo;\n const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n const ucs2CMap = await CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n const toUnicode = [],\n buf = [];\n properties.cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n const ucs2 = ucs2CMap.lookup(cid);\n if (ucs2) {\n buf.length = 0;\n for (let i = 0, ii = ucs2.length; i < ii; i += 2) {\n buf.push((ucs2.charCodeAt(i) << 8) + ucs2.charCodeAt(i + 1));\n }\n toUnicode[charcode] = String.fromCharCode(...buf);\n }\n });\n return new ToUnicodeMap(toUnicode);\n }\n return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n }\n async readToUnicode(cmapObj) {\n if (!cmapObj) {\n return null;\n }\n if (cmapObj instanceof Name) {\n const cmap = await CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n return new ToUnicodeMap(cmap.getMap());\n }\n if (cmapObj instanceof BaseStream) {\n try {\n const cmap = await CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n const map = new Array(cmap.length);\n cmap.forEach(function (charCode, token) {\n if (typeof token === \"number\") {\n map[charCode] = String.fromCodePoint(token);\n return;\n }\n if (token.length % 2 !== 0) {\n token = \"\\u0000\" + token;\n }\n const str = [];\n for (let k = 0; k < token.length; k += 2) {\n const w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n if ((w1 & 0xf800) !== 0xd800) {\n str.push(w1);\n continue;\n }\n k += 2;\n const w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n map[charCode] = String.fromCodePoint(...str);\n });\n return new ToUnicodeMap(map);\n } catch (reason) {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n return null;\n }\n throw reason;\n }\n }\n return null;\n }\n readCidToGidMap(glyphsData, toUnicode) {\n const result = [];\n for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n const glyphID = glyphsData[j++] << 8 | glyphsData[j];\n const code = j >> 1;\n if (glyphID === 0 && !toUnicode.has(code)) {\n continue;\n }\n result[code] = glyphID;\n }\n return result;\n }\n extractWidths(dict, descriptor, properties) {\n const xref = this.xref;\n let glyphsWidths = [];\n let defaultWidth = 0;\n const glyphsVMetrics = [];\n let defaultVMetrics;\n if (properties.composite) {\n const dw = dict.get(\"DW\");\n defaultWidth = typeof dw === \"number\" ? Math.ceil(dw) : 1000;\n const widths = dict.get(\"W\");\n if (Array.isArray(widths)) {\n for (let i = 0, ii = widths.length; i < ii; i++) {\n let start = xref.fetchIfRef(widths[i++]);\n if (!Number.isInteger(start)) {\n break;\n }\n const code = xref.fetchIfRef(widths[i]);\n if (Array.isArray(code)) {\n for (const c of code) {\n const width = xref.fetchIfRef(c);\n if (typeof width === \"number\") {\n glyphsWidths[start] = width;\n }\n start++;\n }\n } else if (Number.isInteger(code)) {\n const width = xref.fetchIfRef(widths[++i]);\n if (typeof width !== \"number\") {\n continue;\n }\n for (let j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n } else {\n break;\n }\n }\n }\n if (properties.vertical) {\n const dw2 = dict.getArray(\"DW2\");\n let vmetrics = isNumberArray(dw2, 2) ? dw2 : [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n if (Array.isArray(vmetrics)) {\n for (let i = 0, ii = vmetrics.length; i < ii; i++) {\n let start = xref.fetchIfRef(vmetrics[i++]);\n if (!Number.isInteger(start)) {\n break;\n }\n const code = xref.fetchIfRef(vmetrics[i]);\n if (Array.isArray(code)) {\n for (let j = 0, jj = code.length; j < jj; j++) {\n const vmetric = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])];\n if (isNumberArray(vmetric, null)) {\n glyphsVMetrics[start] = vmetric;\n }\n start++;\n }\n } else if (Number.isInteger(code)) {\n const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])];\n if (!isNumberArray(vmetric, null)) {\n continue;\n }\n for (let j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n } else {\n break;\n }\n }\n }\n }\n } else {\n const widths = dict.get(\"Widths\");\n if (Array.isArray(widths)) {\n let j = properties.firstChar;\n for (const w of widths) {\n const width = xref.fetchIfRef(w);\n if (typeof width === \"number\") {\n glyphsWidths[j] = width;\n }\n j++;\n }\n const missingWidth = descriptor.get(\"MissingWidth\");\n defaultWidth = typeof missingWidth === \"number\" ? missingWidth : 0;\n } else {\n const baseFontName = dict.get(\"BaseFont\");\n if (baseFontName instanceof Name) {\n const metrics = this.getBaseFontMetrics(baseFontName.name);\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n let isMonospace = true;\n let firstWidth = defaultWidth;\n for (const glyph in glyphsWidths) {\n const glyphWidth = glyphsWidths[glyph];\n if (!glyphWidth) {\n continue;\n }\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n if (isMonospace) {\n properties.flags |= FontFlags.FixedPitch;\n } else {\n properties.flags &= ~FontFlags.FixedPitch;\n }\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n }\n isSerifFont(baseFontName) {\n const fontNameWoStyle = baseFontName.split(\"-\", 1)[0];\n return fontNameWoStyle in getSerifFonts() || /serif/i.test(fontNameWoStyle);\n }\n getBaseFontMetrics(name) {\n let defaultWidth = 0;\n let widths = Object.create(null);\n let monospace = false;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n fontName = stdFontMap[fontName] || fontName;\n const Metrics = getMetrics();\n const glyphWidths = Metrics[fontName] ?? Metrics[this.isSerifFont(name) ? \"Times-Roman\" : \"Helvetica\"];\n if (typeof glyphWidths === \"number\") {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths();\n }\n return {\n defaultWidth,\n monospace,\n widths\n };\n }\n buildCharCodeToWidth(widthsByGlyphName, properties) {\n const widths = Object.create(null);\n const differences = properties.differences;\n const encoding = properties.defaultEncoding;\n for (let charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n return widths;\n }\n preEvaluateFont(dict) {\n const baseDict = dict;\n let type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n let composite = false;\n let hash;\n if (type.name === \"Type0\") {\n const df = dict.get(\"DescendantFonts\");\n if (!df) {\n throw new FormatError(\"Descendant fonts are not specified\");\n }\n dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Descendant font is not a dictionary.\");\n }\n type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n composite = true;\n }\n let firstChar = dict.get(\"FirstChar\");\n if (!Number.isInteger(firstChar)) {\n firstChar = 0;\n }\n let lastChar = dict.get(\"LastChar\");\n if (!Number.isInteger(lastChar)) {\n lastChar = composite ? 0xffff : 0xff;\n }\n const descriptor = dict.get(\"FontDescriptor\");\n const toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n if (descriptor) {\n hash = new MurmurHash3_64();\n const encoding = baseDict.getRaw(\"Encoding\");\n if (encoding instanceof Name) {\n hash.update(encoding.name);\n } else if (encoding instanceof Ref) {\n hash.update(encoding.toString());\n } else if (encoding instanceof Dict) {\n for (const entry of encoding.getRawValues()) {\n if (entry instanceof Name) {\n hash.update(entry.name);\n } else if (entry instanceof Ref) {\n hash.update(entry.toString());\n } else if (Array.isArray(entry)) {\n const diffLength = entry.length,\n diffBuf = new Array(diffLength);\n for (let j = 0; j < diffLength; j++) {\n const diffEntry = entry[j];\n if (diffEntry instanceof Name) {\n diffBuf[j] = diffEntry.name;\n } else if (typeof diffEntry === \"number\" || diffEntry instanceof Ref) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n hash.update(diffBuf.join());\n }\n }\n }\n hash.update(`${firstChar}-${lastChar}`);\n if (toUnicode instanceof BaseStream) {\n const stream = toUnicode.stream || toUnicode;\n const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);\n hash.update(uint8array);\n } else if (toUnicode instanceof Name) {\n hash.update(toUnicode.name);\n }\n const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n if (Array.isArray(widths)) {\n const widthsBuf = [];\n for (const entry of widths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n }\n }\n hash.update(widthsBuf.join());\n }\n if (composite) {\n hash.update(\"compositeFont\");\n const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n if (Array.isArray(compositeWidths)) {\n const widthsBuf = [];\n for (const entry of compositeWidths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n } else if (Array.isArray(entry)) {\n const subWidthsBuf = [];\n for (const element of entry) {\n if (typeof element === \"number\" || element instanceof Ref) {\n subWidthsBuf.push(element.toString());\n }\n }\n widthsBuf.push(`[${subWidthsBuf.join()}]`);\n }\n }\n hash.update(widthsBuf.join());\n }\n const cidToGidMap = dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n if (cidToGidMap instanceof Name) {\n hash.update(cidToGidMap.name);\n } else if (cidToGidMap instanceof Ref) {\n hash.update(cidToGidMap.toString());\n } else if (cidToGidMap instanceof BaseStream) {\n hash.update(cidToGidMap.peekBytes());\n }\n }\n if (type.name === \"Type3\") {\n const charProcs = baseDict.get(\"CharProcs\");\n if (charProcs instanceof Dict) {\n for (const [key, entry] of charProcs.getRawEntries()) {\n hash.update(entry instanceof Ref ? `${key}\\0${entry}` : key);\n }\n }\n }\n }\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n firstChar,\n lastChar,\n toUnicode,\n hash: hash ? hash.hexdigest() : \"\"\n };\n }\n async translateFont({\n descriptor,\n dict,\n baseDict,\n composite,\n type,\n firstChar,\n lastChar,\n toUnicode,\n cssFontInfo\n }) {\n const isType3Font = type === \"Type3\";\n if (!descriptor) {\n if (isType3Font) {\n descriptor = Dict.empty;\n } else if (composite) {\n descriptor = Dict.empty;\n } else {\n let baseFontName = dict.get(\"BaseFont\");\n if (!(baseFontName instanceof Name)) {\n throw new FormatError(\"Base font is not specified\");\n }\n baseFontName = normalizeFontName(baseFontName.name);\n const metrics = this.getBaseFontMetrics(baseFontName);\n const fontNameWoStyle = baseFontName.split(\"-\", 1)[0];\n const flags = (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) | (metrics.monospace ? FontFlags.FixedPitch : 0) | (getSymbolsFonts()[fontNameWoStyle] ? FontFlags.Symbolic : FontFlags.Nonsymbolic);\n const properties = {\n type,\n name: baseFontName,\n loadedName: baseDict.loadedName,\n systemFontInfo: null,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n isSimulatedFlags: true,\n flags,\n firstChar,\n lastChar,\n toUnicode,\n xHeight: 0,\n capHeight: 0,\n italicAngle: 0,\n isType3Font\n };\n const widths = dict.get(\"Widths\");\n const standardFontName = getStandardFontName(baseFontName);\n let file = null;\n if (standardFontName) {\n file = await this.fetchStandardFontData(standardFontName);\n properties.isInternalFont = !!file;\n }\n if (!properties.isInternalFont && this.options.useSystemFonts) {\n properties.systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, baseFontName, standardFontName, type);\n }\n const newProperties = await this.extractDataStructures(dict, properties);\n if (Array.isArray(widths)) {\n const glyphWidths = [];\n let j = firstChar;\n for (const w of widths) {\n const width = this.xref.fetchIfRef(w);\n if (typeof width === \"number\") {\n glyphWidths[j] = width;\n }\n j++;\n }\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);\n }\n return new Font(baseFontName, file, newProperties, this.options);\n }\n }\n let fontName = descriptor.get(\"FontName\");\n let baseFont = dict.get(\"BaseFont\");\n if (typeof fontName === \"string\") {\n fontName = Name.get(fontName);\n }\n if (typeof baseFont === \"string\") {\n baseFont = Name.get(baseFont);\n }\n const fontNameStr = fontName?.name;\n const baseFontStr = baseFont?.name;\n if (isType3Font) {\n if (!fontNameStr) {\n fontName = Name.get(type);\n }\n } else if (fontNameStr !== baseFontStr) {\n info(`The FontDescriptor's FontName is \"${fontNameStr}\" but ` + `should be the same as the Font's BaseFont \"${baseFontStr}\".`);\n if (fontNameStr && baseFontStr && (baseFontStr.startsWith(fontNameStr) || !isKnownFontName(fontNameStr) && isKnownFontName(baseFontStr))) {\n fontName = null;\n }\n fontName ||= baseFont;\n }\n if (!(fontName instanceof Name)) {\n throw new FormatError(\"invalid font name\");\n }\n let fontFile, fontFileN, subtype, length1, length2, length3;\n try {\n for (const n of [\"FontFile\", \"FontFile2\", \"FontFile3\"]) {\n fontFile = descriptor.get(n);\n if (fontFile) {\n fontFileN = n;\n break;\n }\n }\n if (fontFile) {\n if (!(fontFile instanceof BaseStream)) {\n throw new FormatError(\"FontFile should be a stream\");\n } else {\n if (fontFile.isAsync) {\n const bytes = await fontFile.asyncGetBytes();\n if (bytes) {\n fontFile = new Stream(bytes, 0, bytes.length, fontFile.dict);\n }\n }\n if (fontFile.isEmpty) {\n throw new FormatError(\"FontFile is empty\");\n }\n }\n }\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n fontFile = null;\n }\n let isInternalFont = false;\n let glyphScaleFactors = null;\n let systemFontInfo = null;\n if (fontFile) {\n if (fontFile.dict) {\n const subtypeEntry = fontFile.dict.get(\"Subtype\");\n if (subtypeEntry instanceof Name) {\n subtype = subtypeEntry.name;\n }\n length1 = fontFile.dict.get(\"Length1\");\n length2 = fontFile.dict.get(\"Length2\");\n length3 = fontFile.dict.get(\"Length3\");\n }\n } else if (cssFontInfo) {\n const standardFontName = getXfaFontName(fontName.name);\n if (standardFontName) {\n cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n cssFontInfo.metrics = standardFontName.metrics || null;\n glyphScaleFactors = standardFontName.factors || null;\n fontFile = await this.fetchStandardFontData(standardFontName.name);\n isInternalFont = !!fontFile;\n baseDict = dict = getXfaFontDict(fontName.name);\n composite = true;\n }\n } else if (!isType3Font) {\n const standardFontName = getStandardFontName(fontName.name);\n if (standardFontName) {\n fontFile = await this.fetchStandardFontData(standardFontName);\n isInternalFont = !!fontFile;\n }\n if (!isInternalFont && this.options.useSystemFonts) {\n systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, fontName.name, standardFontName, type);\n }\n }\n const fontMatrix = lookupMatrix(dict.getArray(\"FontMatrix\"), FONT_IDENTITY_MATRIX);\n const bbox = lookupNormalRect(descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"), isType3Font ? [0, 0, 0, 0] : undefined);\n let ascent = descriptor.get(\"Ascent\");\n if (typeof ascent !== \"number\") {\n ascent = undefined;\n }\n let descent = descriptor.get(\"Descent\");\n if (typeof descent !== \"number\") {\n descent = undefined;\n }\n let xHeight = descriptor.get(\"XHeight\");\n if (typeof xHeight !== \"number\") {\n xHeight = 0;\n }\n let capHeight = descriptor.get(\"CapHeight\");\n if (typeof capHeight !== \"number\") {\n capHeight = 0;\n }\n let flags = descriptor.get(\"Flags\");\n if (!Number.isInteger(flags)) {\n flags = 0;\n }\n let italicAngle = descriptor.get(\"ItalicAngle\");\n if (typeof italicAngle !== \"number\") {\n italicAngle = 0;\n }\n const properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n fontFileN,\n length1,\n length2,\n length3,\n isInternalFont,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix,\n firstChar,\n lastChar,\n toUnicode,\n bbox,\n ascent,\n descent,\n xHeight,\n capHeight,\n flags,\n italicAngle,\n isType3Font,\n cssFontInfo,\n scaleFactors: glyphScaleFactors,\n systemFontInfo\n };\n if (composite) {\n const cidEncoding = baseDict.get(\"Encoding\");\n if (cidEncoding instanceof Name) {\n properties.cidEncoding = cidEncoding.name;\n }\n const cMap = await CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n }\n const newProperties = await this.extractDataStructures(dict, properties);\n this.extractWidths(dict, descriptor, newProperties);\n const font = new Font(fontName.name, fontFile, newProperties, this.options);\n if (font.missingFile && !font.systemFontInfo && !isType3Font && this.options.useSystemFonts) {\n const standardFontName = getStandardFontName(fontName.name);\n const substitution = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, fontName.name, standardFontName, type);\n if (substitution) {\n if (substitution.guessFallback) {\n substitution.guessFallback = false;\n substitution.css += `,${font.fallbackName}`;\n }\n font.systemFontInfo = substitution;\n }\n }\n return font;\n }\n static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n function buildPath(fontChar) {\n const glyphName = `${font.loadedName}_path_${fontChar}`;\n try {\n const buffer = font.renderer.getPath(fontChar);\n if (!buffer) {\n return;\n }\n handler.send(\"commonobj\", [glyphName, \"FontPath\", buffer], [buffer]);\n } catch (reason) {\n if (evaluatorOptions.ignoreErrors) {\n warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n }\n for (const glyph of glyphs) {\n buildPath(glyph.fontChar);\n const accent = glyph.accent;\n if (accent?.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n static get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"Helvetica\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\nclass TranslatedFont {\n #sent = false;\n #type3Loaded = null;\n constructor({\n loadedName,\n font,\n dict\n }) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this.type3Dependencies = font.isType3Font ? new Set() : null;\n }\n send(handler) {\n if (this.#sent) {\n return;\n }\n this.#sent = true;\n const fontData = this.font.exportData(),\n transfers = fontData.buffer ? [fontData.buffer] : null;\n handler.send(\"commonobj\", [this.loadedName, \"Font\", fontData], transfers);\n }\n fallback(handler, evaluatorOptions) {\n if (!this.font.data) {\n return;\n }\n this.font.disableFontFace = true;\n PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, evaluatorOptions);\n }\n async loadType3Data(evaluator, resources, task, seenRefs = null) {\n if (this.#type3Loaded) {\n return this.#type3Loaded;\n }\n const {\n dict,\n font,\n type3Dependencies\n } = this;\n assert(font.isType3Font, \"Must be a Type3 font.\");\n const {\n promise,\n resolve\n } = Promise.withResolvers();\n this.#type3Loaded = promise;\n const type3Evaluator = evaluator.clone({\n ignoreErrors: false\n });\n const type3FontRefs = new RefSet(evaluator.type3FontRefs);\n if (dict.objId) {\n type3FontRefs.put(dict.objId);\n }\n type3Evaluator.type3FontRefs = type3FontRefs;\n const charProcs = dict.get(\"CharProcs\");\n const fontResources = dict.get(\"Resources\") || resources;\n const charProcOperatorList = new Map();\n const [x0, y0, x1, y1] = font.bbox;\n const fontBBoxSize = Math.hypot(x1 - x0, y1 - y0);\n for (const key of charProcs.getKeys()) {\n try {\n const operatorList = new OperatorList();\n await type3Evaluator.getOperatorList({\n stream: charProcs.get(key),\n task,\n resources: fontResources,\n operatorList,\n prevRefs: seenRefs\n });\n switch (operatorList.fnArray[0]) {\n case OPS.setCharWidthAndBounds:\n this.#removeType3ColorOperators(operatorList, fontBBoxSize);\n break;\n case OPS.setCharWidth:\n if (!fontBBoxSize) {\n this.#guessType3FontBBox(operatorList);\n }\n break;\n }\n charProcOperatorList.set(key, operatorList.getIR());\n for (const dependency of operatorList.dependencies) {\n type3Dependencies.add(dependency);\n }\n } catch {\n warn(`Type3 font resource \"${key}\" is not available.`);\n charProcOperatorList.set(key, new OperatorList().getIR());\n }\n }\n font.charProcOperatorList = charProcOperatorList;\n if (this._bbox) {\n font.isCharBBox = true;\n font.bbox = this._bbox;\n }\n resolve();\n return this.#type3Loaded;\n }\n #removeType3ColorOperators(operatorList, fontBBoxSize = NaN) {\n const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2)),\n width = charBBox[2] - charBBox[0],\n height = charBBox[3] - charBBox[1];\n const charBBoxSize = Math.hypot(width, height);\n if (width === 0 || height === 0) {\n operatorList.fnArray.splice(0, 1);\n operatorList.argsArray.splice(0, 1);\n } else if (fontBBoxSize === 0 || Math.round(charBBoxSize / fontBBoxSize) >= 10) {\n this._bbox ??= BBOX_INIT.slice();\n Util.rectBoundingBox(...charBBox, this._bbox);\n }\n let i = 0,\n ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.setCharWidthAndBounds:\n break;\n case OPS.setStrokeColorSpace:\n case OPS.setFillColorSpace:\n case OPS.setStrokeColor:\n case OPS.setStrokeColorN:\n case OPS.setFillColor:\n case OPS.setFillColorN:\n case OPS.setStrokeGray:\n case OPS.setFillGray:\n case OPS.setStrokeRGBColor:\n case OPS.setFillRGBColor:\n case OPS.setStrokeCMYKColor:\n case OPS.setFillCMYKColor:\n case OPS.shadingFill:\n case OPS.setRenderingIntent:\n operatorList.fnArray.splice(i, 1);\n operatorList.argsArray.splice(i, 1);\n ii--;\n continue;\n case OPS.setGState:\n const [gStateObj] = operatorList.argsArray[i];\n let j = 0,\n jj = gStateObj.length;\n while (j < jj) {\n const [gStateKey] = gStateObj[j];\n switch (gStateKey) {\n case \"TR\":\n case \"TR2\":\n case \"HT\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n gStateObj.splice(j, 1);\n jj--;\n continue;\n }\n j++;\n }\n break;\n }\n i++;\n }\n }\n #guessType3FontBBox(operatorList) {\n let i = 1;\n const ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.constructPath:\n const minMax = operatorList.argsArray[i][2];\n this._bbox ??= BBOX_INIT.slice();\n Util.rectBoundingBox(...minMax, this._bbox);\n break;\n }\n i++;\n }\n }\n}\nclass StateManager {\n constructor(initialState = new EvalState()) {\n this.state = initialState;\n this.stateStack = [];\n }\n save() {\n const old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n restore() {\n const prev = this.stateStack.pop();\n if (prev) {\n this.state = prev;\n }\n }\n transform(args) {\n this.state.ctm = Util.transform(this.state.ctm, args);\n }\n}\nclass TextState {\n ctm = new Float32Array(IDENTITY_MATRIX);\n fontName = null;\n fontSize = 0;\n loadedName = null;\n font = null;\n fontMatrix = FONT_IDENTITY_MATRIX;\n textMatrix = IDENTITY_MATRIX.slice();\n textLineMatrix = IDENTITY_MATRIX.slice();\n charSpacing = 0;\n wordSpacing = 0;\n leading = 0;\n textHScale = 1;\n textRise = 0;\n setTextMatrix(a, b, c, d, e, f) {\n const m = this.textMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n setTextLineMatrix(a, b, c, d, e, f) {\n const m = this.textLineMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n translateTextMatrix(x, y) {\n const m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n translateTextLineMatrix(x, y) {\n const m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n }\n clone() {\n const clone = Object.assign(Object.create(this), this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n }\n}\nclass EvalState {\n ctm = new Float32Array(IDENTITY_MATRIX);\n font = null;\n textRenderingMode = TextRenderingMode.FILL;\n _fillColorSpace = ColorSpaceUtils.gray;\n _strokeColorSpace = ColorSpaceUtils.gray;\n patternFillColorSpace = null;\n patternStrokeColorSpace = null;\n currentPointX = 0;\n currentPointY = 0;\n pathMinMax = F32_BBOX_INIT.slice();\n pathBuffer = [];\n get fillColorSpace() {\n return this._fillColorSpace;\n }\n set fillColorSpace(colorSpace) {\n this._fillColorSpace = this.patternFillColorSpace = colorSpace;\n }\n get strokeColorSpace() {\n return this._strokeColorSpace;\n }\n set strokeColorSpace(colorSpace) {\n this._strokeColorSpace = this.patternStrokeColorSpace = colorSpace;\n }\n clone({\n newPath = false\n } = {}) {\n const clone = Object.create(this);\n if (newPath) {\n clone.pathBuffer = [];\n clone.pathMinMax = F32_BBOX_INIT.slice();\n }\n return clone;\n }\n}\nclass EvaluatorPreprocessor {\n static get opMap() {\n return shadow(this, \"opMap\", Object.assign(Object.create(null), {\n w: {\n id: OPS.setLineWidth,\n numArgs: 1,\n variableArgs: false\n },\n J: {\n id: OPS.setLineCap,\n numArgs: 1,\n variableArgs: false\n },\n j: {\n id: OPS.setLineJoin,\n numArgs: 1,\n variableArgs: false\n },\n M: {\n id: OPS.setMiterLimit,\n numArgs: 1,\n variableArgs: false\n },\n d: {\n id: OPS.setDash,\n numArgs: 2,\n variableArgs: false\n },\n ri: {\n id: OPS.setRenderingIntent,\n numArgs: 1,\n variableArgs: false\n },\n i: {\n id: OPS.setFlatness,\n numArgs: 1,\n variableArgs: false\n },\n gs: {\n id: OPS.setGState,\n numArgs: 1,\n variableArgs: false\n },\n q: {\n id: OPS.save,\n numArgs: 0,\n variableArgs: false\n },\n Q: {\n id: OPS.restore,\n numArgs: 0,\n variableArgs: false\n },\n cm: {\n id: OPS.transform,\n numArgs: 6,\n variableArgs: false\n },\n m: {\n id: OPS.moveTo,\n numArgs: 2,\n variableArgs: false\n },\n l: {\n id: OPS.lineTo,\n numArgs: 2,\n variableArgs: false\n },\n c: {\n id: OPS.curveTo,\n numArgs: 6,\n variableArgs: false\n },\n v: {\n id: OPS.curveTo2,\n numArgs: 4,\n variableArgs: false\n },\n y: {\n id: OPS.curveTo3,\n numArgs: 4,\n variableArgs: false\n },\n h: {\n id: OPS.closePath,\n numArgs: 0,\n variableArgs: false\n },\n re: {\n id: OPS.rectangle,\n numArgs: 4,\n variableArgs: false\n },\n S: {\n id: OPS.stroke,\n numArgs: 0,\n variableArgs: false\n },\n s: {\n id: OPS.closeStroke,\n numArgs: 0,\n variableArgs: false\n },\n f: {\n id: OPS.fill,\n numArgs: 0,\n variableArgs: false\n },\n F: {\n id: OPS.fill,\n numArgs: 0,\n variableArgs: false\n },\n \"f*\": {\n id: OPS.eoFill,\n numArgs: 0,\n variableArgs: false\n },\n B: {\n id: OPS.fillStroke,\n numArgs: 0,\n variableArgs: false\n },\n \"B*\": {\n id: OPS.eoFillStroke,\n numArgs: 0,\n variableArgs: false\n },\n b: {\n id: OPS.closeFillStroke,\n numArgs: 0,\n variableArgs: false\n },\n \"b*\": {\n id: OPS.closeEOFillStroke,\n numArgs: 0,\n variableArgs: false\n },\n n: {\n id: OPS.endPath,\n numArgs: 0,\n variableArgs: false\n },\n W: {\n id: OPS.clip,\n numArgs: 0,\n variableArgs: false\n },\n \"W*\": {\n id: OPS.eoClip,\n numArgs: 0,\n variableArgs: false\n },\n BT: {\n id: OPS.beginText,\n numArgs: 0,\n variableArgs: false\n },\n ET: {\n id: OPS.endText,\n numArgs: 0,\n variableArgs: false\n },\n Tc: {\n id: OPS.setCharSpacing,\n numArgs: 1,\n variableArgs: false\n },\n Tw: {\n id: OPS.setWordSpacing,\n numArgs: 1,\n variableArgs: false\n },\n Tz: {\n id: OPS.setHScale,\n numArgs: 1,\n variableArgs: false\n },\n TL: {\n id: OPS.setLeading,\n numArgs: 1,\n variableArgs: false\n },\n Tf: {\n id: OPS.setFont,\n numArgs: 2,\n variableArgs: false\n },\n Tr: {\n id: OPS.setTextRenderingMode,\n numArgs: 1,\n variableArgs: false\n },\n Ts: {\n id: OPS.setTextRise,\n numArgs: 1,\n variableArgs: false\n },\n Td: {\n id: OPS.moveText,\n numArgs: 2,\n variableArgs: false\n },\n TD: {\n id: OPS.setLeadingMoveText,\n numArgs: 2,\n variableArgs: false\n },\n Tm: {\n id: OPS.setTextMatrix,\n numArgs: 6,\n variableArgs: false\n },\n \"T*\": {\n id: OPS.nextLine,\n numArgs: 0,\n variableArgs: false\n },\n Tj: {\n id: OPS.showText,\n numArgs: 1,\n variableArgs: false\n },\n TJ: {\n id: OPS.showSpacedText,\n numArgs: 1,\n variableArgs: false\n },\n \"'\": {\n id: OPS.nextLineShowText,\n numArgs: 1,\n variableArgs: false\n },\n '\"': {\n id: OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false\n },\n d0: {\n id: OPS.setCharWidth,\n numArgs: 2,\n variableArgs: false\n },\n d1: {\n id: OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false\n },\n CS: {\n id: OPS.setStrokeColorSpace,\n numArgs: 1,\n variableArgs: false\n },\n cs: {\n id: OPS.setFillColorSpace,\n numArgs: 1,\n variableArgs: false\n },\n SC: {\n id: OPS.setStrokeColor,\n numArgs: 4,\n variableArgs: true\n },\n SCN: {\n id: OPS.setStrokeColorN,\n numArgs: 33,\n variableArgs: true\n },\n sc: {\n id: OPS.setFillColor,\n numArgs: 4,\n variableArgs: true\n },\n scn: {\n id: OPS.setFillColorN,\n numArgs: 33,\n variableArgs: true\n },\n G: {\n id: OPS.setStrokeGray,\n numArgs: 1,\n variableArgs: false\n },\n g: {\n id: OPS.setFillGray,\n numArgs: 1,\n variableArgs: false\n },\n RG: {\n id: OPS.setStrokeRGBColor,\n numArgs: 3,\n variableArgs: false\n },\n rg: {\n id: OPS.setFillRGBColor,\n numArgs: 3,\n variableArgs: false\n },\n K: {\n id: OPS.setStrokeCMYKColor,\n numArgs: 4,\n variableArgs: false\n },\n k: {\n id: OPS.setFillCMYKColor,\n numArgs: 4,\n variableArgs: false\n },\n sh: {\n id: OPS.shadingFill,\n numArgs: 1,\n variableArgs: false\n },\n BI: {\n id: OPS.beginInlineImage,\n numArgs: 0,\n variableArgs: false\n },\n ID: {\n id: OPS.beginImageData,\n numArgs: 0,\n variableArgs: false\n },\n EI: {\n id: OPS.endInlineImage,\n numArgs: 1,\n variableArgs: false\n },\n Do: {\n id: OPS.paintXObject,\n numArgs: 1,\n variableArgs: false\n },\n MP: {\n id: OPS.markPoint,\n numArgs: 1,\n variableArgs: false\n },\n DP: {\n id: OPS.markPointProps,\n numArgs: 2,\n variableArgs: false\n },\n BMC: {\n id: OPS.beginMarkedContent,\n numArgs: 1,\n variableArgs: false\n },\n BDC: {\n id: OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false\n },\n EMC: {\n id: OPS.endMarkedContent,\n numArgs: 0,\n variableArgs: false\n },\n BX: {\n id: OPS.beginCompat,\n numArgs: 0,\n variableArgs: false\n },\n EX: {\n id: OPS.endCompat,\n numArgs: 0,\n variableArgs: false\n },\n BM: null,\n BD: null,\n true: null,\n fa: null,\n fal: null,\n fals: null,\n false: null,\n nu: null,\n nul: null,\n null: null\n }));\n }\n static MAX_INVALID_PATH_OPS = 10;\n constructor(stream, xref, stateManager = new StateManager()) {\n this.parser = new Parser({\n lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n xref\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._isPathOp = false;\n this._numInvalidPathOPS = 0;\n }\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n }\n read(operation) {\n let args = operation.args;\n while (true) {\n const obj = this.parser.getObj();\n if (obj instanceof Cmd) {\n const cmd = obj.cmd;\n const opSpec = EvaluatorPreprocessor.opMap[cmd];\n if (!opSpec) {\n warn(`Unknown command \"${cmd}\".`);\n continue;\n }\n const fn = opSpec.id;\n const numArgs = opSpec.numArgs;\n let argsLength = args !== null ? args.length : 0;\n if (!this._isPathOp) {\n this._numInvalidPathOPS = 0;\n }\n this._isPathOp = fn >= OPS.moveTo && fn <= OPS.endPath;\n if (!opSpec.variableArgs) {\n if (argsLength !== numArgs) {\n const nonProcessedArgs = this.nonProcessedArgs;\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n if (argsLength < numArgs) {\n const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} args.`;\n if (this._isPathOp && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) {\n throw new FormatError(`Invalid ${partialMsg}`);\n }\n warn(`Skipping ${partialMsg}`);\n if (args !== null) {\n args.length = 0;\n }\n continue;\n }\n } else if (argsLength > numArgs) {\n info(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} args.`);\n }\n this.preprocessCommand(fn, args);\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n if (obj === EOF) {\n return false;\n }\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n args.push(obj);\n if (args.length > 33) {\n throw new FormatError(\"Too many arguments\");\n }\n }\n }\n }\n preprocessCommand(fn, args) {\n switch (fn | 0) {\n case OPS.save:\n this.stateManager.save();\n break;\n case OPS.restore:\n this.stateManager.restore();\n break;\n case OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n }\n}\n\n;// ./src/core/default_appearance.js\n\n\n\n\n\n\n\n\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n constructor(str) {\n super(new StringStream(str));\n }\n parse() {\n const operation = {\n fn: 0,\n args: []\n };\n const result = {\n fontSize: 0,\n fontName: \"\",\n fontColor: new Uint8ClampedArray(3)\n };\n try {\n while (true) {\n operation.args.length = 0;\n if (!this.read(operation)) {\n break;\n }\n if (this.savedStatesDepth !== 0) {\n continue;\n }\n const {\n fn,\n args\n } = operation;\n switch (fn | 0) {\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillRGBColor:\n ColorSpaceUtils.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpaceUtils.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillCMYKColor:\n ColorSpaceUtils.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n }\n }\n } catch (reason) {\n warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n }\n return result;\n }\n}\nfunction parseDefaultAppearance(str) {\n return new DefaultAppearanceEvaluator(str).parse();\n}\nclass AppearanceStreamEvaluator extends EvaluatorPreprocessor {\n constructor(stream, xref, globalColorSpaceCache) {\n super(stream);\n this.stream = stream;\n this.xref = xref;\n this.globalColorSpaceCache = globalColorSpaceCache;\n this.resources = stream.dict?.get(\"Resources\");\n }\n parse() {\n const operation = {\n fn: 0,\n args: []\n };\n let result = {\n scaleFactor: 1,\n fontSize: 0,\n fontName: \"\",\n fontColor: new Uint8ClampedArray(3),\n fillColorSpace: ColorSpaceUtils.gray\n };\n let breakLoop = false;\n const stack = [];\n try {\n while (true) {\n operation.args.length = 0;\n if (breakLoop || !this.read(operation)) {\n break;\n }\n const {\n fn,\n args\n } = operation;\n switch (fn | 0) {\n case OPS.save:\n stack.push({\n scaleFactor: result.scaleFactor,\n fontSize: result.fontSize,\n fontName: result.fontName,\n fontColor: result.fontColor.slice(),\n fillColorSpace: result.fillColorSpace\n });\n break;\n case OPS.restore:\n result = stack.pop() || result;\n break;\n case OPS.setTextMatrix:\n const tm = Util.transform(this.stateManager.state.ctm, args);\n result.scaleFactor *= Math.hypot(tm[0], tm[1]);\n break;\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillColorSpace:\n result.fillColorSpace = ColorSpaceUtils.parse({\n cs: args[0],\n xref: this.xref,\n resources: this.resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n globalColorSpaceCache: this.globalColorSpaceCache,\n localColorSpaceCache: this._localColorSpaceCache\n });\n break;\n case OPS.setFillColor:\n const cs = result.fillColorSpace;\n cs.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillRGBColor:\n ColorSpaceUtils.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpaceUtils.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillCMYKColor:\n ColorSpaceUtils.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.showText:\n case OPS.showSpacedText:\n case OPS.nextLineShowText:\n case OPS.nextLineSetSpacingShowText:\n result.fontSize *= result.scaleFactor;\n breakLoop = true;\n break;\n }\n }\n } catch (reason) {\n warn(`parseAppearanceStream - ignoring errors: \"${reason}\".`);\n }\n this.stream.reset();\n delete result.scaleFactor;\n delete result.fillColorSpace;\n return result;\n }\n get _localColorSpaceCache() {\n return shadow(this, \"_localColorSpaceCache\", new LocalColorSpaceCache());\n }\n get _pdfFunctionFactory() {\n return shadow(this, \"_pdfFunctionFactory\", new PDFFunctionFactory({\n xref: this.xref\n }));\n }\n}\nfunction parseAppearanceStream(stream, xref, globalColorSpaceCache) {\n return new AppearanceStreamEvaluator(stream, xref, globalColorSpaceCache).parse();\n}\nfunction getPdfColor(color, isFill) {\n if (color[0] === color[1] && color[1] === color[2]) {\n const gray = color[0] / 255;\n return `${numberToString(gray)} ${isFill ? \"g\" : \"G\"}`;\n }\n return Array.from(color, c => numberToString(c / 255)).join(\" \") + ` ${isFill ? \"rg\" : \"RG\"}`;\n}\nfunction createDefaultAppearance({\n fontSize,\n fontName,\n fontColor\n}) {\n return `/${escapePDFName(fontName)} ${fontSize} Tf ${getPdfColor(fontColor, true)}`;\n}\nclass FakeUnicodeFont {\n static #fontNameId = 1;\n constructor(xref, fontFamily) {\n this.xref = xref;\n this.widths = null;\n this.firstChar = Infinity;\n this.lastChar = -Infinity;\n this.fontFamily = fontFamily;\n const canvas = new OffscreenCanvas(1, 1);\n this.ctxMeasure = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n this.fontName = Name.get(`InvalidPDFjsFont_${fontFamily}_${FakeUnicodeFont.#fontNameId++}`);\n }\n get fontDescriptorRef() {\n if (!FakeUnicodeFont._fontDescriptorRef) {\n const fontDescriptor = new Dict(this.xref);\n fontDescriptor.setIfName(\"Type\", \"FontDescriptor\");\n fontDescriptor.set(\"FontName\", this.fontName);\n fontDescriptor.set(\"FontFamily\", \"MyriadPro Regular\");\n fontDescriptor.set(\"FontBBox\", [0, 0, 0, 0]);\n fontDescriptor.setIfName(\"FontStretch\", \"Normal\");\n fontDescriptor.set(\"FontWeight\", 400);\n fontDescriptor.set(\"ItalicAngle\", 0);\n FakeUnicodeFont._fontDescriptorRef = this.xref.getNewPersistentRef(fontDescriptor);\n }\n return FakeUnicodeFont._fontDescriptorRef;\n }\n get descendantFontRef() {\n const descendantFont = new Dict(this.xref);\n descendantFont.set(\"BaseFont\", this.fontName);\n descendantFont.setIfName(\"Type\", \"Font\");\n descendantFont.setIfName(\"Subtype\", \"CIDFontType0\");\n descendantFont.setIfName(\"CIDToGIDMap\", \"Identity\");\n descendantFont.set(\"FirstChar\", this.firstChar);\n descendantFont.set(\"LastChar\", this.lastChar);\n descendantFont.set(\"FontDescriptor\", this.fontDescriptorRef);\n descendantFont.set(\"DW\", 1000);\n const widths = [];\n const chars = [...this.widths].sort();\n let currentChar = null;\n let currentWidths = null;\n for (const [char, width] of chars) {\n if (!currentChar) {\n currentChar = char;\n currentWidths = [width];\n continue;\n }\n if (char === currentChar + currentWidths.length) {\n currentWidths.push(width);\n } else {\n widths.push(currentChar, currentWidths);\n currentChar = char;\n currentWidths = [width];\n }\n }\n if (currentChar) {\n widths.push(currentChar, currentWidths);\n }\n descendantFont.set(\"W\", widths);\n const cidSystemInfo = new Dict(this.xref);\n cidSystemInfo.set(\"Ordering\", \"Identity\");\n cidSystemInfo.set(\"Registry\", \"Adobe\");\n cidSystemInfo.set(\"Supplement\", 0);\n descendantFont.set(\"CIDSystemInfo\", cidSystemInfo);\n return this.xref.getNewPersistentRef(descendantFont);\n }\n get baseFontRef() {\n const baseFont = new Dict(this.xref);\n baseFont.set(\"BaseFont\", this.fontName);\n baseFont.setIfName(\"Type\", \"Font\");\n baseFont.setIfName(\"Subtype\", \"Type0\");\n baseFont.setIfName(\"Encoding\", \"Identity-H\");\n baseFont.set(\"DescendantFonts\", [this.descendantFontRef]);\n baseFont.setIfName(\"ToUnicode\", \"Identity-H\");\n return this.xref.getNewPersistentRef(baseFont);\n }\n get resources() {\n const resources = new Dict(this.xref);\n const font = new Dict(this.xref);\n font.set(this.fontName.name, this.baseFontRef);\n resources.set(\"Font\", font);\n return resources;\n }\n _createContext() {\n this.widths = new Map();\n this.ctxMeasure.font = `1000px ${this.fontFamily}`;\n return this.ctxMeasure;\n }\n createFontResources(text) {\n const ctx = this._createContext();\n for (const line of text.split(/\\r\\n?|\\n/)) {\n for (const char of line.split(\"\")) {\n const code = char.charCodeAt(0);\n if (this.widths.has(code)) {\n continue;\n }\n const metrics = ctx.measureText(char);\n const width = Math.ceil(metrics.width);\n this.widths.set(code, width);\n this.firstChar = Math.min(code, this.firstChar);\n this.lastChar = Math.max(code, this.lastChar);\n }\n }\n return this.resources;\n }\n static getFirstPositionInfo(rect, rotation, fontSize) {\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n const lineHeight = (/* inlined export .LINE_FACTOR */1.35) * fontSize;\n const lineDescent = (/* inlined export .LINE_DESCENT_FACTOR */0.35) * fontSize;\n return {\n coords: [0, h + lineDescent - lineHeight],\n bbox: [0, 0, w, h],\n matrix: rotation !== 0 ? getRotationMatrix(rotation, h, lineHeight) : undefined\n };\n }\n createAppearance(text, rect, rotation, fontSize, bgColor, strokeAlpha) {\n const ctx = this._createContext();\n const lines = [];\n let maxWidth = -Infinity;\n for (const line of text.split(/\\r\\n?|\\n/)) {\n lines.push(line);\n const lineWidth = ctx.measureText(line).width;\n maxWidth = Math.max(maxWidth, lineWidth);\n for (const code of codePointIter(line)) {\n const char = String.fromCodePoint(code);\n let width = this.widths.get(code);\n if (width === undefined) {\n const metrics = ctx.measureText(char);\n width = Math.ceil(metrics.width);\n this.widths.set(code, width);\n this.firstChar = Math.min(code, this.firstChar);\n this.lastChar = Math.max(code, this.lastChar);\n }\n }\n }\n maxWidth *= fontSize / 1000;\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n const hscale = maxWidth > w ? w / maxWidth : 1;\n let vscale = 1;\n const lineHeight = (/* inlined export .LINE_FACTOR */1.35) * fontSize;\n const lineDescent = (/* inlined export .LINE_DESCENT_FACTOR */0.35) * fontSize;\n const maxHeight = lineHeight * lines.length;\n if (maxHeight > h) {\n vscale = h / maxHeight;\n }\n const fscale = Math.min(hscale, vscale);\n const newFontSize = fontSize * fscale;\n const buffer = [\"q\", `0 0 ${numberToString(w)} ${numberToString(h)} re W n`, `BT`, `1 0 0 1 0 ${numberToString(h + lineDescent)} Tm 0 Tc ${getPdfColor(bgColor, true)}`, `/${this.fontName.name} ${numberToString(newFontSize)} Tf`];\n const {\n resources\n } = this;\n strokeAlpha = typeof strokeAlpha === \"number\" && strokeAlpha >= 0 && strokeAlpha <= 1 ? strokeAlpha : 1;\n if (strokeAlpha !== 1) {\n buffer.push(\"/R0 gs\");\n const extGState = new Dict(this.xref);\n const r0 = new Dict(this.xref);\n r0.set(\"ca\", strokeAlpha);\n r0.set(\"CA\", strokeAlpha);\n r0.setIfName(\"Type\", \"ExtGState\");\n extGState.set(\"R0\", r0);\n resources.set(\"ExtGState\", extGState);\n }\n const vShift = numberToString(lineHeight);\n for (const line of lines) {\n buffer.push(`0 -${vShift} Td <${stringToUTF16HexString(line)}> Tj`);\n }\n buffer.push(\"ET\", \"Q\");\n const appearance = buffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(this.xref);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", [0, 0, w, h]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n appearanceStreamDict.set(\"Resources\", resources);\n if (rotation) {\n const matrix = getRotationMatrix(rotation, w, h);\n appearanceStreamDict.set(\"Matrix\", matrix);\n }\n return new StringStream(appearance, appearanceStreamDict);\n }\n}\n\n;// ./src/shared/scripting_utils.js\n/* unused harmony import specifier */ var scripting_utils_MathClamp;\n\nfunction makeColorComp(n) {\n return Math.floor(scripting_utils_MathClamp(n, 0, 1) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return scripting_utils_MathClamp(x, 0, 1) * 255;\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nconst DateFormats = [\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"];\nconst TimeFormats = [\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"];\n\n;// ./src/core/name_number_tree.js\n\n\nclass NameOrNumberTree {\n constructor(root, xref, type) {\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n getAll(isRaw = false) {\n const map = new Map();\n if (!this.root) {\n return map;\n }\n const xref = this.xref;\n const processed = new RefSet();\n if (this.root instanceof Ref) {\n processed.put(this.root);\n }\n const queue = [this.root];\n for (const node of queue) {\n const obj = xref.fetchIfRef(node);\n if (!(obj instanceof Dict)) {\n continue;\n }\n if (obj.has(\"Kids\")) {\n const kids = obj.get(\"Kids\");\n if (!Array.isArray(kids)) {\n continue;\n }\n for (const kid of kids) {\n if (kid instanceof Ref) {\n if (processed.has(kid)) {\n throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n }\n processed.put(kid);\n }\n queue.push(kid);\n }\n continue;\n }\n const entries = obj.get(this._type);\n if (!Array.isArray(entries)) {\n continue;\n }\n for (let i = 0, ii = entries.length; i < ii; i += 2) {\n map.set(isRaw ? entries[i] : xref.fetchIfRef(entries[i]), isRaw ? entries[i + 1] : xref.fetchIfRef(entries[i + 1]));\n }\n }\n return map;\n }\n getRaw(key) {\n if (!this.root) {\n return null;\n }\n const xref = this.xref;\n let kidsOrEntries = xref.fetchIfRef(this.root);\n let loopCount = 0;\n const MAX_LEVELS = 10;\n while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n warn(`Search depth limit reached for \"${this._type}\" tree.`);\n return null;\n }\n const kids = kidsOrEntries.get(\"Kids\");\n if (!Array.isArray(kids)) {\n return null;\n }\n let l = 0,\n r = kids.length - 1;\n while (l <= r) {\n const m = l + r >> 1;\n const kid = xref.fetchIfRef(kids[m]);\n const limits = kid.get(\"Limits\");\n if (key < xref.fetchIfRef(limits[0])) {\n r = m - 1;\n } else if (key > xref.fetchIfRef(limits[1])) {\n l = m + 1;\n } else {\n kidsOrEntries = kid;\n break;\n }\n }\n if (l > r) {\n return null;\n }\n }\n const entries = kidsOrEntries.get(this._type);\n if (Array.isArray(entries)) {\n let l = 0,\n r = entries.length - 2;\n while (l <= r) {\n const tmp = l + r >> 1,\n m = tmp + (tmp & 1);\n const currentKey = xref.fetchIfRef(entries[m]);\n if (key < currentKey) {\n r = m - 2;\n } else if (key > currentKey) {\n l = m + 2;\n } else {\n return entries[m + 1];\n }\n }\n }\n return null;\n }\n get(key) {\n return this.xref.fetchIfRef(this.getRaw(key));\n }\n}\nclass NameTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Names\");\n }\n}\nclass NumberTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Nums\");\n }\n}\n\n;// ./src/core/cleanup_helper.js\n\n\n\n\nfunction clearGlobalCaches() {\n clearPatternCaches();\n clearPrimitiveCaches();\n clearUnicodeCaches();\n WasmImage.cleanup();\n}\n\n;// ./src/core/file_spec.js\n\n\n\n\nclass FileSpec {\n constructor(root) {\n if (!(root instanceof Dict)) {\n return;\n }\n this.root = root;\n if (root.has(\"RF\")) {\n warn(\"Related file specifications are not supported\");\n }\n }\n get filename() {\n const item = FileSpec.pickPlatformItem(this.root);\n if (item && typeof item === \"string\") {\n return stringToPDFString(item, true).replaceAll(\"\\\\\\\\\", \"\\\\\").replaceAll(\"\\\\/\", \"/\").replaceAll(\"\\\\\", \"/\");\n }\n return \"\";\n }\n get description() {\n const desc = this.root?.get(\"Desc\");\n if (desc && typeof desc === \"string\") {\n return stringToPDFString(desc);\n }\n return \"\";\n }\n get serializable() {\n const {\n filename,\n description\n } = this;\n return {\n rawFilename: filename,\n filename: stripPath(filename) || \"unnamed\",\n description\n };\n }\n static pickPlatformItem(dict, raw = false) {\n if (dict instanceof Dict) {\n for (const key of [\"UF\", \"F\", \"Unix\", \"Mac\", \"DOS\"]) {\n if (dict.has(key)) {\n return raw ? dict.getRaw(key) : dict.get(key);\n }\n }\n }\n return null;\n }\n static hasEmbeddedFile(fileSpecDict) {\n return this.pickPlatformItem(fileSpecDict.get(\"EF\")) instanceof BaseStream;\n }\n static readContent(dict) {\n if (!(dict instanceof Dict)) {\n return null;\n }\n const ef = this.pickPlatformItem(dict.get(\"EF\"));\n if (!(ef instanceof BaseStream)) {\n warn(\"Embedded file specification points to non-existing/invalid content\");\n return null;\n }\n return this.readStreamContent(ef);\n }\n static readStreamContent(stream) {\n const encrypt = stream.dict?.xref?.encrypt;\n if (encrypt?.encryptionKey === null) {\n throw new PasswordException(\"No password given\", PasswordResponses.NEED_PASSWORD);\n }\n return stream.getBytes();\n }\n}\n\n;// ./src/core/xml_parser.js\n\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10\n};\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\nclass XMLParserBase {\n static get _entityRegex() {\n return shadow(this, \"_entityRegex\", /&(?:#x([^;&]+)|#([^;&]+)|([^;&]+));/g);\n }\n _resolveEntities(s) {\n return s.replaceAll(XMLParserBase._entityRegex, (all, hex, dec, entity) => {\n if (hex || dec) {\n const code = hex ? parseInt(hex, 16) : parseInt(dec, 10);\n return code >= 0 && code <= 0x10ffff ? String.fromCodePoint(code) : all;\n }\n switch (entity) {\n case \"lt\":\n return \"<\";\n case \"gt\":\n return \">\";\n case \"amp\":\n return \"&\";\n case \"quot\":\n return '\"';\n case \"apos\":\n return \"'\";\n }\n return this.onResolveEntity(entity);\n });\n }\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (pos < s.length && s[pos] !== \">\" && s[pos] !== \"/\" && s[pos] !== \"?\") {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== \"=\") {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue)\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start\n };\n }\n _parseProcessingInstruction(s, start) {\n let pos = start;\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"?\" && s[pos] !== \"/\") {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start\n };\n }\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case \"?\":\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\") {\n isClosed = true;\n } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== \">\") {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n onResolveEntity(name) {\n return `&${name};`;\n }\n onPi(name, value) {}\n onComment(text) {}\n onCdata(text) {}\n onDoctype(doctypeContent) {}\n onText(text) {}\n onBeginElement(name, attributes, isEmpty) {}\n onEndElement(name) {}\n onError(code) {}\n}\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n Object.defineProperty(this, \"parentNode\", {\n value: null,\n writable: true\n });\n }\n get firstChild() {\n return this.childNodes?.[0];\n }\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n if (!childNodes) {\n return undefined;\n }\n const index = childNodes.indexOf(this);\n if (index === -1) {\n return undefined;\n }\n return childNodes[index + 1];\n }\n get textContent() {\n return !this.childNodes ? this.nodeValue || \"\" : this.childNodes.map(child => child.textContent).join(\"\");\n }\n get children() {\n return this.childNodes || [];\n }\n hasChildNodes() {\n return this.childNodes?.length > 0;\n }\n searchNode(paths, pos) {\n if (pos >= paths.length) {\n return this;\n }\n const component = paths[pos];\n if (component.name.startsWith(\"#\") && pos < paths.length - 1) {\n return this.searchNode(paths, pos + 1);\n }\n const stack = [];\n let node = this;\n while (true) {\n if (component.name === node.nodeName) {\n if (component.pos === 0) {\n const res = node.searchNode(paths, pos + 1);\n if (res !== null) {\n return res;\n }\n } else if (stack.length === 0) {\n return null;\n } else {\n const [parent] = stack.pop();\n let siblingPos = 0;\n for (const child of parent.childNodes) {\n if (component.name === child.nodeName) {\n if (siblingPos === component.pos) {\n return child.searchNode(paths, pos + 1);\n }\n siblingPos++;\n }\n }\n return node.searchNode(paths, pos + 1);\n }\n }\n if (node.childNodes?.length > 0) {\n stack.push([node, 0]);\n node = node.childNodes[0];\n } else if (stack.length === 0) {\n return null;\n } else {\n while (stack.length !== 0) {\n const [parent, currentPos] = stack.pop();\n const newPos = currentPos + 1;\n if (newPos < parent.childNodes.length) {\n stack.push([parent, newPos]);\n node = parent.childNodes[newPos];\n break;\n }\n }\n if (stack.length === 0) {\n return null;\n }\n }\n }\n }\n dump(buffer) {\n if (this.nodeName === \"#text\") {\n buffer.push(encodeToXmlString(this.nodeValue));\n return;\n }\n buffer.push(`<${this.nodeName}`);\n if (this.attributes) {\n for (const attribute of this.attributes) {\n buffer.push(` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`);\n }\n }\n if (this.hasChildNodes()) {\n buffer.push(\">\");\n for (const child of this.childNodes) {\n child.dump(buffer);\n }\n buffer.push(``);\n } else if (this.nodeValue) {\n buffer.push(`>${encodeToXmlString(this.nodeValue)}`);\n } else {\n buffer.push(\"/>\");\n }\n }\n}\nclass SimpleXMLParser extends XMLParserBase {\n constructor({\n hasAttributes = false,\n lowerCaseName = false\n }) {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n this._hasAttributes = hasAttributes;\n this._lowerCaseName = lowerCaseName;\n }\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n this.parseXml(data);\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined;\n }\n return {\n documentElement\n };\n }\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n onBeginElement(name, attributes, isEmpty) {\n if (this._lowerCaseName) {\n name = name.toLowerCase();\n }\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n if (this._hasAttributes) {\n node.attributes = attributes;\n }\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment.at(-1);\n if (!lastElement) {\n return null;\n }\n for (const childNode of lastElement.childNodes) {\n childNode.parentNode = lastElement;\n }\n return lastElement;\n }\n onError(code) {\n this._errorCode = code;\n }\n}\n\n;// ./src/core/metadata_parser.js\n\nclass MetadataParser {\n constructor(data) {\n data = this._repair(data);\n const parser = new SimpleXMLParser({\n lowerCaseName: true\n });\n const xmlDocument = parser.parseFromString(data);\n this._metadataMap = new Map();\n this._data = data;\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n _repair(data) {\n return data.replace(/^[^<]+/, \"\").replaceAll(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes.replaceAll(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n }).replaceAll(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"quot\":\n return '\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n const charBuf = [\">\"];\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {\n charBuf.push(String.fromCharCode(code));\n } else {\n charBuf.push(\"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\");\n }\n }\n return charBuf.join(\"\");\n });\n }\n _getSequence(entry) {\n const name = entry.nodeName;\n if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n return null;\n }\n return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n }\n _parseArray(entry) {\n if (!entry.hasChildNodes()) {\n return;\n }\n const [seqNode] = entry.childNodes;\n const sequence = this._getSequence(seqNode) || [];\n this._metadataMap.set(entry.nodeName, sequence.map(node => node.textContent.trim()));\n }\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n if (rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n for (const desc of rdf.childNodes) {\n if (desc.nodeName !== \"rdf:description\") {\n continue;\n }\n for (const entry of desc.childNodes) {\n const name = entry.nodeName;\n switch (name) {\n case \"#text\":\n continue;\n case \"dc:creator\":\n case \"dc:subject\":\n this._parseArray(entry);\n continue;\n }\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n get serializable() {\n return {\n parsedData: this._metadataMap,\n rawData: this._data\n };\n }\n}\n\n;// ./src/core/sound.js\n\n\nconst WAV_HEADER_SIZE = 44;\nfunction getSoundFormat(dict) {\n if (!dict || dict.has(\"CO\")) {\n return null;\n }\n const sampleRate = dict.get(\"R\");\n if (!Number.isInteger(sampleRate) || sampleRate <= 0) {\n return null;\n }\n const channels = dict.get(\"C\") ?? 1;\n if (!Number.isInteger(channels) || channels < 1 || channels > 2) {\n return null;\n }\n const bitsPerSample = dict.get(\"B\") ?? 8;\n if (bitsPerSample !== 8 && bitsPerSample !== 16) {\n return null;\n }\n const e = dict.get(\"E\");\n let encoding = \"Raw\";\n if (e !== undefined) {\n encoding = e instanceof Name ? e.name : null;\n }\n if (encoding !== \"Raw\" && encoding !== \"Signed\") {\n return null;\n }\n return {\n channels,\n sampleRate,\n bitsPerSample,\n encoding\n };\n}\nfunction soundStreamToWav(stream, samples) {\n const format = getSoundFormat(stream.dict);\n if (!format) {\n return null;\n }\n const {\n channels,\n sampleRate,\n bitsPerSample,\n encoding\n } = format;\n const blockAlign = channels * (bitsPerSample >> 3);\n const dataLength = samples.length - samples.length % blockAlign;\n if (dataLength === 0) {\n return null;\n }\n const wav = new Uint8Array(WAV_HEADER_SIZE + dataLength);\n const view = new DataView(wav.buffer);\n wav.set(stringToBytes(\"RIFF\"), 0);\n view.setUint32(4, WAV_HEADER_SIZE - 8 + dataLength, true);\n wav.set(stringToBytes(\"WAVE\"), 8);\n wav.set(stringToBytes(\"fmt \"), 12);\n view.setUint32(16, 16, true);\n view.setUint16(20, 1, true);\n view.setUint16(22, channels, true);\n view.setUint32(24, sampleRate, true);\n view.setUint32(28, sampleRate * blockAlign, true);\n view.setUint16(32, blockAlign, true);\n view.setUint16(34, bitsPerSample, true);\n wav.set(stringToBytes(\"data\"), 36);\n view.setUint32(40, dataLength, true);\n if (bitsPerSample === 16) {\n const signed = encoding === \"Signed\";\n for (let i = 0; i < dataLength; i += 2) {\n let value = samples[i] << 8 | samples[i + 1];\n if (signed) {\n if (value >= 0x8000) {\n value -= 0x10000;\n }\n } else {\n value -= 0x8000;\n }\n view.setInt16(WAV_HEADER_SIZE + i, value, true);\n }\n } else if (encoding === \"Signed\") {\n for (let i = 0; i < dataLength; i++) {\n wav[WAV_HEADER_SIZE + i] = samples[i] + 128 & 0xff;\n }\n } else {\n wav.set(samples.subarray(0, dataLength), WAV_HEADER_SIZE);\n }\n return wav;\n}\n\n;// ./src/core/struct_tree.js\n\n\n\n\n\n\n\nconst MAX_DEPTH = 40;\nconst TABLE_SPAN_ATTRIBUTES = [[\"RowSpan\", \"rowSpan\"], [\"ColSpan\", \"colSpan\"]];\nconst StructElementType = {\n PAGE_CONTENT: 1,\n STREAM_CONTENT: 2,\n OBJECT: 3,\n ANNOTATION: 4,\n ELEMENT: 5\n};\nclass StructTreeRoot {\n kidRefToPosition = undefined;\n parentTree = null;\n roleMap = new Map();\n structParentIds = null;\n constructor(xref, rootDict, rootRef) {\n this.xref = xref;\n this.dict = rootDict;\n this.ref = rootRef instanceof Ref ? rootRef : null;\n const roleMap = rootDict.get(\"RoleMap\");\n if (roleMap instanceof Dict) {\n for (const [key, value] of roleMap) {\n if (value instanceof Name) {\n this.roleMap.set(key, value.name);\n }\n }\n }\n const parentTree = rootDict.getRaw(\"ParentTree\");\n if (parentTree) {\n this.parentTree = new NumberTree(parentTree, xref);\n }\n }\n getKidPosition(kidRef) {\n if (this.kidRefToPosition === undefined) {\n const obj = this.dict.get(\"K\");\n if (Array.isArray(obj)) {\n const map = this.kidRefToPosition = new Map();\n for (let i = 0, ii = obj.length; i < ii; i++) {\n const ref = obj[i];\n if (ref) {\n map.set(ref.toString(), i);\n }\n }\n } else if (obj instanceof Dict) {\n this.kidRefToPosition = new Map([[obj.objId, 0]]);\n } else if (!obj) {\n this.kidRefToPosition = new Map();\n } else {\n this.kidRefToPosition = null;\n }\n }\n return this.kidRefToPosition ? this.kidRefToPosition.get(kidRef) ?? NaN : -1;\n }\n #addIdToPage(pageRef, id, type, objId) {\n if (!(pageRef instanceof Ref) || id < 0) {\n return;\n }\n (this.structParentIds ??= new RefMap()).getOrPutComputed(pageRef, makeArr).push([id, type, objId]);\n }\n addAnnotationIdToPage(pageRef, id, ref) {\n this.#addIdToPage(pageRef, id, StructElementType.ANNOTATION, ref instanceof Ref ? ref.toString() : null);\n }\n static async canCreateStructureTree({\n catalogRef,\n pdfManager,\n newAnnotationsByPage\n }) {\n if (!(catalogRef instanceof Ref)) {\n warn(\"Cannot save the struct tree: no catalog reference.\");\n return false;\n }\n let nextKey = 0;\n let hasNothingToUpdate = true;\n for (const [pageIndex, elements] of newAnnotationsByPage) {\n const {\n ref: pageRef\n } = await pdfManager.getPage(pageIndex);\n if (!(pageRef instanceof Ref)) {\n warn(`Cannot save the struct tree: page ${pageIndex} has no ref.`);\n hasNothingToUpdate = true;\n break;\n }\n for (const element of elements) {\n if (element.accessibilityData?.type) {\n element.parentTreeId = nextKey++;\n hasNothingToUpdate = false;\n }\n }\n }\n if (hasNothingToUpdate) {\n for (const elements of newAnnotationsByPage.values()) {\n for (const element of elements) {\n delete element.parentTreeId;\n }\n }\n return false;\n }\n return true;\n }\n static async createStructureTree({\n newAnnotationsByPage,\n xref,\n catalogRef,\n pdfManager,\n changes\n }) {\n const root = await pdfManager.ensureCatalog(\"cloneDict\");\n const cache = new RefMap();\n cache.put(catalogRef, root);\n const structTreeRootRef = xref.getNewTemporaryRef();\n root.set(\"StructTreeRoot\", structTreeRootRef);\n const structTreeRoot = new Dict(xref);\n structTreeRoot.set(\"Type\", Name.get(\"StructTreeRoot\"));\n const parentTreeRef = xref.getNewTemporaryRef();\n structTreeRoot.set(\"ParentTree\", parentTreeRef);\n const kids = [];\n structTreeRoot.set(\"K\", kids);\n cache.put(structTreeRootRef, structTreeRoot);\n const parentTree = new Dict(xref);\n const nums = [];\n parentTree.set(\"Nums\", nums);\n const nextKey = await this.#writeKids({\n newAnnotationsByPage,\n structTreeRootRef,\n structTreeRoot: null,\n kids,\n nums,\n xref,\n pdfManager,\n changes,\n cache\n });\n structTreeRoot.set(\"ParentTreeNextKey\", nextKey);\n cache.put(parentTreeRef, parentTree);\n for (const [ref, obj] of cache.items()) {\n changes.put(ref, {\n data: obj\n });\n }\n }\n async canUpdateStructTree({\n pdfManager,\n newAnnotationsByPage\n }) {\n if (!this.ref) {\n warn(\"Cannot update the struct tree: no root reference.\");\n return false;\n }\n let nextKey = this.dict.get(\"ParentTreeNextKey\");\n if (!Number.isInteger(nextKey) || nextKey < 0) {\n warn(\"Cannot update the struct tree: invalid next key.\");\n return false;\n }\n const parentTree = this.dict.get(\"ParentTree\");\n if (!(parentTree instanceof Dict)) {\n warn(\"Cannot update the struct tree: ParentTree isn't a dict.\");\n return false;\n }\n const nums = parentTree.get(\"Nums\");\n if (!Array.isArray(nums)) {\n warn(\"Cannot update the struct tree: nums isn't an array.\");\n return false;\n }\n const numberTree = new NumberTree(parentTree, this.xref);\n for (const pageIndex of newAnnotationsByPage.keys()) {\n const {\n pageDict\n } = await pdfManager.getPage(pageIndex);\n if (!pageDict.has(\"StructParents\")) {\n continue;\n }\n const id = pageDict.get(\"StructParents\");\n if (!Number.isInteger(id) || !Array.isArray(numberTree.get(id))) {\n warn(`Cannot save the struct tree: page ${pageIndex} has a wrong id.`);\n return false;\n }\n }\n let hasNothingToUpdate = true;\n for (const [pageIndex, elements] of newAnnotationsByPage) {\n const {\n pageDict\n } = await pdfManager.getPage(pageIndex);\n StructTreeRoot.#collectParents({\n elements,\n xref: this.xref,\n pageDict,\n numberTree\n });\n for (const element of elements) {\n if (element.accessibilityData?.type) {\n if (!(element.accessibilityData.structParent >= 0)) {\n element.parentTreeId = nextKey++;\n }\n hasNothingToUpdate = false;\n }\n }\n }\n if (hasNothingToUpdate) {\n for (const elements of newAnnotationsByPage.values()) {\n for (const element of elements) {\n delete element.parentTreeId;\n delete element.structTreeParent;\n }\n }\n return false;\n }\n return true;\n }\n async updateStructureTree({\n newAnnotationsByPage,\n pdfManager,\n changes\n }) {\n const {\n ref: structTreeRootRef,\n xref\n } = this;\n const structTreeRoot = this.dict.clone();\n const cache = new RefMap();\n cache.put(structTreeRootRef, structTreeRoot);\n let parentTreeRef = structTreeRoot.getRaw(\"ParentTree\");\n let parentTree;\n if (parentTreeRef instanceof Ref) {\n parentTree = xref.fetch(parentTreeRef);\n } else {\n parentTree = parentTreeRef;\n parentTreeRef = xref.getNewTemporaryRef();\n structTreeRoot.set(\"ParentTree\", parentTreeRef);\n }\n parentTree = parentTree.clone();\n cache.put(parentTreeRef, parentTree);\n let nums = parentTree.getRaw(\"Nums\");\n let numsRef = null;\n if (nums instanceof Ref) {\n numsRef = nums;\n nums = xref.fetch(numsRef);\n }\n nums = nums.slice();\n if (!numsRef) {\n parentTree.set(\"Nums\", nums);\n }\n const newNextKey = await StructTreeRoot.#writeKids({\n newAnnotationsByPage,\n structTreeRootRef,\n structTreeRoot: this,\n kids: null,\n nums,\n xref,\n pdfManager,\n changes,\n cache\n });\n if (newNextKey === -1) {\n return;\n }\n structTreeRoot.set(\"ParentTreeNextKey\", newNextKey);\n if (numsRef) {\n cache.put(numsRef, nums);\n }\n for (const [ref, obj] of cache.items()) {\n changes.put(ref, {\n data: obj\n });\n }\n }\n static async #writeKids({\n newAnnotationsByPage,\n structTreeRootRef,\n structTreeRoot,\n kids,\n nums,\n xref,\n pdfManager,\n changes,\n cache\n }) {\n const objr = Name.get(\"OBJR\");\n let nextKey = -1;\n let structTreePageObjs;\n for (const [pageIndex, elements] of newAnnotationsByPage) {\n const page = await pdfManager.getPage(pageIndex);\n const {\n ref: pageRef\n } = page;\n const isPageRef = pageRef instanceof Ref;\n for (const {\n accessibilityData,\n ref,\n parentTreeId,\n structTreeParent\n } of elements) {\n if (!accessibilityData?.type) {\n continue;\n }\n const {\n structParent\n } = accessibilityData;\n if (structTreeRoot && Number.isInteger(structParent) && structParent >= 0) {\n let objs = (structTreePageObjs ||= new Map()).get(pageIndex);\n if (objs === undefined) {\n const structTreePage = new StructTreePage(structTreeRoot, page.pageDict);\n objs = structTreePage.collectObjects(pageRef);\n structTreePageObjs.set(pageIndex, objs);\n }\n const objRef = objs?.get(structParent);\n if (objRef) {\n const tagDict = xref.fetch(objRef).clone();\n StructTreeRoot.#writeProperties(tagDict, accessibilityData);\n changes.put(objRef, {\n data: tagDict\n });\n continue;\n }\n }\n nextKey = Math.max(nextKey, parentTreeId);\n const tagRef = xref.getNewTemporaryRef();\n const tagDict = new Dict(xref);\n StructTreeRoot.#writeProperties(tagDict, accessibilityData);\n await this.#updateParentTag({\n structTreeParent,\n tagDict,\n newTagRef: tagRef,\n structTreeRootRef,\n fallbackKids: kids,\n xref,\n cache\n });\n const objDict = new Dict(xref);\n tagDict.set(\"K\", objDict);\n objDict.set(\"Type\", objr);\n if (isPageRef) {\n objDict.set(\"Pg\", pageRef);\n }\n objDict.set(\"Obj\", ref);\n cache.put(tagRef, tagDict);\n nums.push(parentTreeId, tagRef);\n }\n }\n return nextKey + 1;\n }\n static #writeProperties(tagDict, {\n type,\n title,\n lang,\n alt,\n expanded,\n actualText\n }) {\n tagDict.set(\"S\", Name.get(type));\n if (title) {\n tagDict.set(\"T\", stringToAsciiOrUTF16BE(title));\n }\n if (lang) {\n tagDict.set(\"Lang\", stringToAsciiOrUTF16BE(lang));\n }\n if (alt) {\n tagDict.set(\"Alt\", stringToAsciiOrUTF16BE(alt));\n }\n if (expanded) {\n tagDict.set(\"E\", stringToAsciiOrUTF16BE(expanded));\n }\n if (actualText) {\n tagDict.set(\"ActualText\", stringToAsciiOrUTF16BE(actualText));\n }\n }\n static #collectParents({\n elements,\n xref,\n pageDict,\n numberTree\n }) {\n const idToElements = new Map();\n for (const element of elements) {\n if (element.structTreeParentId) {\n const id = parseInt(element.structTreeParentId.split(\"_mc\")[1], 10);\n idToElements.getOrInsertComputed(id, makeArr).push(element);\n }\n }\n const id = pageDict.get(\"StructParents\");\n if (!Number.isInteger(id)) {\n return;\n }\n const parentArray = numberTree.get(id);\n const updateElement = (kid, pageKid, kidRef) => {\n const elems = idToElements.get(kid);\n if (elems) {\n const parentRef = pageKid.getRaw(\"P\");\n const parentDict = xref.fetchIfRef(parentRef);\n if (parentRef instanceof Ref && parentDict instanceof Dict) {\n const params = {\n ref: kidRef,\n dict: pageKid\n };\n for (const element of elems) {\n element.structTreeParent = params;\n }\n }\n return true;\n }\n return false;\n };\n for (const kidRef of parentArray) {\n if (!(kidRef instanceof Ref)) {\n continue;\n }\n const pageKid = xref.fetch(kidRef);\n const k = pageKid.get(\"K\");\n if (Number.isInteger(k)) {\n updateElement(k, pageKid, kidRef);\n continue;\n }\n if (!Array.isArray(k)) {\n continue;\n }\n for (let kid of k) {\n kid = xref.fetchIfRef(kid);\n if (Number.isInteger(kid) && updateElement(kid, pageKid, kidRef)) {\n break;\n }\n if (!(kid instanceof Dict)) {\n continue;\n }\n if (!isName(kid.get(\"Type\"), \"MCR\")) {\n break;\n }\n const mcid = kid.get(\"MCID\");\n if (Number.isInteger(mcid) && updateElement(mcid, pageKid, kidRef)) {\n break;\n }\n }\n }\n }\n static async #updateParentTag({\n structTreeParent,\n tagDict,\n newTagRef,\n structTreeRootRef,\n fallbackKids,\n xref,\n cache\n }) {\n let ref = null;\n let parentRef;\n if (structTreeParent) {\n ({\n ref\n } = structTreeParent);\n parentRef = structTreeParent.dict.getRaw(\"P\") || structTreeRootRef;\n } else {\n parentRef = structTreeRootRef;\n }\n tagDict.set(\"P\", parentRef);\n const parentDict = xref.fetchIfRef(parentRef);\n if (!parentDict) {\n fallbackKids.push(newTagRef);\n return;\n }\n const cachedParentDict = cache.getOrPutComputed(parentRef, () => parentDict.clone());\n const parentKidsRaw = cachedParentDict.getRaw(\"K\");\n let cachedParentKids = parentKidsRaw instanceof Ref ? cache.get(parentKidsRaw) : null;\n if (!cachedParentKids) {\n cachedParentKids = xref.fetchIfRef(parentKidsRaw);\n cachedParentKids = Array.isArray(cachedParentKids) ? cachedParentKids.slice() : [parentKidsRaw];\n const parentKidsRef = xref.getNewTemporaryRef();\n cachedParentDict.set(\"K\", parentKidsRef);\n cache.put(parentKidsRef, cachedParentKids);\n }\n const index = cachedParentKids.indexOf(ref);\n cachedParentKids.splice(index >= 0 ? index + 1 : cachedParentKids.length, 0, newTagRef);\n }\n}\nclass StructElementNode {\n constructor(tree, dict) {\n this.tree = tree;\n this.xref = tree.xref;\n this.dict = dict;\n this.kids = [];\n this.parseKids();\n }\n get role() {\n const nameObj = this.dict.get(\"S\");\n const name = nameObj instanceof Name ? nameObj.name : \"\";\n const {\n root\n } = this.tree;\n return root.roleMap.get(name) ?? name;\n }\n get mathML() {\n let AFs = this.dict.get(\"AF\") || [];\n if (!Array.isArray(AFs)) {\n AFs = [AFs];\n }\n for (let af of AFs) {\n af = this.xref.fetchIfRef(af);\n if (!isDict(af, \"Filespec\") || !isName(af.get(\"AFRelationship\"), \"Supplement\")) {\n continue;\n }\n const fileStream = FileSpec.pickPlatformItem(af.get(\"EF\"));\n if (!(fileStream instanceof BaseStream) || !isDict(fileStream.dict, \"EmbeddedFile\") || !isName(fileStream.dict.get(\"Subtype\"), \"application/mathml+xml\")) {\n continue;\n }\n return stringToUTF8String(fileStream.getString());\n }\n for (const attributes of this.attributes) {\n if (isName(attributes.get(\"O\"), \"MSFT_Office\")) {\n const mathml = attributes.get(\"MSFT_MathML\");\n return mathml ? stringToPDFString(mathml) : null;\n }\n }\n return null;\n }\n #collectAttributes(value, attributes) {\n const pending = [value];\n const visited = new RefSet();\n while (pending.length > 0) {\n value = pending.pop();\n if (value instanceof Ref) {\n if (visited.has(value)) {\n continue;\n }\n visited.put(value);\n value = this.xref.fetch(value);\n }\n if (value instanceof BaseStream) {\n value = value.dict;\n }\n if (value instanceof Dict) {\n attributes.push(value);\n continue;\n }\n if (!Array.isArray(value)) {\n continue;\n }\n for (let i = value.length - 1; i >= 0; i--) {\n if (!Number.isInteger(value[i])) {\n pending.push(value[i]);\n }\n }\n }\n }\n get attributes() {\n const attributes = [];\n const classes = this.dict.getArray(\"C\");\n if (classes !== undefined) {\n const classMap = this.tree.rootDict?.get(\"ClassMap\");\n if (classMap instanceof Dict) {\n for (const className of Array.isArray(classes) ? classes : [classes]) {\n if (className instanceof Name) {\n this.#collectAttributes(classMap.getRaw(className.name), attributes);\n }\n }\n }\n }\n this.#collectAttributes(this.dict.getRaw(\"A\"), attributes);\n return shadow(this, \"attributes\", attributes);\n }\n get tableAttributes() {\n const {\n role\n } = this;\n if (role !== \"Table\" && role !== \"TH\" && role !== \"TD\") {\n return null;\n }\n const map = new Map();\n for (const attributes of this.attributes) {\n if (!isName(attributes.get(\"O\"), \"Table\")) {\n continue;\n }\n if (role === \"Table\") {\n if (attributes.has(\"Summary\")) {\n const summary = attributes.get(\"Summary\");\n if (typeof summary === \"string\" && summary) {\n map.set(\"summary\", stringToPDFString(summary));\n } else {\n map.delete(\"summary\");\n }\n }\n continue;\n }\n for (const [key, name] of TABLE_SPAN_ATTRIBUTES) {\n if (!attributes.has(key)) {\n continue;\n }\n const value = attributes.get(key);\n if (Number.isInteger(value) && value > 1) {\n map.set(name, value);\n } else {\n map.delete(name);\n }\n }\n if (attributes.has(\"Headers\")) {\n map.delete(\"headers\");\n const headers = attributes.getArray(\"Headers\");\n if (Array.isArray(headers)) {\n const ids = headers.filter(header => typeof header === \"string\").map(stringToPDFString);\n if (ids.length > 0) {\n map.set(\"headers\", ids);\n }\n }\n }\n if (role === \"TH\" && attributes.has(\"Scope\")) {\n map.delete(\"scope\");\n const scope = attributes.get(\"Scope\");\n if (scope instanceof Name && [\"Row\", \"Column\", \"Both\"].includes(scope.name)) {\n map.set(\"scope\", scope.name);\n }\n }\n if (role === \"TH\" && attributes.has(\"Short\")) {\n map.delete(\"short\");\n const short = attributes.get(\"Short\");\n if (typeof short === \"string\" && short) {\n map.set(\"short\", stringToPDFString(short));\n }\n }\n }\n return map.size ? map : null;\n }\n parseKids() {\n let pageObjId = null;\n const objRef = this.dict.getRaw(\"Pg\");\n if (objRef instanceof Ref) {\n pageObjId = objRef.toString();\n }\n const kids = this.dict.get(\"K\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n const element = this.parseKid(pageObjId, this.xref.fetchIfRef(kid));\n if (element) {\n this.kids.push(element);\n }\n }\n } else {\n const element = this.parseKid(pageObjId, kids);\n if (element) {\n this.kids.push(element);\n }\n }\n }\n parseKid(pageObjId, kid) {\n if (Number.isInteger(kid)) {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.PAGE_CONTENT,\n mcid: kid,\n pageObjId\n });\n }\n if (!(kid instanceof Dict)) {\n return null;\n }\n const pageRef = kid.getRaw(\"Pg\");\n if (pageRef instanceof Ref) {\n pageObjId = pageRef.toString();\n }\n const type = kid.get(\"Type\") instanceof Name ? kid.get(\"Type\").name : null;\n if (type === \"MCR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n const kidRef = kid.getRaw(\"Stm\");\n return new StructElement({\n type: StructElementType.STREAM_CONTENT,\n refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\n pageObjId,\n mcid: kid.get(\"MCID\")\n });\n }\n if (type === \"OBJR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n const kidRef = kid.getRaw(\"Obj\");\n return new StructElement({\n type: StructElementType.OBJECT,\n refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\n pageObjId\n });\n }\n return new StructElement({\n type: StructElementType.ELEMENT,\n dict: kid\n });\n }\n}\nclass StructElement {\n constructor({\n type,\n dict = null,\n mcid = null,\n pageObjId = null,\n refObjId = null\n }) {\n this.type = type;\n this.dict = dict;\n this.mcid = mcid;\n this.pageObjId = pageObjId;\n this.refObjId = refObjId;\n this.parentNode = null;\n }\n}\nclass StructTreePage {\n constructor(structTreeRoot, pageDict) {\n this.root = structTreeRoot;\n this.xref = structTreeRoot?.xref ?? null;\n this.rootDict = structTreeRoot?.dict ?? null;\n this.pageDict = pageDict;\n this.nodes = [];\n }\n collectObjects(pageRef) {\n if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\n return null;\n }\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return null;\n }\n const ids = this.root.structParentIds?.get(pageRef);\n if (!ids) {\n return null;\n }\n const map = new Map();\n const numberTree = new NumberTree(parentTree, this.xref);\n for (const [elemId] of ids) {\n const obj = numberTree.getRaw(elemId);\n if (obj instanceof Ref) {\n map.set(elemId, obj);\n }\n }\n return map;\n }\n parse(pageRef) {\n if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\n return;\n }\n const {\n parentTree\n } = this.root;\n if (!parentTree) {\n return;\n }\n const id = this.pageDict.get(\"StructParents\");\n const ids = this.root.structParentIds?.get(pageRef);\n if (!Number.isInteger(id) && !ids) {\n return;\n }\n const map = new Map();\n if (Number.isInteger(id)) {\n const parentArray = parentTree.get(id);\n if (Array.isArray(parentArray)) {\n for (const ref of parentArray) {\n if (ref instanceof Ref) {\n this.addNode(this.xref.fetch(ref), map);\n }\n }\n }\n }\n if (!ids) {\n return;\n }\n for (const [elemId, type, objId] of ids) {\n const obj = parentTree.get(elemId);\n if (!obj) {\n continue;\n }\n const elem = this.addNode(this.xref.fetchIfRef(obj), map);\n if (!elem || !objId) {\n continue;\n }\n for (const kid of elem.kids) {\n if (kid.type === StructElementType.OBJECT && kid.refObjId === objId) {\n kid.type = type;\n }\n }\n }\n }\n addNode(dict, map, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree MAX_DEPTH reached.\");\n return null;\n }\n if (!(dict instanceof Dict)) {\n return null;\n }\n if (map.has(dict)) {\n return map.get(dict);\n }\n const element = new StructElementNode(this, dict);\n map.set(dict, element);\n switch (element.role) {\n case \"L\":\n case \"LBody\":\n case \"LI\":\n case \"Table\":\n case \"THead\":\n case \"TBody\":\n case \"TFoot\":\n case \"TR\":\n {\n for (const kid of element.kids) {\n if (kid.type === StructElementType.ELEMENT) {\n this.addNode(kid.dict, map, level - 1);\n }\n }\n }\n }\n const parent = dict.get(\"P\");\n if (!(parent instanceof Dict) || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n if (!this.addTopLevelNode(dict, element)) {\n map.delete(dict);\n }\n return element;\n }\n const parentNode = this.addNode(parent, map, level + 1);\n if (!parentNode) {\n return element;\n }\n let save = false;\n for (const kid of parentNode.kids) {\n if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n kid.parentNode = element;\n save = true;\n }\n }\n if (!save) {\n map.delete(dict);\n }\n return element;\n }\n addTopLevelNode(dict, element) {\n const index = this.root.getKidPosition(dict.objId);\n if (isNaN(index)) {\n return false;\n }\n if (index !== -1) {\n this.nodes[index] = element;\n }\n return true;\n }\n get serializable() {\n function nodeToSerializable(node, parent, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree too deep to be fully serialized.\");\n return;\n }\n const obj = Object.create(null);\n obj.role = node.role;\n obj.children = [];\n parent.children.push(obj);\n let alt = node.dict.get(\"Alt\");\n if (typeof alt !== \"string\") {\n alt = node.dict.get(\"ActualText\");\n }\n if (typeof alt === \"string\") {\n obj.alt = stringToPDFString(alt);\n }\n const structId = node.dict.get(\"ID\");\n if (obj.role === \"TH\" && typeof structId === \"string\" && structId) {\n obj.structId = stringToPDFString(structId);\n }\n node.tableAttributes?.forEach((val, key) => {\n obj[key] = val;\n });\n if (obj.role === \"Formula\") {\n try {\n const {\n mathML\n } = node;\n if (mathML) {\n obj.mathML = mathML;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Ignoring mathML: \"${ex}\".`);\n }\n }\n let bbox = null,\n size = null;\n for (const a of node.attributes) {\n bbox = lookupNormalRect(a.getArray(\"BBox\"), bbox);\n const width = a.get(\"Width\");\n const height = a.get(\"Height\");\n if (typeof width === \"number\" && width > 0 && typeof height === \"number\" && height > 0) {\n size = [0, 0, width, height];\n }\n }\n if (bbox || size) {\n obj.bbox = bbox ?? size;\n }\n const lang = node.dict.get(\"Lang\");\n if (typeof lang === \"string\") {\n obj.lang = stringToPDFString(lang);\n }\n for (const kid of node.kids) {\n const kidElement = kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n if (kidElement) {\n nodeToSerializable(kidElement, obj, level + 1);\n continue;\n } else if (kid.type === StructElementType.PAGE_CONTENT || kid.type === StructElementType.STREAM_CONTENT) {\n obj.children.push({\n type: \"content\",\n id: `p${kid.pageObjId}_mc${kid.mcid}`\n });\n } else if (kid.type === StructElementType.OBJECT) {\n obj.children.push({\n type: \"object\",\n id: kid.refObjId\n });\n } else if (kid.type === StructElementType.ANNOTATION) {\n obj.children.push({\n type: \"annotation\",\n id: `${AnnotationPrefix}${kid.refObjId}`\n });\n }\n }\n }\n const root = Object.create(null);\n root.children = [];\n root.role = \"Root\";\n for (const child of this.nodes) {\n if (!child) {\n continue;\n }\n nodeToSerializable(child, root);\n }\n return root;\n }\n}\n\n;// ./src/core/catalog.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isRef = v => v instanceof Ref;\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRef, isName);\nfunction fetchDest(dest) {\n if (dest instanceof Dict) {\n dest = dest.get(\"D\");\n }\n return isValidExplicitDest(dest) ? dest : null;\n}\nfunction fetchRemoteDest(action) {\n let dest = action.get(\"D\");\n if (dest) {\n if (dest instanceof Name) {\n dest = dest.name;\n }\n if (typeof dest === \"string\") {\n return stringToPDFString(dest, true);\n } else if (isValidExplicitDest(dest)) {\n return JSON.stringify(dest);\n }\n }\n return null;\n}\nclass Catalog {\n #actualNumPages = null;\n #annotationAttachmentIdByRef = new RefMap();\n #annotationAttachmentRefById = new Map();\n #soundAttachmentIds = new Set();\n #catDict = null;\n builtInCMapCache = new Map();\n fontCache = new RefMap();\n globalColorSpaceCache = new GlobalColorSpaceCache();\n globalImageCache = new GlobalImageCache();\n nonBlendModesSet = new RefSet();\n pageDictCache = new RefMap();\n pageIndexCache = new RefMap();\n pageKidsCountCache = new RefMap();\n standardFontDataCache = new Map();\n systemFontCache = new Map();\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n this.#catDict = xref.getCatalogObj();\n if (!(this.#catDict instanceof Dict)) {\n throw new FormatError(\"Catalog object is not a dictionary.\");\n }\n this.toplevelPagesDict;\n }\n cloneDict() {\n return this.#catDict.clone();\n }\n getAttachmentIdForAnnotation(ref, isSound = false) {\n let id = this.#annotationAttachmentIdByRef.get(ref);\n if (!id) {\n const baseId = `attachmentRef:${ref.toString()}`;\n id = baseId;\n let i = 1;\n while (this.#annotationAttachmentRefById.has(id) || this.attachments?.has(id)) {\n id = `${baseId}-${i++}`;\n }\n this.#annotationAttachmentIdByRef.put(ref, id);\n this.#annotationAttachmentRefById.set(id, ref);\n }\n if (isSound) {\n this.#soundAttachmentIds.add(id);\n }\n return id;\n }\n get version() {\n const version = this.#catDict.get(\"Version\");\n if (version instanceof Name) {\n if (PDF_VERSION_REGEXP.test(version.name)) {\n return shadow(this, \"version\", version.name);\n }\n warn(`Invalid PDF catalog version: ${version.name}`);\n }\n return shadow(this, \"version\", null);\n }\n get lang() {\n const lang = this.#catDict.get(\"Lang\");\n return shadow(this, \"lang\", lang && typeof lang === \"string\" ? stringToPDFString(lang) : null);\n }\n get needsRendering() {\n const needsRendering = this.#catDict.get(\"NeedsRendering\");\n return shadow(this, \"needsRendering\", typeof needsRendering === \"boolean\" ? needsRendering : false);\n }\n get collection() {\n let collection = null;\n try {\n const obj = this.#catDict.get(\"Collection\");\n if (obj instanceof Dict && obj.size > 0) {\n collection = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n }\n return shadow(this, \"collection\", collection);\n }\n get acroForm() {\n let acroForm = null;\n try {\n const obj = this.#catDict.get(\"AcroForm\");\n if (obj instanceof Dict && obj.size > 0) {\n acroForm = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n }\n return shadow(this, \"acroForm\", acroForm);\n }\n get acroFormRef() {\n const value = this.#catDict.getRaw(\"AcroForm\");\n return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n }\n get metadata() {\n const streamRef = this.#catDict.getRaw(\"Metadata\");\n if (!(streamRef instanceof Ref)) {\n return shadow(this, \"metadata\", null);\n }\n let metadata = null;\n try {\n const stream = this.xref.fetch(streamRef, !this.xref.encrypt?.encryptMetadata);\n if (stream instanceof BaseStream && isDict(stream.dict, \"Metadata\") && isName(stream.dict.get(\"Subtype\"), \"XML\")) {\n const data = stringToUTF8String(stream.getString());\n if (data) {\n metadata = new MetadataParser(data).serializable;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(`Skipping invalid Metadata: \"${ex}\".`);\n }\n return shadow(this, \"metadata\", metadata);\n }\n get markInfo() {\n let markInfo = null;\n try {\n markInfo = this.#readMarkInfo();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read mark info.\");\n }\n return shadow(this, \"markInfo\", markInfo);\n }\n #readMarkInfo() {\n const obj = this.#catDict.get(\"MarkInfo\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n const markInfo = new Map();\n for (const key of [\"Marked\", \"UserProperties\", \"Suspects\"]) {\n const val = obj.get(key);\n markInfo.set(key, typeof val === \"boolean\" ? val : false);\n }\n return markInfo;\n }\n get hasStructTree() {\n return this.#catDict.has(\"StructTreeRoot\");\n }\n get structTreeRoot() {\n let structTree = null;\n try {\n structTree = this.#readStructTreeRoot();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable read to structTreeRoot info.\");\n }\n return shadow(this, \"structTreeRoot\", structTree);\n }\n #readStructTreeRoot() {\n const rawObj = this.#catDict.getRaw(\"StructTreeRoot\"),\n obj = this.xref.fetchIfRef(rawObj);\n return obj instanceof Dict ? new StructTreeRoot(this.xref, obj, rawObj) : null;\n }\n get toplevelPagesDict() {\n const pagesObj = this.#catDict.get(\"Pages\");\n if (!(pagesObj instanceof Dict)) {\n throw new FormatError(\"Invalid top-level pages dictionary.\");\n }\n return shadow(this, \"toplevelPagesDict\", pagesObj);\n }\n get documentOutline() {\n let obj = null;\n try {\n obj = this.#readDocumentOutline();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read document outline.\");\n }\n return shadow(this, \"documentOutline\", obj);\n }\n #readDocumentOutline(options = {}) {\n let obj = this.#catDict.get(\"Outlines\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n obj = obj.getRaw(\"First\");\n if (!(obj instanceof Ref)) {\n return null;\n }\n const root = {\n items: []\n };\n const queue = [{\n obj,\n parent: root\n }];\n const processed = new RefSet();\n processed.put(obj);\n const xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\n while (queue.length > 0) {\n const i = queue.shift();\n const outlineDict = xref.fetchIfRef(i.obj);\n if (outlineDict === null) {\n continue;\n }\n if (!outlineDict.has(\"Title\")) {\n warn(\"Invalid outline item encountered.\");\n }\n const data = {\n url: null,\n dest: null,\n action: null\n };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.baseUrl,\n docAttachments: this.attachments\n });\n const title = outlineDict.get(\"Title\");\n const flags = outlineDict.get(\"F\") || 0;\n const color = outlineDict.getArray(\"C\");\n const count = outlineDict.get(\"Count\");\n let rgbColor = blackColor;\n if (isNumberArray(color, 3) && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n rgbColor = ColorSpaceUtils.rgb.getRgb(color, 0);\n }\n const outlineItem = {\n action: data.action,\n attachmentId: data.attachmentId,\n attachment: data.attachment,\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n setOCGState: data.setOCGState,\n title: typeof title === \"string\" ? stringToPDFString(title) : \"\",\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: []\n };\n if (options.keepRawDict) {\n outlineItem.rawDict = outlineDict;\n }\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({\n obj,\n parent: outlineItem\n });\n processed.put(obj);\n }\n obj = outlineDict.getRaw(\"Next\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({\n obj,\n parent: i.parent\n });\n processed.put(obj);\n }\n }\n return root.items.length > 0 ? root.items : null;\n }\n get documentOutlineForEditor() {\n let obj = null;\n try {\n obj = this.#readDocumentOutline({\n keepRawDict: true\n });\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read document outline.\");\n }\n return shadow(this, \"documentOutlineForEditor\", obj);\n }\n get permissions() {\n let permissions = null;\n try {\n permissions = this.#readPermissions();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read permissions.\");\n }\n return shadow(this, \"permissions\", permissions);\n }\n #readPermissions() {\n const encrypt = this.xref.trailer.get(\"Encrypt\");\n if (!(encrypt instanceof Dict)) {\n return null;\n }\n let flags = encrypt.get(\"P\");\n if (typeof flags !== \"number\") {\n return null;\n }\n flags += 2 ** 32;\n const permissions = new Set();\n for (const value of Object.values(PermissionFlag)) {\n if (flags & value) {\n permissions.add(value);\n }\n }\n return permissions;\n }\n get optionalContentConfig() {\n let config = null;\n try {\n const properties = this.#catDict.get(\"OCProperties\");\n if (!properties) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const defaultConfig = properties.get(\"D\");\n if (!defaultConfig) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groupsData = properties.get(\"OCGs\");\n if (!Array.isArray(groupsData)) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groupRefCache = new RefMap();\n for (const groupRef of groupsData) {\n if (!(groupRef instanceof Ref) || groupRefCache.has(groupRef)) {\n continue;\n }\n groupRefCache.put(groupRef, this.#readOptionalContentGroup(groupRef));\n }\n config = this.#readOptionalContentConfig(defaultConfig, groupRefCache);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Unable to read optional content config: ${ex}`);\n }\n return shadow(this, \"optionalContentConfig\", config);\n }\n #readOptionalContentGroup(groupRef) {\n const group = this.xref.fetch(groupRef);\n const obj = {\n id: groupRef.toString(),\n name: null,\n intent: null,\n usage: {\n print: null,\n view: null\n },\n rbGroups: []\n };\n const name = group.get(\"Name\");\n if (typeof name === \"string\") {\n obj.name = stringToPDFString(name);\n }\n let intent = group.getArray(\"Intent\");\n if (!Array.isArray(intent)) {\n intent = [intent];\n }\n if (intent.every(i => i instanceof Name)) {\n obj.intent = intent.map(i => i.name);\n }\n const usage = group.get(\"Usage\");\n if (!(usage instanceof Dict)) {\n return obj;\n }\n const usageObj = obj.usage;\n const print = usage.get(\"Print\");\n if (print instanceof Dict) {\n const printState = print.get(\"PrintState\");\n if (printState instanceof Name) {\n switch (printState.name) {\n case \"ON\":\n case \"OFF\":\n usageObj.print = {\n printState: printState.name\n };\n }\n }\n }\n const view = usage.get(\"View\");\n if (view instanceof Dict) {\n const viewState = view.get(\"ViewState\");\n if (viewState instanceof Name) {\n switch (viewState.name) {\n case \"ON\":\n case \"OFF\":\n usageObj.view = {\n viewState: viewState.name\n };\n }\n }\n }\n return obj;\n }\n #readOptionalContentConfig(config, groupRefCache) {\n function parseOnOff(refs) {\n const onParsed = [];\n if (Array.isArray(refs)) {\n for (const value of refs) {\n if (value instanceof Ref && groupRefCache.has(value)) {\n onParsed.push(value.toString());\n }\n }\n }\n return onParsed;\n }\n function parseOrder(refs, nestedLevels = 0) {\n if (!Array.isArray(refs)) {\n return null;\n }\n const order = [];\n for (const value of refs) {\n if (value instanceof Ref && groupRefCache.has(value)) {\n parsedOrderRefs.put(value);\n order.push(value.toString());\n continue;\n }\n const nestedOrder = parseNestedOrder(value, nestedLevels);\n if (nestedOrder) {\n order.push(nestedOrder);\n }\n }\n if (nestedLevels > 0) {\n return order;\n }\n const hiddenGroups = [];\n for (const [groupRef] of groupRefCache.items()) {\n if (parsedOrderRefs.has(groupRef)) {\n continue;\n }\n hiddenGroups.push(groupRef.toString());\n }\n if (hiddenGroups.length) {\n order.push({\n name: null,\n order: hiddenGroups\n });\n }\n return order;\n }\n function parseNestedOrder(ref, nestedLevels) {\n if (++nestedLevels > MAX_NESTED_LEVELS) {\n warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n return null;\n }\n const value = xref.fetchIfRef(ref);\n if (!Array.isArray(value)) {\n return null;\n }\n const nestedName = xref.fetchIfRef(value[0]);\n if (typeof nestedName !== \"string\") {\n return null;\n }\n const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n if (!nestedOrder?.length) {\n return null;\n }\n return {\n name: stringToPDFString(nestedName),\n order: nestedOrder\n };\n }\n function parseRBGroups(rbGroups) {\n if (!Array.isArray(rbGroups)) {\n return;\n }\n for (const value of rbGroups) {\n const rbGroup = xref.fetchIfRef(value);\n if (!Array.isArray(rbGroup) || !rbGroup.length) {\n continue;\n }\n const parsedRbGroup = new Set();\n for (const ref of rbGroup) {\n if (ref instanceof Ref && groupRefCache.has(ref) && !parsedRbGroup.has(ref.toString())) {\n parsedRbGroup.add(ref.toString());\n groupRefCache.get(ref).rbGroups.push(parsedRbGroup);\n }\n }\n }\n }\n const xref = this.xref,\n parsedOrderRefs = new RefSet(),\n MAX_NESTED_LEVELS = 10;\n parseRBGroups(config.get(\"RBGroups\"));\n return {\n name: typeof config.get(\"Name\") === \"string\" ? stringToPDFString(config.get(\"Name\")) : null,\n creator: typeof config.get(\"Creator\") === \"string\" ? stringToPDFString(config.get(\"Creator\")) : null,\n baseState: config.get(\"BaseState\") instanceof Name ? config.get(\"BaseState\").name : null,\n on: parseOnOff(config.get(\"ON\")),\n off: parseOnOff(config.get(\"OFF\")),\n order: parseOrder(config.get(\"Order\")),\n groups: [...groupRefCache]\n };\n }\n setActualNumPages(num = null) {\n this.#actualNumPages = num;\n }\n get hasActualNumPages() {\n return this.#actualNumPages !== null;\n }\n get _pagesCount() {\n const obj = this.toplevelPagesDict.get(\"Count\");\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Page count in top-level pages dictionary is not an integer.\");\n }\n return shadow(this, \"_pagesCount\", obj);\n }\n get numPages() {\n return this.#actualNumPages ?? this._pagesCount;\n }\n get destinations() {\n const dests = new Map();\n for (const obj of this.#readDests()) {\n if (obj instanceof NameTree) {\n for (const [key, value] of obj.getAll()) {\n const dest = fetchDest(value);\n if (dest) {\n dests.set(stringToPDFString(key, true), dest);\n }\n }\n } else if (obj instanceof Dict) {\n for (const [key, value] of obj) {\n const dest = fetchDest(value);\n if (dest) {\n dests.getOrInsert(stringToPDFString(key, true), dest);\n }\n }\n }\n }\n return shadow(this, \"destinations\", dests);\n }\n getDestination(id) {\n if (Object.hasOwn(this, \"destinations\")) {\n return this.destinations.get(id) ?? null;\n }\n for (const obj of this.#readDests()) {\n if (obj instanceof NameTree || obj instanceof Dict) {\n const dest = fetchDest(obj.get(id));\n if (dest) {\n return dest;\n }\n }\n }\n return this.destinations.get(id) ?? null;\n }\n #readDests() {\n const obj = this.#catDict.get(\"Names\");\n const rawDests = [];\n if (obj?.has(\"Dests\")) {\n rawDests.push(new NameTree(obj.getRaw(\"Dests\"), this.xref));\n }\n if (this.#catDict.has(\"Dests\")) {\n rawDests.push(this.#catDict.get(\"Dests\"));\n }\n return rawDests;\n }\n get rawPageLabels() {\n const obj = this.#catDict.getRaw(\"PageLabels\");\n if (!obj) {\n return null;\n }\n const numberTree = new NumberTree(obj, this.xref);\n return numberTree.getAll();\n }\n get pageLabels() {\n let obj = null;\n try {\n obj = this.#readPageLabels();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read page labels.\");\n }\n return shadow(this, \"pageLabels\", obj);\n }\n #readPageLabels() {\n const nums = this.rawPageLabels;\n if (!nums) {\n return null;\n }\n const pageLabels = new Array(this.numPages);\n let style = null,\n prefix = \"\";\n let currentLabel = \"\",\n currentIndex = 1;\n for (let i = 0, ii = this.numPages; i < ii; i++) {\n const labelDict = nums.get(i);\n if (labelDict !== undefined) {\n if (!(labelDict instanceof Dict)) {\n throw new FormatError(\"PageLabel is not a dictionary.\");\n }\n if (labelDict.has(\"Type\") && !isName(labelDict.get(\"Type\"), \"PageLabel\")) {\n throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n }\n if (labelDict.has(\"S\")) {\n const s = labelDict.get(\"S\");\n if (!(s instanceof Name)) {\n throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n }\n style = s.name;\n } else {\n style = null;\n }\n if (labelDict.has(\"P\")) {\n const p = labelDict.get(\"P\");\n if (typeof p !== \"string\") {\n throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n }\n prefix = stringToPDFString(p);\n } else {\n prefix = \"\";\n }\n if (labelDict.has(\"St\")) {\n const st = labelDict.get(\"St\");\n if (!(Number.isInteger(st) && st >= 1)) {\n throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n }\n currentIndex = st;\n } else {\n currentIndex = 1;\n }\n }\n switch (style) {\n case \"D\":\n currentLabel = currentIndex;\n break;\n case \"R\":\n case \"r\":\n currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n break;\n case \"A\":\n case \"a\":\n const LIMIT = 26;\n const letterIndex = currentIndex - 1;\n const character = String.fromCharCode(style.charCodeAt(0) + letterIndex % LIMIT);\n currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1);\n break;\n default:\n if (style) {\n throw new FormatError(`Invalid style \"${style}\" in PageLabel dictionary.`);\n }\n currentLabel = \"\";\n }\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n return pageLabels;\n }\n get pageLayout() {\n const obj = this.#catDict.get(\"PageLayout\");\n let pageLayout = \"\";\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"SinglePage\":\n case \"OneColumn\":\n case \"TwoColumnLeft\":\n case \"TwoColumnRight\":\n case \"TwoPageLeft\":\n case \"TwoPageRight\":\n pageLayout = obj.name;\n }\n }\n return shadow(this, \"pageLayout\", pageLayout);\n }\n get pageMode() {\n const obj = this.#catDict.get(\"PageMode\");\n let pageMode = \"UseNone\";\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"FullScreen\":\n case \"UseOC\":\n case \"UseAttachments\":\n pageMode = obj.name;\n }\n }\n return shadow(this, \"pageMode\", pageMode);\n }\n get viewerPreferences() {\n const obj = this.#catDict.get(\"ViewerPreferences\");\n if (!(obj instanceof Dict)) {\n return shadow(this, \"viewerPreferences\", null);\n }\n let prefs = null;\n for (const [key, value] of obj) {\n let prefValue;\n switch (key) {\n case \"HideToolbar\":\n case \"HideMenubar\":\n case \"HideWindowUI\":\n case \"FitWindow\":\n case \"CenterWindow\":\n case \"DisplayDocTitle\":\n case \"PickTrayByPDFSize\":\n if (typeof value === \"boolean\") {\n prefValue = value;\n }\n break;\n case \"NonFullScreenPageMode\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"UseOC\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"UseNone\";\n }\n }\n break;\n case \"Direction\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"L2R\":\n case \"R2L\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"L2R\";\n }\n }\n break;\n case \"ViewArea\":\n case \"ViewClip\":\n case \"PrintArea\":\n case \"PrintClip\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"MediaBox\":\n case \"CropBox\":\n case \"BleedBox\":\n case \"TrimBox\":\n case \"ArtBox\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"CropBox\";\n }\n }\n break;\n case \"PrintScaling\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"None\":\n case \"AppDefault\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"AppDefault\";\n }\n }\n break;\n case \"Duplex\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"Simplex\":\n case \"DuplexFlipShortEdge\":\n case \"DuplexFlipLongEdge\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"None\";\n }\n }\n break;\n case \"PrintPageRange\":\n if (Array.isArray(value) && value.length % 2 === 0 && value.every((page, i, arr) => Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages)) {\n prefValue = value;\n }\n break;\n case \"NumCopies\":\n if (Number.isInteger(value) && value > 0) {\n prefValue = value;\n }\n break;\n default:\n warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\n continue;\n }\n if (prefValue === undefined) {\n warn(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n continue;\n }\n (prefs ??= new Map()).set(key, prefValue);\n }\n return shadow(this, \"viewerPreferences\", prefs);\n }\n get openAction() {\n const obj = this.#catDict.get(\"OpenAction\");\n const openAction = new Map();\n if (obj instanceof Dict) {\n const destDict = new Dict(this.xref);\n destDict.set(\"A\", obj);\n const resultObj = {\n url: null,\n dest: null,\n action: null\n };\n Catalog.parseDestDictionary({\n destDict,\n resultObj\n });\n if (Array.isArray(resultObj.dest)) {\n openAction.set(\"dest\", resultObj.dest);\n } else if (resultObj.action) {\n openAction.set(\"action\", resultObj.action);\n }\n } else if (isValidExplicitDest(obj)) {\n openAction.set(\"dest\", obj);\n }\n return shadow(this, \"openAction\", openAction.size ? openAction : null);\n }\n get attachments() {\n const obj = this.#catDict.get(\"Names\");\n let attachments = null;\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n (attachments ??= new Map()).set(stringToPDFString(key, true), new FileSpec(value).serializable);\n }\n }\n return shadow(this, \"attachments\", attachments);\n }\n #attachmentContentByName(id) {\n const obj = this.#catDict.get(\"Names\");\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (stringToPDFString(key, true) === id) {\n return FileSpec.readContent(value);\n }\n }\n }\n return undefined;\n }\n attachmentContent(id) {\n const namedContent = this.#attachmentContentByName(id);\n if (namedContent !== undefined) {\n return namedContent;\n }\n const ref = this.#annotationAttachmentRefById.get(id);\n if (ref) {\n const target = this.xref.fetch(ref);\n if (target instanceof BaseStream) {\n const content = FileSpec.readStreamContent(target);\n if (this.#soundAttachmentIds.has(id)) {\n return soundStreamToWav(target, content) ?? content;\n }\n return content;\n }\n return target instanceof Dict ? FileSpec.readContent(target) : null;\n }\n return null;\n }\n get rawEmbeddedFiles() {\n const obj = this.#catDict.get(\"Names\");\n if (!(obj instanceof Dict) || !obj.has(\"EmbeddedFiles\")) {\n return null;\n }\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n return nameTree.getAll(true);\n }\n get xfaImages() {\n const obj = this.#catDict.get(\"Names\");\n let xfaImages = null;\n if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (value instanceof BaseStream) {\n xfaImages ??= new Map();\n xfaImages.set(stringToPDFString(key, true), value.getBytes());\n }\n }\n }\n return shadow(this, \"xfaImages\", xfaImages);\n }\n #collectJavaScript() {\n const obj = this.#catDict.get(\"Names\");\n let javaScript = null;\n function appendIfJavaScriptDict(name, jsDict) {\n if (!(jsDict instanceof Dict) || !isName(jsDict.get(\"S\"), \"JavaScript\")) {\n return;\n }\n let js = jsDict.get(\"JS\");\n if (js instanceof BaseStream) {\n js = js.getString();\n } else if (typeof js !== \"string\") {\n return;\n }\n js = stringToPDFString(js, true).replaceAll(\"\\x00\", \"\");\n if (js) {\n (javaScript ??= new Map()).set(name, js);\n }\n }\n if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n appendIfJavaScriptDict(stringToPDFString(key, true), value);\n }\n }\n const openAction = this.#catDict.get(\"OpenAction\");\n if (openAction) {\n appendIfJavaScriptDict(\"OpenAction\", openAction);\n }\n return javaScript;\n }\n get jsActions() {\n const javaScript = this.#collectJavaScript();\n let actions = collectActions(this.xref, this.#catDict, DocumentActionEventType);\n if (javaScript) {\n actions ??= new Map();\n for (const [key, val] of javaScript) {\n actions.getOrInsertComputed(key, makeArr).push(val);\n }\n }\n return shadow(this, \"jsActions\", actions);\n }\n async cleanup(manuallyTriggered = false) {\n clearGlobalCaches();\n this.globalColorSpaceCache.clear();\n this.globalImageCache.clear(manuallyTriggered);\n this.pageKidsCountCache.clear();\n this.pageIndexCache.clear();\n this.pageDictCache.clear();\n this.nonBlendModesSet.clear();\n for (const {\n dict\n } of await Promise.all(this.fontCache)) {\n delete dict.cacheKey;\n }\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n this.standardFontDataCache.clear();\n this.systemFontCache.clear();\n }\n async getPageDict(pageIndex) {\n const nodesToVisit = [this.toplevelPagesDict];\n const visitedNodes = new RefSet();\n const pagesRef = this.#catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache,\n pageIndexCache = this.pageIndexCache,\n pageDictCache = this.pageDictCache;\n let currentPageIndex = 0;\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n if (currentNode instanceof Ref) {\n const count = pageKidsCountCache.get(currentNode);\n if (count >= 0 && currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n if (visitedNodes.has(currentNode)) {\n throw new FormatError(\"Pages tree contains circular reference.\");\n }\n visitedNodes.put(currentNode);\n const obj = await (pageDictCache.get(currentNode) || xref.fetchAsync(currentNode));\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n if (!pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n if (!pageIndexCache.has(currentNode)) {\n pageIndexCache.put(currentNode, currentPageIndex);\n }\n if (currentPageIndex === pageIndex) {\n return [obj, currentNode];\n }\n currentPageIndex++;\n continue;\n }\n }\n nodesToVisit.push(obj);\n continue;\n }\n if (!(currentNode instanceof Dict)) {\n throw new FormatError(\"Page dictionary kid reference points to wrong type of object.\");\n }\n const {\n objId\n } = currentNode;\n let count = currentNode.getRaw(\"Count\");\n if (count instanceof Ref) {\n count = await xref.fetchAsync(count);\n }\n if (Number.isInteger(count) && count >= 0) {\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n }\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n kids = await xref.fetchAsync(kids);\n }\n if (!Array.isArray(kids)) {\n let type = currentNode.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n if (currentPageIndex === pageIndex) {\n return [currentNode, null];\n }\n currentPageIndex++;\n continue;\n }\n throw new FormatError(\"Page dictionary kids object is not an array.\");\n }\n for (let last = kids.length - 1; last >= 0; last--) {\n const lastKid = kids[last];\n nodesToVisit.push(lastKid);\n if (currentNode === this.toplevelPagesDict && lastKid instanceof Ref && !pageDictCache.has(lastKid)) {\n pageDictCache.put(lastKid, xref.fetchAsync(lastKid));\n }\n }\n }\n throw new Error(`Page index ${pageIndex} not found.`);\n }\n async getAllPageDicts(recoveryMode = false) {\n const {\n ignoreErrors\n } = this.pdfManager.evaluatorOptions;\n const queue = [{\n currentNode: this.toplevelPagesDict,\n posInKids: 0\n }];\n const visitedNodes = new RefSet();\n const pagesRef = this.#catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const map = new Map(),\n xref = this.xref,\n pageIndexCache = this.pageIndexCache;\n let pageIndex = 0;\n function addPageDict(pageDict, pageRef) {\n if (pageRef && !pageIndexCache.has(pageRef)) {\n pageIndexCache.put(pageRef, pageIndex);\n }\n map.set(pageIndex++, [pageDict, pageRef]);\n }\n function addPageError(error) {\n if (error instanceof XRefEntryException && !recoveryMode) {\n throw error;\n }\n if (recoveryMode && ignoreErrors && pageIndex === 0) {\n warn(`getAllPageDicts - Skipping invalid first page: \"${error}\".`);\n error = Dict.empty;\n }\n map.set(pageIndex++, [error, null]);\n }\n while (queue.length > 0) {\n const queueItem = queue.at(-1);\n const {\n currentNode,\n posInKids\n } = queueItem;\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n try {\n kids = await xref.fetchAsync(kids);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (!Array.isArray(kids)) {\n let type = currentNode.getRaw(\"Type\");\n if (type instanceof Ref) {\n try {\n type = await xref.fetchAsync(type);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n addPageDict(currentNode, null);\n break;\n }\n addPageError(new FormatError(\"Page dictionary kids object is not an array.\"));\n break;\n }\n if (posInKids >= kids.length) {\n queue.pop();\n continue;\n }\n const kidObj = kids[posInKids];\n let obj;\n if (kidObj instanceof Ref) {\n if (visitedNodes.has(kidObj)) {\n addPageError(new FormatError(\"Pages tree contains circular reference.\"));\n break;\n }\n visitedNodes.put(kidObj);\n try {\n obj = await xref.fetchAsync(kidObj);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n } else {\n obj = kidObj;\n }\n if (!(obj instanceof Dict)) {\n addPageError(new FormatError(\"Page dictionary kid reference points to wrong type of object.\"));\n break;\n }\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n try {\n type = await xref.fetchAsync(type);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n } else {\n queue.push({\n currentNode: obj,\n posInKids: 0\n });\n }\n queueItem.posInKids++;\n }\n return map;\n }\n async getPageIndex(pageRef) {\n const cachedPageIndex = this.pageIndexCache.get(pageRef);\n if (cachedPageIndex !== undefined) {\n return cachedPageIndex;\n }\n const xref = this.xref;\n let total = 0,\n ref = pageRef;\n const visited = new RefSet();\n visited.put(pageRef);\n while (true) {\n const node = await xref.fetchAsync(ref);\n if (isRefsEqual(ref, pageRef) && !isDict(node, \"Page\") && !(node instanceof Dict && !node.has(\"Type\") && node.has(\"Contents\"))) {\n throw new FormatError(\"The reference does not point to a /Page dictionary.\");\n }\n if (!node) {\n break;\n }\n if (!(node instanceof Dict)) {\n throw new FormatError(\"Node must be a dictionary.\");\n }\n const parentRef = node.getRaw(\"Parent\");\n if (parentRef instanceof Ref) {\n if (visited.has(parentRef)) {\n throw new FormatError(\"Pages tree contains circular reference.\");\n }\n visited.put(parentRef);\n }\n const parent = await node.getAsync(\"Parent\");\n if (!parent) {\n break;\n }\n if (!(parent instanceof Dict)) {\n throw new FormatError(\"Parent must be a dictionary.\");\n }\n const kids = await parent.getAsync(\"Kids\");\n if (!kids) {\n break;\n }\n if (!Array.isArray(kids)) {\n throw new FormatError(\"Kids must be an array.\");\n }\n const kidPromises = [];\n let found = false;\n for (const kid of kids) {\n if (!(kid instanceof Ref)) {\n throw new FormatError(\"Kid must be a reference.\");\n }\n if (isRefsEqual(kid, ref)) {\n found = true;\n break;\n }\n kidPromises.push(xref.fetchAsync(kid).then(obj => {\n if (!(obj instanceof Dict)) {\n throw new FormatError(\"Kid node must be a dictionary.\");\n }\n if (obj.has(\"Count\")) {\n const count = obj.get(\"Count\");\n if (Number.isInteger(count) && count >= 0) {\n total += count;\n return;\n }\n throw new FormatError(\"Count must be a (positive) integer.\");\n }\n total++;\n }));\n }\n if (!found) {\n throw new FormatError(\"Kid reference not found in parent's kids.\");\n }\n await Promise.all(kidPromises);\n ref = parentRef;\n }\n this.pageIndexCache.put(pageRef, total);\n return total;\n }\n get baseUrl() {\n const uri = this.#catDict.get(\"URI\");\n if (uri instanceof Dict) {\n const base = uri.get(\"Base\");\n if (typeof base === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(base, null, {\n tryConvertEncoding: true\n });\n if (absoluteUrl) {\n return shadow(this, \"baseUrl\", absoluteUrl.href);\n }\n }\n }\n return shadow(this, \"baseUrl\", this.pdfManager.docBaseUrl);\n }\n static #getDestFromStructElement(xref, seRef) {\n const seDict = xref.fetchIfRef(seRef);\n if (!(seDict instanceof Dict)) {\n return null;\n }\n let pageRef = null;\n const directPg = seDict.getRaw(\"Pg\");\n if (directPg instanceof Ref) {\n pageRef = directPg;\n }\n if (!pageRef) {\n const queue = [seDict];\n const visited = new RefSet();\n visited.put(seRef);\n while (queue.length > 0 && !pageRef) {\n const node = queue.shift();\n let kids = node.getRaw(\"K\");\n if (kids instanceof Ref) {\n if (visited.has(kids)) {\n continue;\n }\n visited.put(kids);\n kids = xref.fetch(kids);\n }\n let kidsArr;\n if (Array.isArray(kids)) {\n kidsArr = kids;\n } else if (kids) {\n kidsArr = [kids];\n } else {\n continue;\n }\n for (const kid of kidsArr) {\n if (kid instanceof Ref) {\n if (visited.has(kid)) {\n continue;\n }\n visited.put(kid);\n }\n const kidObj = xref.fetchIfRef(kid);\n if (!(kidObj instanceof Dict)) {\n continue;\n }\n const pg = kidObj.getRaw(\"Pg\");\n if (pg instanceof Ref) {\n pageRef = pg;\n break;\n }\n queue.push(kidObj);\n }\n }\n }\n if (!pageRef) {\n const MAX_DEPTH = 40;\n let current = seDict;\n for (let depth = 0; depth < MAX_DEPTH; depth++) {\n const parentRaw = current.getRaw(\"P\");\n if (!(parentRaw instanceof Ref)) {\n break;\n }\n const parentDict = xref.fetch(parentRaw);\n if (!(parentDict instanceof Dict)) {\n break;\n }\n if (isName(parentDict.get(\"Type\"), \"StructTreeRoot\")) {\n break;\n }\n const pg = parentDict.getRaw(\"Pg\");\n if (pg instanceof Ref) {\n pageRef = pg;\n break;\n }\n current = parentDict;\n }\n }\n if (!pageRef) {\n return null;\n }\n let x = null,\n y = null;\n const attrs = seDict.get(\"A\");\n if (attrs instanceof Dict) {\n const bbox = lookupRect(attrs.getArray(\"BBox\"), null);\n if (bbox) {\n x = bbox[0];\n y = bbox[3];\n }\n }\n return [pageRef, {\n name: \"XYZ\"\n }, x, y, null];\n }\n static parseDestDictionary({\n destDict,\n resultObj,\n docBaseUrl = null,\n docAttachments = null\n }) {\n if (!(destDict instanceof Dict)) {\n warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n let action = destDict.get(\"A\"),\n url,\n dest;\n if (!(action instanceof Dict)) {\n if (destDict.has(\"Dest\")) {\n action = destDict.get(\"Dest\");\n } else {\n action = destDict.get(\"AA\");\n if (action instanceof Dict) {\n if (action.has(\"D\")) {\n action = action.get(\"D\");\n } else if (action.has(\"U\")) {\n action = action.get(\"U\");\n }\n }\n }\n }\n if (action instanceof Dict) {\n const actionType = action.get(\"S\");\n if (!(actionType instanceof Name)) {\n warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n return;\n }\n const actionName = actionType.name;\n switch (actionName) {\n case \"ResetForm\":\n const flags = action.get(\"Flags\");\n const include = ((typeof flags === \"number\" ? flags : 0) & 1) === 0;\n const fields = [];\n const refs = [];\n for (const obj of action.get(\"Fields\") || []) {\n if (obj instanceof Ref) {\n refs.push(obj.toString());\n } else if (typeof obj === \"string\") {\n fields.push(stringToPDFString(obj));\n }\n }\n resultObj.resetForm = {\n fields,\n refs,\n include\n };\n break;\n case \"URI\":\n url = action.get(\"URI\");\n if (url instanceof Name) {\n url = \"/\" + url.name;\n }\n break;\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n case \"Launch\":\n case \"GoToR\":\n const urlDict = action.get(\"F\");\n if (urlDict instanceof Dict) {\n url = new FileSpec(urlDict).filename;\n } else if (typeof urlDict === \"string\") {\n url = urlDict;\n } else {\n break;\n }\n const remoteDest = fetchRemoteDest(action);\n if (remoteDest) {\n url = url.split(\"#\", 1)[0] + \"#\" + remoteDest;\n }\n const newWindow = action.get(\"NewWindow\");\n if (typeof newWindow === \"boolean\") {\n resultObj.newWindow = newWindow;\n }\n break;\n case \"GoToE\":\n const target = action.get(\"T\");\n let id = null;\n if (target instanceof Dict) {\n const relationship = target.get(\"R\");\n const name = target.get(\"N\");\n if (isName(relationship, \"C\") && typeof name === \"string\") {\n id = stringToPDFString(name, true);\n }\n }\n if (docAttachments && id) {\n resultObj.attachmentId = id;\n resultObj.attachment = docAttachments.get(id);\n const attachmentDest = fetchRemoteDest(action);\n if (attachmentDest) {\n resultObj.attachmentDest = attachmentDest;\n }\n } else {\n warn(`parseDestDictionary - unimplemented \"GoToE\" action.`);\n }\n break;\n case \"Named\":\n const namedAction = action.get(\"N\");\n if (namedAction instanceof Name) {\n resultObj.action = namedAction.name;\n }\n break;\n case \"SetOCGState\":\n const state = action.get(\"State\");\n const preserveRB = action.get(\"PreserveRB\");\n if (!Array.isArray(state) || state.length === 0) {\n break;\n }\n const stateArr = [];\n for (const elem of state) {\n if (elem instanceof Name) {\n switch (elem.name) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n stateArr.push(elem.name);\n break;\n }\n } else if (elem instanceof Ref) {\n stateArr.push(elem.toString());\n }\n }\n if (stateArr.length !== state.length) {\n break;\n }\n resultObj.setOCGState = {\n state: stateArr,\n preserveRB: typeof preserveRB === \"boolean\" ? preserveRB : true\n };\n break;\n case \"JavaScript\":\n const jsAction = action.get(\"JS\");\n let js;\n if (jsAction instanceof BaseStream) {\n js = jsAction.getString();\n } else if (typeof jsAction === \"string\") {\n js = jsAction;\n }\n const jsURL = js && recoverJsURL(stringToPDFString(js, true));\n if (jsURL) {\n url = jsURL.url;\n resultObj.newWindow = jsURL.newWindow;\n break;\n }\n default:\n if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n break;\n }\n warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n dest = destDict.get(\"Dest\");\n }\n if (typeof url === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n addDefaultProtocol: true,\n tryConvertEncoding: true\n });\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n resultObj.unsafeUrl = url;\n }\n if (dest) {\n if (dest instanceof Name) {\n dest = dest.name;\n }\n if (typeof dest === \"string\") {\n resultObj.dest = stringToPDFString(dest, true);\n } else if (isValidExplicitDest(dest)) {\n resultObj.dest = dest;\n }\n }\n if (!resultObj.dest && !resultObj.url && !resultObj.action && !resultObj.attachment && !resultObj.setOCGState && !resultObj.resetForm) {\n const seRef = destDict.getRaw(\"SE\");\n if (seRef instanceof Ref) {\n try {\n const seDest = Catalog.#getDestFromStructElement(destDict.xref, seRef);\n if (seDest) {\n resultObj.dest = seDest;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"SE parsing failed.\");\n }\n }\n }\n }\n}\n\n;// ./src/core/editor/pdf_images.js\n\n\n\nconst FLATE_COLOR_COUNT_THRESHOLD = 16384;\nfunction createImageDict(xref, width, height, colorSpace) {\n const image = new Dict(xref);\n image.set(\"Type\", Name.get(\"XObject\"));\n image.set(\"Subtype\", Name.get(\"Image\"));\n image.set(\"BitsPerComponent\", 8);\n image.setIfName(\"ColorSpace\", colorSpace);\n image.set(\"Width\", width);\n image.set(\"Height\", height);\n return image;\n}\nfunction createRawImage(buffer, dict) {\n return new Stream(buffer, 0, buffer.length, dict);\n}\nfunction paethPredictor(left, above, upperLeft) {\n const p = left + above - upperLeft;\n const pa = Math.abs(p - left);\n const pb = Math.abs(p - above);\n const pc = Math.abs(p - upperLeft);\n if (pa <= pb && pa <= pc) {\n return left;\n }\n return pb <= pc ? above : upperLeft;\n}\nfunction applyPNGOptimumFilter(data, width, height, bytesPerPixel) {\n const rowSize = width * bytesPerPixel;\n const out = new Uint8Array(height * (rowSize + 1));\n const candidates = [new Uint8Array(rowSize), new Uint8Array(rowSize), new Uint8Array(rowSize), new Uint8Array(rowSize), new Uint8Array(rowSize)];\n for (let y = 0; y < height; y++) {\n const rowOffset = y * rowSize;\n const prevRowOffset = rowOffset - rowSize;\n const scores = [0, 0, 0, 0, 0];\n for (let x = 0; x < rowSize; x++) {\n const offset = rowOffset + x;\n const cur = data[offset];\n const left = x >= bytesPerPixel ? data[offset - bytesPerPixel] : 0;\n const above = y > 0 ? data[prevRowOffset + x] : 0;\n const upperLeft = y > 0 && x >= bytesPerPixel ? data[prevRowOffset + x - bytesPerPixel] : 0;\n candidates[0][x] = cur;\n candidates[1][x] = cur - left & 0xff;\n candidates[2][x] = cur - above & 0xff;\n candidates[3][x] = cur - (left + above >> 1) & 0xff;\n candidates[4][x] = cur - paethPredictor(left, above, upperLeft) & 0xff;\n for (let f = 0; f < 5; f++) {\n const v = candidates[f][x];\n scores[f] += v < 128 ? v : 256 - v;\n }\n }\n let bestFilter = 0;\n for (let f = 1; f < 5; f++) {\n if (scores[f] < scores[bestFilter]) {\n bestFilter = f;\n }\n }\n const outOffset = y * (rowSize + 1);\n out[outOffset] = bestFilter;\n out.set(candidates[bestFilter], outOffset + 1);\n }\n return out;\n}\nasync function deflate(bytes) {\n const cs = new CompressionStream(\"deflate\");\n const writer = cs.writable.getWriter();\n const writePromise = (async () => {\n try {\n await writer.ready;\n await writer.write(bytes);\n await writer.ready;\n await writer.close();\n } catch (reason) {\n await writer.abort(reason).catch(() => {});\n throw reason;\n }\n })();\n const [compressed] = await Promise.all([new Response(cs.readable).bytes(), writePromise.then(() => null)]);\n return compressed;\n}\nasync function createPNGLikeImage(buffer, width, height, dict) {\n const bytesPerPixel = buffer.length / (width * height);\n let compressed;\n if (typeof CompressionStream === \"function\") {\n try {\n const filtered = applyPNGOptimumFilter(buffer, width, height, bytesPerPixel);\n compressed = await deflate(filtered);\n } catch {}\n }\n if (!compressed) {\n return createRawImage(buffer, dict);\n }\n dict.setIfName(\"Filter\", \"FlateDecode\");\n const decodeParms = new Dict(dict.xref);\n decodeParms.set(\"Predictor\", 15);\n decodeParms.set(\"Columns\", width);\n decodeParms.set(\"Colors\", bytesPerPixel);\n decodeParms.set(\"BitsPerComponent\", 8);\n dict.set(\"DecodeParms\", decodeParms);\n return createRawImage(compressed, dict);\n}\nasync function createImage(bitmap, xref, {\n closeBitmap = false\n} = {}) {\n const {\n width,\n height\n } = bitmap;\n if (!Number.isInteger(width) || !Number.isInteger(height) || width <= 0 || height <= 0) {\n if (closeBitmap) {\n bitmap.close?.();\n }\n throw new Error(`createImage: invalid bitmap dimensions ${width}x${height}`);\n }\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n let data;\n try {\n ctx.drawImage(bitmap, 0, 0);\n data = ctx.getImageData(0, 0, width, height).data;\n } finally {\n if (closeBitmap) {\n bitmap.close?.();\n }\n }\n const buf32 = new Uint32Array(data.buffer, data.byteOffset, data.byteLength >> 2);\n const isLE = FeatureTest.isLittleEndian;\n const rgbMask = isLE ? 0x00ffffff : 0xffffff00;\n const colorCounter = new Set();\n let hasAlpha = false;\n let useFlate = true;\n for (const v of buf32) {\n if ((isLE ? v >>> 24 : v & 0xff) !== 0xff) {\n hasAlpha = true;\n break;\n }\n if (useFlate) {\n colorCounter.add((v & rgbMask) >>> 0);\n if (colorCounter.size > FLATE_COLOR_COUNT_THRESHOLD) {\n useFlate = false;\n colorCounter.clear();\n }\n }\n }\n if (hasAlpha) {\n useFlate = true;\n }\n const image = createImageDict(xref, width, height, \"DeviceRGB\");\n let imageStreamPromise;\n let imageRenderStream = null;\n if (useFlate) {\n const rgbBuffer = new Uint8Array(width * height * 3);\n for (let i = 0, j = 0, ii = data.length; i < ii; i += 4, j += 3) {\n rgbBuffer[j] = data[i];\n rgbBuffer[j + 1] = data[i + 1];\n rgbBuffer[j + 2] = data[i + 2];\n }\n imageStreamPromise = createPNGLikeImage(rgbBuffer, width, height, image);\n imageRenderStream = createRawImage(rgbBuffer, createImageDict(xref, width, height, \"DeviceRGB\"));\n } else {\n image.setIfName(\"Filter\", \"DCTDecode\");\n imageStreamPromise = canvas.convertToBlob({\n type: \"image/jpeg\",\n quality: 1\n }).then(blob => blob.bytes()).then(bytes => createRawImage(bytes, image));\n }\n let smaskStreamPromise = Promise.resolve(null);\n let smaskRenderStream = null;\n if (hasAlpha) {\n const alphaBuffer = new Uint8Array(buf32.length);\n if (isLE) {\n for (let i = 0, ii = buf32.length; i < ii; i++) {\n alphaBuffer[i] = buf32[i] >>> 24;\n }\n } else {\n for (let i = 0, ii = buf32.length; i < ii; i++) {\n alphaBuffer[i] = buf32[i] & 0xff;\n }\n }\n const smask = createImageDict(xref, width, height, \"DeviceGray\");\n const smaskRenderDict = createImageDict(xref, width, height, \"DeviceGray\");\n smaskStreamPromise = createPNGLikeImage(alphaBuffer, width, height, smask);\n smaskRenderStream = createRawImage(alphaBuffer, smaskRenderDict);\n }\n const [imageStream, smaskStream] = await Promise.all([imageStreamPromise, smaskStreamPromise]);\n return {\n imageStream,\n imageRenderStream,\n smaskStream,\n smaskRenderStream,\n width,\n height\n };\n}\n\n;// ./src/core/object_loader.js\n\n\n\n\nfunction mayHaveChildren(value) {\n return value instanceof Ref || value instanceof Dict || value instanceof BaseStream || Array.isArray(value);\n}\nfunction addChildren(node, nodesToVisit) {\n if (node instanceof Dict) {\n node = node.getRawValues();\n } else if (node instanceof BaseStream) {\n node = node.dict.getRawValues();\n } else if (!Array.isArray(node)) {\n return;\n }\n for (const rawValue of node) {\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n}\nclass ObjectLoader {\n refSet = new RefSet();\n constructor(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n }\n async load() {\n const {\n keys,\n dict\n } = this;\n const nodesToVisit = [];\n for (const key of keys) {\n const rawValue = dict.getRaw(key);\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n await this.#walk(nodesToVisit);\n this.refSet = null;\n }\n async #walk(nodesToVisit) {\n const nodesToRevisit = [];\n const pendingRequests = [];\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n if (currentNode instanceof Ref) {\n if (this.refSet.has(currentNode)) {\n continue;\n }\n try {\n this.refSet.put(currentNode);\n currentNode = this.xref.fetch(currentNode);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n warn(`ObjectLoader.#walk - requesting all data: \"${ex}\".`);\n await this.xref.stream.manager.requestAllChunks();\n return;\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({\n begin: ex.begin,\n end: ex.end\n });\n }\n }\n if (currentNode instanceof BaseStream) {\n const baseStreams = currentNode.getBaseStreams();\n if (baseStreams) {\n let foundMissingData = false;\n for (const stream of baseStreams) {\n if (stream.isDataLoaded) {\n continue;\n }\n foundMissingData = true;\n pendingRequests.push({\n begin: stream.start,\n end: stream.end\n });\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n }\n addChildren(currentNode, nodesToVisit);\n }\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n for (const node of nodesToRevisit) {\n if (node instanceof Ref) {\n this.refSet.remove(node);\n }\n }\n await this.#walk(nodesToRevisit);\n }\n }\n static async load(obj, keys, xref) {\n if (xref.stream.isDataLoaded) {\n return;\n }\n const objLoader = new ObjectLoader(obj, keys, xref);\n await objLoader.load();\n }\n}\n\n;// ./src/core/xfa/symbol_utils.js\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\n;// ./src/core/xfa/namespaces.js\nconst $buildXFAObject = Symbol();\nconst NamespaceIds = {\n config: {\n id: 0,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\")\n },\n connectionSet: {\n id: 1,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\")\n },\n datasets: {\n id: 2,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\")\n },\n form: {\n id: 3,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\")\n },\n localeSet: {\n id: 4,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\")\n },\n pdf: {\n id: 5,\n check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\"\n },\n signature: {\n id: 6,\n check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\"\n },\n sourceSet: {\n id: 7,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\")\n },\n stylesheet: {\n id: 8,\n check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\"\n },\n template: {\n id: 9,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\")\n },\n xdc: {\n id: 10,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\")\n },\n xdp: {\n id: 11,\n check: ns => ns === \"http://ns.adobe.com/xdp/\"\n },\n xfdf: {\n id: 12,\n check: ns => ns === \"http://ns.adobe.com/xfdf/\"\n },\n xhtml: {\n id: 13,\n check: ns => ns === \"http://www.w3.org/1999/xhtml\"\n },\n xmpmeta: {\n id: 14,\n check: ns => ns === \"http://ns.adobe.com/xmpmeta/\"\n }\n};\n\n;// ./src/core/xfa/utils.js\n\n\nconst dimConverters = {\n pt: x => x,\n cm: x => x / 2.54 * 72,\n mm: x => x / (10 * 2.54) * 72,\n in: x => x * 72,\n px: x => x\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\nfunction stripQuotes(str) {\n if (str.startsWith(\"'\") || str.startsWith('\"')) {\n return str.slice(1, -1);\n }\n return str;\n}\nfunction getInteger({\n data,\n defaultValue,\n validate\n}) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseInt(data, 10);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\nfunction getFloat({\n data,\n defaultValue,\n validate\n}) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseFloat(data);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\nfunction getKeyword({\n data,\n defaultValue,\n validate\n}) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n if (validate(data)) {\n return data;\n }\n return defaultValue;\n}\nfunction getStringOption(data, options) {\n return getKeyword({\n data,\n defaultValue: options[0],\n validate: k => options.includes(k)\n });\n}\nfunction getMeasurement(str, def = \"0\") {\n def ||= \"0\";\n if (!str) {\n return getMeasurement(def);\n }\n const match = str.trim().match(measurementPattern);\n if (!match) {\n return getMeasurement(def);\n }\n const [, valueStr, unit] = match;\n const value = parseFloat(valueStr);\n if (isNaN(value)) {\n return getMeasurement(def);\n }\n if (value === 0) {\n return 0;\n }\n const conv = dimConverters[unit];\n if (conv) {\n return conv(value);\n }\n return value;\n}\nfunction getRatio(data) {\n if (!data) {\n return {\n num: 1,\n den: 1\n };\n }\n const ratio = data.split(\":\", 2).map(x => parseFloat(x.trim())).filter(x => !isNaN(x));\n if (ratio.length === 1) {\n ratio.push(1);\n }\n if (ratio.length === 0) {\n return {\n num: 1,\n den: 1\n };\n }\n const [num, den] = ratio;\n return {\n num,\n den\n };\n}\nfunction getRelevant(data) {\n if (!data) {\n return [];\n }\n return data.trim().split(/\\s+/).map(e => ({\n excluded: e[0] === \"-\",\n viewname: e.substring(1)\n }));\n}\nfunction getColor(data, def = [0, 0, 0]) {\n let [r, g, b] = def;\n if (!data) {\n return {\n r,\n g,\n b\n };\n }\n const color = data.split(\",\", 3).map(c => {\n c = parseInt(c.trim(), 10);\n return isNaN(c) ? 0 : MathClamp(c, 0, 255);\n });\n if (color.length < 3) {\n return {\n r,\n g,\n b\n };\n }\n [r, g, b] = color;\n return {\n r,\n g,\n b\n };\n}\nfunction getBBox(data) {\n const def = -1;\n if (!data) {\n return {\n x: def,\n y: def,\n width: def,\n height: def\n };\n }\n const bbox = data.split(\",\", 4).map(m => getMeasurement(m.trim(), \"-1\"));\n if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n return {\n x: def,\n y: def,\n width: def,\n height: def\n };\n }\n const [x, y, width, height] = bbox;\n return {\n x,\n y,\n width,\n height\n };\n}\nclass HTMLResult {\n static get FAILURE() {\n return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n }\n static get EMPTY() {\n return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n }\n constructor(success, html, bbox, breakNode) {\n this.success = success;\n this.html = html;\n this.bbox = bbox;\n this.breakNode = breakNode;\n }\n isBreak() {\n return !!this.breakNode;\n }\n static breakNode(node) {\n return new HTMLResult(false, null, null, node);\n }\n static success(html, bbox = null) {\n return new HTMLResult(true, html, bbox, null);\n }\n}\n\n;// ./src/core/xfa/fonts.js\n\n\n\nclass FontFinder {\n constructor(pdfFonts) {\n this.fonts = new Map();\n this.cache = new Map();\n this.warned = new Set();\n this.defaultFont = null;\n this.add(pdfFonts);\n }\n add(pdfFonts, reallyMissingFonts = null) {\n for (const pdfFont of pdfFonts) {\n this.addPdfFont(pdfFont);\n }\n for (const pdfFont of this.fonts.values()) {\n pdfFont.regular ||= pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n }\n if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n return;\n }\n const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n for (const missing of reallyMissingFonts) {\n this.fonts.set(missing, myriad);\n }\n }\n addPdfFont(pdfFont) {\n const cssFontInfo = pdfFont.cssFontInfo;\n const name = cssFontInfo.fontFamily;\n const font = this.fonts.getOrInsertComputed(name, makeObj);\n this.defaultFont ??= font;\n let property = \"\";\n const fontWeight = parseFloat(cssFontInfo.fontWeight);\n if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n } else if (fontWeight >= 700) {\n property = \"bold\";\n }\n if (!property) {\n if (pdfFont.name.includes(\"Bold\") || pdfFont.psName?.includes(\"Bold\")) {\n property = \"bold\";\n }\n if (pdfFont.name.includes(\"Italic\") || pdfFont.name.endsWith(\"It\") || pdfFont.psName?.includes(\"Italic\") || pdfFont.psName?.endsWith(\"It\")) {\n property += \"italic\";\n }\n }\n property ||= \"regular\";\n font[property] = pdfFont;\n }\n getDefault() {\n return this.defaultFont;\n }\n find(fontName, mustWarn = true) {\n let font = this.fonts.get(fontName) || this.cache.get(fontName);\n if (font) {\n return font;\n }\n const pattern = /[,\\-_ ]|bolditalic|bold|italic|regular|it/gi;\n let name = fontName.replaceAll(pattern, \"\");\n font = this.fonts.get(name);\n if (font) {\n this.cache.set(fontName, font);\n return font;\n }\n name = name.toLowerCase();\n const maybe = [];\n for (const [family, pdfFont] of this.fonts) {\n if (family.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (pdfFont.regular.name?.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n if (maybe.length === 0) {\n name = name.replaceAll(/psmt|mt/gi, \"\");\n for (const [family, pdfFont] of this.fonts) {\n if (family.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (pdfFont.regular.name?.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n if (maybe.length >= 1) {\n if (maybe.length !== 1 && mustWarn) {\n warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n }\n this.cache.set(fontName, maybe[0]);\n return maybe[0];\n }\n if (mustWarn && !this.warned.has(fontName)) {\n this.warned.add(fontName);\n warn(`XFA - Cannot find the font: ${fontName}`);\n }\n return null;\n }\n}\nfunction selectFont(xfaFont, typeface) {\n if (xfaFont.posture === \"italic\") {\n return xfaFont.weight === \"bold\" ? typeface.bolditalic : typeface.italic;\n } else if (xfaFont.weight === \"bold\") {\n return typeface.bold;\n }\n return typeface.regular;\n}\nfunction fonts_getMetrics(xfaFont, real = false) {\n let pdfFont = null;\n if (xfaFont) {\n const name = stripQuotes(xfaFont.typeface);\n const typeface = xfaFont[$globalData].fontFinder.find(name);\n pdfFont = selectFont(xfaFont, typeface);\n }\n if (!pdfFont) {\n return {\n lineHeight: 12,\n lineGap: 2,\n lineNoGap: 10\n };\n }\n const size = xfaFont.size || 10;\n const lineHeight = pdfFont.lineHeight ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight) : 1.2;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n return {\n lineHeight: lineHeight * size,\n lineGap: lineGap * size,\n lineNoGap: Math.max(1, lineHeight - lineGap) * size\n };\n}\n\n;// ./src/core/xfa/text.js\n\nconst WIDTH_FACTOR = 1.02;\nclass FontInfo {\n constructor(xfaFont, margin, lineHeight, fontFinder) {\n this.lineHeight = lineHeight;\n this.paraMargin = margin || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n };\n if (!xfaFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n this.xfaFont = {\n typeface: xfaFont.typeface,\n posture: xfaFont.posture,\n weight: xfaFont.weight,\n size: xfaFont.size,\n letterSpacing: xfaFont.letterSpacing\n };\n const typeface = fontFinder.find(xfaFont.typeface);\n if (!typeface) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n this.pdfFont = selectFont(xfaFont, typeface);\n if (!this.pdfFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n }\n }\n defaultFont(fontFinder) {\n const font = fontFinder.find(\"Helvetica\", false) || fontFinder.find(\"Myriad Pro\", false) || fontFinder.find(\"Arial\", false) || fontFinder.getDefault();\n if (font?.regular) {\n const pdfFont = font.regular;\n const info = pdfFont.cssFontInfo;\n const xfaFont = {\n typeface: info.fontFamily,\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0\n };\n return [pdfFont, xfaFont];\n }\n const xfaFont = {\n typeface: \"Courier\",\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0\n };\n return [null, xfaFont];\n }\n}\nclass FontSelector {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder) {\n this.fontFinder = fontFinder;\n this.stack = [new FontInfo(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder)];\n }\n pushData(xfaFont, margin, lineHeight) {\n const lastFont = this.stack.at(-1);\n for (const name of [\"typeface\", \"posture\", \"weight\", \"size\", \"letterSpacing\"]) {\n xfaFont[name] ||= lastFont.xfaFont[name];\n }\n for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n if (isNaN(margin[name])) {\n margin[name] = lastFont.paraMargin[name];\n }\n }\n const fontInfo = new FontInfo(xfaFont, margin, lineHeight || lastFont.lineHeight, this.fontFinder);\n fontInfo.pdfFont ||= lastFont.pdfFont;\n this.stack.push(fontInfo);\n }\n popFont() {\n this.stack.pop();\n }\n topFont() {\n return this.stack.at(-1);\n }\n}\nclass TextMeasure {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n this.glyphs = [];\n this.fontSelector = new FontSelector(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts);\n this.extraHeight = 0;\n }\n pushData(xfaFont, margin, lineHeight) {\n this.fontSelector.pushData(xfaFont, margin, lineHeight);\n }\n popFont(xfaFont) {\n return this.fontSelector.popFont();\n }\n addPara() {\n const lastFont = this.fontSelector.topFont();\n this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n }\n addString(str) {\n if (!str) {\n return;\n }\n const lastFont = this.fontSelector.topFont();\n const fontSize = lastFont.xfaFont.size;\n if (lastFont.pdfFont) {\n const letterSpacing = lastFont.xfaFont.letterSpacing;\n const pdfFont = lastFont.pdfFont;\n const fontLineHeight = pdfFont.lineHeight || 1.2;\n const lineHeight = lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n const noGap = fontLineHeight - lineGap;\n const firstLineHeight = Math.max(1, noGap) * fontSize;\n const scale = fontSize / 1000;\n const fallbackWidth = pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n for (const line of str.split(/[\\u2029\\n]/)) {\n const encodedLine = pdfFont.encodeString(line).join(\"\");\n const glyphs = pdfFont.charsToGlyphs(encodedLine);\n for (const glyph of glyphs) {\n const width = glyph.width || fallbackWidth;\n this.glyphs.push([width * scale + letterSpacing, lineHeight, firstLineHeight, glyph.unicode, false]);\n }\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n return;\n }\n for (const line of str.split(/[\\u2029\\n]/)) {\n for (const char of line.split(\"\")) {\n this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n }\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n }\n compute(maxWidth) {\n let lastSpacePos = -1,\n lastSpaceWidth = 0,\n width = 0,\n height = 0,\n currentLineWidth = 0,\n currentLineHeight = 0;\n let isBroken = false;\n let isFirstLine = true;\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] = this.glyphs[i];\n const isSpace = char === \" \";\n const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n if (isEOL) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isFirstLine = false;\n continue;\n }\n if (isSpace) {\n if (currentLineWidth + glyphWidth > maxWidth) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isBroken = true;\n isFirstLine = false;\n } else {\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n lastSpaceWidth = currentLineWidth;\n currentLineWidth += glyphWidth;\n lastSpacePos = i;\n }\n continue;\n }\n if (currentLineWidth + glyphWidth > maxWidth) {\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n if (lastSpacePos !== -1) {\n i = lastSpacePos;\n width = Math.max(width, lastSpaceWidth);\n currentLineWidth = 0;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n } else {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = glyphWidth;\n }\n isBroken = true;\n isFirstLine = false;\n continue;\n }\n currentLineWidth += glyphWidth;\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n }\n width = Math.max(width, currentLineWidth);\n height += currentLineHeight + this.extraHeight;\n return {\n width: WIDTH_FACTOR * width,\n height,\n isBroken\n };\n }\n}\n\n;// ./src/core/xfa/som.js\n\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n dot: 0,\n dotDot: 1,\n dotHash: 2,\n dotBracket: 3,\n dotParen: 4\n};\nconst shortcuts = new Map([[\"$data\", (root, current) => root.datasets ? root.datasets.data : root], [\"$record\", (root, current) => (root.datasets ? root.datasets.data : root)[$getChildren]()[0]], [\"$template\", (root, current) => root.template], [\"$connectionSet\", (root, current) => root.connectionSet], [\"$form\", (root, current) => root.form], [\"$layout\", (root, current) => root.layout], [\"$host\", (root, current) => root.host], [\"$dataWindow\", (root, current) => root.dataWindow], [\"$event\", (root, current) => root.event], [\"!\", (root, current) => root.datasets], [\"$xfa\", (root, current) => root], [\"xfa\", (root, current) => root], [\"$\", (root, current) => current]]);\nconst somCache = new WeakMap();\nfunction parseIndex(index) {\n index = index.trim();\n if (index === \"*\") {\n return Infinity;\n }\n return parseInt(index, 10) || 0;\n}\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n let match = expr.match(namePattern);\n if (!match) {\n return null;\n }\n let [name] = match;\n const parsed = [{\n name,\n cacheName: \".\" + name,\n index: 0,\n js: null,\n formCalc: null,\n operator: operators.dot\n }];\n let pos = name.length;\n while (pos < expr.length) {\n const spos = pos;\n const char = expr.charAt(pos++);\n if (char === \"[\") {\n match = expr.slice(pos).match(indexPattern);\n if (!match) {\n warn(\"XFA - Invalid index in SOM expression\");\n return null;\n }\n parsed.at(-1).index = parseIndex(match[0]);\n pos += match[0].length + 1;\n continue;\n }\n let operator;\n switch (expr.charAt(pos)) {\n case \".\":\n if (!dotDotAllowed) {\n return null;\n }\n pos++;\n operator = operators.dotDot;\n break;\n case \"#\":\n pos++;\n operator = operators.dotHash;\n break;\n case \"[\":\n if (noExpr) {\n warn(\"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\");\n return null;\n }\n operator = operators.dotBracket;\n break;\n case \"(\":\n if (noExpr) {\n warn(\"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\");\n return null;\n }\n operator = operators.dotParen;\n break;\n default:\n operator = operators.dot;\n break;\n }\n match = expr.slice(pos).match(namePattern);\n if (!match) {\n break;\n }\n [name] = match;\n pos += name.length;\n parsed.push({\n name,\n cacheName: expr.slice(spos, pos),\n operator,\n index: 0,\n js: null,\n formCalc: null\n });\n }\n return parsed;\n}\nfunction searchNode(root, container, expr, dotDotAllowed = true, useCache = true) {\n const parsed = parseExpression(expr, dotDotAllowed);\n if (!parsed) {\n return null;\n }\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n let isQualified;\n if (fn) {\n isQualified = true;\n root = [fn(root, container)];\n i = 1;\n } else {\n isQualified = container === null;\n root = [container || root];\n }\n for (let ii = parsed.length; i < ii; i++) {\n const {\n name,\n cacheName,\n operator,\n index\n } = parsed[i];\n const nodes = [];\n for (const node of root) {\n if (!node.isXFAObject) {\n continue;\n }\n let children, cached;\n if (useCache) {\n cached = somCache.getOrInsertComputed(node, makeMap);\n children = cached.get(cacheName);\n }\n if (!children) {\n switch (operator) {\n case operators.dot:\n children = node[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = node[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = node[$getChildrenByClass](name);\n children = children.isXFAObjectArray ? children.children : [children];\n break;\n default:\n break;\n }\n if (useCache) {\n cached.set(cacheName, children);\n }\n }\n if (children.length > 0) {\n nodes.push(children);\n }\n }\n if (nodes.length === 0 && !isQualified && i === 0) {\n const parent = container[$getParent]();\n container = parent;\n if (!container) {\n return null;\n }\n i = -1;\n root = [container];\n continue;\n }\n root = isFinite(index) ? nodes.filter(node => index < node.length).map(node => node[index]) : nodes.flat();\n }\n if (root.length === 0) {\n return null;\n }\n return root;\n}\nfunction createDataNode(root, container, expr) {\n const parsed = parseExpression(expr);\n if (!parsed) {\n return null;\n }\n if (parsed.some(x => x.operator === operators.dotDot)) {\n return null;\n }\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n if (fn) {\n root = fn(root, container);\n i = 1;\n } else {\n root = container || root;\n }\n for (let ii = parsed.length; i < ii; i++) {\n const {\n name,\n operator,\n index\n } = parsed[i];\n if (!isFinite(index)) {\n parsed[i].index = 0;\n return root.createNodes(parsed.slice(i));\n }\n let children;\n switch (operator) {\n case operators.dot:\n children = root[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = root[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = root[$getChildrenByClass](name);\n children = children.isXFAObjectArray ? children.children : [children];\n break;\n default:\n break;\n }\n if (children.length === 0) {\n return root.createNodes(parsed.slice(i));\n }\n if (index < children.length) {\n const child = children[index];\n if (!child.isXFAObject) {\n warn(`XFA - Cannot create a node.`);\n return null;\n }\n root = child;\n } else {\n parsed[i].index = index - children.length;\n return root.createNodes(parsed.slice(i));\n }\n }\n return null;\n}\n\n;// ./src/core/xfa/xfa_object.js\n\n\n\n\n\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\nlet uid = 0;\nconst NS_DATASETS = NamespaceIds.datasets.id;\nclass XFAObject {\n constructor(nsId, name, hasChildren = false) {\n this[$namespaceId] = nsId;\n this[$nodeName] = name;\n this[_hasChildren] = hasChildren;\n this[_parent] = null;\n this[_children] = [];\n this[$uid] = `${name}${uid++}`;\n this[$globalData] = null;\n }\n get isXFAObject() {\n return true;\n }\n get isXFAObjectArray() {\n return false;\n }\n createNodes(path) {\n let root = this,\n node = null;\n for (const {\n name,\n index\n } of path) {\n for (let i = 0, ii = isFinite(index) ? index : 0; i <= ii; i++) {\n const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n node = new XmlObject(nsId, name);\n root[$appendChild](node);\n }\n root = node;\n }\n return node;\n }\n [$onChild](child) {\n if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n return false;\n }\n const name = child[$nodeName];\n const node = this[name];\n if (node instanceof XFAObjectArray) {\n if (node.push(child)) {\n this[$appendChild](child);\n return true;\n }\n } else {\n if (node !== null) {\n this[$removeChild](node);\n }\n this[name] = child;\n this[$appendChild](child);\n return true;\n }\n let id = \"\";\n if (this.id) {\n id = ` (id: ${this.id})`;\n } else if (this.name) {\n id = ` (name: ${this.name} ${this.h.value})`;\n }\n warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n return false;\n }\n [$onChildCheck](child) {\n return Object.hasOwn(this, child[$nodeName]) && child[$namespaceId] === this[$namespaceId];\n }\n [$isNsAgnostic]() {\n return false;\n }\n [$acceptWhitespace]() {\n return false;\n }\n [$isCDATAXml]() {\n return false;\n }\n [$isBindable]() {\n return false;\n }\n [$popPara]() {\n if (this.para) {\n this[$getTemplateRoot]()[$extra].paraStack.pop();\n }\n }\n [$pushPara]() {\n this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n }\n [$setId](ids) {\n if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n ids.set(this.id, this);\n }\n }\n [$getTemplateRoot]() {\n return this[$globalData].template;\n }\n [$isSplittable]() {\n return false;\n }\n [$isThereMoreWidth]() {\n return false;\n }\n [$appendChild](child) {\n child[_parent] = this;\n this[_children].push(child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n [$removeChild](child) {\n const i = this[_children].indexOf(child);\n this[_children].splice(i, 1);\n }\n [$hasSettableValue]() {\n return Object.hasOwn(this, \"value\");\n }\n [$setValue](_) {}\n [$onText](_) {}\n [$finalize]() {}\n [$clean](builder) {\n delete this[_hasChildren];\n if (this[$cleanup]) {\n builder.clean(this[$cleanup]);\n delete this[$cleanup];\n }\n }\n [$indexOf](child) {\n return this[_children].indexOf(child);\n }\n [$insertAt](i, child) {\n child[_parent] = this;\n this[_children].splice(i, 0, child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n [$isTransparent]() {\n return !this.name;\n }\n [$lastAttribute]() {\n return \"\";\n }\n [$text]() {\n return this[_children].length === 0 ? this[$content] : this[_children].map(c => c[$text]()).join(\"\");\n }\n get [_attributeNames]() {\n const proto = Object.getPrototypeOf(this);\n if (!proto._attributes) {\n const attributes = proto._attributes = new Set();\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[name] === null || this[name] instanceof XFAObject || this[name] instanceof XFAObjectArray) {\n break;\n }\n attributes.add(name);\n }\n }\n return shadow(this, _attributeNames, proto._attributes);\n }\n [$isDescendent](parent) {\n let node = this;\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node[$getParent]();\n }\n return false;\n }\n [$getParent]() {\n return this[_parent];\n }\n [$getSubformParent]() {\n return this[$getParent]();\n }\n [$dump]() {\n const dumped = Object.create(null);\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n const value = this[name];\n if (value === null) {\n continue;\n }\n if (value instanceof XFAObject) {\n dumped[name] = value[$dump]();\n } else if (value instanceof XFAObjectArray) {\n if (!value.isEmpty()) {\n dumped[name] = value.dump();\n }\n } else {\n dumped[name] = value;\n }\n }\n return dumped;\n }\n [$toStyle]() {\n return null;\n }\n [$toHTML]() {\n return HTMLResult.EMPTY;\n }\n *[$getContainedChildren]() {\n for (const node of this[$getChildren]()) {\n yield node;\n }\n }\n *[_filteredChildrenGenerator](filter, include) {\n for (const node of this[$getContainedChildren]()) {\n if (!filter || include === filter.has(node[$nodeName])) {\n const availableSpace = this[$getAvailableSpace]();\n const res = node[$toHTML](availableSpace);\n if (!res.success) {\n this[$extra].failingNode = node;\n }\n yield res;\n }\n }\n }\n [$flushHTML]() {\n return null;\n }\n [$addHTML](html, bbox) {\n this[$extra].children.push(html);\n }\n [$getAvailableSpace]() {}\n [$childrenToHTML]({\n filter = null,\n include = true\n }) {\n if (!this[$extra].generator) {\n this[$extra].generator = this[_filteredChildrenGenerator](filter, include);\n } else {\n const availableSpace = this[$getAvailableSpace]();\n const res = this[$extra].failingNode[$toHTML](availableSpace);\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n delete this[$extra].failingNode;\n }\n while (true) {\n const gen = this[$extra].generator.next();\n if (gen.done) {\n break;\n }\n const res = gen.value;\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n }\n this[$extra].generator = null;\n return HTMLResult.EMPTY;\n }\n [$setSetAttributes](attributes) {\n this[_setAttributes] = new Set(Object.keys(attributes));\n }\n [_getUnsetAttributes](protoAttributes) {\n const allAttr = this[_attributeNames];\n const setAttr = this[_setAttributes];\n return protoAttributes.keys().filter(x => allAttr.has(x) && !setAttr.has(x)).toArray();\n }\n [$resolvePrototypes](ids, ancestors = new Set()) {\n for (const child of this[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n [_resolvePrototypesHelper](ids, ancestors) {\n const proto = this[_getPrototype](ids, ancestors);\n if (proto) {\n this[_applyPrototype](proto, ids, ancestors);\n } else {\n this[$resolvePrototypes](ids, ancestors);\n }\n }\n [_getPrototype](ids, ancestors) {\n const {\n use,\n usehref\n } = this;\n if (!use && !usehref) {\n return null;\n }\n let proto = null;\n let somExpression = null;\n let id = null;\n let ref = use;\n if (usehref) {\n ref = usehref;\n if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\"#som(\".length, -1);\n } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\".#som(\".length, -1);\n } else if (usehref.startsWith(\"#\")) {\n id = usehref.slice(1);\n } else if (usehref.startsWith(\".#\")) {\n id = usehref.slice(2);\n }\n } else if (use.startsWith(\"#\")) {\n id = use.slice(1);\n } else {\n somExpression = use;\n }\n this.use = this.usehref = \"\";\n if (id) {\n proto = ids.get(id);\n } else {\n proto = searchNode(ids.get($root), this, somExpression, true, false);\n proto &&= proto[0];\n }\n if (!proto) {\n warn(`XFA - Invalid prototype reference: ${ref}.`);\n return null;\n }\n if (proto[$nodeName] !== this[$nodeName]) {\n warn(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`);\n return null;\n }\n if (ancestors.has(proto)) {\n warn(`XFA - Cycle detected in prototypes use.`);\n return null;\n }\n ancestors.add(proto);\n const protoProto = proto[_getPrototype](ids, ancestors);\n if (protoProto) {\n proto[_applyPrototype](protoProto, ids, ancestors);\n }\n proto[$resolvePrototypes](ids, ancestors);\n ancestors.delete(proto);\n return proto;\n }\n [_applyPrototype](proto, ids, ancestors) {\n if (ancestors.has(proto)) {\n warn(`XFA - Cycle detected in prototypes use.`);\n return;\n }\n if (!this[$content] && proto[$content]) {\n this[$content] = proto[$content];\n }\n const newAncestors = new Set(ancestors);\n newAncestors.add(proto);\n for (const unsetAttrName of this[_getUnsetAttributes](proto[_setAttributes])) {\n this[unsetAttrName] = proto[unsetAttrName];\n if (this[_setAttributes]) {\n this[_setAttributes].add(unsetAttrName);\n }\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n continue;\n }\n const value = this[name];\n const protoValue = proto[name];\n if (value instanceof XFAObjectArray) {\n for (const child of value[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) {\n const child = proto[_children][i][$clone]();\n if (value.push(child)) {\n child[_parent] = this;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n } else {\n break;\n }\n }\n continue;\n }\n if (value !== null) {\n value[$resolvePrototypes](ids, ancestors);\n if (protoValue) {\n value[_applyPrototype](protoValue, ids, ancestors);\n }\n continue;\n }\n if (protoValue !== null) {\n const child = protoValue[$clone]();\n child[_parent] = this;\n this[name] = child;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n }\n static [_cloneAttribute](obj) {\n if (Array.isArray(obj)) {\n return obj.map(x => XFAObject[_cloneAttribute](x));\n }\n if (typeof obj === \"object\" && obj !== null) {\n return Object.assign({}, obj);\n }\n return obj;\n }\n [$clone]() {\n const clone = Object.create(Object.getPrototypeOf(this));\n for (const $symbol of Object.getOwnPropertySymbols(this)) {\n try {\n clone[$symbol] = this[$symbol];\n } catch {\n shadow(clone, $symbol, this[$symbol]);\n }\n }\n clone[$uid] = `${clone[$nodeName]}${uid++}`;\n clone[_children] = [];\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n clone[name] = XFAObject[_cloneAttribute](this[name]);\n continue;\n }\n const value = this[name];\n clone[name] = value instanceof XFAObjectArray ? new XFAObjectArray(value[_max]) : null;\n }\n for (const child of this[_children]) {\n const name = child[$nodeName];\n const clonedChild = child[$clone]();\n clone[_children].push(clonedChild);\n clonedChild[_parent] = clone;\n if (clone[name] === null) {\n clone[name] = clonedChild;\n } else {\n clone[name][_children].push(clonedChild);\n }\n }\n return clone;\n }\n [$getChildren](name = null) {\n return !name ? this[_children] : this[_children].filter(c => c[$nodeName] === name);\n }\n [$getChildrenByClass](name) {\n return this[name];\n }\n [$getChildrenByName](name, allTransparent, first = true) {\n return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n }\n *[$getChildrenByNameIt](name, allTransparent, first = true) {\n if (name === \"parent\") {\n yield this[_parent];\n return;\n }\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n if (child.name === name) {\n yield child;\n }\n if (allTransparent || child[$isTransparent]()) {\n yield* child[$getChildrenByNameIt](name, allTransparent, false);\n }\n }\n if (first && this[_attributeNames].has(name)) {\n yield new XFAAttribute(this, name, this[name]);\n }\n }\n}\nclass XFAObjectArray {\n constructor(max = Infinity) {\n this[_max] = max;\n this[_children] = [];\n }\n get isXFAObject() {\n return false;\n }\n get isXFAObjectArray() {\n return true;\n }\n push(child) {\n const len = this[_children].length;\n if (len <= this[_max]) {\n this[_children].push(child);\n return true;\n }\n warn(`XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`);\n return false;\n }\n isEmpty() {\n return this[_children].length === 0;\n }\n dump() {\n return this[_children].length === 1 ? this[_children][0][$dump]() : this[_children].map(x => x[$dump]());\n }\n [$clone]() {\n const clone = new XFAObjectArray(this[_max]);\n clone[_children] = this[_children].map(c => c[$clone]());\n return clone;\n }\n get children() {\n return this[_children];\n }\n clear() {\n this[_children].length = 0;\n }\n}\nclass XFAAttribute {\n constructor(node, name, value) {\n this[_parent] = node;\n this[$nodeName] = name;\n this[$content] = value;\n this[$consumed] = false;\n this[$uid] = `attribute${uid++}`;\n }\n [$getParent]() {\n return this[_parent];\n }\n [$isDataValue]() {\n return true;\n }\n [$getDataValue]() {\n return this[$content].trim();\n }\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n [$text]() {\n return this[$content];\n }\n [$isDescendent](parent) {\n return this[_parent] === parent || this[_parent][$isDescendent](parent);\n }\n}\nclass XmlObject extends XFAObject {\n constructor(nsId, name, attributes = {}) {\n super(nsId, name);\n this[$content] = \"\";\n this[_dataValue] = null;\n if (name !== \"#text\") {\n const map = new Map();\n this[_attributes] = map;\n for (const [attrName, value] of Object.entries(attributes)) {\n map.set(attrName, new XFAAttribute(this, attrName, value));\n }\n if (Object.hasOwn(attributes, $nsAttributes)) {\n const dataNode = attributes[$nsAttributes].xfa.dataNode;\n if (dataNode !== undefined) {\n if (dataNode === \"dataGroup\") {\n this[_dataValue] = false;\n } else if (dataNode === \"dataValue\") {\n this[_dataValue] = true;\n }\n }\n }\n }\n this[$consumed] = false;\n }\n [$toString](buf) {\n const tagName = this[$nodeName];\n if (tagName === \"#text\") {\n buf.push(encodeToXmlString(this[$content]));\n return;\n }\n const utf8TagName = utf8StringToString(tagName);\n const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n buf.push(`<${prefix}${utf8TagName}`);\n for (const [name, value] of this[_attributes]) {\n const utf8Name = utf8StringToString(name);\n buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n }\n if (this[_dataValue] !== null) {\n if (this[_dataValue]) {\n buf.push(` xfa:dataNode=\"dataValue\"`);\n } else {\n buf.push(` xfa:dataNode=\"dataGroup\"`);\n }\n }\n if (!this[$content] && this[_children].length === 0) {\n buf.push(\"/>\");\n return;\n }\n buf.push(\">\");\n if (this[$content]) {\n if (typeof this[$content] === \"string\") {\n buf.push(encodeToXmlString(this[$content]));\n } else {\n this[$content][$toString](buf);\n }\n } else {\n for (const child of this[_children]) {\n child[$toString](buf);\n }\n }\n buf.push(``);\n }\n [$onChild](child) {\n if (this[$content]) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n this[$content] = \"\";\n }\n this[$appendChild](child);\n return true;\n }\n [$onText](str) {\n this[$content] += str;\n }\n [$finalize]() {\n if (this[$content] && this[_children].length > 0) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n delete this[$content];\n }\n }\n [$toHTML]() {\n if (this[$nodeName] === \"#text\") {\n return HTMLResult.success({\n name: \"#text\",\n value: this[$content]\n });\n }\n return HTMLResult.EMPTY;\n }\n [$getAttributes]() {\n return this[_attributes];\n }\n [$getChildrenByClass](name) {\n const value = this[_attributes].get(name);\n if (value !== undefined) {\n return value;\n }\n return this[$getChildren](name);\n }\n *[$getChildrenByNameIt](name, allTransparent) {\n const value = this[_attributes].get(name);\n if (value) {\n yield value;\n }\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n if (allTransparent) {\n yield* child[$getChildrenByNameIt](name, allTransparent);\n }\n }\n }\n *[$getAttributeIt](name, skipConsumed) {\n const value = this[_attributes].get(name);\n if (value && (!skipConsumed || !value[$consumed])) {\n yield value;\n }\n for (const child of this[_children]) {\n yield* child[$getAttributeIt](name, skipConsumed);\n }\n }\n *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n for (const child of this[_children]) {\n if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n yield child;\n }\n if (allTransparent) {\n yield* child[$getRealChildrenByNameIt](name, allTransparent, skipConsumed);\n }\n }\n }\n [$isDataValue]() {\n if (this[_dataValue] === null) {\n return this[_children].length === 0 || this[_children][0][$namespaceId] === NamespaceIds.xhtml.id;\n }\n return this[_dataValue];\n }\n [$getDataValue]() {\n if (this[_dataValue] === null) {\n if (this[_children].length === 0) {\n return this[$content].trim();\n }\n if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n return this[_children][0][$text]().trim();\n }\n return null;\n }\n return this[$content].trim();\n }\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n [$dump](hasNS = false) {\n const dumped = Object.create(null);\n if (hasNS) {\n dumped.$ns = this[$namespaceId];\n }\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n dumped.$name = this[$nodeName];\n dumped.children = [];\n for (const child of this[_children]) {\n dumped.children.push(child[$dump](hasNS));\n }\n dumped.attributes = Object.create(null);\n for (const [name, value] of this[_attributes]) {\n dumped.attributes[name] = value[$content];\n }\n return dumped;\n }\n}\nclass ContentObject extends XFAObject {\n constructor(nsId, name) {\n super(nsId, name);\n this[$content] = \"\";\n }\n [$onText](text) {\n this[$content] += text;\n }\n [$finalize]() {}\n}\nclass OptionObject extends ContentObject {\n constructor(nsId, name, options) {\n super(nsId, name);\n this[_options] = options;\n }\n [$finalize]() {\n this[$content] = getKeyword({\n data: this[$content],\n defaultValue: this[_options][0],\n validate: k => this[_options].includes(k)\n });\n }\n [$clean](builder) {\n super[$clean](builder);\n delete this[_options];\n }\n}\nclass StringObject extends ContentObject {\n [$finalize]() {\n this[$content] = this[$content].trim();\n }\n}\nclass IntegerObject extends ContentObject {\n constructor(nsId, name, defaultValue, validator) {\n super(nsId, name);\n this[_defaultValue] = defaultValue;\n this[_validator] = validator;\n }\n [$finalize]() {\n this[$content] = getInteger({\n data: this[$content],\n defaultValue: this[_defaultValue],\n validate: this[_validator]\n });\n }\n [$clean](builder) {\n super[$clean](builder);\n delete this[_defaultValue];\n delete this[_validator];\n }\n}\nclass Option01 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 0, n => n === 1);\n }\n}\nclass Option10 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 1, n => n === 0);\n }\n}\n\n;// ./src/core/xfa/html_utils.js\n\n\n\n\n\n\n\nfunction measureToString(m) {\n if (typeof m === \"string\") {\n return \"0px\";\n }\n return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\nconst converters = {\n anchorType(node, style) {\n const parent = node[$getSubformParent]();\n if (!parent || parent.layout && parent.layout !== \"position\") {\n return;\n }\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n switch (node.anchorType) {\n case \"bottomCenter\":\n style.transform += \"translate(-50%, -100%)\";\n break;\n case \"bottomLeft\":\n style.transform += \"translate(0,-100%)\";\n break;\n case \"bottomRight\":\n style.transform += \"translate(-100%,-100%)\";\n break;\n case \"middleCenter\":\n style.transform += \"translate(-50%,-50%)\";\n break;\n case \"middleLeft\":\n style.transform += \"translate(0,-50%)\";\n break;\n case \"middleRight\":\n style.transform += \"translate(-100%,-50%)\";\n break;\n case \"topCenter\":\n style.transform += \"translate(-50%,0)\";\n break;\n case \"topRight\":\n style.transform += \"translate(-100%,0)\";\n break;\n }\n },\n dimensions(node, style) {\n const parent = node[$getSubformParent]();\n let width = node.w;\n const height = node.h;\n if (parent.layout?.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let w;\n if (colSpan === -1) {\n w = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn));\n extra.currentColumn = 0;\n } else {\n w = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan));\n extra.currentColumn = (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n }\n if (!isNaN(w)) {\n width = node.w = w;\n }\n }\n style.width = width !== \"\" ? measureToString(width) : \"auto\";\n style.height = height !== \"\" ? measureToString(height) : \"auto\";\n },\n position(node, style) {\n const parent = node[$getSubformParent]();\n if (parent?.layout && parent.layout !== \"position\") {\n return;\n }\n style.position = \"absolute\";\n style.left = measureToString(node.x);\n style.top = measureToString(node.y);\n },\n rotate(node, style) {\n if (node.rotate) {\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n style.transform += `rotate(-${node.rotate}deg)`;\n style.transformOrigin = \"top left\";\n }\n },\n presence(node, style) {\n switch (node.presence) {\n case \"invisible\":\n style.visibility = \"hidden\";\n break;\n case \"hidden\":\n case \"inactive\":\n style.display = \"none\";\n break;\n }\n },\n hAlign(node, style) {\n if (node[$nodeName] === \"para\") {\n switch (node.hAlign) {\n case \"justifyAll\":\n style.textAlign = \"justify-all\";\n break;\n case \"radix\":\n style.textAlign = \"left\";\n break;\n default:\n style.textAlign = node.hAlign;\n }\n } else {\n switch (node.hAlign) {\n case \"left\":\n style.alignSelf = \"start\";\n break;\n case \"center\":\n style.alignSelf = \"center\";\n break;\n case \"right\":\n style.alignSelf = \"end\";\n break;\n }\n }\n },\n margin(node, style) {\n if (node.margin) {\n style.margin = node.margin[$toStyle]().margin;\n }\n }\n};\nfunction setMinMaxDimensions(node, style) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\") {\n if (node.minW > 0) {\n style.minWidth = measureToString(node.minW);\n }\n if (node.maxW > 0) {\n style.maxWidth = measureToString(node.maxW);\n }\n if (node.minH > 0) {\n style.minHeight = measureToString(node.minH);\n }\n if (node.maxH > 0) {\n style.maxHeight = measureToString(node.maxH);\n }\n }\n}\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n if (typeof text === \"string\") {\n measure.addString(text);\n } else {\n text[$pushGlyphs](measure);\n }\n return measure.compute(width);\n}\nfunction layoutNode(node, availableSpace) {\n let height = null;\n let width = null;\n let isBroken = false;\n if ((!node.w || !node.h) && node.value) {\n let marginH = 0;\n let marginV = 0;\n if (node.margin) {\n marginH = node.margin.leftInset + node.margin.rightInset;\n marginV = node.margin.topInset + node.margin.bottomInset;\n }\n let lineHeight = null;\n let margin = null;\n if (node.para) {\n margin = Object.create(null);\n lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n }\n let font = node.font;\n if (!font) {\n const root = node[$getTemplateRoot]();\n let parent = node[$getParent]();\n while (parent && parent !== root) {\n if (parent.font) {\n font = parent.font;\n break;\n }\n parent = parent[$getParent]();\n }\n }\n const maxWidth = (node.w || availableSpace.width) - marginH;\n const fontFinder = node[$globalData].fontFinder;\n if (node.value.exData && node.value.exData[$content] && node.value.exData.contentType === \"text/html\") {\n const res = layoutText(node.value.exData[$content], font, margin, lineHeight, fontFinder, maxWidth);\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n } else {\n const text = node.value[$text]();\n if (text) {\n const res = layoutText(text, font, margin, lineHeight, fontFinder, maxWidth);\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n }\n }\n if (width !== null && !node.w) {\n width += marginH;\n }\n if (height !== null && !node.h) {\n height += marginV;\n }\n }\n return {\n w: width,\n h: height,\n isBroken\n };\n}\nfunction computeBbox(node, html, availableSpace) {\n let bbox;\n if (node.w !== \"\" && node.h !== \"\") {\n bbox = [node.x, node.y, node.w, node.h];\n } else {\n if (!availableSpace) {\n return null;\n }\n let width = node.w;\n if (width === \"\") {\n if (node.maxW === 0) {\n const parent = node[$getSubformParent]();\n width = parent.layout === \"position\" && parent.w !== \"\" ? 0 : node.minW;\n } else {\n width = Math.min(node.maxW, availableSpace.width);\n }\n html.attributes.style.width = measureToString(width);\n }\n let height = node.h;\n if (height === \"\") {\n if (node.maxH === 0) {\n const parent = node[$getSubformParent]();\n height = parent.layout === \"position\" && parent.h !== \"\" ? 0 : node.minH;\n } else {\n height = Math.min(node.maxH, availableSpace.height);\n }\n html.attributes.style.height = measureToString(height);\n }\n bbox = [node.x, node.y, width, height];\n }\n return bbox;\n}\nfunction fixDimensions(node) {\n const parent = node[$getSubformParent]();\n if (parent.layout?.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let width;\n if (colSpan === -1) {\n width = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn));\n } else {\n width = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan));\n }\n if (!isNaN(width)) {\n node.w = width;\n }\n }\n if (parent.layout && parent.layout !== \"position\") {\n node.x = node.y = 0;\n }\n if (node.layout === \"table\") {\n if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n node.w = Math.sumPrecise(node.columnWidths);\n }\n }\n}\nfunction layoutClass(node) {\n switch (node.layout) {\n case \"position\":\n return \"xfaPosition\";\n case \"lr-tb\":\n return \"xfaLrTb\";\n case \"rl-row\":\n return \"xfaRlRow\";\n case \"rl-tb\":\n return \"xfaRlTb\";\n case \"row\":\n return \"xfaRow\";\n case \"table\":\n return \"xfaTable\";\n case \"tb\":\n return \"xfaTb\";\n default:\n return \"xfaPosition\";\n }\n}\nfunction toStyle(node, ...names) {\n const style = Object.create(null);\n for (const name of names) {\n const value = node[name];\n if (value === null) {\n continue;\n }\n if (Object.hasOwn(converters, name)) {\n converters[name](node, style);\n continue;\n }\n if (value instanceof XFAObject) {\n const newStyle = value[$toStyle]();\n if (newStyle) {\n Object.assign(style, newStyle);\n } else {\n warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n }\n }\n }\n return style;\n}\nfunction createWrapper(node, html) {\n const {\n attributes\n } = html;\n const {\n style\n } = attributes;\n const wrapper = {\n name: \"div\",\n attributes: {\n class: [\"xfaWrapper\"],\n style: Object.create(null)\n },\n children: []\n };\n attributes.class.push(\"xfaWrapped\");\n if (node.border) {\n const {\n widths,\n insets\n } = node.border[$extra];\n let width, height;\n let top = insets[0];\n let left = insets[3];\n const insetsH = insets[0] + insets[2];\n const insetsW = insets[1] + insets[3];\n switch (node.border.hand) {\n case \"even\":\n top -= widths[0] / 2;\n left -= widths[3] / 2;\n width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n break;\n case \"left\":\n top -= widths[0];\n left -= widths[3];\n width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n break;\n case \"right\":\n width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n break;\n }\n const classNames = [\"xfaBorder\"];\n if (isPrintOnly(node.border)) {\n classNames.push(\"xfaPrintOnly\");\n }\n const border = {\n name: \"div\",\n attributes: {\n class: classNames,\n style: {\n top: `${top}px`,\n left: `${left}px`,\n width,\n height\n }\n },\n children: []\n };\n for (const key of [\"border\", \"borderWidth\", \"borderColor\", \"borderRadius\", \"borderStyle\"]) {\n if (style[key] !== undefined) {\n border.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.children.push(border, html);\n } else {\n wrapper.children.push(html);\n }\n for (const key of [\"background\", \"backgroundClip\", \"top\", \"left\", \"width\", \"height\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\", \"transform\", \"transformOrigin\", \"visibility\"]) {\n if (style[key] !== undefined) {\n wrapper.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.attributes.style.position = style.position === \"absolute\" ? \"absolute\" : \"relative\";\n delete style.position;\n if (style.alignSelf) {\n wrapper.attributes.style.alignSelf = style.alignSelf;\n delete style.alignSelf;\n }\n return wrapper;\n}\nfunction fixTextIndent(styles) {\n const indent = getMeasurement(styles.textIndent, \"0px\");\n if (indent >= 0) {\n return;\n }\n const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n const padding = getMeasurement(styles[name], \"0px\");\n styles[name] = `${padding - indent}px`;\n}\nfunction setAccess(node, classNames) {\n switch (node.access) {\n case \"nonInteractive\":\n classNames.push(\"xfaNonInteractive\");\n break;\n case \"readOnly\":\n classNames.push(\"xfaReadOnly\");\n break;\n case \"protected\":\n classNames.push(\"xfaDisabled\");\n break;\n }\n}\nfunction isPrintOnly(node) {\n return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === \"print\";\n}\nfunction getCurrentPara(node) {\n const stack = node[$getTemplateRoot]()[$extra].paraStack;\n return stack.length ? stack.at(-1) : null;\n}\nfunction setPara(node, nodeStyle, value) {\n if (value.attributes.class?.includes(\"xfaRich\")) {\n if (nodeStyle) {\n if (node.h === \"\") {\n nodeStyle.height = \"auto\";\n }\n if (node.w === \"\") {\n nodeStyle.width = \"auto\";\n }\n }\n const para = getCurrentPara(node);\n if (para) {\n const valueStyle = value.attributes.style;\n valueStyle.display = \"flex\";\n valueStyle.flexDirection = \"column\";\n switch (para.vAlign) {\n case \"top\":\n valueStyle.justifyContent = \"start\";\n break;\n case \"bottom\":\n valueStyle.justifyContent = \"end\";\n break;\n case \"middle\":\n valueStyle.justifyContent = \"center\";\n break;\n }\n const paraStyle = para[$toStyle]();\n for (const [key, val] of Object.entries(paraStyle)) {\n if (!(key in valueStyle)) {\n valueStyle[key] = val;\n }\n }\n }\n }\n}\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n if (!fontFinder) {\n delete style.fontFamily;\n return;\n }\n const name = stripQuotes(xfaFont.typeface);\n style.fontFamily = serializeFontFamily(name);\n const typeface = fontFinder.find(name);\n if (typeface) {\n const {\n fontFamily\n } = typeface.regular.cssFontInfo;\n if (fontFamily !== name) {\n style.fontFamily = serializeFontFamily(fontFamily);\n }\n const para = getCurrentPara(node);\n if (para && para.lineHeight !== \"\") {\n return;\n }\n if (style.lineHeight) {\n return;\n }\n const pdfFont = selectFont(xfaFont, typeface);\n if (pdfFont) {\n style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n }\n }\n}\nfunction fixURL(str) {\n const absoluteUrl = createValidAbsoluteUrl(str, null, {\n addDefaultProtocol: true,\n tryConvertEncoding: true\n });\n return absoluteUrl ? absoluteUrl.href : null;\n}\n\n;// ./src/core/xfa/layout.js\n\n\n\nfunction createLine(node, children) {\n return {\n name: \"div\",\n attributes: {\n class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"]\n },\n children\n };\n}\nfunction flushHTML(node) {\n if (!node[$extra]) {\n return null;\n }\n const attributes = node[$extra].attributes;\n const html = {\n name: \"div\",\n attributes,\n children: node[$extra].children\n };\n if (node[$extra].failingNode) {\n const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n if (htmlFromFailing) {\n if (node.layout.endsWith(\"-tb\")) {\n html.children.push(createLine(node, [htmlFromFailing]));\n } else {\n html.children.push(htmlFromFailing);\n }\n }\n }\n if (html.children.length === 0) {\n return null;\n }\n return html;\n}\nfunction addHTML(node, html, bbox) {\n const extra = node[$extra];\n const availableSpace = extra.availableSpace;\n const [x, y, w, h] = bbox;\n switch (node.layout) {\n case \"position\":\n {\n extra.width = Math.max(extra.width, x + w);\n extra.height = Math.max(extra.height, y + h);\n extra.children.push(html);\n break;\n }\n case \"lr-tb\":\n case \"rl-tb\":\n if (!extra.line || extra.attempt === 1) {\n extra.line = createLine(node, []);\n extra.children.push(extra.line);\n extra.numberInLine = 0;\n }\n extra.numberInLine += 1;\n extra.line.children.push(html);\n if (extra.attempt === 0) {\n extra.currentWidth += w;\n extra.height = Math.max(extra.height, extra.prevHeight + h);\n } else {\n extra.currentWidth = w;\n extra.prevHeight = extra.height;\n extra.height += h;\n extra.attempt = 0;\n }\n extra.width = Math.max(extra.width, extra.currentWidth);\n break;\n case \"rl-row\":\n case \"row\":\n {\n extra.children.push(html);\n extra.width += w;\n extra.height = Math.max(extra.height, h);\n const height = measureToString(extra.height);\n for (const child of extra.children) {\n child.attributes.style.height = height;\n }\n break;\n }\n case \"table\":\n {\n extra.width = MathClamp(w, extra.width, availableSpace.width);\n extra.height += h;\n extra.children.push(html);\n break;\n }\n case \"tb\":\n {\n extra.width = MathClamp(w, extra.width, availableSpace.width);\n extra.height += h;\n extra.children.push(html);\n break;\n }\n }\n}\nfunction getAvailableSpace(node) {\n const availableSpace = node[$extra].availableSpace;\n const marginV = node.margin ? node.margin.topInset + node.margin.bottomInset : 0;\n const marginH = node.margin ? node.margin.leftInset + node.margin.rightInset : 0;\n switch (node.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (node[$extra].attempt === 0) {\n return {\n width: availableSpace.width - marginH - node[$extra].currentWidth,\n height: availableSpace.height - marginV - node[$extra].prevHeight\n };\n }\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height\n };\n case \"rl-row\":\n case \"row\":\n const width = Math.sumPrecise(node[$extra].columnWidths.slice(node[$extra].currentColumn));\n return {\n width,\n height: availableSpace.height - marginH\n };\n case \"table\":\n case \"tb\":\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height\n };\n case \"position\":\n default:\n return availableSpace;\n }\n}\nfunction getTransformedBBox(node) {\n let w = node.w === \"\" ? NaN : node.w;\n let h = node.h === \"\" ? NaN : node.h;\n let [centerX, centerY] = [0, 0];\n switch (node.anchorType || \"\") {\n case \"bottomCenter\":\n [centerX, centerY] = [w / 2, h];\n break;\n case \"bottomLeft\":\n [centerX, centerY] = [0, h];\n break;\n case \"bottomRight\":\n [centerX, centerY] = [w, h];\n break;\n case \"middleCenter\":\n [centerX, centerY] = [w / 2, h / 2];\n break;\n case \"middleLeft\":\n [centerX, centerY] = [0, h / 2];\n break;\n case \"middleRight\":\n [centerX, centerY] = [w, h / 2];\n break;\n case \"topCenter\":\n [centerX, centerY] = [w / 2, 0];\n break;\n case \"topRight\":\n [centerX, centerY] = [w, 0];\n break;\n }\n let x, y;\n switch (node.rotate || 0) {\n case 0:\n [x, y] = [-centerX, -centerY];\n break;\n case 90:\n [x, y] = [-centerY, centerX];\n [w, h] = [h, -w];\n break;\n case 180:\n [x, y] = [centerX, centerY];\n [w, h] = [-w, -h];\n break;\n case 270:\n [x, y] = [centerY, -centerX];\n [w, h] = [-h, w];\n break;\n }\n return [node.x + x + Math.min(0, w), node.y + y + Math.min(0, h), Math.abs(w), Math.abs(h)];\n}\nfunction checkDimensions(node, space) {\n if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n return true;\n }\n if (node.w === 0 || node.h === 0) {\n return true;\n }\n const ERROR = 2;\n const parent = node[$getSubformParent]();\n const attempt = parent[$extra]?.attempt || 0;\n const [, y, w, h] = getTransformedBBox(node);\n switch (parent.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (attempt === 0) {\n if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n if (node.w !== \"\") {\n if (Math.round(w - space.width) <= ERROR) {\n return true;\n }\n if (parent[$extra].numberInLine === 0) {\n return space.height > ERROR;\n }\n return false;\n }\n return space.width > ERROR;\n }\n if (node.w !== \"\") {\n return Math.round(w - space.width) <= ERROR;\n }\n return space.width > ERROR;\n }\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n return space.height > ERROR;\n case \"table\":\n case \"tb\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h !== \"\" && !node[$isSplittable]()) {\n return Math.round(h - space.height) <= ERROR;\n }\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n return space.height > ERROR;\n case \"position\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n return true;\n }\n const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n return h + y > area.h;\n case \"rl-row\":\n case \"row\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h !== \"\") {\n return Math.round(h - space.height) <= ERROR;\n }\n return true;\n default:\n return true;\n }\n}\n\n;// ./src/core/xfa/template.js\n\n\n\n\n\n\n\n\n\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\nconst MAX_EMPTY_PAGES = 3;\nconst DEFAULT_TAB_INDEX = 5000;\nconst HEADING_PATTERN = /^H(\\d+)$/;\nconst MIMES = 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\"]);\nconst IMAGES_HEADERS = [[[0x42, 0x4d], \"image/bmp\"], [[0xff, 0xd8, 0xff], \"image/jpeg\"], [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"], [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"], [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"], [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"]];\nfunction getBorderDims(node) {\n if (!node || !node.border) {\n return {\n w: 0,\n h: 0\n };\n }\n const borderExtra = node.border[$getExtra]();\n if (!borderExtra) {\n return {\n w: 0,\n h: 0\n };\n }\n return {\n w: borderExtra.widths[0] + borderExtra.widths[2] + borderExtra.insets[0] + borderExtra.insets[2],\n h: borderExtra.widths[1] + borderExtra.widths[3] + borderExtra.insets[1] + borderExtra.insets[3]\n };\n}\nfunction hasMargin(node) {\n return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || node.margin.leftInset);\n}\nfunction _setValue(templateNode, value) {\n if (!templateNode.value) {\n const nodeValue = new Value({});\n templateNode[$appendChild](nodeValue);\n templateNode.value = nodeValue;\n }\n templateNode.value[$setValue](value);\n}\nfunction* getContainedChildren(node) {\n for (const child of node[$getChildren]()) {\n if (child instanceof SubformSet) {\n yield* child[$getContainedChildren]();\n continue;\n }\n yield child;\n }\n}\nfunction isRequired(node) {\n return node.validate?.nullTest === \"error\";\n}\nfunction setTabIndex(node) {\n while (node) {\n if (!node.traversal) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n if (node[$tabIndex]) {\n return;\n }\n let next = null;\n for (const child of node.traversal[$getChildren]()) {\n if (child.operation === \"next\") {\n next = child;\n break;\n }\n }\n if (!next || !next.ref) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n const root = node[$getTemplateRoot]();\n node[$tabIndex] = ++root[$tabIndex];\n const ref = root[$searchNode](next.ref, node);\n if (!ref) {\n return;\n }\n node = ref[0];\n }\n}\nfunction applyAssist(obj, attributes) {\n const assist = obj.assist;\n if (assist) {\n const assistTitle = assist[$toHTML]();\n if (assistTitle) {\n attributes.title = assistTitle;\n }\n const role = assist.role;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n const ariaRole = \"heading\";\n const ariaLevel = match[1];\n attributes.role = ariaRole;\n attributes[\"aria-level\"] = ariaLevel;\n }\n }\n if (obj.layout === \"table\") {\n attributes.role = \"table\";\n } else if (obj.layout === \"row\") {\n attributes.role = \"row\";\n } else {\n const parent = obj[$getParent]();\n if (parent.layout === \"row\") {\n attributes.role = parent.assist?.role === \"TH\" ? \"columnheader\" : \"cell\";\n }\n }\n}\nfunction ariaLabel(obj) {\n if (!obj.assist) {\n return null;\n }\n const assist = obj.assist;\n if (assist.speak && assist.speak[$content] !== \"\") {\n return assist.speak[$content];\n }\n if (assist.toolTip) {\n return assist.toolTip[$content];\n }\n return null;\n}\nfunction valueToHtml(value) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: Object.create(null)\n },\n children: [{\n name: \"span\",\n attributes: {\n style: Object.create(null)\n },\n value\n }]\n });\n}\nfunction setFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === null) {\n root[$extra].firstUnsplittable = node;\n root[$extra].noLayoutFailure = true;\n }\n}\nfunction unsetFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === node) {\n root[$extra].noLayoutFailure = false;\n }\n}\nfunction handleBreak(node) {\n if (node[$extra]) {\n return false;\n }\n node[$extra] = Object.create(null);\n if (node.targetType === \"auto\") {\n return false;\n }\n const root = node[$getTemplateRoot]();\n let target = null;\n if (node.target) {\n target = root[$searchNode](node.target, node[$getParent]());\n if (!target) {\n return false;\n }\n target = target[0];\n }\n const {\n currentPageArea,\n currentContentArea\n } = root[$extra];\n if (node.targetType === \"pageArea\") {\n if (!(target instanceof PageArea)) {\n target = null;\n }\n if (node.startNew) {\n node[$extra].target = target || currentPageArea;\n return true;\n } else if (target && target !== currentPageArea) {\n node[$extra].target = target;\n return true;\n }\n return false;\n }\n if (!(target instanceof ContentArea)) {\n target = null;\n }\n const pageArea = target && target[$getParent]();\n let index;\n let nextPageArea = pageArea;\n if (node.startNew) {\n if (target) {\n const contentAreas = pageArea.contentArea.children;\n const indexForCurrent = contentAreas.indexOf(currentContentArea);\n const indexForTarget = contentAreas.indexOf(target);\n if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n nextPageArea = null;\n }\n index = indexForTarget - 1;\n } else {\n index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n }\n } else if (target && target !== currentContentArea) {\n const contentAreas = pageArea.contentArea.children;\n index = contentAreas.indexOf(target) - 1;\n nextPageArea = pageArea === currentPageArea ? null : pageArea;\n } else {\n return false;\n }\n node[$extra].target = nextPageArea;\n node[$extra].index = index;\n return true;\n}\nfunction handleOverflow(node, extraNode, space) {\n const root = node[$getTemplateRoot]();\n const saved = root[$extra].noLayoutFailure;\n const savedMethod = extraNode[$getSubformParent];\n extraNode[$getSubformParent] = () => node;\n root[$extra].noLayoutFailure = true;\n const res = extraNode[$toHTML](space);\n node[$addHTML](res.html, res.bbox);\n root[$extra].noLayoutFailure = saved;\n extraNode[$getSubformParent] = savedMethod;\n}\nclass AppearanceFilter extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"appearanceFilter\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Arc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"arc\", true);\n this.circular = getInteger({\n data: attributes.circular,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.startAngle = getFloat({\n data: attributes.startAngle,\n defaultValue: 0,\n validate: x => true\n });\n this.sweepAngle = getFloat({\n data: attributes.sweepAngle,\n defaultValue: 360,\n validate: x => true\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n this.fill = null;\n }\n [$toHTML]() {\n const edge = this.edge || new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill?.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(edge.presence === \"visible\" ? edge.thickness : 0);\n style.stroke = edgeStyle.color;\n let arc;\n const attributes = {\n xmlns: SVG_NS,\n style: {\n width: \"100%\",\n height: \"100%\",\n overflow: \"visible\"\n }\n };\n if (this.sweepAngle === 360) {\n arc = {\n name: \"ellipse\",\n attributes: {\n xmlns: SVG_NS,\n cx: \"50%\",\n cy: \"50%\",\n rx: \"50%\",\n ry: \"50%\",\n style\n }\n };\n } else {\n const startAngle = this.startAngle * Math.PI / 180;\n const sweepAngle = this.sweepAngle * Math.PI / 180;\n const largeArc = this.sweepAngle > 180 ? 1 : 0;\n const [x1, y1, x2, y2] = [50 * (1 + Math.cos(startAngle)), 50 * (1 - Math.sin(startAngle)), 50 * (1 + Math.cos(startAngle + sweepAngle)), 50 * (1 - Math.sin(startAngle + sweepAngle))];\n arc = {\n name: \"path\",\n attributes: {\n xmlns: SVG_NS,\n d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n vectorEffect: \"non-scaling-stroke\",\n style\n }\n };\n Object.assign(attributes, {\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"none\"\n });\n }\n const svg = {\n name: \"svg\",\n children: [arc],\n attributes\n };\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\"\n }\n },\n children: [svg]\n });\n }\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\nclass Area extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"area\", true);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n this.area = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n *[$getContainedChildren]() {\n yield* getContainedChildren(this);\n }\n [$isTransparent]() {\n return true;\n }\n [$isBindable]() {\n return true;\n }\n [$addHTML](html, bbox) {\n const [x, y, w, h] = bbox;\n this[$extra].width = Math.max(this[$extra].width, x + w);\n this[$extra].height = Math.max(this[$extra].height, y + h);\n this[$extra].children.push(html);\n }\n [$getAvailableSpace]() {\n return this[$extra].availableSpace;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"position\");\n const attributes = {\n style,\n id: this[$uid],\n class: [\"xfaArea\"]\n };\n if (isPrintOnly(this)) {\n attributes.class.push(\"xfaPrintOnly\");\n }\n if (this.name) {\n attributes.xfaName = this.name;\n }\n const children = [];\n this[$extra] = {\n children,\n width: 0,\n height: 0,\n availableSpace\n };\n const result = this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"exclGroup\", \"subform\", \"subformSet\"]),\n include: true\n });\n if (!result.success) {\n if (result.isBreak()) {\n return result;\n }\n delete this[$extra];\n return HTMLResult.FAILURE;\n }\n style.width = measureToString(this[$extra].width);\n style.height = measureToString(this[$extra].height);\n const html = {\n name: \"div\",\n attributes,\n children\n };\n const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n delete this[$extra];\n return HTMLResult.success(html, bbox);\n }\n}\nclass Assist extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"assist\", true);\n this.id = attributes.id || \"\";\n this.role = attributes.role || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.speak = null;\n this.toolTip = null;\n }\n [$toHTML]() {\n return this.toolTip?.[$content] || null;\n }\n}\nclass Barcode extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"barcode\", true);\n this.charEncoding = getKeyword({\n data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : \"\",\n defaultValue: \"\",\n validate: k => [\"utf-8\", \"big-five\", \"fontspecific\", \"gbk\", \"gb-18030\", \"gb-2312\", \"ksc-5601\", \"none\", \"shift-jis\", \"ucs-2\", \"utf-16\"].includes(k) || k.match(/iso-8859-\\d{2}/)\n });\n this.checksum = getStringOption(attributes.checksum, [\"none\", \"1mod10\", \"1mod10_1mod11\", \"2mod10\", \"auto\"]);\n this.dataColumnCount = getInteger({\n data: attributes.dataColumnCount,\n defaultValue: -1,\n validate: x => x >= 0\n });\n this.dataLength = getInteger({\n data: attributes.dataLength,\n defaultValue: -1,\n validate: x => x >= 0\n });\n this.dataPrep = getStringOption(attributes.dataPrep, [\"none\", \"flateCompress\"]);\n this.dataRowCount = getInteger({\n data: attributes.dataRowCount,\n defaultValue: -1,\n validate: x => x >= 0\n });\n this.endChar = attributes.endChar || \"\";\n this.errorCorrectionLevel = getInteger({\n data: attributes.errorCorrectionLevel,\n defaultValue: -1,\n validate: x => x >= 0 && x <= 8\n });\n this.id = attributes.id || \"\";\n this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n this.printCheckDigit = getInteger({\n data: attributes.printCheckDigit,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n this.startChar = attributes.startChar || \"\";\n this.textLocation = getStringOption(attributes.textLocation, [\"below\", \"above\", \"aboveEmbedded\", \"belowEmbedded\", \"none\"]);\n this.truncate = getInteger({\n data: attributes.truncate,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.type = getStringOption(attributes.type ? attributes.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\"]);\n this.upsMode = getStringOption(attributes.upsMode, [\"usCarrier\", \"internationalCarrier\", \"secureSymbol\", \"standardSymbol\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n this.encrypt = null;\n this.extras = null;\n }\n}\nclass Bind extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bind\", true);\n this.match = getStringOption(attributes.match, [\"once\", \"dataRef\", \"global\", \"none\"]);\n this.ref = attributes.ref || \"\";\n this.picture = null;\n }\n}\nclass BindItems extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bindItems\");\n this.connection = attributes.connection || \"\";\n this.labelRef = attributes.labelRef || \"\";\n this.ref = attributes.ref || \"\";\n this.valueRef = attributes.valueRef || \"\";\n }\n}\nclass Bookend extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bookend\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass BooleanElement extends Option01 {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"boolean\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n }\n}\nclass Border extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"border\", true);\n this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.extras = null;\n this.fill = null;\n this.margin = null;\n }\n [$getExtra]() {\n if (!this[$extra]) {\n const edges = this.edge.children.slice();\n if (edges.length < 4) {\n const defaultEdge = edges.at(-1) || new Edge({});\n for (let i = edges.length; i < 4; i++) {\n edges.push(defaultEdge);\n }\n }\n const widths = edges.map(edge => edge.thickness);\n const insets = [0, 0, 0, 0];\n if (this.margin) {\n insets[0] = this.margin.topInset;\n insets[1] = this.margin.rightInset;\n insets[2] = this.margin.bottomInset;\n insets[3] = this.margin.leftInset;\n }\n this[$extra] = {\n widths,\n insets,\n edges\n };\n }\n return this[$extra];\n }\n [$toStyle]() {\n const {\n edges\n } = this[$getExtra]();\n const edgeStyles = edges.map(node => {\n const style = node[$toStyle]();\n style.color ||= \"#000000\";\n return style;\n });\n const style = Object.create(null);\n if (this.margin) {\n Object.assign(style, this.margin[$toStyle]());\n }\n if (this.fill?.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n }\n if (this.corner.children.some(node => node.radius !== 0)) {\n const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n const last = cornerStyles.at(-1);\n for (let i = cornerStyles.length; i < 4; i++) {\n cornerStyles.push(last);\n }\n }\n style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n }\n switch (this.presence) {\n case \"invisible\":\n case \"hidden\":\n style.borderStyle = \"\";\n break;\n case \"inactive\":\n style.borderStyle = \"none\";\n break;\n default:\n style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n break;\n }\n style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n return style;\n }\n}\nclass Break extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"break\", true);\n this.after = getStringOption(attributes.after, [\"auto\", \"contentArea\", \"pageArea\", \"pageEven\", \"pageOdd\"]);\n this.afterTarget = attributes.afterTarget || \"\";\n this.before = getStringOption(attributes.before, [\"auto\", \"contentArea\", \"pageArea\", \"pageEven\", \"pageOdd\"]);\n this.beforeTarget = attributes.beforeTarget || \"\";\n this.bookendLeader = attributes.bookendLeader || \"\";\n this.bookendTrailer = attributes.bookendTrailer || \"\";\n this.id = attributes.id || \"\";\n this.overflowLeader = attributes.overflowLeader || \"\";\n this.overflowTarget = attributes.overflowTarget || \"\";\n this.overflowTrailer = attributes.overflowTrailer || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\nclass BreakAfter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakAfter\", true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\"auto\", \"contentArea\", \"pageArea\"]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n}\nclass BreakBefore extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakBefore\", true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\"auto\", \"contentArea\", \"pageArea\"]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n [$toHTML](availableSpace) {\n this[$extra] = {};\n return HTMLResult.FAILURE;\n }\n}\nclass Button extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"button\", true);\n this.highlight = getStringOption(attributes.highlight, [\"inverted\", \"none\", \"outline\", \"push\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$toHTML](availableSpace) {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const htmlButton = {\n name: \"button\",\n attributes: {\n id: this[$uid],\n class: [\"xfaButton\"],\n style: {}\n },\n children: []\n };\n for (const event of grandpa.event.children) {\n if (event.activity !== \"click\" || !event.script) {\n continue;\n }\n const jsURL = recoverJsURL(event.script[$content]);\n if (!jsURL) {\n continue;\n }\n const href = fixURL(jsURL.url);\n if (!href) {\n continue;\n }\n htmlButton.children.push({\n name: \"a\",\n attributes: {\n id: \"link\" + this[$uid],\n href,\n newWindow: jsURL.newWindow,\n class: [\"xfaLink\"],\n style: {}\n },\n children: []\n });\n }\n return HTMLResult.success(htmlButton);\n }\n}\nclass Calculate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"calculate\", true);\n this.id = attributes.id || \"\";\n this.override = getStringOption(attributes.override, [\"disabled\", \"error\", \"ignore\", \"warning\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.script = null;\n }\n}\nclass Caption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"caption\", true);\n this.id = attributes.id || \"\";\n this.placement = getStringOption(attributes.placement, [\"left\", \"bottom\", \"inline\", \"right\", \"top\"]);\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.font = null;\n this.margin = null;\n this.para = null;\n this.value = null;\n }\n [$setValue](value) {\n _setValue(this, value);\n }\n [$getExtra](availableSpace) {\n if (!this[$extra]) {\n let {\n width,\n height\n } = availableSpace;\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width = this.reserve <= 0 ? width : this.reserve;\n break;\n case \"top\":\n case \"bottom\":\n height = this.reserve <= 0 ? height : this.reserve;\n break;\n }\n this[$extra] = layoutNode(this, {\n width,\n height\n });\n }\n return this[$extra];\n }\n [$toHTML](availableSpace) {\n if (!this.value) {\n return HTMLResult.EMPTY;\n }\n this[$pushPara]();\n const value = this.value[$toHTML](availableSpace).html;\n if (!value) {\n this[$popPara]();\n return HTMLResult.EMPTY;\n }\n const savedReserve = this.reserve;\n if (this.reserve <= 0) {\n const {\n w,\n h\n } = this[$getExtra](availableSpace);\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n this.reserve = w;\n break;\n case \"top\":\n case \"bottom\":\n this.reserve = h;\n break;\n }\n }\n const children = [];\n if (typeof value === \"string\") {\n children.push({\n name: \"#text\",\n value\n });\n } else {\n children.push(value);\n }\n const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n switch (this.placement) {\n case \"left\":\n case \"right\":\n if (this.reserve > 0) {\n style.width = measureToString(this.reserve);\n }\n break;\n case \"top\":\n case \"bottom\":\n if (this.reserve > 0) {\n style.height = measureToString(this.reserve);\n }\n break;\n }\n setPara(this, null, value);\n this[$popPara]();\n this.reserve = savedReserve;\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style,\n class: [\"xfaCaption\"]\n },\n children\n });\n }\n}\nclass Certificate extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificate\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Certificates extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificates\", true);\n this.credentialServerPolicy = getStringOption(attributes.credentialServerPolicy, [\"optional\", \"required\"]);\n this.id = attributes.id || \"\";\n this.url = attributes.url || \"\";\n this.urlPolicy = attributes.urlPolicy || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryption = null;\n this.issuers = null;\n this.keyUsage = null;\n this.oids = null;\n this.signing = null;\n this.subjectDNs = null;\n }\n}\nclass CheckButton extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"checkButton\", true);\n this.id = attributes.id || \"\";\n this.mark = getStringOption(attributes.mark, [\"default\", \"check\", \"circle\", \"cross\", \"diamond\", \"square\", \"star\"]);\n this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"margin\");\n const size = measureToString(this.size);\n style.width = style.height = size;\n let type;\n let className;\n let groupId;\n const field = this[$getParent]()[$getParent]();\n const items = field.items.children.length && field.items.children[0][$toHTML]().html || [];\n const exportedValue = {\n on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n off: (items[1] !== undefined ? items[1] : \"off\").toString()\n };\n const value = field.value?.[$text]() || \"off\";\n const checked = value === exportedValue.on || undefined;\n const container = field[$getSubformParent]();\n const fieldId = field[$uid];\n let dataId;\n if (container instanceof ExclGroup) {\n groupId = container[$uid];\n type = \"radio\";\n className = \"xfaRadio\";\n dataId = container[$data]?.[$uid] || container[$uid];\n } else {\n type = \"checkbox\";\n className = \"xfaCheckbox\";\n dataId = field[$data]?.[$uid] || field[$uid];\n }\n const input = {\n name: \"input\",\n attributes: {\n class: [className],\n style,\n fieldId,\n dataId,\n type,\n checked,\n xfaOn: exportedValue.on,\n xfaOff: exportedValue.off,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n if (groupId) {\n input.attributes.name = groupId;\n }\n if (isRequired(field)) {\n input.attributes[\"aria-required\"] = true;\n input.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [input]\n });\n }\n}\nclass ChoiceList extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"choiceList\", true);\n this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n this.id = attributes.id || \"\";\n this.open = getStringOption(attributes.open, [\"userControl\", \"always\", \"multiSelect\", \"onEntry\"]);\n this.textEntry = getInteger({\n data: attributes.textEntry,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"border\", \"margin\");\n const ui = this[$getParent]();\n const field = ui[$getParent]();\n const fontSize = field.font?.size || 10;\n const optionStyle = {\n fontSize: `calc(${fontSize}px * var(--total-scale-factor))`\n };\n const children = [];\n if (field.items.children.length > 0) {\n const items = field.items;\n let displayedIndex = 0;\n let saveIndex = 0;\n if (items.children.length === 2) {\n displayedIndex = items.children[0].save;\n saveIndex = 1 - displayedIndex;\n }\n const displayed = items.children[displayedIndex][$toHTML]().html;\n const values = items.children[saveIndex][$toHTML]().html;\n let selected = false;\n const value = field.value?.[$text]() || \"\";\n for (let i = 0, ii = displayed.length; i < ii; i++) {\n const option = {\n name: \"option\",\n attributes: {\n value: values[i] || displayed[i],\n style: optionStyle\n },\n value: displayed[i]\n };\n if (values[i] === value) {\n option.attributes.selected = selected = true;\n }\n children.push(option);\n }\n if (!selected) {\n children.splice(0, 0, {\n name: \"option\",\n attributes: {\n hidden: true,\n selected: true\n },\n value: \" \"\n });\n }\n }\n const selectAttributes = {\n class: [\"xfaSelect\"],\n fieldId: field[$uid],\n dataId: field[$data]?.[$uid] || field[$uid],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n };\n if (isRequired(field)) {\n selectAttributes[\"aria-required\"] = true;\n selectAttributes.required = true;\n }\n if (this.open === \"multiSelect\") {\n selectAttributes.multiple = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [{\n name: \"select\",\n children,\n attributes: selectAttributes\n }]\n });\n }\n}\nclass Color extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"color\", true);\n this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.value = attributes.value ? getColor(attributes.value) : \"\";\n this.extras = null;\n }\n [$hasSettableValue]() {\n return false;\n }\n [$toStyle]() {\n return this.value ? Util.makeHexColor(this.value.r, this.value.g, this.value.b) : null;\n }\n}\nclass Comb extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"comb\");\n this.id = attributes.id || \"\";\n this.numberOfCells = getInteger({\n data: attributes.numberOfCells,\n defaultValue: 0,\n validate: x => x >= 0\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Connect extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"connect\", true);\n this.connection = attributes.connection || \"\";\n this.id = attributes.id || \"\";\n this.ref = attributes.ref || \"\";\n this.usage = getStringOption(attributes.usage, [\"exportAndImport\", \"exportOnly\", \"importOnly\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.picture = null;\n }\n}\nclass ContentArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"contentArea\", true);\n this.h = getMeasurement(attributes.h);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = getMeasurement(attributes.w);\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n }\n [$toHTML](availableSpace) {\n const left = measureToString(this.x);\n const top = measureToString(this.y);\n const style = {\n left,\n top,\n width: measureToString(this.w),\n height: measureToString(this.h)\n };\n const classNames = [\"xfaContentarea\"];\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {\n style,\n class: classNames,\n id: this[$uid]\n }\n });\n }\n}\nclass Corner extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"corner\", true);\n this.id = attributes.id || \"\";\n this.inverted = getInteger({\n data: attributes.inverted,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.radius = getMeasurement(attributes.radius);\n this.stroke = getStringOption(attributes.stroke, [\"solid\", \"dashDot\", \"dashDotDot\", \"dashed\", \"dotted\", \"embossed\", \"etched\", \"lowered\", \"raised\"]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle]() {\n const style = toStyle(this, \"visibility\");\n style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n return style;\n }\n}\nclass DateElement extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"date\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\nclass DateTime extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTime\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\nclass DateTimeEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTimeEdit\", true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n this.id = attributes.id || \"\";\n this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: field[$data]?.[$uid] || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [html]\n });\n }\n}\nclass Decimal extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"decimal\");\n this.fracDigits = getInteger({\n data: attributes.fracDigits,\n defaultValue: 2,\n validate: x => true\n });\n this.id = attributes.id || \"\";\n this.leadDigits = getInteger({\n data: attributes.leadDigits,\n defaultValue: -1,\n validate: x => true\n });\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n }\n}\nclass DefaultUi extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"defaultUi\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\nclass Desc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"desc\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\nclass DigestMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethod\", [\"\", \"SHA1\", \"SHA256\", \"SHA512\", \"RIPEMD160\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass DigestMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethods\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.digestMethod = new XFAObjectArray();\n }\n}\nclass Draw extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"draw\", true);\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.border = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.value = null;\n this.setProperty = new XFAObjectArray();\n }\n [$setValue](value) {\n _setValue(this, value);\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n fixDimensions(this);\n this[$pushPara]();\n const savedW = this.w;\n const savedH = this.h;\n const {\n w,\n h,\n isBroken\n } = layoutNode(this, availableSpace);\n if (w && this.w === \"\") {\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n this.w = w;\n }\n if (h && this.h === \"\") {\n this.h = h;\n }\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n const style = toStyle(this, \"font\", \"hAlign\", \"dimensions\", \"position\", \"presence\", \"rotate\", \"anchorType\", \"border\", \"margin\");\n setMinMaxDimensions(this, style);\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n const classNames = [\"xfaDraw\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n const attributes = {\n style,\n id: this[$uid],\n class: classNames\n };\n if (this.name) {\n attributes.xfaName = this.name;\n }\n const html = {\n name: \"div\",\n attributes,\n children: []\n };\n applyAssist(this, attributes);\n const bbox = computeBbox(this, html, availableSpace);\n const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n if (value === null) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n html.children.push(value);\n setPara(this, style, value);\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\nclass Edge extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"edge\", true);\n this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.stroke = getStringOption(attributes.stroke, [\"solid\", \"dashDot\", \"dashDotDot\", \"dashed\", \"dotted\", \"embossed\", \"etched\", \"lowered\", \"raised\"]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle]() {\n const style = toStyle(this, \"visibility\");\n Object.assign(style, {\n linecap: this.cap,\n width: measureToString(this.thickness),\n color: this.color ? this.color[$toStyle]() : \"#000000\",\n style: \"\"\n });\n if (this.presence !== \"visible\") {\n style.style = \"none\";\n } else {\n switch (this.stroke) {\n case \"solid\":\n style.style = \"solid\";\n break;\n case \"dashDot\":\n style.style = \"dashed\";\n break;\n case \"dashDotDot\":\n style.style = \"dashed\";\n break;\n case \"dashed\":\n style.style = \"dashed\";\n break;\n case \"dotted\":\n style.style = \"dotted\";\n break;\n case \"embossed\":\n style.style = \"ridge\";\n break;\n case \"etched\":\n style.style = \"groove\";\n break;\n case \"lowered\":\n style.style = \"inset\";\n break;\n case \"raised\":\n style.style = \"outset\";\n break;\n }\n }\n return style;\n }\n}\nclass Encoding extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encoding\", [\"adbe.x509.rsa_sha1\", \"adbe.pkcs7.detached\", \"adbe.pkcs7.sha1\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Encodings extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encodings\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encoding = new XFAObjectArray();\n }\n}\nclass Encrypt extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encrypt\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = null;\n }\n}\nclass EncryptData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptData\", true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\"encrypt\", \"decrypt\"]);\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryption\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\nclass EncryptionMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethod\", [\"\", \"AES256-CBC\", \"TRIPLEDES-CBC\", \"AES128-CBC\", \"AES192-CBC\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass EncryptionMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethods\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryptionMethod = new XFAObjectArray();\n }\n}\nclass Event extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"event\", true);\n this.activity = getStringOption(attributes.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\"]);\n this.id = attributes.id || \"\";\n this.listen = getStringOption(attributes.listen, [\"refOnly\", \"refAndDescendents\"]);\n this.name = attributes.name || \"\";\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.encryptData = null;\n this.execute = null;\n this.script = null;\n this.signData = null;\n this.submit = null;\n }\n}\nclass ExData extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exData\");\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.maxLength = getInteger({\n data: attributes.maxLength,\n defaultValue: -1,\n validate: x => x >= -1\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\"none\", \"base64\", \"package\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$isCDATAXml]() {\n return this.contentType === \"text/html\";\n }\n [$onChild](child) {\n if (this.contentType === \"text/html\" && child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n if (this.contentType === \"text/xml\") {\n this[$content] = child;\n return true;\n }\n return false;\n }\n [$toHTML](availableSpace) {\n if (this.contentType !== \"text/html\" || !this[$content]) {\n return HTMLResult.EMPTY;\n }\n return this[$content][$toHTML](availableSpace);\n }\n}\nclass ExObject extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exObject\", true);\n this.archive = attributes.archive || \"\";\n this.classId = attributes.classId || \"\";\n this.codeBase = attributes.codeBase || \"\";\n this.codeType = attributes.codeType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\nclass ExclGroup extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exclGroup\", true);\n this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\"position\", \"lr-tb\", \"rl-row\", \"rl-tb\", \"row\", \"table\", \"tb\"]);\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n [$isBindable]() {\n return true;\n }\n [$hasSettableValue]() {\n return true;\n }\n [$setValue](value) {\n for (const field of this.field.children) {\n if (!field.value) {\n const nodeValue = new Value({});\n field[$appendChild](nodeValue);\n field.value = nodeValue;\n }\n field.value[$setValue](value);\n }\n }\n [$isThereMoreWidth]() {\n return this.layout.endsWith(\"-tb\") && this[$extra].attempt === 0 && this[$extra].numberInLine > 0 || this[$getParent]()[$isThereMoreWidth]();\n }\n [$isSplittable]() {\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n if (parent.layout?.endsWith(\"-tb\") && parent[$extra].numberInLine !== 0) {\n return false;\n }\n this[$extra]._isSplittable = true;\n return true;\n }\n [$flushHTML]() {\n return flushHTML(this);\n }\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (this.presence === \"hidden\" || this.presence === \"inactive\" || this.h === 0 || this.w === 0) {\n return HTMLResult.EMPTY;\n }\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: []\n };\n setAccess(this, attributes.class);\n this[$extra] ||= Object.create(null);\n Object.assign(this[$extra], {\n children,\n attributes,\n attempt: 0,\n line: null,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height)\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0\n });\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"field\"]);\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n const style = toStyle(this, \"anchorType\", \"dimensions\", \"position\", \"presence\", \"border\", \"margin\", \"hAlign\");\n const classNames = [\"xfaExclgroup\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n attributes.style = style;\n attributes.class = classNames;\n if (this.name) {\n attributes.xfaName = this.name;\n }\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (isLrTb && this[$extra].attempt === 0 && this[$extra].numberInLine === 0 && !this[$getTemplateRoot]()[$extra].noLayoutFailure) {\n this[$extra].attempt = maxRun;\n break;\n }\n }\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n if (this[$extra].attempt === maxRun) {\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n const html = {\n name: \"div\",\n attributes,\n children\n };\n applyAssist(this, attributes);\n delete this[$extra];\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\nclass Execute extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"execute\");\n this.connection = attributes.connection || \"\";\n this.executeType = getStringOption(attributes.executeType, [\"import\", \"remerge\"]);\n this.id = attributes.id || \"\";\n this.runAt = getStringOption(attributes.runAt, [\"client\", \"both\", \"server\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Extras extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"extras\", true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\nclass Field extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"field\", true);\n this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.format = null;\n this.items = new XFAObjectArray(2);\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.validate = null;\n this.value = null;\n this.bindItems = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n [$isBindable]() {\n return true;\n }\n [$setValue](value) {\n _setValue(this, value);\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (!this.ui) {\n this.ui = new Ui({});\n this.ui[$globalData] = this[$globalData];\n this[$appendChild](this.ui);\n let node;\n switch (this.items.children.length) {\n case 0:\n node = new TextEdit({});\n this.ui.textEdit = node;\n break;\n case 1:\n node = new CheckButton({});\n this.ui.checkButton = node;\n break;\n case 2:\n node = new ChoiceList({});\n this.ui.choiceList = node;\n break;\n }\n this.ui[$appendChild](node);\n }\n if (!this.ui || this.presence === \"hidden\" || this.presence === \"inactive\" || this.h === 0 || this.w === 0) {\n return HTMLResult.EMPTY;\n }\n if (this.caption) {\n delete this.caption[$extra];\n }\n this[$pushPara]();\n const caption = this.caption ? this.caption[$toHTML](availableSpace).html : null;\n const savedW = this.w;\n const savedH = this.h;\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n let borderDims = null;\n if (this.w === \"\" || this.h === \"\") {\n let width = null;\n let height = null;\n let uiW = 0;\n let uiH = 0;\n if (this.ui.checkButton) {\n uiW = uiH = this.ui.checkButton.size;\n } else {\n const {\n w,\n h\n } = layoutNode(this, availableSpace);\n if (w !== null) {\n uiW = w;\n uiH = h;\n } else {\n uiH = fonts_getMetrics(this.font, true).lineNoGap;\n }\n }\n borderDims = getBorderDims(this.ui[$getExtra]());\n uiW += borderDims.w;\n uiH += borderDims.h;\n if (this.caption) {\n const {\n w,\n h,\n isBroken\n } = this.caption[$getExtra](availableSpace);\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n width = w;\n height = h;\n switch (this.caption.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width += uiW;\n break;\n case \"top\":\n case \"bottom\":\n height += uiH;\n break;\n }\n } else {\n width = uiW;\n height = uiH;\n }\n if (width && this.w === \"\") {\n width += marginH;\n this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, this.minW + 1 < width ? width : this.minW);\n }\n if (height && this.h === \"\") {\n height += marginV;\n this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, this.minH + 1 < height ? height : this.minH);\n }\n }\n this[$popPara]();\n fixDimensions(this);\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n const style = toStyle(this, \"font\", \"dimensions\", \"position\", \"rotate\", \"anchorType\", \"presence\", \"margin\", \"hAlign\");\n setMinMaxDimensions(this, style);\n const classNames = [\"xfaField\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n const attributes = {\n style,\n id: this[$uid],\n class: classNames\n };\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n setAccess(this, classNames);\n if (this.name) {\n attributes.xfaName = this.name;\n }\n const children = [];\n const html = {\n name: \"div\",\n attributes,\n children\n };\n applyAssist(this, attributes);\n const borderStyle = this.border ? this.border[$toStyle]() : null;\n const bbox = computeBbox(this, html, availableSpace);\n const ui = this.ui[$toHTML]().html;\n if (!ui) {\n Object.assign(style, borderStyle);\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n if (this[$tabIndex]) {\n if (ui.children?.[0]) {\n ui.children[0].attributes.tabindex = this[$tabIndex];\n } else {\n ui.attributes.tabindex = this[$tabIndex];\n }\n }\n ui.attributes.style ||= Object.create(null);\n let aElement = null;\n if (this.ui.button) {\n if (ui.children.length === 1) {\n [aElement] = ui.children.splice(0, 1);\n }\n Object.assign(ui.attributes.style, borderStyle);\n } else {\n Object.assign(style, borderStyle);\n }\n children.push(ui);\n if (this.value) {\n if (this.ui.imageEdit) {\n ui.children.push(this.value[$toHTML]().html);\n } else if (!this.ui.button) {\n let value = \"\";\n if (this.value.exData) {\n value = this.value.exData[$text]();\n } else if (this.value.text) {\n value = this.value.text[$getExtra]();\n } else {\n const htmlValue = this.value[$toHTML]().html;\n if (htmlValue !== null) {\n value = htmlValue.children[0].value;\n }\n }\n if (this.ui.textEdit && this.value.text?.maxChars) {\n ui.children[0].attributes.maxLength = this.value.text.maxChars;\n }\n if (value) {\n if (this.ui.numericEdit) {\n value = parseFloat(value);\n value = isNaN(value) ? \"\" : value.toString();\n }\n if (ui.children[0].name === \"textarea\") {\n ui.children[0].attributes.textContent = value;\n } else {\n ui.children[0].attributes.value = value;\n }\n }\n }\n }\n if (!this.ui.imageEdit && ui.children?.[0] && this.h) {\n borderDims ||= getBorderDims(this.ui[$getExtra]());\n let captionHeight = 0;\n if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n captionHeight = this.caption.reserve;\n if (captionHeight <= 0) {\n captionHeight = this.caption[$getExtra](availableSpace).h;\n }\n const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n ui.children[0].attributes.style.height = measureToString(inputHeight);\n } else {\n ui.children[0].attributes.style.height = \"100%\";\n }\n }\n if (aElement) {\n ui.children.push(aElement);\n }\n if (!caption) {\n if (ui.attributes.class) {\n ui.attributes.class.push(\"xfaLeft\");\n }\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n if (this.ui.button) {\n if (style.padding) {\n delete style.padding;\n }\n if (caption.name === \"div\") {\n caption.name = \"span\";\n }\n ui.children.push(caption);\n return HTMLResult.success(html, bbox);\n } else if (this.ui.checkButton) {\n caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n }\n ui.attributes.class ||= [];\n ui.children.splice(0, 0, caption);\n switch (this.caption.placement) {\n case \"left\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n case \"right\":\n ui.attributes.class.push(\"xfaRight\");\n break;\n case \"top\":\n ui.attributes.class.push(\"xfaTop\");\n break;\n case \"bottom\":\n ui.attributes.class.push(\"xfaBottom\");\n break;\n case \"inline\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n }\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\nclass Fill extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"fill\", true);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n this.linear = null;\n this.pattern = null;\n this.radial = null;\n this.solid = null;\n this.stipple = null;\n }\n [$toStyle]() {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const ggrandpa = grandpa[$getParent]();\n const style = Object.create(null);\n let propName = \"color\";\n let altPropName = propName;\n if (parent instanceof Border) {\n propName = \"background-color\";\n altPropName = \"background\";\n if (ggrandpa instanceof Ui) {\n style.backgroundColor = \"white\";\n }\n }\n if (parent instanceof Rectangle || parent instanceof Arc) {\n propName = altPropName = \"fill\";\n style.fill = \"white\";\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"color\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n const color = obj[$toStyle](this.color);\n if (color) {\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n if (this.color?.value) {\n const color = this.color[$toStyle]();\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n}\nclass Filter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"filter\", true);\n this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\"\", \"required\", \"optional\", \"none\"]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.version = getInteger({\n data: this.version,\n defaultValue: 5,\n validate: x => x >= 1 && x <= 5\n });\n this.appearanceFilter = null;\n this.certificates = null;\n this.digestMethods = null;\n this.encodings = null;\n this.encryptionMethods = null;\n this.handler = null;\n this.lockDocument = null;\n this.mdp = null;\n this.reasons = null;\n this.timeStamp = null;\n }\n}\nclass Float extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"float\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n }\n}\nclass template_Font extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"font\", true);\n this.baselineShift = getMeasurement(attributes.baselineShift);\n this.fontHorizontalScale = getFloat({\n data: attributes.fontHorizontalScale,\n defaultValue: 100,\n validate: x => x >= 0\n });\n this.fontVerticalScale = getFloat({\n data: attributes.fontVerticalScale,\n defaultValue: 100,\n validate: x => x >= 0\n });\n this.id = attributes.id || \"\";\n this.kerningMode = getStringOption(attributes.kerningMode, [\"none\", \"pair\"]);\n this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n this.lineThrough = getInteger({\n data: attributes.lineThrough,\n defaultValue: 0,\n validate: x => x === 1 || x === 2\n });\n this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\"all\", \"word\"]);\n this.overline = getInteger({\n data: attributes.overline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2\n });\n this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\"all\", \"word\"]);\n this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.typeface = attributes.typeface || \"Courier\";\n this.underline = getInteger({\n data: attributes.underline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2\n });\n this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\"all\", \"word\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n this.extras = null;\n this.fill = null;\n }\n [$clean](builder) {\n super[$clean](builder);\n this[$globalData].usedTypefaces.add(this.typeface);\n }\n [$toStyle]() {\n const style = toStyle(this, \"fill\");\n const color = style.color;\n if (color) {\n if (color === \"#000000\") {\n delete style.color;\n } else if (!color.startsWith(\"#\")) {\n style.background = color;\n style.backgroundClip = \"text\";\n style.color = \"transparent\";\n }\n }\n if (this.baselineShift) {\n style.verticalAlign = measureToString(this.baselineShift);\n }\n style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n style.letterSpacing = measureToString(this.letterSpacing);\n if (this.lineThrough !== 0) {\n style.textDecoration = \"line-through\";\n if (this.lineThrough === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n if (this.overline !== 0) {\n style.textDecoration = \"overline\";\n if (this.overline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n style.fontStyle = this.posture;\n style.fontSize = measureToString(0.99 * this.size);\n setFontFamily(this, this, this[$globalData].fontFinder, style);\n if (this.underline !== 0) {\n style.textDecoration = \"underline\";\n if (this.underline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n style.fontWeight = this.weight;\n return style;\n }\n}\nclass Format extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"format\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n }\n}\nclass Handler extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"handler\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Hyphenation extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"hyphenation\");\n this.excludeAllCaps = getInteger({\n data: attributes.excludeAllCaps,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.excludeInitialCap = getInteger({\n data: attributes.excludeInitialCap,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.hyphenate = getInteger({\n data: attributes.hyphenate,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.id = attributes.id || \"\";\n this.pushCharacterCount = getInteger({\n data: attributes.pushCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0\n });\n this.remainCharacterCount = getInteger({\n data: attributes.remainCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wordCharacterCount = getInteger({\n data: attributes.wordCharacterCount,\n defaultValue: 7,\n validate: x => x >= 0\n });\n }\n}\nclass Image extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"image\");\n this.aspect = getStringOption(attributes.aspect, [\"fit\", \"actual\", \"height\", \"none\", \"width\"]);\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\"base64\", \"none\", \"package\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$toHTML]() {\n if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n return HTMLResult.EMPTY;\n }\n let buffer = this[$globalData].images?.get(this.href);\n if (!buffer && (this.href || !this[$content])) {\n return HTMLResult.EMPTY;\n }\n if (!buffer && this.transferEncoding === \"base64\") {\n buffer = Uint8Array.fromBase64(this[$content]);\n }\n if (!buffer) {\n return HTMLResult.EMPTY;\n }\n if (!this.contentType) {\n for (const [header, type] of IMAGES_HEADERS) {\n if (buffer.length > header.length && header.every((x, i) => x === buffer[i])) {\n this.contentType = type;\n break;\n }\n }\n if (!this.contentType) {\n return HTMLResult.EMPTY;\n }\n }\n const blob = new Blob([buffer], {\n type: this.contentType\n });\n let style;\n switch (this.aspect) {\n case \"fit\":\n case \"actual\":\n break;\n case \"height\":\n style = {\n height: \"100%\",\n objectFit: \"fill\"\n };\n break;\n case \"none\":\n style = {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\"\n };\n break;\n case \"width\":\n style = {\n width: \"100%\",\n objectFit: \"fill\"\n };\n break;\n }\n const parent = this[$getParent]();\n return HTMLResult.success({\n name: \"img\",\n attributes: {\n class: [\"xfaImage\"],\n style,\n src: URL.createObjectURL(blob),\n alt: parent ? ariaLabel(parent[$getParent]()) : null\n }\n });\n }\n}\nclass ImageEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"imageEdit\", true);\n this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n if (this.data === \"embed\") {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {}\n });\n }\n return HTMLResult.EMPTY;\n }\n}\nclass Integer extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"integer\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const number = parseInt(this[$content].trim(), 10);\n this[$content] = isNaN(number) ? null : number;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n }\n}\nclass Issuers extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"issuers\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\nclass Items extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"items\", true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.ref = attributes.ref || \"\";\n this.save = getInteger({\n data: attributes.save,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n [$toHTML]() {\n const output = [];\n for (const child of this[$getChildren]()) {\n output.push(child[$text]());\n }\n return HTMLResult.success(output);\n }\n}\nclass Keep extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keep\", true);\n this.id = attributes.id || \"\";\n const options = [\"none\", \"contentArea\", \"pageArea\"];\n this.intact = getStringOption(attributes.intact, options);\n this.next = getStringOption(attributes.next, options);\n this.previous = getStringOption(attributes.previous, options);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\nclass KeyUsage extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keyUsage\");\n const options = [\"\", \"yes\", \"no\"];\n this.crlSign = getStringOption(attributes.crlSign, options);\n this.dataEncipherment = getStringOption(attributes.dataEncipherment, options);\n this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n this.digitalSignature = getStringOption(attributes.digitalSignature, options);\n this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n this.id = attributes.id || \"\";\n this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Line extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"line\", true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n }\n [$toHTML]() {\n const parent = this[$getParent]()[$getParent]();\n const edge = this.edge || new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n style.strokeWidth = measureToString(thickness);\n style.stroke = edgeStyle.color;\n let x1, y1, x2, y2;\n let width = \"100%\";\n let height = \"100%\";\n if (parent.w <= thickness) {\n [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n width = style.strokeWidth;\n } else if (parent.h <= thickness) {\n [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n height = style.strokeWidth;\n } else if (this.slope === \"\\\\\") {\n [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n } else {\n [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n }\n const line = {\n name: \"line\",\n attributes: {\n xmlns: SVG_NS,\n x1,\n y1,\n x2,\n y2,\n style\n }\n };\n const svg = {\n name: \"svg\",\n children: [line],\n attributes: {\n xmlns: SVG_NS,\n width,\n height,\n style: {\n overflow: \"visible\"\n }\n }\n };\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\"\n }\n },\n children: [svg]\n });\n }\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\nclass Linear extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"linear\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toRight\", \"toBottom\", \"toLeft\", \"toTop\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n }\n}\nclass LockDocument extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"lockDocument\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n }\n}\nclass Manifest extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"manifest\", true);\n this.action = getStringOption(attributes.action, [\"include\", \"all\", \"exclude\"]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.ref = new XFAObjectArray();\n }\n}\nclass Margin extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"margin\", true);\n this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n this.id = attributes.id || \"\";\n this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n this.topInset = getMeasurement(attributes.topInset, \"0\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$toStyle]() {\n return {\n margin: measureToString(this.topInset) + \" \" + measureToString(this.rightInset) + \" \" + measureToString(this.bottomInset) + \" \" + measureToString(this.leftInset)\n };\n }\n}\nclass Mdp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"mdp\");\n this.id = attributes.id || \"\";\n this.permissions = getInteger({\n data: attributes.permissions,\n defaultValue: 2,\n validate: x => x === 1 || x === 3\n });\n this.signatureType = getStringOption(attributes.signatureType, [\"filler\", \"author\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Medium extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"medium\");\n this.id = attributes.id || \"\";\n this.imagingBBox = getBBox(attributes.imagingBBox);\n this.long = getMeasurement(attributes.long);\n this.orientation = getStringOption(attributes.orientation, [\"portrait\", \"landscape\"]);\n this.short = getMeasurement(attributes.short);\n this.stock = attributes.stock || \"\";\n this.trayIn = getStringOption(attributes.trayIn, [\"auto\", \"delegate\", \"pageFront\"]);\n this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Message extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"message\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.text = new XFAObjectArray();\n }\n}\nclass NumericEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"numericEdit\", true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: field[$data]?.[$uid] || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [html]\n });\n }\n}\nclass Occur extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"occur\", true);\n this.id = attributes.id || \"\";\n this.initial = attributes.initial !== \"\" ? getInteger({\n data: attributes.initial,\n defaultValue: \"\",\n validate: x => true\n }) : \"\";\n this.max = attributes.max !== \"\" ? getInteger({\n data: attributes.max,\n defaultValue: -1,\n validate: x => true\n }) : \"\";\n this.min = attributes.min !== \"\" ? getInteger({\n data: attributes.min,\n defaultValue: 1,\n validate: x => true\n }) : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$clean]() {\n const parent = this[$getParent]();\n const originalMin = this.min;\n if (this.min === \"\") {\n this.min = parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n }\n if (this.max === \"\") {\n if (originalMin === \"\") {\n this.max = parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n } else {\n this.max = this.min;\n }\n }\n if (this.max !== -1 && this.max < this.min) {\n this.max = this.min;\n }\n if (this.initial === \"\") {\n this.initial = parent instanceof Template ? 1 : this.min;\n }\n }\n}\nclass Oid extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oid\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Oids extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oids\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.oid = new XFAObjectArray();\n }\n}\nclass Overflow extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"overflow\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.target = attributes.target || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$getExtra]() {\n if (!this[$extra]) {\n const parent = this[$getParent]();\n const root = this[$getTemplateRoot]();\n const target = root[$searchNode](this.target, parent);\n const leader = root[$searchNode](this.leader, parent);\n const trailer = root[$searchNode](this.trailer, parent);\n this[$extra] = {\n target: target?.[0] || null,\n leader: leader?.[0] || null,\n trailer: trailer?.[0] || null,\n addLeader: false,\n addTrailer: false\n };\n }\n return this[$extra];\n }\n}\nclass PageArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageArea\", true);\n this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\"any\", \"blank\", \"notBlank\"]);\n this.id = attributes.id || \"\";\n this.initialNumber = getInteger({\n data: attributes.initialNumber,\n defaultValue: 1,\n validate: x => true\n });\n this.name = attributes.name || \"\";\n this.numbered = getInteger({\n data: attributes.numbered,\n defaultValue: 1,\n validate: x => true\n });\n this.oddOrEven = getStringOption(attributes.oddOrEven, [\"any\", \"even\", \"odd\"]);\n this.pagePosition = getStringOption(attributes.pagePosition, [\"any\", \"first\", \"last\", \"only\", \"rest\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.desc = null;\n this.extras = null;\n this.medium = null;\n this.occur = null;\n this.area = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n }\n [$isUsable]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0\n };\n return true;\n }\n return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse < this.occur.max;\n }\n [$cleanPage]() {\n delete this[$extra];\n }\n [$getNextPage]() {\n this[$extra] ||= {\n numberOfUse: 0\n };\n const parent = this[$getParent]();\n if (parent.relation === \"orderedOccurrence\") {\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n return this;\n }\n }\n return parent[$getNextPage]();\n }\n [$getAvailableSpace]() {\n return this[$extra].space || {\n width: 0,\n height: 0\n };\n }\n [$toHTML]() {\n this[$extra] ||= {\n numberOfUse: 1\n };\n const children = [];\n this[$extra].children = children;\n const style = Object.create(null);\n if (this.medium && this.medium.short && this.medium.long) {\n style.width = measureToString(this.medium.short);\n style.height = measureToString(this.medium.long);\n this[$extra].space = {\n width: this.medium.short,\n height: this.medium.long\n };\n if (this.medium.orientation === \"landscape\") {\n const x = style.width;\n style.width = style.height;\n style.height = x;\n this[$extra].space = {\n width: this.medium.long,\n height: this.medium.short\n };\n }\n } else {\n warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n }\n this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n include: true\n });\n this[$childrenToHTML]({\n filter: new Set([\"contentArea\"]),\n include: true\n });\n return HTMLResult.success({\n name: \"div\",\n children,\n attributes: {\n class: [\"xfaPage\"],\n id: this[$uid],\n style,\n xfaName: this.name\n }\n });\n }\n}\nclass PageSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageSet\", true);\n this.duplexImposition = getStringOption(attributes.duplexImposition, [\"longEdge\", \"shortEdge\"]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\"orderedOccurrence\", \"duplexPaginated\", \"simplexPaginated\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.occur = null;\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n }\n [$cleanPage]() {\n for (const page of this.pageArea.children) {\n page[$cleanPage]();\n }\n for (const page of this.pageSet.children) {\n page[$cleanPage]();\n }\n }\n [$isUsable]() {\n return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse < this.occur.max;\n }\n [$getNextPage]() {\n this[$extra] ||= {\n numberOfUse: 1,\n pageIndex: -1,\n pageSetIndex: -1\n };\n if (this.relation === \"orderedOccurrence\") {\n if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n this[$extra].pageIndex += 1;\n const pageArea = this.pageArea.children[this[$extra].pageIndex];\n return pageArea[$getNextPage]();\n }\n if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n this[$extra].pageSetIndex += 1;\n return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n }\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n this[$extra].pageIndex = -1;\n this[$extra].pageSetIndex = -1;\n return this[$getNextPage]();\n }\n const parent = this[$getParent]();\n if (parent instanceof PageSet) {\n return parent[$getNextPage]();\n }\n this[$cleanPage]();\n return this[$getNextPage]();\n }\n const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n const position = pageNumber === 0 ? \"first\" : \"rest\";\n let page = this.pageArea.children.find(p => p.oddOrEven === parity && p.pagePosition === position);\n if (page) {\n return page;\n }\n page = this.pageArea.children.find(p => p.oddOrEven === \"any\" && p.pagePosition === position);\n if (page) {\n return page;\n }\n page = this.pageArea.children.find(p => p.oddOrEven === \"any\" && p.pagePosition === \"any\");\n if (page) {\n return page;\n }\n return this.pageArea.children[0];\n }\n}\nclass Para extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"para\", true);\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.lineHeight = attributes.lineHeight ? getMeasurement(attributes.lineHeight, \"0pt\") : \"\";\n this.marginLeft = attributes.marginLeft ? getMeasurement(attributes.marginLeft, \"0pt\") : \"\";\n this.marginRight = attributes.marginRight ? getMeasurement(attributes.marginRight, \"0pt\") : \"\";\n this.orphans = getInteger({\n data: attributes.orphans,\n defaultValue: 0,\n validate: x => x >= 0\n });\n this.preserve = attributes.preserve || \"\";\n this.radixOffset = attributes.radixOffset ? getMeasurement(attributes.radixOffset, \"0pt\") : \"\";\n this.spaceAbove = attributes.spaceAbove ? getMeasurement(attributes.spaceAbove, \"0pt\") : \"\";\n this.spaceBelow = attributes.spaceBelow ? getMeasurement(attributes.spaceBelow, \"0pt\") : \"\";\n this.tabDefault = attributes.tabDefault ? getMeasurement(this.tabDefault) : \"\";\n this.tabStops = (attributes.tabStops || \"\").trim().split(/\\s+/).map((x, i) => i % 2 === 1 ? getMeasurement(x) : x);\n this.textIndent = attributes.textIndent ? getMeasurement(attributes.textIndent, \"0pt\") : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vAlign = getStringOption(attributes.vAlign, [\"top\", \"bottom\", \"middle\"]);\n this.widows = getInteger({\n data: attributes.widows,\n defaultValue: 0,\n validate: x => x >= 0\n });\n this.hyphenation = null;\n }\n [$toStyle]() {\n const style = toStyle(this, \"hAlign\");\n if (this.marginLeft !== \"\") {\n style.paddingLeft = measureToString(this.marginLeft);\n }\n if (this.marginRight !== \"\") {\n style.paddingRight = measureToString(this.marginRight);\n }\n if (this.spaceAbove !== \"\") {\n style.paddingTop = measureToString(this.spaceAbove);\n }\n if (this.spaceBelow !== \"\") {\n style.paddingBottom = measureToString(this.spaceBelow);\n }\n if (this.textIndent !== \"\") {\n style.textIndent = measureToString(this.textIndent);\n fixTextIndent(style);\n }\n if (this.lineHeight > 0) {\n style.lineHeight = measureToString(this.lineHeight);\n }\n if (this.tabDefault !== \"\") {\n style.tabSize = measureToString(this.tabDefault);\n }\n if (this.tabStops.length > 0) {}\n if (this.hyphenatation) {\n Object.assign(style, this.hyphenatation[$toStyle]());\n }\n return style;\n }\n}\nclass PasswordEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"passwordEdit\", true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n this.id = attributes.id || \"\";\n this.passwordChar = attributes.passwordChar || \"*\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n}\nclass template_Pattern extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pattern\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"crossHatch\", \"crossDiagonal\", \"diagonalLeft\", \"diagonalRight\", \"horizontal\", \"vertical\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const width = 5;\n const cmd = \"repeating-linear-gradient\";\n const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${2 * width}px`;\n switch (this.type) {\n case \"crossHatch\":\n return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n case \"crossDiagonal\":\n return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n case \"diagonalLeft\":\n return `${cmd}(45deg,${colors})`;\n case \"diagonalRight\":\n return `${cmd}(-45deg,${colors})`;\n case \"horizontal\":\n return `${cmd}(to top,${colors})`;\n case \"vertical\":\n return `${cmd}(to right,${colors})`;\n }\n return \"\";\n }\n}\nclass Picture extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"picture\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Proto extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"proto\", true);\n this.appearanceFilter = new XFAObjectArray();\n this.arc = new XFAObjectArray();\n this.area = new XFAObjectArray();\n this.assist = new XFAObjectArray();\n this.barcode = new XFAObjectArray();\n this.bindItems = new XFAObjectArray();\n this.bookend = new XFAObjectArray();\n this.boolean = new XFAObjectArray();\n this.border = new XFAObjectArray();\n this.break = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.button = new XFAObjectArray();\n this.calculate = new XFAObjectArray();\n this.caption = new XFAObjectArray();\n this.certificate = new XFAObjectArray();\n this.certificates = new XFAObjectArray();\n this.checkButton = new XFAObjectArray();\n this.choiceList = new XFAObjectArray();\n this.color = new XFAObjectArray();\n this.comb = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.corner = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.dateTimeEdit = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.defaultUi = new XFAObjectArray();\n this.desc = new XFAObjectArray();\n this.digestMethod = new XFAObjectArray();\n this.digestMethods = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.edge = new XFAObjectArray();\n this.encoding = new XFAObjectArray();\n this.encodings = new XFAObjectArray();\n this.encrypt = new XFAObjectArray();\n this.encryptData = new XFAObjectArray();\n this.encryption = new XFAObjectArray();\n this.encryptionMethod = new XFAObjectArray();\n this.encryptionMethods = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.execute = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.fill = new XFAObjectArray();\n this.filter = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.font = new XFAObjectArray();\n this.format = new XFAObjectArray();\n this.handler = new XFAObjectArray();\n this.hyphenation = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.imageEdit = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.issuers = new XFAObjectArray();\n this.items = new XFAObjectArray();\n this.keep = new XFAObjectArray();\n this.keyUsage = new XFAObjectArray();\n this.line = new XFAObjectArray();\n this.linear = new XFAObjectArray();\n this.lockDocument = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.margin = new XFAObjectArray();\n this.mdp = new XFAObjectArray();\n this.medium = new XFAObjectArray();\n this.message = new XFAObjectArray();\n this.numericEdit = new XFAObjectArray();\n this.occur = new XFAObjectArray();\n this.oid = new XFAObjectArray();\n this.oids = new XFAObjectArray();\n this.overflow = new XFAObjectArray();\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n this.para = new XFAObjectArray();\n this.passwordEdit = new XFAObjectArray();\n this.pattern = new XFAObjectArray();\n this.picture = new XFAObjectArray();\n this.radial = new XFAObjectArray();\n this.reason = new XFAObjectArray();\n this.reasons = new XFAObjectArray();\n this.rectangle = new XFAObjectArray();\n this.ref = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n this.signature = new XFAObjectArray();\n this.signing = new XFAObjectArray();\n this.solid = new XFAObjectArray();\n this.speak = new XFAObjectArray();\n this.stipple = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n this.subjectDN = new XFAObjectArray();\n this.subjectDNs = new XFAObjectArray();\n this.submit = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.textEdit = new XFAObjectArray();\n this.time = new XFAObjectArray();\n this.timeStamp = new XFAObjectArray();\n this.toolTip = new XFAObjectArray();\n this.traversal = new XFAObjectArray();\n this.traverse = new XFAObjectArray();\n this.ui = new XFAObjectArray();\n this.validate = new XFAObjectArray();\n this.value = new XFAObjectArray();\n this.variables = new XFAObjectArray();\n }\n}\nclass Radial extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"radial\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const colors = this.type === \"toEdge\" ? `${startColor},${endColor}` : `${endColor},${startColor}`;\n return `radial-gradient(circle at center, ${colors})`;\n }\n}\nclass Reason extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reason\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Reasons extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reasons\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.reason = new XFAObjectArray();\n }\n}\nclass Rectangle extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"rectangle\", true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.fill = null;\n }\n [$toHTML]() {\n const edge = this.edge.children.length ? this.edge.children[0] : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill?.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(edge.presence === \"visible\" ? edge.thickness : 0);\n style.stroke = edgeStyle.color;\n const corner = this.corner.children.length ? this.corner.children[0] : new Corner({});\n const cornerStyle = corner[$toStyle]();\n const rect = {\n name: \"rect\",\n attributes: {\n xmlns: SVG_NS,\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n rx: cornerStyle.radius,\n ry: cornerStyle.radius,\n style\n }\n };\n const svg = {\n name: \"svg\",\n children: [rect],\n attributes: {\n xmlns: SVG_NS,\n style: {\n overflow: \"visible\"\n },\n width: \"100%\",\n height: \"100%\"\n }\n };\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\"\n }\n },\n children: [svg]\n });\n }\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\nclass RefElement extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ref\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Script extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"script\");\n this.binding = attributes.binding || \"\";\n this.contentType = attributes.contentType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.runAt = getStringOption(attributes.runAt, [\"client\", \"both\", \"server\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass SetProperty extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"setProperty\");\n this.connection = attributes.connection || \"\";\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n }\n}\nclass SignData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signData\", true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\"sign\", \"clear\", \"verify\"]);\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signature\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.filter = null;\n this.manifest = null;\n this.margin = null;\n }\n}\nclass Signing extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signing\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\nclass Solid extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"solid\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$toStyle](startColor) {\n return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n }\n}\nclass Speak extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"speak\");\n this.disable = getInteger({\n data: attributes.disable,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.id = attributes.id || \"\";\n this.priority = getStringOption(attributes.priority, [\"custom\", \"caption\", \"name\", \"toolTip\"]);\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Stipple extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"stipple\", true);\n this.id = attributes.id || \"\";\n this.rate = getInteger({\n data: attributes.rate,\n defaultValue: 50,\n validate: x => x >= 0 && x <= 100\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle](bgColor) {\n const alpha = this.rate / 100;\n return Util.makeHexColor(Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha), Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha), Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha));\n }\n}\nclass Subform extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subform\", true);\n this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n this.allowMacro = getInteger({\n data: attributes.allowMacro,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.columnWidths = (attributes.columnWidths || \"\").trim().split(/\\s+/).map(x => x === \"-1\" ? -1 : getMeasurement(x));\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\"position\", \"lr-tb\", \"rl-row\", \"rl-tb\", \"row\", \"table\", \"tb\"]);\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.mergeMode = getStringOption(attributes.mergeMode, [\"consumeData\", \"matchTemplate\"]);\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.restoreState = getStringOption(attributes.restoreState, [\"manual\", \"auto\"]);\n this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.bookend = null;\n this.border = null;\n this.break = null;\n this.calculate = null;\n this.desc = null;\n this.extras = null;\n this.keep = null;\n this.margin = null;\n this.occur = null;\n this.overflow = null;\n this.pageSet = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.variables = null;\n this.area = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.proto = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n [$getSubformParent]() {\n const parent = this[$getParent]();\n if (parent instanceof SubformSet) {\n return parent[$getSubformParent]();\n }\n return parent;\n }\n [$isBindable]() {\n return true;\n }\n [$isThereMoreWidth]() {\n return this.layout.endsWith(\"-tb\") && this[$extra].attempt === 0 && this[$extra].numberInLine > 0 || this[$getParent]()[$isThereMoreWidth]();\n }\n *[$getContainedChildren]() {\n yield* getContainedChildren(this);\n }\n [$flushHTML]() {\n return flushHTML(this);\n }\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n [$isSplittable]() {\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n if (this.keep && this.keep.intact !== \"none\") {\n this[$extra]._isSplittable = false;\n return false;\n }\n if (parent.layout?.endsWith(\"-tb\") && parent[$extra].numberInLine !== 0) {\n return false;\n }\n this[$extra]._isSplittable = true;\n return true;\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (this.break) {\n if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n const node = new BreakAfter({\n targetType: this.break.after,\n target: this.break.afterTarget,\n startNew: this.break.startNew.toString()\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakAfter.push(node);\n }\n if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n const node = new BreakBefore({\n targetType: this.break.before,\n target: this.break.beforeTarget,\n startNew: this.break.startNew.toString()\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakBefore.push(node);\n }\n if (this.break.overflowTarget !== \"\") {\n const node = new Overflow({\n target: this.break.overflowTarget,\n leader: this.break.overflowLeader,\n trailer: this.break.overflowTrailer\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.overflow.push(node);\n }\n this[$removeChild](this.break);\n this.break = null;\n }\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n if (this.breakBefore.children.length > 1 || this.breakAfter.children.length > 1) {\n warn(\"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\");\n }\n if (this.breakBefore.children.length >= 1) {\n const breakBefore = this.breakBefore.children[0];\n if (handleBreak(breakBefore)) {\n return HTMLResult.breakNode(breakBefore);\n }\n }\n if (this[$extra]?.afterBreakAfter) {\n return HTMLResult.EMPTY;\n }\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: []\n };\n setAccess(this, attributes.class);\n this[$extra] ||= Object.create(null);\n Object.assign(this[$extra], {\n children,\n line: null,\n attributes,\n attempt: 0,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height)\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0\n });\n const root = this[$getTemplateRoot]();\n const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"area\", \"draw\", \"exclGroup\", \"field\", \"subform\", \"subformSet\"]);\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n const style = toStyle(this, \"anchorType\", \"dimensions\", \"position\", \"presence\", \"border\", \"margin\", \"hAlign\");\n const classNames = [\"xfaSubform\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n attributes.style = style;\n attributes.class = classNames;\n if (this.name) {\n attributes.xfaName = this.name;\n }\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addLeader) {\n overflowExtra.addLeader = false;\n handleOverflow(this, overflowExtra.leader, availableSpace);\n }\n }\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (isLrTb && this[$extra].attempt === 0 && this[$extra].numberInLine === 0 && !root[$extra].noLayoutFailure) {\n this[$extra].attempt = maxRun;\n break;\n }\n }\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n root[$extra].noLayoutFailure = savedNoLayoutFailure;\n if (this[$extra].attempt === maxRun) {\n if (this.overflow) {\n this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n }\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addTrailer) {\n overflowExtra.addTrailer = false;\n handleOverflow(this, overflowExtra.trailer, availableSpace);\n }\n }\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n if ((style.width === \"0px\" || style.height === \"0px\") && children.length === 0) {\n return HTMLResult.EMPTY;\n }\n const html = {\n name: \"div\",\n attributes,\n children\n };\n applyAssist(this, attributes);\n const result = HTMLResult.success(createWrapper(this, html), bbox);\n if (this.breakAfter.children.length >= 1) {\n const breakAfter = this.breakAfter.children[0];\n if (handleBreak(breakAfter)) {\n this[$extra].afterBreakAfter = result;\n return HTMLResult.breakNode(breakAfter);\n }\n }\n delete this[$extra];\n return result;\n }\n}\nclass SubformSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subformSet\", true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\"ordered\", \"choice\", \"unordered\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.bookend = null;\n this.break = null;\n this.desc = null;\n this.extras = null;\n this.occur = null;\n this.overflow = null;\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n *[$getContainedChildren]() {\n yield* getContainedChildren(this);\n }\n [$getSubformParent]() {\n let parent = this[$getParent]();\n while (!(parent instanceof Subform)) {\n parent = parent[$getParent]();\n }\n return parent;\n }\n [$isBindable]() {\n return true;\n }\n}\nclass SubjectDN extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDN\");\n this.delimiter = attributes.delimiter || \",\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n this[$content] = new Map(this[$content].split(this.delimiter).map(kv => {\n kv = kv.split(\"=\", 2);\n kv[0] = kv[0].trim();\n return kv;\n }));\n }\n}\nclass SubjectDNs extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDNs\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.subjectDN = new XFAObjectArray();\n }\n}\nclass Submit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"submit\", true);\n this.embedPDF = getInteger({\n data: attributes.embedPDF,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.format = getStringOption(attributes.format, [\"xdp\", \"formdata\", \"pdf\", \"urlencoded\", \"xfd\", \"xml\"]);\n this.id = attributes.id || \"\";\n this.target = attributes.target || \"\";\n this.textEncoding = getKeyword({\n data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : \"\",\n defaultValue: \"\",\n validate: k => [\"utf-8\", \"big-five\", \"fontspecific\", \"gbk\", \"gb-18030\", \"gb-2312\", \"ksc-5601\", \"none\", \"shift-jis\", \"ucs-2\", \"utf-16\"].includes(k) || k.match(/iso-8859-\\d{2}/)\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.xdpContent = attributes.xdpContent || \"\";\n this.encrypt = null;\n this.encryptData = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n }\n}\nclass Template extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"template\", true);\n this.baseProfile = getStringOption(attributes.baseProfile, [\"full\", \"interactiveForms\"]);\n this.extras = null;\n this.subform = new XFAObjectArray();\n }\n [$finalize]() {\n if (this.subform.children.length === 0) {\n warn(\"XFA - No subforms in template node.\");\n }\n if (this.subform.children.length >= 2) {\n warn(\"XFA - Several subforms in template node: please file a bug.\");\n }\n this[$tabIndex] = DEFAULT_TAB_INDEX;\n }\n [$isSplittable]() {\n return true;\n }\n [$searchNode](expr, container) {\n if (expr.startsWith(\"#\")) {\n return [this[$ids].get(expr.slice(1))];\n }\n return searchNode(this, container, expr, true, true);\n }\n *[$toPages]() {\n if (!this.subform.children.length) {\n return HTMLResult.success({\n name: \"div\",\n children: []\n });\n }\n this[$extra] = {\n overflowNode: null,\n firstUnsplittable: null,\n currentContentArea: null,\n currentPageArea: null,\n noLayoutFailure: false,\n pageNumber: 1,\n pagePosition: \"first\",\n oddOrEven: \"odd\",\n blankOrNotBlank: \"nonBlank\",\n paraStack: []\n };\n const root = this.subform.children[0];\n root.pageSet[$cleanPage]();\n const pageAreas = root.pageSet.pageArea.children;\n const mainHtml = {\n name: \"div\",\n children: []\n };\n let pageArea = null;\n let breakBefore = null;\n let breakBeforeTarget = null;\n if (root.breakBefore.children.length >= 1) {\n breakBefore = root.breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.subform.children.length >= 1 && root.subform.children[0].breakBefore.children.length >= 1) {\n breakBefore = root.subform.children[0].breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.break?.beforeTarget) {\n breakBefore = root.break;\n breakBeforeTarget = breakBefore.beforeTarget;\n } else if (root.subform.children.length >= 1 && root.subform.children[0].break?.beforeTarget) {\n breakBefore = root.subform.children[0].break;\n breakBeforeTarget = breakBefore.beforeTarget;\n }\n if (breakBefore) {\n const target = this[$searchNode](breakBeforeTarget, breakBefore[$getParent]());\n if (target instanceof PageArea) {\n pageArea = target;\n breakBefore[$extra] = {};\n }\n }\n pageArea ||= pageAreas[0];\n pageArea[$extra] = {\n numberOfUse: 1\n };\n const pageAreaParent = pageArea[$getParent]();\n pageAreaParent[$extra] = {\n numberOfUse: 1,\n pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n pageSetIndex: 0\n };\n let targetPageArea;\n let leader = null;\n let trailer = null;\n let hasSomething = true;\n let hasSomethingCounter = 0;\n let startIndex = 0;\n while (true) {\n if (!hasSomething) {\n mainHtml.children.pop();\n if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n warn(\"XFA - Something goes wrong: please file a bug.\");\n return mainHtml;\n }\n } else {\n hasSomethingCounter = 0;\n }\n targetPageArea = null;\n this[$extra].currentPageArea = pageArea;\n const page = pageArea[$toHTML]().html;\n mainHtml.children.push(page);\n if (leader) {\n this[$extra].noLayoutFailure = true;\n page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n leader = null;\n }\n if (trailer) {\n this[$extra].noLayoutFailure = true;\n page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n trailer = null;\n }\n const contentAreas = pageArea.contentArea.children;\n const htmlContentAreas = page.children.filter(node => node.attributes.class.includes(\"xfaContentarea\"));\n hasSomething = false;\n this[$extra].firstUnsplittable = null;\n this[$extra].noLayoutFailure = false;\n const flush = index => {\n const html = root[$flushHTML]();\n if (html) {\n hasSomething ||= html.children?.length > 0;\n htmlContentAreas[index].children.push(html);\n }\n };\n for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n const contentArea = this[$extra].currentContentArea = contentAreas[i];\n const space = {\n width: contentArea.w,\n height: contentArea.h\n };\n startIndex = 0;\n if (leader) {\n htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n leader = null;\n }\n if (trailer) {\n htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n trailer = null;\n }\n const html = root[$toHTML](space);\n if (html.success) {\n if (html.html) {\n hasSomething ||= html.html.children?.length > 0;\n htmlContentAreas[i].children.push(html.html);\n } else if (!hasSomething && mainHtml.children.length > 1) {\n mainHtml.children.pop();\n }\n return mainHtml;\n }\n if (html.isBreak()) {\n const node = html.breakNode;\n flush(i);\n if (node.targetType === \"auto\") {\n continue;\n }\n if (node.leader) {\n leader = this[$searchNode](node.leader, node[$getParent]());\n leader = leader ? leader[0] : null;\n }\n if (node.trailer) {\n trailer = this[$searchNode](node.trailer, node[$getParent]());\n trailer = trailer ? trailer[0] : null;\n }\n if (node.targetType === \"pageArea\") {\n targetPageArea = node[$extra].target;\n i = Infinity;\n } else if (!node[$extra].target) {\n i = node[$extra].index;\n } else {\n targetPageArea = node[$extra].target;\n startIndex = node[$extra].index + 1;\n i = Infinity;\n }\n continue;\n }\n if (this[$extra].overflowNode) {\n const node = this[$extra].overflowNode;\n this[$extra].overflowNode = null;\n const overflowExtra = node[$getExtra]();\n const target = overflowExtra.target;\n overflowExtra.addLeader = overflowExtra.leader !== null;\n overflowExtra.addTrailer = overflowExtra.trailer !== null;\n flush(i);\n const currentIndex = i;\n i = Infinity;\n if (target instanceof PageArea) {\n targetPageArea = target;\n } else if (target instanceof ContentArea) {\n const index = contentAreas.indexOf(target);\n if (index !== -1) {\n if (index > currentIndex) {\n i = index - 1;\n } else {\n startIndex = index;\n }\n } else {\n targetPageArea = target[$getParent]();\n startIndex = targetPageArea.contentArea.children.indexOf(target);\n }\n }\n continue;\n }\n flush(i);\n }\n this[$extra].pageNumber += 1;\n if (targetPageArea) {\n if (targetPageArea[$isUsable]()) {\n targetPageArea[$extra].numberOfUse += 1;\n } else {\n targetPageArea = null;\n }\n }\n pageArea = targetPageArea || pageArea[$getNextPage]();\n yield null;\n }\n }\n}\nclass Text extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"text\");\n this.id = attributes.id || \"\";\n this.maxChars = getInteger({\n data: attributes.maxChars,\n defaultValue: 0,\n validate: x => x >= 0\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$acceptWhitespace]() {\n return true;\n }\n [$onChild](child) {\n if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n return false;\n }\n [$onText](str) {\n if (this[$content] instanceof XFAObject) {\n return;\n }\n super[$onText](str);\n }\n [$finalize]() {\n if (typeof this[$content] === \"string\") {\n this[$content] = this[$content].replaceAll(\"\\r\\n\", \"\\n\");\n }\n }\n [$getExtra]() {\n if (typeof this[$content] === \"string\") {\n return this[$content].split(/[\\u2029\\u2028\\n]/).filter(Boolean).join(\"\\n\");\n }\n return this[$content][$text]();\n }\n [$toHTML](availableSpace) {\n if (typeof this[$content] === \"string\") {\n const html = valueToHtml(this[$content]).html;\n if (this[$content].includes(\"\\u2029\")) {\n html.name = \"div\";\n html.children = [];\n this[$content].split(\"\\u2029\").map(para => para.split(/[\\u2028\\n]/).flatMap(line => [{\n name: \"span\",\n value: line\n }, {\n name: \"br\"\n }])).forEach(lines => {\n html.children.push({\n name: \"p\",\n children: lines\n });\n });\n } else if (/[\\u2028\\n]/.test(this[$content])) {\n html.name = \"div\";\n html.children = [];\n this[$content].split(/[\\u2028\\n]/).forEach(line => {\n html.children.push({\n name: \"span\",\n value: line\n }, {\n name: \"br\"\n });\n });\n }\n return HTMLResult.success(html);\n }\n return this[$content][$toHTML](availableSpace);\n }\n}\nclass TextEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"textEdit\", true);\n this.allowRichText = getInteger({\n data: attributes.allowRichText,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n this.id = attributes.id || \"\";\n this.multiLine = getInteger({\n data: attributes.multiLine,\n defaultValue: \"\",\n validate: x => x === 0 || x === 1\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\"auto\", \"off\", \"on\"]);\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n let html;\n const field = this[$getParent]()[$getParent]();\n if (this.multiLine === \"\") {\n this.multiLine = field instanceof Draw ? 1 : 0;\n }\n if (this.multiLine === 1) {\n html = {\n name: \"textarea\",\n attributes: {\n dataId: field[$data]?.[$uid] || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n } else {\n html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n dataId: field[$data]?.[$uid] || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n }\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [html]\n });\n }\n}\nclass Time extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"time\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\nclass TimeStamp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"timeStamp\");\n this.id = attributes.id || \"\";\n this.server = attributes.server || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass ToolTip extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"toolTip\");\n this.id = attributes.id || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Traversal extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traversal\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.traverse = new XFAObjectArray();\n }\n}\nclass Traverse extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traverse\", true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\"next\", \"back\", \"down\", \"first\", \"left\", \"right\", \"up\"]);\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.script = null;\n }\n get name() {\n return this.operation;\n }\n [$isTransparent]() {\n return false;\n }\n}\nclass Ui extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ui\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n this.barcode = null;\n this.button = null;\n this.checkButton = null;\n this.choiceList = null;\n this.dateTimeEdit = null;\n this.defaultUi = null;\n this.imageEdit = null;\n this.numericEdit = null;\n this.passwordEdit = null;\n this.signature = null;\n this.textEdit = null;\n }\n [$getExtra]() {\n if (this[$extra] === undefined) {\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"picture\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n this[$extra] = obj;\n return obj;\n }\n this[$extra] = null;\n }\n return this[$extra];\n }\n [$toHTML](availableSpace) {\n const obj = this[$getExtra]();\n if (obj) {\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\nclass Validate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"validate\", true);\n this.formatTest = getStringOption(attributes.formatTest, [\"warning\", \"disabled\", \"error\"]);\n this.id = attributes.id || \"\";\n this.nullTest = getStringOption(attributes.nullTest, [\"disabled\", \"error\", \"warning\"]);\n this.scriptTest = getStringOption(attributes.scriptTest, [\"error\", \"disabled\", \"warning\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.picture = null;\n this.script = null;\n }\n}\nclass Value extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"value\", true);\n this.id = attributes.id || \"\";\n this.override = getInteger({\n data: attributes.override,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.arc = null;\n this.boolean = null;\n this.date = null;\n this.dateTime = null;\n this.decimal = null;\n this.exData = null;\n this.float = null;\n this.image = null;\n this.integer = null;\n this.line = null;\n this.rectangle = null;\n this.text = null;\n this.time = null;\n }\n [$setValue](value) {\n const parent = this[$getParent]();\n if (parent instanceof Field) {\n if (parent.ui?.imageEdit) {\n if (!this.image) {\n this.image = new Image({});\n this[$appendChild](this.image);\n }\n this.image[$content] = value[$content];\n return;\n }\n }\n const valueName = value[$nodeName];\n if (this[valueName] !== null) {\n this[valueName][$content] = value[$content];\n return;\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (obj instanceof XFAObject) {\n this[name] = null;\n this[$removeChild](obj);\n }\n }\n this[value[$nodeName]] = value;\n this[$appendChild](value);\n }\n [$text]() {\n if (this.exData) {\n return typeof this.exData[$content] === \"string\" ? this.exData[$content].trim() : this.exData[$content][$text]().trim();\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"image\") {\n continue;\n }\n const obj = this[name];\n if (obj instanceof XFAObject) {\n return (obj[$content] || \"\").toString().trim();\n }\n }\n return null;\n }\n [$toHTML](availableSpace) {\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\nclass Variables extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"variables\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n [$isTransparent]() {\n return true;\n }\n}\nclass TemplateNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(TemplateNamespace, name)) {\n const node = TemplateNamespace[name](attributes);\n node[$setSetAttributes](attributes);\n return node;\n }\n return undefined;\n }\n static appearanceFilter(attrs) {\n return new AppearanceFilter(attrs);\n }\n static arc(attrs) {\n return new Arc(attrs);\n }\n static area(attrs) {\n return new Area(attrs);\n }\n static assist(attrs) {\n return new Assist(attrs);\n }\n static barcode(attrs) {\n return new Barcode(attrs);\n }\n static bind(attrs) {\n return new Bind(attrs);\n }\n static bindItems(attrs) {\n return new BindItems(attrs);\n }\n static bookend(attrs) {\n return new Bookend(attrs);\n }\n static boolean(attrs) {\n return new BooleanElement(attrs);\n }\n static border(attrs) {\n return new Border(attrs);\n }\n static break(attrs) {\n return new Break(attrs);\n }\n static breakAfter(attrs) {\n return new BreakAfter(attrs);\n }\n static breakBefore(attrs) {\n return new BreakBefore(attrs);\n }\n static button(attrs) {\n return new Button(attrs);\n }\n static calculate(attrs) {\n return new Calculate(attrs);\n }\n static caption(attrs) {\n return new Caption(attrs);\n }\n static certificate(attrs) {\n return new Certificate(attrs);\n }\n static certificates(attrs) {\n return new Certificates(attrs);\n }\n static checkButton(attrs) {\n return new CheckButton(attrs);\n }\n static choiceList(attrs) {\n return new ChoiceList(attrs);\n }\n static color(attrs) {\n return new Color(attrs);\n }\n static comb(attrs) {\n return new Comb(attrs);\n }\n static connect(attrs) {\n return new Connect(attrs);\n }\n static contentArea(attrs) {\n return new ContentArea(attrs);\n }\n static corner(attrs) {\n return new Corner(attrs);\n }\n static date(attrs) {\n return new DateElement(attrs);\n }\n static dateTime(attrs) {\n return new DateTime(attrs);\n }\n static dateTimeEdit(attrs) {\n return new DateTimeEdit(attrs);\n }\n static decimal(attrs) {\n return new Decimal(attrs);\n }\n static defaultUi(attrs) {\n return new DefaultUi(attrs);\n }\n static desc(attrs) {\n return new Desc(attrs);\n }\n static digestMethod(attrs) {\n return new DigestMethod(attrs);\n }\n static digestMethods(attrs) {\n return new DigestMethods(attrs);\n }\n static draw(attrs) {\n return new Draw(attrs);\n }\n static edge(attrs) {\n return new Edge(attrs);\n }\n static encoding(attrs) {\n return new Encoding(attrs);\n }\n static encodings(attrs) {\n return new Encodings(attrs);\n }\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n static encryptData(attrs) {\n return new EncryptData(attrs);\n }\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n static encryptionMethod(attrs) {\n return new EncryptionMethod(attrs);\n }\n static encryptionMethods(attrs) {\n return new EncryptionMethods(attrs);\n }\n static event(attrs) {\n return new Event(attrs);\n }\n static exData(attrs) {\n return new ExData(attrs);\n }\n static exObject(attrs) {\n return new ExObject(attrs);\n }\n static exclGroup(attrs) {\n return new ExclGroup(attrs);\n }\n static execute(attrs) {\n return new Execute(attrs);\n }\n static extras(attrs) {\n return new Extras(attrs);\n }\n static field(attrs) {\n return new Field(attrs);\n }\n static fill(attrs) {\n return new Fill(attrs);\n }\n static filter(attrs) {\n return new Filter(attrs);\n }\n static float(attrs) {\n return new Float(attrs);\n }\n static font(attrs) {\n return new template_Font(attrs);\n }\n static format(attrs) {\n return new Format(attrs);\n }\n static handler(attrs) {\n return new Handler(attrs);\n }\n static hyphenation(attrs) {\n return new Hyphenation(attrs);\n }\n static image(attrs) {\n return new Image(attrs);\n }\n static imageEdit(attrs) {\n return new ImageEdit(attrs);\n }\n static integer(attrs) {\n return new Integer(attrs);\n }\n static issuers(attrs) {\n return new Issuers(attrs);\n }\n static items(attrs) {\n return new Items(attrs);\n }\n static keep(attrs) {\n return new Keep(attrs);\n }\n static keyUsage(attrs) {\n return new KeyUsage(attrs);\n }\n static line(attrs) {\n return new Line(attrs);\n }\n static linear(attrs) {\n return new Linear(attrs);\n }\n static lockDocument(attrs) {\n return new LockDocument(attrs);\n }\n static manifest(attrs) {\n return new Manifest(attrs);\n }\n static margin(attrs) {\n return new Margin(attrs);\n }\n static mdp(attrs) {\n return new Mdp(attrs);\n }\n static medium(attrs) {\n return new Medium(attrs);\n }\n static message(attrs) {\n return new Message(attrs);\n }\n static numericEdit(attrs) {\n return new NumericEdit(attrs);\n }\n static occur(attrs) {\n return new Occur(attrs);\n }\n static oid(attrs) {\n return new Oid(attrs);\n }\n static oids(attrs) {\n return new Oids(attrs);\n }\n static overflow(attrs) {\n return new Overflow(attrs);\n }\n static pageArea(attrs) {\n return new PageArea(attrs);\n }\n static pageSet(attrs) {\n return new PageSet(attrs);\n }\n static para(attrs) {\n return new Para(attrs);\n }\n static passwordEdit(attrs) {\n return new PasswordEdit(attrs);\n }\n static pattern(attrs) {\n return new template_Pattern(attrs);\n }\n static picture(attrs) {\n return new Picture(attrs);\n }\n static proto(attrs) {\n return new Proto(attrs);\n }\n static radial(attrs) {\n return new Radial(attrs);\n }\n static reason(attrs) {\n return new Reason(attrs);\n }\n static reasons(attrs) {\n return new Reasons(attrs);\n }\n static rectangle(attrs) {\n return new Rectangle(attrs);\n }\n static ref(attrs) {\n return new RefElement(attrs);\n }\n static script(attrs) {\n return new Script(attrs);\n }\n static setProperty(attrs) {\n return new SetProperty(attrs);\n }\n static signData(attrs) {\n return new SignData(attrs);\n }\n static signature(attrs) {\n return new Signature(attrs);\n }\n static signing(attrs) {\n return new Signing(attrs);\n }\n static solid(attrs) {\n return new Solid(attrs);\n }\n static speak(attrs) {\n return new Speak(attrs);\n }\n static stipple(attrs) {\n return new Stipple(attrs);\n }\n static subform(attrs) {\n return new Subform(attrs);\n }\n static subformSet(attrs) {\n return new SubformSet(attrs);\n }\n static subjectDN(attrs) {\n return new SubjectDN(attrs);\n }\n static subjectDNs(attrs) {\n return new SubjectDNs(attrs);\n }\n static submit(attrs) {\n return new Submit(attrs);\n }\n static template(attrs) {\n return new Template(attrs);\n }\n static text(attrs) {\n return new Text(attrs);\n }\n static textEdit(attrs) {\n return new TextEdit(attrs);\n }\n static time(attrs) {\n return new Time(attrs);\n }\n static timeStamp(attrs) {\n return new TimeStamp(attrs);\n }\n static toolTip(attrs) {\n return new ToolTip(attrs);\n }\n static traversal(attrs) {\n return new Traversal(attrs);\n }\n static traverse(attrs) {\n return new Traverse(attrs);\n }\n static ui(attrs) {\n return new Ui(attrs);\n }\n static validate(attrs) {\n return new Validate(attrs);\n }\n static value(attrs) {\n return new Value(attrs);\n }\n static variables(attrs) {\n return new Variables(attrs);\n }\n}\n\n;// ./src/core/xfa/bind.js\n\n\n\n\n\n\nconst bind_NS_DATASETS = NamespaceIds.datasets.id;\nfunction createText(content) {\n const node = new Text({});\n node[$content] = content;\n return node;\n}\nclass Binder {\n constructor(root) {\n this.root = root;\n this.datasets = root.datasets;\n this.data = root.datasets?.data || new XmlObject(bind_NS_DATASETS, \"data\");\n this.emptyMerge = this.data[$getChildren]().length === 0;\n this.root.form = this.form = root.template[$clone]();\n }\n _isConsumeData() {\n return !this.emptyMerge && this._mergeMode;\n }\n _isMatchTemplate() {\n return !this._isConsumeData();\n }\n bind() {\n this._bindElement(this.form, this.data);\n return this.form;\n }\n getData() {\n return this.data;\n }\n _bindValue(formNode, data, picture) {\n formNode[$data] = data;\n if (formNode[$hasSettableValue]()) {\n if (data[$isDataValue]()) {\n const value = data[$getDataValue]();\n formNode[$setValue](createText(value));\n } else if (formNode instanceof Field && formNode.ui?.choiceList?.open === \"multiSelect\") {\n const value = data[$getChildren]().map(child => child[$content].trim()).join(\"\\n\");\n formNode[$setValue](createText(value));\n } else if (this._isConsumeData()) {\n warn(`XFA - Nodes haven't the same type.`);\n }\n } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n this._bindElement(formNode, data);\n } else {\n warn(`XFA - Nodes haven't the same type.`);\n }\n }\n _findDataByNameToConsume(name, isValue, dataNode, global) {\n if (!name) {\n return null;\n }\n let generator, match;\n for (let i = 0; i < 3; i++) {\n generator = dataNode[$getRealChildrenByNameIt](name, false, true);\n while (true) {\n match = generator.next().value;\n if (!match) {\n break;\n }\n if (isValue === match[$isDataValue]()) {\n return match;\n }\n }\n if (dataNode[$namespaceId] === bind_NS_DATASETS && dataNode[$nodeName] === \"data\") {\n break;\n }\n dataNode = dataNode[$getParent]();\n }\n if (!global) {\n return null;\n }\n generator = this.data[$getRealChildrenByNameIt](name, true, false);\n match = generator.next().value;\n if (match) {\n return match;\n }\n generator = this.data[$getAttributeIt](name, true);\n match = generator.next().value;\n if (match?.[$isDataValue]()) {\n return match;\n }\n return null;\n }\n _setProperties(formNode, dataNode) {\n if (!Object.hasOwn(formNode, \"setProperty\")) {\n return;\n }\n for (const {\n ref,\n target,\n connection\n } of formNode.setProperty.children) {\n if (connection) {\n continue;\n }\n if (!ref) {\n continue;\n }\n const nodes = searchNode(this.root, dataNode, ref, false, false);\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n const [node] = nodes;\n if (!node[$isDescendent](this.data)) {\n warn(`XFA - Invalid node: must be a data node.`);\n continue;\n }\n const targetNodes = searchNode(this.root, formNode, target, false, false);\n if (!targetNodes) {\n warn(`XFA - Invalid target: ${target}.`);\n continue;\n }\n const [targetNode] = targetNodes;\n if (!targetNode[$isDescendent](formNode)) {\n warn(`XFA - Invalid target: must be a property or subproperty.`);\n continue;\n }\n const targetParent = targetNode[$getParent]();\n if (targetNode instanceof SetProperty || targetParent instanceof SetProperty) {\n warn(`XFA - Invalid target: cannot be a setProperty or one of its properties.`);\n continue;\n }\n if (targetNode instanceof BindItems || targetParent instanceof BindItems) {\n warn(`XFA - Invalid target: cannot be a bindItems or one of its properties.`);\n continue;\n }\n const content = node[$text]();\n const name = targetNode[$nodeName];\n if (targetNode instanceof XFAAttribute) {\n const attrs = Object.create(null);\n attrs[name] = content;\n const obj = Reflect.construct(Object.getPrototypeOf(targetParent).constructor, [attrs]);\n targetParent[name] = obj[name];\n continue;\n }\n if (!Object.hasOwn(targetNode, $content)) {\n warn(`XFA - Invalid node to use in setProperty`);\n continue;\n }\n targetNode[$data] = node;\n targetNode[$content] = content;\n targetNode[$finalize]();\n }\n }\n _bindItems(formNode, dataNode) {\n if (!Object.hasOwn(formNode, \"items\") || !Object.hasOwn(formNode, \"bindItems\") || formNode.bindItems.isEmpty()) {\n return;\n }\n for (const item of formNode.items.children) {\n formNode[$removeChild](item);\n }\n formNode.items.clear();\n const labels = new Items({});\n const values = new Items({});\n formNode[$appendChild](labels);\n formNode.items.push(labels);\n formNode[$appendChild](values);\n formNode.items.push(values);\n for (const {\n ref,\n labelRef,\n valueRef,\n connection\n } of formNode.bindItems.children) {\n if (connection) {\n continue;\n }\n if (!ref) {\n continue;\n }\n const nodes = searchNode(this.root, dataNode, ref, false, false);\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n for (const node of nodes) {\n if (!node[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n continue;\n }\n const labelNodes = searchNode(this.root, node, labelRef, true, false);\n if (!labelNodes) {\n warn(`XFA - Invalid label: ${labelRef}.`);\n continue;\n }\n const [labelNode] = labelNodes;\n if (!labelNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid label: must be a datasets child.`);\n continue;\n }\n const valueNodes = searchNode(this.root, node, valueRef, true, false);\n if (!valueNodes) {\n warn(`XFA - Invalid value: ${valueRef}.`);\n continue;\n }\n const [valueNode] = valueNodes;\n if (!valueNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid value: must be a datasets child.`);\n continue;\n }\n const label = createText(labelNode[$text]());\n const value = createText(valueNode[$text]());\n labels[$appendChild](label);\n labels.text.push(label);\n values[$appendChild](value);\n values.text.push(value);\n }\n }\n }\n _bindOccurrences(formNode, matches, picture) {\n let baseClone;\n if (matches.length > 1) {\n baseClone = formNode[$clone]();\n baseClone[$removeChild](baseClone.occur);\n baseClone.occur = null;\n }\n this._bindValue(formNode, matches[0], picture);\n this._setProperties(formNode, matches[0]);\n this._bindItems(formNode, matches[0]);\n if (matches.length === 1) {\n return;\n }\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n const pos = parent[$indexOf](formNode);\n for (let i = 1, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const clone = baseClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n this._bindValue(clone, match, picture);\n this._setProperties(clone, match);\n this._bindItems(clone, match);\n }\n }\n _createOccurrences(formNode) {\n if (!this.emptyMerge) {\n return;\n }\n const {\n occur\n } = formNode;\n if (!occur || occur.initial <= 1) {\n return;\n }\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n if (!(parent[name] instanceof XFAObjectArray)) {\n return;\n }\n let currentNumber;\n if (formNode.name) {\n currentNumber = parent[name].children.filter(e => e.name === formNode.name).length;\n } else {\n currentNumber = parent[name].children.length;\n }\n const pos = parent[$indexOf](formNode) + 1;\n const ii = occur.initial - currentNumber;\n if (ii) {\n const nodeClone = formNode[$clone]();\n nodeClone[$removeChild](nodeClone.occur);\n nodeClone.occur = null;\n parent[name].push(nodeClone);\n parent[$insertAt](pos, nodeClone);\n for (let i = 1; i < ii; i++) {\n const clone = nodeClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n }\n }\n }\n _getOccurInfo(formNode) {\n const {\n name,\n occur\n } = formNode;\n if (!occur || !name) {\n return [1, 1];\n }\n const max = occur.max === -1 ? Infinity : occur.max;\n return [occur.min, max];\n }\n _setAndBind(formNode, dataNode) {\n this._setProperties(formNode, dataNode);\n this._bindItems(formNode, dataNode);\n this._bindElement(formNode, dataNode);\n }\n _bindElement(formNode, dataNode) {\n const uselessNodes = [];\n this._createOccurrences(formNode);\n for (const child of formNode[$getChildren]()) {\n if (child[$data]) {\n continue;\n }\n if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n this._mergeMode = child.mergeMode === \"consumeData\";\n const dataChildren = dataNode[$getChildren]();\n if (dataChildren.length > 0) {\n this._bindOccurrences(child, [dataChildren[0]], null);\n } else if (this.emptyMerge) {\n const nsId = dataNode[$namespaceId] === bind_NS_DATASETS ? -1 : dataNode[$namespaceId];\n const dataChild = child[$data] = new XmlObject(nsId, child.name || \"root\");\n dataNode[$appendChild](dataChild);\n this._bindElement(child, dataChild);\n }\n continue;\n }\n if (!child[$isBindable]()) {\n continue;\n }\n let global = false;\n let picture = null;\n let ref = null;\n let match = null;\n if (child.bind) {\n switch (child.bind.match) {\n case \"none\":\n this._setAndBind(child, dataNode);\n continue;\n case \"global\":\n global = true;\n break;\n case \"dataRef\":\n if (!child.bind.ref) {\n warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n this._setAndBind(child, dataNode);\n continue;\n }\n ref = child.bind.ref;\n break;\n default:\n break;\n }\n if (child.bind.picture) {\n picture = child.bind.picture[$content];\n }\n }\n const [min, max] = this._getOccurInfo(child);\n if (ref) {\n match = searchNode(this.root, dataNode, ref, true, false);\n if (match === null) {\n match = createDataNode(this.data, dataNode, ref);\n if (!match) {\n continue;\n }\n if (this._isConsumeData()) {\n match[$consumed] = true;\n }\n this._setAndBind(child, match);\n continue;\n } else {\n if (this._isConsumeData()) {\n match = match.filter(node => !node[$consumed]);\n }\n if (match.length > max) {\n match = match.slice(0, max);\n } else if (match.length === 0) {\n match = null;\n }\n if (match && this._isConsumeData()) {\n match.forEach(node => {\n node[$consumed] = true;\n });\n }\n }\n } else {\n if (!child.name) {\n this._setAndBind(child, dataNode);\n continue;\n }\n if (this._isConsumeData()) {\n const matches = [];\n while (matches.length < max) {\n const found = this._findDataByNameToConsume(child.name, child[$hasSettableValue](), dataNode, global);\n if (!found) {\n break;\n }\n found[$consumed] = true;\n matches.push(found);\n }\n match = matches.length > 0 ? matches : null;\n } else {\n match = dataNode[$getRealChildrenByNameIt](child.name, false, this.emptyMerge).next().value;\n if (!match) {\n if (min === 0) {\n uselessNodes.push(child);\n continue;\n }\n const nsId = dataNode[$namespaceId] === bind_NS_DATASETS ? -1 : dataNode[$namespaceId];\n match = child[$data] = new XmlObject(nsId, child.name);\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n dataNode[$appendChild](match);\n this._setAndBind(child, match);\n continue;\n }\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n match = [match];\n }\n }\n if (match) {\n this._bindOccurrences(child, match, picture);\n } else if (min > 0) {\n this._setAndBind(child, dataNode);\n } else {\n uselessNodes.push(child);\n }\n }\n uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n }\n}\n\n;// ./src/core/xfa/data.js\n\nclass DataHandler {\n constructor(root, data) {\n this.data = data;\n this.dataset = root.datasets || null;\n }\n serialize(storage) {\n const stack = [[-1, this.data[$getChildren]()]];\n while (stack.length > 0) {\n const last = stack.at(-1);\n const [i, children] = last;\n if (i + 1 === children.length) {\n stack.pop();\n continue;\n }\n const child = children[++last[0]];\n const storageEntry = storage.get(child[$uid]);\n if (storageEntry) {\n child[$setValue](storageEntry);\n } else {\n const attributes = child[$getAttributes]();\n for (const value of attributes.values()) {\n const entry = storage.get(value[$uid]);\n if (entry) {\n value[$setValue](entry);\n break;\n }\n }\n }\n const nodes = child[$getChildren]();\n if (nodes.length > 0) {\n stack.push([-1, nodes]);\n }\n }\n const buf = [``];\n if (this.dataset) {\n for (const child of this.dataset[$getChildren]()) {\n if (child[$nodeName] !== \"data\") {\n child[$toString](buf);\n }\n }\n }\n this.data[$toString](buf);\n buf.push(\"\");\n return buf.join(\"\");\n }\n}\n\n;// ./src/core/xfa/config.js\n\n\n\n\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\nclass Acrobat extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat\", true);\n this.acrobat7 = null;\n this.autoSave = null;\n this.common = null;\n this.validate = null;\n this.validateApprovalSignatures = null;\n this.submitUrl = new XFAObjectArray();\n }\n}\nclass Acrobat7 extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat7\", true);\n this.dynamicRender = null;\n }\n}\nclass ADBE_JSConsole extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\nclass ADBE_JSDebugger extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\nclass AddSilentPrint extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addSilentPrint\");\n }\n}\nclass AddViewerPreferences extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addViewerPreferences\");\n }\n}\nclass AdjustData extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adjustData\");\n }\n}\nclass AdobeExtensionLevel extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n }\n}\nclass Agent extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"agent\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.common = new XFAObjectArray();\n }\n}\nclass AlwaysEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"alwaysEmbed\");\n }\n}\nclass Amd extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"amd\");\n }\n}\nclass config_Area extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"area\");\n this.level = getInteger({\n data: attributes.level,\n defaultValue: 0,\n validate: n => n >= 1 && n <= 3\n });\n this.name = getStringOption(attributes.name, [\"\", \"barcode\", \"coreinit\", \"deviceDriver\", \"font\", \"general\", \"layout\", \"merge\", \"script\", \"signature\", \"sourceSet\", \"templateCache\"]);\n }\n}\nclass Attributes extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n }\n}\nclass AutoSave extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n }\n}\nclass Base extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"base\");\n }\n}\nclass BatchOutput extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"batchOutput\");\n this.format = getStringOption(attributes.format, [\"none\", \"concat\", \"zip\", \"zipCompress\"]);\n }\n}\nclass BehaviorOverride extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"behaviorOverride\");\n }\n [$finalize]() {\n this[$content] = new Map(this[$content].trim().split(/\\s+/).filter(x => x.includes(\":\")).map(x => x.split(\":\", 2)));\n }\n}\nclass Cache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"cache\", true);\n this.templateCache = null;\n }\n}\nclass Change extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"change\");\n }\n}\nclass Common extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"common\", true);\n this.data = null;\n this.locale = null;\n this.localeSet = null;\n this.messaging = null;\n this.suppressBanner = null;\n this.template = null;\n this.validationMessaging = null;\n this.versionControl = null;\n this.log = new XFAObjectArray();\n }\n}\nclass Compress extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compress\");\n this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n }\n}\nclass CompressLogicalStructure extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressLogicalStructure\");\n }\n}\nclass CompressObjectStream extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressObjectStream\");\n }\n}\nclass Compression extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compression\", true);\n this.compressLogicalStructure = null;\n this.compressObjectStream = null;\n this.level = null;\n this.type = null;\n }\n}\nclass Config extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"config\", true);\n this.acrobat = null;\n this.present = null;\n this.trace = null;\n this.agent = new XFAObjectArray();\n }\n}\nclass Conformance extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n }\n}\nclass ContentCopy extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"contentCopy\");\n }\n}\nclass Copies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n }\n}\nclass Creator extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"creator\");\n }\n}\nclass CurrentPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n }\n}\nclass Data extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"data\", true);\n this.adjustData = null;\n this.attributes = null;\n this.incrementalLoad = null;\n this.outputXSL = null;\n this.range = null;\n this.record = null;\n this.startNode = null;\n this.uri = null;\n this.window = null;\n this.xsl = null;\n this.excludeNS = new XFAObjectArray();\n this.transform = new XFAObjectArray();\n }\n}\nclass Debug extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"debug\", true);\n this.uri = null;\n }\n}\nclass DefaultTypeface extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"defaultTypeface\");\n this.writingScript = getStringOption(attributes.writingScript, [\"*\", \"Arabic\", \"Cyrillic\", \"EastEuropeanRoman\", \"Greek\", \"Hebrew\", \"Japanese\", \"Korean\", \"Roman\", \"SimplifiedChinese\", \"Thai\", \"TraditionalChinese\", \"Vietnamese\"]);\n }\n}\nclass Destination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"destination\", [\"pdf\", \"pcl\", \"ps\", \"webClient\", \"zpl\"]);\n }\n}\nclass DocumentAssembly extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"documentAssembly\");\n }\n}\nclass Driver extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"driver\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\nclass DuplexOption extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"duplexOption\", [\"simplex\", \"duplexFlipLongEdge\", \"duplexFlipShortEdge\"]);\n }\n}\nclass DynamicRender extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n }\n}\nclass Embed extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"embed\");\n }\n}\nclass config_Encrypt extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encrypt\");\n }\n}\nclass config_Encryption extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryption\", true);\n this.encrypt = null;\n this.encryptionLevel = null;\n this.permissions = null;\n }\n}\nclass EncryptionLevel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n }\n}\nclass Enforce extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"enforce\");\n }\n}\nclass Equate extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equate\");\n this.force = getInteger({\n data: attributes.force,\n defaultValue: 1,\n validate: n => n === 0\n });\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n }\n}\nclass EquateRange extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equateRange\");\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n this._unicodeRange = attributes.unicodeRange || \"\";\n }\n get unicodeRange() {\n const ranges = [];\n const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n const unicodeRange = this._unicodeRange;\n for (let range of unicodeRange.split(\",\").map(x => x.trim()).filter(Boolean)) {\n range = range.split(\"-\", 2).map(x => {\n const found = x.match(unicodeRegex);\n if (!found) {\n return 0;\n }\n return parseInt(found[1], 16);\n });\n if (range.length === 1) {\n range.push(range[0]);\n }\n ranges.push(range);\n }\n return shadow(this, \"unicodeRange\", ranges);\n }\n}\nclass Exclude extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"exclude\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/).filter(x => x && [\"calculate\", \"close\", \"enter\", \"exit\", \"initialize\", \"ready\", \"validate\"].includes(x));\n }\n}\nclass ExcludeNS extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"excludeNS\");\n }\n}\nclass FlipLabel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\nclass config_FontInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"fontInfo\", true);\n this.embed = null;\n this.map = null;\n this.subsetBelow = null;\n this.alwaysEmbed = new XFAObjectArray();\n this.defaultTypeface = new XFAObjectArray();\n this.neverEmbed = new XFAObjectArray();\n }\n}\nclass FormFieldFilling extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"formFieldFilling\");\n }\n}\nclass GroupParent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"groupParent\");\n }\n}\nclass IfEmpty extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ifEmpty\", [\"dataValue\", \"dataGroup\", \"ignore\", \"remove\"]);\n }\n}\nclass IncludeXDPContent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"includeXDPContent\");\n }\n}\nclass IncrementalLoad extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n }\n}\nclass IncrementalMerge extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalMerge\");\n }\n}\nclass Interactive extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"interactive\");\n }\n}\nclass Jog extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n }\n}\nclass LabelPrinter extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"labelPrinter\", true);\n this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\nclass Layout extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n }\n}\nclass Level extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n }\n}\nclass Linearized extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"linearized\");\n }\n}\nclass Locale extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"locale\");\n }\n}\nclass LocaleSet extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"localeSet\");\n }\n}\nclass Log extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"log\", true);\n this.mode = null;\n this.threshold = null;\n this.to = null;\n this.uri = null;\n }\n}\nclass MapElement extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"map\", true);\n this.equate = new XFAObjectArray();\n this.equateRange = new XFAObjectArray();\n }\n}\nclass MediumInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mediumInfo\", true);\n this.map = null;\n }\n}\nclass config_Message extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"message\", true);\n this.msgId = null;\n this.severity = null;\n }\n}\nclass Messaging extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"messaging\", true);\n this.message = new XFAObjectArray();\n }\n}\nclass Mode extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n }\n}\nclass ModifyAnnots extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"modifyAnnots\");\n }\n}\nclass MsgId extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n }\n}\nclass NameAttr extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"nameAttr\");\n }\n}\nclass NeverEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"neverEmbed\");\n }\n}\nclass NumberOfCopies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n }\n}\nclass OpenAction extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"openAction\", true);\n this.destination = null;\n }\n}\nclass Output extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"output\", true);\n this.to = null;\n this.type = null;\n this.uri = null;\n }\n}\nclass OutputBin extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputBin\");\n }\n}\nclass OutputXSL extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputXSL\", true);\n this.uri = null;\n }\n}\nclass Overprint extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n }\n}\nclass Packets extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"packets\");\n }\n [$finalize]() {\n if (this[$content] === \"*\") {\n return;\n }\n this[$content] = this[$content].trim().split(/\\s+/).filter(x => [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x));\n }\n}\nclass PageOffset extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageOffset\");\n this.x = getInteger({\n data: attributes.x,\n defaultValue: \"useXDCSetting\",\n validate: n => true\n });\n this.y = getInteger({\n data: attributes.y,\n defaultValue: \"useXDCSetting\",\n validate: n => true\n });\n }\n}\nclass PageRange extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageRange\");\n }\n [$finalize]() {\n const numbers = this[$content].trim().split(/\\s+/).map(x => parseInt(x, 10));\n const ranges = [];\n for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n ranges.push(numbers.slice(i, i + 2));\n }\n this[$content] = ranges;\n }\n}\nclass Pagination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pagination\", [\"simplex\", \"duplexShortEdge\", \"duplexLongEdge\"]);\n }\n}\nclass PaginationOverride extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"paginationOverride\", [\"none\", \"forceDuplex\", \"forceDuplexLongEdge\", \"forceDuplexShortEdge\", \"forceSimplex\"]);\n }\n}\nclass Part extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"part\", 1, n => false);\n }\n}\nclass Pcl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pcl\", true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.pageOffset = null;\n this.staple = null;\n this.xdc = null;\n }\n}\nclass Pdf extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdf\", true);\n this.name = attributes.name || \"\";\n this.adobeExtensionLevel = null;\n this.batchOutput = null;\n this.compression = null;\n this.creator = null;\n this.encryption = null;\n this.fontInfo = null;\n this.interactive = null;\n this.linearized = null;\n this.openAction = null;\n this.pdfa = null;\n this.producer = null;\n this.renderPolicy = null;\n this.scriptModel = null;\n this.silentPrint = null;\n this.submitFormat = null;\n this.tagged = null;\n this.version = null;\n this.viewerPreferences = null;\n this.xdc = null;\n }\n}\nclass Pdfa extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdfa\", true);\n this.amd = null;\n this.conformance = null;\n this.includeXDPContent = null;\n this.part = null;\n }\n}\nclass Permissions extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"permissions\", true);\n this.accessibleContent = null;\n this.change = null;\n this.contentCopy = null;\n this.documentAssembly = null;\n this.formFieldFilling = null;\n this.modifyAnnots = null;\n this.plaintextMetadata = null;\n this.print = null;\n this.printHighQuality = null;\n }\n}\nclass PickTrayByPDFSize extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n }\n}\nclass config_Picture extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"picture\");\n }\n}\nclass PlaintextMetadata extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"plaintextMetadata\");\n }\n}\nclass Presence extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"presence\", [\"preserve\", \"dissolve\", \"dissolveStructure\", \"ignore\", \"remove\"]);\n }\n}\nclass Present extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"present\", true);\n this.behaviorOverride = null;\n this.cache = null;\n this.common = null;\n this.copies = null;\n this.destination = null;\n this.incrementalMerge = null;\n this.layout = null;\n this.output = null;\n this.overprint = null;\n this.pagination = null;\n this.paginationOverride = null;\n this.script = null;\n this.validate = null;\n this.xdp = null;\n this.driver = new XFAObjectArray();\n this.labelPrinter = new XFAObjectArray();\n this.pcl = new XFAObjectArray();\n this.pdf = new XFAObjectArray();\n this.ps = new XFAObjectArray();\n this.submitUrl = new XFAObjectArray();\n this.webClient = new XFAObjectArray();\n this.zpl = new XFAObjectArray();\n }\n}\nclass Print extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"print\");\n }\n}\nclass PrintHighQuality extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printHighQuality\");\n }\n}\nclass PrintScaling extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n }\n}\nclass PrinterName extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printerName\");\n }\n}\nclass Producer extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"producer\");\n }\n}\nclass Ps extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ps\", true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.staple = null;\n this.xdc = null;\n }\n}\nclass Range extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"range\");\n }\n [$finalize]() {\n this[$content] = this[$content].split(\",\", 2).map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => {\n if (range.length === 1) {\n range.push(range[0]);\n }\n return range;\n });\n }\n}\nclass Record extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"record\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim();\n const n = parseInt(this[$content], 10);\n if (!isNaN(n) && n >= 0) {\n this[$content] = n;\n }\n }\n}\nclass Relevant extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"relevant\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/);\n }\n}\nclass Rename extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"rename\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim();\n if (this[$content].toLowerCase().startsWith(\"xml\") || /[\\p{L}_][\\p{L}\\d._\\p{M}-]*/u.test(this[$content])) {\n warn(\"XFA - Rename: invalid XFA name\");\n }\n }\n}\nclass RenderPolicy extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n }\n}\nclass RunScripts extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n }\n}\nclass config_Script extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"script\", true);\n this.currentPage = null;\n this.exclude = null;\n this.runScripts = null;\n }\n}\nclass ScriptModel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n }\n}\nclass Severity extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"severity\", [\"ignore\", \"error\", \"information\", \"trace\", \"warning\"]);\n }\n}\nclass SilentPrint extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"silentPrint\", true);\n this.addSilentPrint = null;\n this.printerName = null;\n }\n}\nclass Staple extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"staple\");\n this.mode = getStringOption(attributes.mode, [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\nclass StartNode extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startNode\");\n }\n}\nclass StartPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n }\n}\nclass SubmitFormat extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitFormat\", [\"html\", \"delegate\", \"fdf\", \"xml\", \"pdf\"]);\n }\n}\nclass SubmitUrl extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitUrl\");\n }\n}\nclass SubsetBelow extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n }\n}\nclass SuppressBanner extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"suppressBanner\");\n }\n}\nclass Tagged extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"tagged\");\n }\n}\nclass config_Template extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"template\", true);\n this.base = null;\n this.relevant = null;\n this.startPage = null;\n this.uri = null;\n this.xsl = null;\n }\n}\nclass Threshold extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"threshold\", [\"trace\", \"error\", \"information\", \"warning\"]);\n }\n}\nclass To extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"to\", [\"null\", \"memory\", \"stderr\", \"stdout\", \"system\", \"uri\"]);\n }\n}\nclass TemplateCache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"templateCache\");\n this.maxEntries = getInteger({\n data: attributes.maxEntries,\n defaultValue: 5,\n validate: n => n >= 0\n });\n }\n}\nclass Trace extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"trace\", true);\n this.area = new XFAObjectArray();\n }\n}\nclass Transform extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"transform\", true);\n this.groupParent = null;\n this.ifEmpty = null;\n this.nameAttr = null;\n this.picture = null;\n this.presence = null;\n this.rename = null;\n this.whitespace = null;\n }\n}\nclass Type extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"type\", [\"none\", \"ascii85\", \"asciiHex\", \"ccittfax\", \"flate\", \"lzw\", \"runLength\", \"native\", \"xdp\", \"mergedXDP\"]);\n }\n}\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"uri\");\n }\n}\nclass config_Validate extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validate\", [\"preSubmit\", \"prePrint\", \"preExecute\", \"preSave\"]);\n }\n}\nclass ValidateApprovalSignatures extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/).filter(x => [\"docReady\", \"postSign\"].includes(x));\n }\n}\nclass ValidationMessaging extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validationMessaging\", [\"allMessagesIndividually\", \"allMessagesTogether\", \"firstMessageOnly\", \"noMessages\"]);\n }\n}\nclass Version extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n }\n}\nclass VersionControl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"VersionControl\");\n this.outputBelow = getStringOption(attributes.outputBelow, [\"warn\", \"error\", \"update\"]);\n this.sourceAbove = getStringOption(attributes.sourceAbove, [\"warn\", \"error\"]);\n this.sourceBelow = getStringOption(attributes.sourceBelow, [\"update\", \"maintain\"]);\n }\n}\nclass ViewerPreferences extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"viewerPreferences\", true);\n this.ADBE_JSConsole = null;\n this.ADBE_JSDebugger = null;\n this.addViewerPreferences = null;\n this.duplexOption = null;\n this.enforce = null;\n this.numberOfCopies = null;\n this.pageRange = null;\n this.pickTrayByPDFSize = null;\n this.printScaling = null;\n }\n}\nclass WebClient extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"webClient\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\nclass Whitespace extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"whitespace\", [\"preserve\", \"ltrim\", \"normalize\", \"rtrim\", \"trim\"]);\n }\n}\nclass Window extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"window\");\n }\n [$finalize]() {\n const pair = this[$content].split(\",\", 2).map(x => parseInt(x.trim(), 10));\n if (pair.some(x => isNaN(x))) {\n this[$content] = [0, 0];\n return;\n }\n if (pair.length === 1) {\n pair.push(pair[0]);\n }\n this[$content] = pair;\n }\n}\nclass Xdc extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdc\", true);\n this.uri = new XFAObjectArray();\n this.xsl = new XFAObjectArray();\n }\n}\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdp\", true);\n this.packets = null;\n }\n}\nclass Xsl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xsl\", true);\n this.debug = null;\n this.uri = null;\n }\n}\nclass Zpl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"zpl\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\nclass ConfigNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(ConfigNamespace, name)) {\n return ConfigNamespace[name](attributes);\n }\n return undefined;\n }\n static acrobat(attrs) {\n return new Acrobat(attrs);\n }\n static acrobat7(attrs) {\n return new Acrobat7(attrs);\n }\n static ADBE_JSConsole(attrs) {\n return new ADBE_JSConsole(attrs);\n }\n static ADBE_JSDebugger(attrs) {\n return new ADBE_JSDebugger(attrs);\n }\n static addSilentPrint(attrs) {\n return new AddSilentPrint(attrs);\n }\n static addViewerPreferences(attrs) {\n return new AddViewerPreferences(attrs);\n }\n static adjustData(attrs) {\n return new AdjustData(attrs);\n }\n static adobeExtensionLevel(attrs) {\n return new AdobeExtensionLevel(attrs);\n }\n static agent(attrs) {\n return new Agent(attrs);\n }\n static alwaysEmbed(attrs) {\n return new AlwaysEmbed(attrs);\n }\n static amd(attrs) {\n return new Amd(attrs);\n }\n static area(attrs) {\n return new config_Area(attrs);\n }\n static attributes(attrs) {\n return new Attributes(attrs);\n }\n static autoSave(attrs) {\n return new AutoSave(attrs);\n }\n static base(attrs) {\n return new Base(attrs);\n }\n static batchOutput(attrs) {\n return new BatchOutput(attrs);\n }\n static behaviorOverride(attrs) {\n return new BehaviorOverride(attrs);\n }\n static cache(attrs) {\n return new Cache(attrs);\n }\n static change(attrs) {\n return new Change(attrs);\n }\n static common(attrs) {\n return new Common(attrs);\n }\n static compress(attrs) {\n return new Compress(attrs);\n }\n static compressLogicalStructure(attrs) {\n return new CompressLogicalStructure(attrs);\n }\n static compressObjectStream(attrs) {\n return new CompressObjectStream(attrs);\n }\n static compression(attrs) {\n return new Compression(attrs);\n }\n static config(attrs) {\n return new Config(attrs);\n }\n static conformance(attrs) {\n return new Conformance(attrs);\n }\n static contentCopy(attrs) {\n return new ContentCopy(attrs);\n }\n static copies(attrs) {\n return new Copies(attrs);\n }\n static creator(attrs) {\n return new Creator(attrs);\n }\n static currentPage(attrs) {\n return new CurrentPage(attrs);\n }\n static data(attrs) {\n return new Data(attrs);\n }\n static debug(attrs) {\n return new Debug(attrs);\n }\n static defaultTypeface(attrs) {\n return new DefaultTypeface(attrs);\n }\n static destination(attrs) {\n return new Destination(attrs);\n }\n static documentAssembly(attrs) {\n return new DocumentAssembly(attrs);\n }\n static driver(attrs) {\n return new Driver(attrs);\n }\n static duplexOption(attrs) {\n return new DuplexOption(attrs);\n }\n static dynamicRender(attrs) {\n return new DynamicRender(attrs);\n }\n static embed(attrs) {\n return new Embed(attrs);\n }\n static encrypt(attrs) {\n return new config_Encrypt(attrs);\n }\n static encryption(attrs) {\n return new config_Encryption(attrs);\n }\n static encryptionLevel(attrs) {\n return new EncryptionLevel(attrs);\n }\n static enforce(attrs) {\n return new Enforce(attrs);\n }\n static equate(attrs) {\n return new Equate(attrs);\n }\n static equateRange(attrs) {\n return new EquateRange(attrs);\n }\n static exclude(attrs) {\n return new Exclude(attrs);\n }\n static excludeNS(attrs) {\n return new ExcludeNS(attrs);\n }\n static flipLabel(attrs) {\n return new FlipLabel(attrs);\n }\n static fontInfo(attrs) {\n return new config_FontInfo(attrs);\n }\n static formFieldFilling(attrs) {\n return new FormFieldFilling(attrs);\n }\n static groupParent(attrs) {\n return new GroupParent(attrs);\n }\n static ifEmpty(attrs) {\n return new IfEmpty(attrs);\n }\n static includeXDPContent(attrs) {\n return new IncludeXDPContent(attrs);\n }\n static incrementalLoad(attrs) {\n return new IncrementalLoad(attrs);\n }\n static incrementalMerge(attrs) {\n return new IncrementalMerge(attrs);\n }\n static interactive(attrs) {\n return new Interactive(attrs);\n }\n static jog(attrs) {\n return new Jog(attrs);\n }\n static labelPrinter(attrs) {\n return new LabelPrinter(attrs);\n }\n static layout(attrs) {\n return new Layout(attrs);\n }\n static level(attrs) {\n return new Level(attrs);\n }\n static linearized(attrs) {\n return new Linearized(attrs);\n }\n static locale(attrs) {\n return new Locale(attrs);\n }\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n static log(attrs) {\n return new Log(attrs);\n }\n static map(attrs) {\n return new MapElement(attrs);\n }\n static mediumInfo(attrs) {\n return new MediumInfo(attrs);\n }\n static message(attrs) {\n return new config_Message(attrs);\n }\n static messaging(attrs) {\n return new Messaging(attrs);\n }\n static mode(attrs) {\n return new Mode(attrs);\n }\n static modifyAnnots(attrs) {\n return new ModifyAnnots(attrs);\n }\n static msgId(attrs) {\n return new MsgId(attrs);\n }\n static nameAttr(attrs) {\n return new NameAttr(attrs);\n }\n static neverEmbed(attrs) {\n return new NeverEmbed(attrs);\n }\n static numberOfCopies(attrs) {\n return new NumberOfCopies(attrs);\n }\n static openAction(attrs) {\n return new OpenAction(attrs);\n }\n static output(attrs) {\n return new Output(attrs);\n }\n static outputBin(attrs) {\n return new OutputBin(attrs);\n }\n static outputXSL(attrs) {\n return new OutputXSL(attrs);\n }\n static overprint(attrs) {\n return new Overprint(attrs);\n }\n static packets(attrs) {\n return new Packets(attrs);\n }\n static pageOffset(attrs) {\n return new PageOffset(attrs);\n }\n static pageRange(attrs) {\n return new PageRange(attrs);\n }\n static pagination(attrs) {\n return new Pagination(attrs);\n }\n static paginationOverride(attrs) {\n return new PaginationOverride(attrs);\n }\n static part(attrs) {\n return new Part(attrs);\n }\n static pcl(attrs) {\n return new Pcl(attrs);\n }\n static pdf(attrs) {\n return new Pdf(attrs);\n }\n static pdfa(attrs) {\n return new Pdfa(attrs);\n }\n static permissions(attrs) {\n return new Permissions(attrs);\n }\n static pickTrayByPDFSize(attrs) {\n return new PickTrayByPDFSize(attrs);\n }\n static picture(attrs) {\n return new config_Picture(attrs);\n }\n static plaintextMetadata(attrs) {\n return new PlaintextMetadata(attrs);\n }\n static presence(attrs) {\n return new Presence(attrs);\n }\n static present(attrs) {\n return new Present(attrs);\n }\n static print(attrs) {\n return new Print(attrs);\n }\n static printHighQuality(attrs) {\n return new PrintHighQuality(attrs);\n }\n static printScaling(attrs) {\n return new PrintScaling(attrs);\n }\n static printerName(attrs) {\n return new PrinterName(attrs);\n }\n static producer(attrs) {\n return new Producer(attrs);\n }\n static ps(attrs) {\n return new Ps(attrs);\n }\n static range(attrs) {\n return new Range(attrs);\n }\n static record(attrs) {\n return new Record(attrs);\n }\n static relevant(attrs) {\n return new Relevant(attrs);\n }\n static rename(attrs) {\n return new Rename(attrs);\n }\n static renderPolicy(attrs) {\n return new RenderPolicy(attrs);\n }\n static runScripts(attrs) {\n return new RunScripts(attrs);\n }\n static script(attrs) {\n return new config_Script(attrs);\n }\n static scriptModel(attrs) {\n return new ScriptModel(attrs);\n }\n static severity(attrs) {\n return new Severity(attrs);\n }\n static silentPrint(attrs) {\n return new SilentPrint(attrs);\n }\n static staple(attrs) {\n return new Staple(attrs);\n }\n static startNode(attrs) {\n return new StartNode(attrs);\n }\n static startPage(attrs) {\n return new StartPage(attrs);\n }\n static submitFormat(attrs) {\n return new SubmitFormat(attrs);\n }\n static submitUrl(attrs) {\n return new SubmitUrl(attrs);\n }\n static subsetBelow(attrs) {\n return new SubsetBelow(attrs);\n }\n static suppressBanner(attrs) {\n return new SuppressBanner(attrs);\n }\n static tagged(attrs) {\n return new Tagged(attrs);\n }\n static template(attrs) {\n return new config_Template(attrs);\n }\n static templateCache(attrs) {\n return new TemplateCache(attrs);\n }\n static threshold(attrs) {\n return new Threshold(attrs);\n }\n static to(attrs) {\n return new To(attrs);\n }\n static trace(attrs) {\n return new Trace(attrs);\n }\n static transform(attrs) {\n return new Transform(attrs);\n }\n static type(attrs) {\n return new Type(attrs);\n }\n static uri(attrs) {\n return new Uri(attrs);\n }\n static validate(attrs) {\n return new config_Validate(attrs);\n }\n static validateApprovalSignatures(attrs) {\n return new ValidateApprovalSignatures(attrs);\n }\n static validationMessaging(attrs) {\n return new ValidationMessaging(attrs);\n }\n static version(attrs) {\n return new Version(attrs);\n }\n static versionControl(attrs) {\n return new VersionControl(attrs);\n }\n static viewerPreferences(attrs) {\n return new ViewerPreferences(attrs);\n }\n static webClient(attrs) {\n return new WebClient(attrs);\n }\n static whitespace(attrs) {\n return new Whitespace(attrs);\n }\n static window(attrs) {\n return new Window(attrs);\n }\n static xdc(attrs) {\n return new Xdc(attrs);\n }\n static xdp(attrs) {\n return new Xdp(attrs);\n }\n static xsl(attrs) {\n return new Xsl(attrs);\n }\n static zpl(attrs) {\n return new Zpl(attrs);\n }\n}\n\n;// ./src/core/xfa/connection_set.js\n\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\nclass ConnectionSet extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"connectionSet\", true);\n this.wsdlConnection = new XFAObjectArray();\n this.xmlConnection = new XFAObjectArray();\n this.xsdConnection = new XFAObjectArray();\n }\n}\nclass EffectiveInputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass EffectiveOutputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Operation extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"operation\");\n this.id = attributes.id || \"\";\n this.input = attributes.input || \"\";\n this.name = attributes.name || \"\";\n this.output = attributes.output || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass RootElement extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"rootElement\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass SoapAction extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAction\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass SoapAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass connection_set_Uri extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"uri\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass WsdlAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass WsdlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlConnection\", true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.effectiveInputPolicy = null;\n this.effectiveOutputPolicy = null;\n this.operation = null;\n this.soapAction = null;\n this.soapAddress = null;\n this.wsdlAddress = null;\n }\n}\nclass XmlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xmlConnection\", true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.uri = null;\n }\n}\nclass XsdConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xsdConnection\", true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.rootElement = null;\n this.uri = null;\n }\n}\nclass ConnectionSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(ConnectionSetNamespace, name)) {\n return ConnectionSetNamespace[name](attributes);\n }\n return undefined;\n }\n static connectionSet(attrs) {\n return new ConnectionSet(attrs);\n }\n static effectiveInputPolicy(attrs) {\n return new EffectiveInputPolicy(attrs);\n }\n static effectiveOutputPolicy(attrs) {\n return new EffectiveOutputPolicy(attrs);\n }\n static operation(attrs) {\n return new Operation(attrs);\n }\n static rootElement(attrs) {\n return new RootElement(attrs);\n }\n static soapAction(attrs) {\n return new SoapAction(attrs);\n }\n static soapAddress(attrs) {\n return new SoapAddress(attrs);\n }\n static uri(attrs) {\n return new connection_set_Uri(attrs);\n }\n static wsdlAddress(attrs) {\n return new WsdlAddress(attrs);\n }\n static wsdlConnection(attrs) {\n return new WsdlConnection(attrs);\n }\n static xmlConnection(attrs) {\n return new XmlConnection(attrs);\n }\n static xsdConnection(attrs) {\n return new XsdConnection(attrs);\n }\n}\n\n;// ./src/core/xfa/datasets.js\n\n\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\nclass datasets_Data extends XmlObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"data\", attributes);\n }\n [$isNsAgnostic]() {\n return true;\n }\n}\nclass Datasets extends XFAObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"datasets\", true);\n this.data = null;\n this.Signature = null;\n }\n [$onChild](child) {\n const name = child[$nodeName];\n if (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID || name === \"Signature\" && child[$namespaceId] === NamespaceIds.signature.id) {\n this[name] = child;\n }\n this[$appendChild](child);\n }\n}\nclass DatasetsNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(DatasetsNamespace, name)) {\n return DatasetsNamespace[name](attributes);\n }\n return undefined;\n }\n static datasets(attributes) {\n return new Datasets(attributes);\n }\n static data(attributes) {\n return new datasets_Data(attributes);\n }\n}\n\n;// ./src/core/xfa/locale_set.js\n\n\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\nclass CalendarSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"calendarSymbols\", true);\n this.name = \"gregorian\";\n this.dayNames = new XFAObjectArray(2);\n this.eraNames = null;\n this.meridiemNames = null;\n this.monthNames = new XFAObjectArray(2);\n }\n}\nclass CurrencySymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbol\");\n this.name = getStringOption(attributes.name, [\"symbol\", \"isoname\", \"decimal\"]);\n }\n}\nclass CurrencySymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbols\", true);\n this.currencySymbol = new XFAObjectArray(3);\n }\n}\nclass DatePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePattern\");\n this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n }\n}\nclass DatePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePatterns\", true);\n this.datePattern = new XFAObjectArray(4);\n }\n}\nclass DateTimeSymbols extends ContentObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n }\n}\nclass Day extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"day\");\n }\n}\nclass DayNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dayNames\", true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.day = new XFAObjectArray(7);\n }\n}\nclass Era extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"era\");\n }\n}\nclass EraNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"eraNames\", true);\n this.era = new XFAObjectArray(2);\n }\n}\nclass locale_set_Locale extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"locale\", true);\n this.desc = attributes.desc || \"\";\n this.name = \"isoname\";\n this.calendarSymbols = null;\n this.currencySymbols = null;\n this.datePatterns = null;\n this.dateTimeSymbols = null;\n this.numberPatterns = null;\n this.numberSymbols = null;\n this.timePatterns = null;\n this.typeFaces = null;\n }\n}\nclass locale_set_LocaleSet extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"localeSet\", true);\n this.locale = new XFAObjectArray();\n }\n}\nclass Meridiem extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiem\");\n }\n}\nclass MeridiemNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiemNames\", true);\n this.meridiem = new XFAObjectArray(2);\n }\n}\nclass Month extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"month\");\n }\n}\nclass MonthNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"monthNames\", true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.month = new XFAObjectArray(12);\n }\n}\nclass NumberPattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPattern\");\n this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n }\n}\nclass NumberPatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPatterns\", true);\n this.numberPattern = new XFAObjectArray(4);\n }\n}\nclass NumberSymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbol\");\n this.name = getStringOption(attributes.name, [\"decimal\", \"grouping\", \"percent\", \"minus\", \"zero\"]);\n }\n}\nclass NumberSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbols\", true);\n this.numberSymbol = new XFAObjectArray(5);\n }\n}\nclass TimePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePattern\");\n this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n }\n}\nclass TimePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePatterns\", true);\n this.timePattern = new XFAObjectArray(4);\n }\n}\nclass TypeFace extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFace\", true);\n this.name = attributes.name | \"\";\n }\n}\nclass TypeFaces extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFaces\", true);\n this.typeFace = new XFAObjectArray();\n }\n}\nclass LocaleSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(LocaleSetNamespace, name)) {\n return LocaleSetNamespace[name](attributes);\n }\n return undefined;\n }\n static calendarSymbols(attrs) {\n return new CalendarSymbols(attrs);\n }\n static currencySymbol(attrs) {\n return new CurrencySymbol(attrs);\n }\n static currencySymbols(attrs) {\n return new CurrencySymbols(attrs);\n }\n static datePattern(attrs) {\n return new DatePattern(attrs);\n }\n static datePatterns(attrs) {\n return new DatePatterns(attrs);\n }\n static dateTimeSymbols(attrs) {\n return new DateTimeSymbols(attrs);\n }\n static day(attrs) {\n return new Day(attrs);\n }\n static dayNames(attrs) {\n return new DayNames(attrs);\n }\n static era(attrs) {\n return new Era(attrs);\n }\n static eraNames(attrs) {\n return new EraNames(attrs);\n }\n static locale(attrs) {\n return new locale_set_Locale(attrs);\n }\n static localeSet(attrs) {\n return new locale_set_LocaleSet(attrs);\n }\n static meridiem(attrs) {\n return new Meridiem(attrs);\n }\n static meridiemNames(attrs) {\n return new MeridiemNames(attrs);\n }\n static month(attrs) {\n return new Month(attrs);\n }\n static monthNames(attrs) {\n return new MonthNames(attrs);\n }\n static numberPattern(attrs) {\n return new NumberPattern(attrs);\n }\n static numberPatterns(attrs) {\n return new NumberPatterns(attrs);\n }\n static numberSymbol(attrs) {\n return new NumberSymbol(attrs);\n }\n static numberSymbols(attrs) {\n return new NumberSymbols(attrs);\n }\n static timePattern(attrs) {\n return new TimePattern(attrs);\n }\n static timePatterns(attrs) {\n return new TimePatterns(attrs);\n }\n static typeFace(attrs) {\n return new TypeFace(attrs);\n }\n static typeFaces(attrs) {\n return new TypeFaces(attrs);\n }\n}\n\n;// ./src/core/xfa/signature.js\n\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\nclass signature_Signature extends XFAObject {\n constructor(attributes) {\n super(SIGNATURE_NS_ID, \"signature\", true);\n }\n}\nclass SignatureNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(SignatureNamespace, name)) {\n return SignatureNamespace[name](attributes);\n }\n return undefined;\n }\n static signature(attributes) {\n return new signature_Signature(attributes);\n }\n}\n\n;// ./src/core/xfa/stylesheet.js\n\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\nclass Stylesheet extends XFAObject {\n constructor(attributes) {\n super(STYLESHEET_NS_ID, \"stylesheet\", true);\n }\n}\nclass StylesheetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(StylesheetNamespace, name)) {\n return StylesheetNamespace[name](attributes);\n }\n return undefined;\n }\n static stylesheet(attributes) {\n return new Stylesheet(attributes);\n }\n}\n\n;// ./src/core/xfa/xdp.js\n\n\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\nclass xdp_Xdp extends XFAObject {\n constructor(attributes) {\n super(XDP_NS_ID, \"xdp\", true);\n this.uuid = attributes.uuid || \"\";\n this.timeStamp = attributes.timeStamp || \"\";\n this.config = null;\n this.connectionSet = null;\n this.datasets = null;\n this.localeSet = null;\n this.stylesheet = new XFAObjectArray();\n this.template = null;\n }\n [$onChildCheck](child) {\n const ns = NamespaceIds[child[$nodeName]];\n return ns && child[$namespaceId] === ns.id;\n }\n}\nclass XdpNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(XdpNamespace, name)) {\n return XdpNamespace[name](attributes);\n }\n return undefined;\n }\n static xdp(attributes) {\n return new xdp_Xdp(attributes);\n }\n}\n\n;// ./src/core/xfa/xhtml.js\n\n\n\n\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\nconst VALID_STYLES = 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\"]);\nconst StyleMapping = new Map([[\"page-break-after\", \"breakAfter\"], [\"page-break-before\", \"breakBefore\"], [\"page-break-inside\", \"breakInside\"], [\"kerning-mode\", value => value === \"none\" ? \"none\" : \"normal\"], [\"xfa-font-horizontal-scale\", value => `scaleX(${Math.max(0, parseInt(value, 10) / 100).toFixed(2)})`], [\"xfa-font-vertical-scale\", value => `scaleY(${Math.max(0, parseInt(value, 10) / 100).toFixed(2)})`], [\"xfa-spacerun\", \"\"], [\"xfa-tab-stops\", \"\"], [\"font-size\", (value, original) => {\n value = original.fontSize = Math.abs(getMeasurement(value));\n return measureToString(0.99 * value);\n}], [\"letter-spacing\", value => measureToString(getMeasurement(value))], [\"line-height\", value => measureToString(getMeasurement(value))], [\"margin\", value => measureToString(getMeasurement(value))], [\"margin-bottom\", value => measureToString(getMeasurement(value))], [\"margin-left\", value => measureToString(getMeasurement(value))], [\"margin-right\", value => measureToString(getMeasurement(value))], [\"margin-top\", value => measureToString(getMeasurement(value))], [\"text-indent\", value => measureToString(getMeasurement(value))], [\"font-family\", value => value], [\"vertical-align\", value => measureToString(getMeasurement(value))]]);\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\nfunction mapStyle(styleStr, node, richText) {\n const style = Object.create(null);\n if (!styleStr) {\n return style;\n }\n const original = Object.create(null);\n for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n const mapping = StyleMapping.get(key);\n if (mapping === \"\") {\n continue;\n }\n let newValue = value;\n if (mapping) {\n newValue = typeof mapping === \"string\" ? mapping : mapping(value, original);\n }\n if (key.endsWith(\"scale\")) {\n style.transform = style.transform ? `${style[key]} ${newValue}` : newValue;\n } else {\n style[key.replaceAll(/-([a-z])/gi, (_, x) => x.toUpperCase())] = newValue;\n }\n }\n if (style.fontFamily) {\n setFontFamily({\n typeface: style.fontFamily,\n weight: style.fontWeight || \"normal\",\n posture: style.fontStyle || \"normal\",\n size: original.fontSize || 0\n }, node, node[$globalData].fontFinder, style);\n }\n if (richText && style.verticalAlign && style.verticalAlign !== \"0px\" && style.fontSize) {\n const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n const VERTICAL_FACTOR = 0.333;\n const fontSize = getMeasurement(style.fontSize);\n style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n style.verticalAlign = measureToString(Math.sign(getMeasurement(style.verticalAlign)) * fontSize * VERTICAL_FACTOR);\n }\n if (richText && style.fontSize) {\n style.fontSize = `calc(${style.fontSize} * var(--total-scale-factor))`;\n }\n fixTextIndent(style);\n return style;\n}\nfunction checkStyle(node) {\n if (!node.style) {\n return \"\";\n }\n return node.style.split(\";\").filter(s => !!s.trim()).map(s => s.split(\":\", 2).map(t => t.trim())).filter(([key, value]) => {\n if (key === \"font-family\") {\n node[$globalData].usedTypefaces.add(value);\n }\n return VALID_STYLES.has(key);\n }).map(kv => kv.join(\":\")).join(\";\");\n}\nconst NoWhites = new Set([\"body\", \"html\"]);\nclass XhtmlObject extends XmlObject {\n constructor(attributes, name) {\n super(XHTML_NS_ID, name);\n this[$richText] = false;\n this.style = attributes.style || \"\";\n }\n [$clean](builder) {\n super[$clean](builder);\n this.style = checkStyle(this);\n }\n [$acceptWhitespace]() {\n return !NoWhites.has(this[$nodeName]);\n }\n [$onText](str, richText = false) {\n if (!richText) {\n str = str.replaceAll(crlfRegExp, \"\");\n if (!this.style.includes(\"xfa-spacerun:yes\")) {\n str = str.replaceAll(spacesRegExp, \" \");\n }\n } else {\n this[$richText] = true;\n }\n if (str) {\n this[$content] += str;\n }\n }\n [$pushGlyphs](measure, mustPop = true) {\n const xfaFont = Object.create(null);\n const margin = {\n top: NaN,\n bottom: NaN,\n left: NaN,\n right: NaN\n };\n let lineHeight = null;\n for (const [key, value] of this.style.split(\";\").map(s => s.split(\":\", 2))) {\n switch (key) {\n case \"font-family\":\n xfaFont.typeface = stripQuotes(value);\n break;\n case \"font-size\":\n xfaFont.size = getMeasurement(value);\n break;\n case \"font-weight\":\n xfaFont.weight = value;\n break;\n case \"font-style\":\n xfaFont.posture = value;\n break;\n case \"letter-spacing\":\n xfaFont.letterSpacing = getMeasurement(value);\n break;\n case \"margin\":\n const values = value.split(/ \\t/).map(getMeasurement);\n switch (values.length) {\n case 1:\n margin.top = margin.bottom = margin.left = margin.right = values[0];\n break;\n case 2:\n margin.top = margin.bottom = values[0];\n margin.left = margin.right = values[1];\n break;\n case 3:\n margin.top = values[0];\n margin.bottom = values[2];\n margin.left = margin.right = values[1];\n break;\n case 4:\n margin.top = values[0];\n margin.left = values[1];\n margin.bottom = values[2];\n margin.right = values[3];\n break;\n }\n break;\n case \"margin-top\":\n margin.top = getMeasurement(value);\n break;\n case \"margin-bottom\":\n margin.bottom = getMeasurement(value);\n break;\n case \"margin-left\":\n margin.left = getMeasurement(value);\n break;\n case \"margin-right\":\n margin.right = getMeasurement(value);\n break;\n case \"line-height\":\n lineHeight = getMeasurement(value);\n break;\n }\n }\n measure.pushData(xfaFont, margin, lineHeight);\n if (this[$content]) {\n measure.addString(this[$content]);\n } else {\n for (const child of this[$getChildren]()) {\n if (child[$nodeName] === \"#text\") {\n measure.addString(child[$content]);\n continue;\n }\n child[$pushGlyphs](measure);\n }\n }\n if (mustPop) {\n measure.popFont();\n }\n }\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children\n };\n this[$childrenToHTML]({});\n if (children.length === 0 && !this[$content]) {\n return HTMLResult.EMPTY;\n }\n let value;\n if (this[$richText]) {\n value = this[$content] ? this[$content].replaceAll(crlfForRichTextRegExp, \"\\n\") : undefined;\n } else {\n value = this[$content] || undefined;\n }\n return HTMLResult.success({\n name: this[$nodeName],\n attributes: {\n href: this.href,\n style: mapStyle(this.style, this, this[$richText])\n },\n children,\n value\n });\n }\n}\nclass A extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"a\");\n this.href = fixURL(attributes.href) || \"\";\n }\n}\nclass B extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"b\");\n }\n [$pushGlyphs](measure) {\n measure.pushFont({\n weight: \"bold\"\n });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\nclass Body extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"body\");\n }\n [$toHTML](availableSpace) {\n const res = super[$toHTML](availableSpace);\n const {\n html\n } = res;\n if (!html) {\n return HTMLResult.EMPTY;\n }\n html.name = \"div\";\n html.attributes.class = [\"xfaRich\"];\n return res;\n }\n}\nclass Br extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"br\");\n }\n [$text]() {\n return \"\\n\";\n }\n [$pushGlyphs](measure) {\n measure.addString(\"\\n\");\n }\n [$toHTML](availableSpace) {\n return HTMLResult.success({\n name: \"br\"\n });\n }\n}\nclass Html extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"html\");\n }\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children\n };\n this[$childrenToHTML]({});\n if (children.length === 0) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {}\n },\n value: this[$content] || \"\"\n });\n }\n if (children.length === 1) {\n const child = children[0];\n if (child.attributes?.class.includes(\"xfaRich\")) {\n return HTMLResult.success(child);\n }\n }\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {}\n },\n children\n });\n }\n}\nclass I extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"i\");\n }\n [$pushGlyphs](measure) {\n measure.pushFont({\n posture: \"italic\"\n });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\nclass Li extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"li\");\n }\n}\nclass Ol extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ol\");\n }\n}\nclass P extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"p\");\n }\n [$pushGlyphs](measure) {\n super[$pushGlyphs](measure, false);\n measure.addString(\"\\n\");\n measure.addPara();\n measure.popFont();\n }\n [$text]() {\n const siblings = this[$getParent]()[$getChildren]();\n if (siblings.at(-1) === this) {\n return super[$text]();\n }\n return super[$text]() + \"\\n\";\n }\n}\nclass Span extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"span\");\n }\n}\nclass Sub extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sub\");\n }\n}\nclass Sup extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sup\");\n }\n}\nclass Ul extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ul\");\n }\n}\nclass XhtmlNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(XhtmlNamespace, name)) {\n return XhtmlNamespace[name](attributes);\n }\n return undefined;\n }\n static a(attributes) {\n return new A(attributes);\n }\n static b(attributes) {\n return new B(attributes);\n }\n static body(attributes) {\n return new Body(attributes);\n }\n static br(attributes) {\n return new Br(attributes);\n }\n static html(attributes) {\n return new Html(attributes);\n }\n static i(attributes) {\n return new I(attributes);\n }\n static li(attributes) {\n return new Li(attributes);\n }\n static ol(attributes) {\n return new Ol(attributes);\n }\n static p(attributes) {\n return new P(attributes);\n }\n static span(attributes) {\n return new Span(attributes);\n }\n static sub(attributes) {\n return new Sub(attributes);\n }\n static sup(attributes) {\n return new Sup(attributes);\n }\n static ul(attributes) {\n return new Ul(attributes);\n }\n}\n\n;// ./src/core/xfa/setup.js\n\n\n\n\n\n\n\n\n\nconst NamespaceSetUp = {\n config: ConfigNamespace,\n connection: ConnectionSetNamespace,\n datasets: DatasetsNamespace,\n localeSet: LocaleSetNamespace,\n signature: SignatureNamespace,\n stylesheet: StylesheetNamespace,\n template: TemplateNamespace,\n xdp: XdpNamespace,\n xhtml: XhtmlNamespace\n};\n\n;// ./src/core/xfa/unknown.js\n\n\nclass UnknownNamespace {\n constructor(nsId) {\n this.namespaceId = nsId;\n }\n [$buildXFAObject](name, attributes) {\n return new XmlObject(this.namespaceId, name, attributes);\n }\n}\n\n;// ./src/core/xfa/builder.js\n\n\n\n\n\n\n\nclass Root extends XFAObject {\n constructor(ids) {\n super(-1, \"root\", Object.create(null));\n this.element = null;\n this[$ids] = ids;\n }\n [$onChild](child) {\n this.element = child;\n return true;\n }\n [$finalize]() {\n super[$finalize]();\n if (this.element.template instanceof Template) {\n this[$ids].set($root, this.element);\n this.element.template[$resolvePrototypes](this[$ids]);\n this.element.template[$ids] = this[$ids];\n }\n }\n}\nclass Empty extends XFAObject {\n constructor() {\n super(-1, \"\", Object.create(null));\n }\n [$onChild](_) {\n return false;\n }\n}\nclass Builder {\n constructor(rootNameSpace = null) {\n this._namespaceStack = [];\n this._nsAgnosticLevel = 0;\n this._namespacePrefixes = new Map();\n this._namespaces = new Map();\n this._nextNsId = Math.max(...Object.values(NamespaceIds).map(({\n id\n }) => id));\n this._currentNamespace = rootNameSpace || new UnknownNamespace(++this._nextNsId);\n }\n buildRoot(ids) {\n return new Root(ids);\n }\n build({\n nsPrefix,\n name,\n attributes,\n namespace,\n prefixes\n }) {\n const hasNamespaceDef = namespace !== null;\n if (hasNamespaceDef) {\n this._namespaceStack.push(this._currentNamespace);\n this._currentNamespace = this._searchNamespace(namespace);\n }\n if (prefixes) {\n this._addNamespacePrefix(prefixes);\n }\n if (Object.hasOwn(attributes, $nsAttributes)) {\n const dataTemplate = NamespaceSetUp.datasets;\n const nsAttrs = attributes[$nsAttributes];\n let xfaAttrs = null;\n for (const [ns, attrs] of Object.entries(nsAttrs)) {\n const nsToUse = this._getNamespaceToUse(ns);\n if (nsToUse === dataTemplate) {\n xfaAttrs = {\n xfa: attrs\n };\n break;\n }\n }\n if (xfaAttrs) {\n attributes[$nsAttributes] = xfaAttrs;\n } else {\n delete attributes[$nsAttributes];\n }\n }\n const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n const node = namespaceToUse?.[$buildXFAObject](name, attributes) || new Empty();\n if (node[$isNsAgnostic]()) {\n this._nsAgnosticLevel++;\n }\n if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n node[$cleanup] = {\n hasNamespace: hasNamespaceDef,\n prefixes,\n nsAgnostic: node[$isNsAgnostic]()\n };\n }\n return node;\n }\n isNsAgnostic() {\n return this._nsAgnosticLevel > 0;\n }\n _searchNamespace(nsName) {\n let ns = this._namespaces.get(nsName);\n if (ns) {\n return ns;\n }\n for (const [name, {\n check\n }] of Object.entries(NamespaceIds)) {\n if (check(nsName)) {\n ns = NamespaceSetUp[name];\n if (ns) {\n this._namespaces.set(nsName, ns);\n return ns;\n }\n break;\n }\n }\n ns = new UnknownNamespace(++this._nextNsId);\n this._namespaces.set(nsName, ns);\n return ns;\n }\n _addNamespacePrefix(prefixes) {\n for (const {\n prefix,\n value\n } of prefixes) {\n const namespace = this._searchNamespace(value);\n this._namespacePrefixes.getOrInsertComputed(prefix, makeArr).push(namespace);\n }\n }\n _getNamespaceToUse(prefix) {\n if (!prefix) {\n return this._currentNamespace;\n }\n const prefixStack = this._namespacePrefixes.get(prefix);\n if (prefixStack?.length > 0) {\n return prefixStack.at(-1);\n }\n warn(`Unknown namespace prefix: ${prefix}.`);\n return null;\n }\n clean(data) {\n const {\n hasNamespace,\n prefixes,\n nsAgnostic\n } = data;\n if (hasNamespace) {\n this._currentNamespace = this._namespaceStack.pop();\n }\n prefixes?.forEach(({\n prefix\n }) => {\n this._namespacePrefixes.get(prefix).pop();\n });\n if (nsAgnostic) {\n this._nsAgnosticLevel--;\n }\n }\n}\n\n;// ./src/core/xfa/parser.js\n\n\n\n\nclass XFAParser extends XMLParserBase {\n constructor(rootNameSpace = null, richText = false) {\n super();\n this._builder = new Builder(rootNameSpace);\n this._stack = [];\n this._globalData = {\n usedTypefaces: new Set()\n };\n this._ids = new Map();\n this._current = this._builder.buildRoot(this._ids);\n this._errorCode = XMLParserErrorCode.NoError;\n this._whiteRegex = /^\\s+$/;\n this._nbsps = /\\xa0+/g;\n this._richText = richText;\n }\n parse(data) {\n this.parseXml(data);\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n this._current[$finalize]();\n return this._current.element;\n }\n onText(text) {\n text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n if (this._richText || this._current[$acceptWhitespace]()) {\n this._current[$onText](text, this._richText);\n return;\n }\n if (this._whiteRegex.test(text)) {\n return;\n }\n this._current[$onText](text.trim());\n }\n onCdata(text) {\n this._current[$onText](text);\n }\n _mkAttributes(attributes, tagName) {\n let namespace = null;\n let prefixes = null;\n const attributeObj = Object.create({});\n for (const {\n name,\n value\n } of attributes) {\n if (name === \"xmlns\") {\n if (!namespace) {\n namespace = value;\n } else {\n warn(`XFA - multiple namespace definition in <${tagName}>`);\n }\n } else if (name.startsWith(\"xmlns:\")) {\n const prefix = name.substring(\"xmlns:\".length);\n prefixes ??= [];\n prefixes.push({\n prefix,\n value\n });\n } else {\n const i = name.indexOf(\":\");\n if (i === -1) {\n attributeObj[name] = value;\n } else {\n const nsAttrs = attributeObj[$nsAttributes] ??= Object.create(null);\n const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n const attrs = nsAttrs[ns] ||= Object.create(null);\n attrs[attrName] = value;\n }\n }\n }\n return [namespace, prefixes, attributeObj];\n }\n _getNameAndPrefix(name, nsAgnostic) {\n const i = name.indexOf(\":\");\n if (i === -1) {\n return [name, null];\n }\n return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n }\n onBeginElement(tagName, attributes, isEmpty) {\n const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName);\n const [name, nsPrefix] = this._getNameAndPrefix(tagName, this._builder.isNsAgnostic());\n const node = this._builder.build({\n nsPrefix,\n name,\n attributes: attributesObj,\n namespace,\n prefixes\n });\n node[$globalData] = this._globalData;\n if (isEmpty) {\n node[$finalize]();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n return;\n }\n this._stack.push(this._current);\n this._current = node;\n }\n onEndElement(name) {\n const node = this._current;\n if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n const parser = new XFAParser();\n parser._globalData = this._globalData;\n const root = parser.parse(node[$content]);\n node[$content] = null;\n node[$onChild](root);\n }\n node[$finalize]();\n this._current = this._stack.pop();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n }\n onError(code) {\n this._errorCode = code;\n }\n}\n\n;// ./src/core/xfa/factory.js\n\n\n\n\n\n\n\n\nclass XFAFactory {\n constructor(data) {\n try {\n this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n const binder = new Binder(this.root);\n this.form = binder.bind();\n this.dataHandler = new DataHandler(this.root, binder.getData());\n this.form[$globalData].template = this.form;\n } catch (e) {\n warn(`XFA - an error occurred during parsing and binding: ${e}`);\n }\n }\n isValid() {\n return !!(this.root && this.form);\n }\n _createPagesHelper() {\n const iterator = this.form[$toPages]();\n return new Promise((resolve, reject) => {\n const nextIteration = () => {\n try {\n const value = iterator.next();\n if (value.done) {\n resolve(value.value);\n } else {\n setTimeout(nextIteration, 0);\n }\n } catch (e) {\n reject(e);\n }\n };\n setTimeout(nextIteration, 0);\n });\n }\n async _createPages() {\n try {\n this.pages = await this._createPagesHelper();\n this.dims = this.pages.children.map(c => {\n const {\n width,\n height\n } = c.attributes.style;\n return [0, 0, parseInt(width, 10), parseInt(height, 10)];\n });\n } catch (e) {\n warn(`XFA - an error occurred during layout: ${e}`);\n }\n }\n getBoundingBox(pageIndex) {\n return this.dims[pageIndex];\n }\n async getNumPages() {\n if (!this.pages) {\n await this._createPages();\n }\n return this.dims.length;\n }\n setImages(images) {\n this.form[$globalData].images = images;\n }\n setFonts(fonts) {\n this.form[$globalData].fontFinder = new FontFinder(fonts);\n const missingFonts = [];\n for (let typeface of this.form[$globalData].usedTypefaces) {\n typeface = stripQuotes(typeface);\n const font = this.form[$globalData].fontFinder.find(typeface);\n if (!font) {\n missingFonts.push(typeface);\n }\n }\n if (missingFonts.length > 0) {\n return missingFonts;\n }\n return null;\n }\n appendFonts(fonts, reallyMissingFonts) {\n this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n }\n async getPages() {\n if (!this.pages) {\n await this._createPages();\n }\n const pages = this.pages;\n this.pages = null;\n return pages;\n }\n serializeData(storage) {\n return this.dataHandler.serialize(storage);\n }\n static _createDocument(data) {\n return !data.get(\"/xdp:xdp\") ? data.get(\"xdp:xdp\") : data.values().join(\"\");\n }\n static getRichTextAsHtml(rc) {\n if (!rc || typeof rc !== \"string\") {\n return null;\n }\n try {\n let root = new XFAParser(XhtmlNamespace, true).parse(rc);\n if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n const newRoot = XhtmlNamespace.body({});\n newRoot[$appendChild](root);\n root = newRoot;\n }\n const result = root[$toHTML]();\n if (!result.success) {\n return null;\n }\n const {\n html\n } = result;\n const {\n attributes\n } = html;\n if (attributes) {\n attributes.class &&= attributes.class.filter(attr => !attr.startsWith(\"xfa\"));\n attributes.dir = \"auto\";\n }\n return {\n html,\n str: root[$text]()\n };\n } catch (e) {\n warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n }\n return null;\n }\n}\n\n;// ./src/core/annotation.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass AnnotationFactory {\n static createGlobals(pdfManager) {\n return Promise.all([pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureDoc(\"xfaDatasets\"), pdfManager.ensureCatalog(\"structTreeRoot\"), pdfManager.ensureCatalog(\"baseUrl\"), pdfManager.ensureCatalog(\"attachments\"), pdfManager.ensureCatalog(\"globalColorSpaceCache\")]).then(([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments, globalColorSpaceCache]) => ({\n pdfManager,\n catalog: pdfManager.pdfDocument.catalog,\n acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n xfaDatasets,\n structTreeRoot,\n baseUrl,\n attachments,\n globalColorSpaceCache\n }), reason => {\n warn(`createGlobals: \"${reason}\".`);\n return null;\n });\n }\n static async create(xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, collectByType, pageRef) {\n const pageIndex = collectFields ? await this._getPageIndex(xref, ref, annotationGlobals.pdfManager) : null;\n return annotationGlobals.pdfManager.ensure(this, \"_create\", [xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, collectByType, pageIndex, pageRef]);\n }\n static _create(xref, ref, annotationGlobals, idFactory, collectFields = false, orphanFields = null, collectByType = null, pageIndex = null, pageRef = null) {\n const dict = xref.fetchIfRef(ref);\n if (!(dict instanceof Dict)) {\n return undefined;\n }\n let subtype = dict.get(\"Subtype\");\n subtype = subtype instanceof Name ? subtype.name : null;\n if (collectByType && !collectByType.has(AnnotationType[subtype?.toUpperCase()])) {\n return null;\n }\n const {\n acroForm,\n pdfManager\n } = annotationGlobals;\n const id = ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n const parameters = {\n xref,\n ref,\n dict,\n subtype,\n id,\n annotationGlobals,\n collectFields,\n orphanFields,\n needAppearances: !collectFields && acroForm.get(\"NeedAppearances\") === true,\n pageIndex,\n evaluatorOptions: pdfManager.evaluatorOptions,\n pageRef\n };\n switch (subtype) {\n case \"Link\":\n return new LinkAnnotation(parameters);\n case \"Text\":\n return new TextAnnotation(parameters);\n case \"Widget\":\n let fieldType = getInheritableProperty({\n dict,\n key: \"FT\"\n });\n fieldType = fieldType instanceof Name ? fieldType.name : null;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotation(parameters);\n case \"Btn\":\n return new ButtonWidgetAnnotation(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotation(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotation(parameters);\n }\n warn(`Unimplemented widget field type \"${fieldType}\", ` + \"falling back to base field type.\");\n return new WidgetAnnotation(parameters);\n case \"Popup\":\n return new PopupAnnotation(parameters);\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n case \"Line\":\n return new LineAnnotation(parameters);\n case \"Square\":\n return new SquareAnnotation(parameters);\n case \"Circle\":\n return new CircleAnnotation(parameters);\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n case \"Caret\":\n return new CaretAnnotation(parameters);\n case \"Ink\":\n return new InkAnnotation(parameters);\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n case \"Stamp\":\n return new StampAnnotation(parameters);\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n case \"RichMedia\":\n return new RichMediaAnnotation(parameters);\n case \"Screen\":\n return new ScreenAnnotation(parameters);\n case \"Sound\":\n return new SoundAnnotation(parameters);\n default:\n if (!collectFields) {\n if (!subtype) {\n warn(\"Annotation is missing the required /Subtype.\");\n } else {\n warn(`Unimplemented annotation type \"${subtype}\", ` + \"falling back to base annotation.\");\n }\n }\n return new Annotation(parameters);\n }\n }\n static async _getPageIndex(xref, ref, pdfManager) {\n try {\n const annotDict = await xref.fetchIfRefAsync(ref);\n if (!(annotDict instanceof Dict)) {\n return -1;\n }\n const pageRef = annotDict.getRaw(\"P\");\n if (pageRef instanceof Ref) {\n try {\n return await pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n } catch (ex) {\n info(`_getPageIndex -- not a valid page reference: \"${ex}\".`);\n }\n }\n if (annotDict.has(\"Kids\")) {\n return -1;\n }\n const numPages = await pdfManager.ensureDoc(\"numPages\");\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n const page = await pdfManager.getPage(pageIndex);\n const annotations = await pdfManager.ensure(page, \"annotations\");\n for (const annotRef of annotations) {\n if (annotRef instanceof Ref && isRefsEqual(annotRef, ref)) {\n return pageIndex;\n }\n }\n }\n } catch (ex) {\n warn(`_getPageIndex: \"${ex}\".`);\n }\n return -1;\n }\n static generateImages(annotations, xref, isOffscreenCanvasSupported) {\n if (!isOffscreenCanvasSupported) {\n warn(\"generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images.\");\n return null;\n }\n let imagePromises;\n for (const {\n bitmapId,\n bitmap\n } of annotations) {\n if (!bitmap) {\n continue;\n }\n imagePromises ||= new Map();\n imagePromises.set(bitmapId, createImage(bitmap, xref));\n }\n return imagePromises;\n }\n static async saveNewAnnotations(evaluator, xref, task, annotations, imagePromises, changes) {\n let baseFontRef;\n const promises = [];\n const {\n isOffscreenCanvasSupported\n } = evaluator.options;\n for (const annotation of annotations) {\n if (annotation.deleted) {\n continue;\n }\n switch (annotation.annotationType) {\n case AnnotationEditorType.FREETEXT:\n if (!baseFontRef) {\n const baseFont = new Dict(xref);\n baseFont.setIfName(\"BaseFont\", \"Helvetica\");\n baseFont.setIfName(\"Type\", \"Font\");\n baseFont.setIfName(\"Subtype\", \"Type1\");\n baseFont.setIfName(\"Encoding\", \"WinAnsiEncoding\");\n baseFontRef = xref.getNewTemporaryRef();\n changes.put(baseFontRef, {\n data: baseFont\n });\n }\n promises.push(FreeTextAnnotation.createNewAnnotation(xref, annotation, changes, {\n evaluator,\n task,\n baseFontRef\n }));\n break;\n case AnnotationEditorType.HIGHLIGHT:\n if (annotation.quadPoints) {\n promises.push(HighlightAnnotation.createNewAnnotation(xref, annotation, changes));\n } else {\n promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes));\n }\n break;\n case AnnotationEditorType.INK:\n promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes));\n break;\n case AnnotationEditorType.STAMP:\n const image = isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null;\n if (image?.imageStream) {\n const {\n imageStream,\n smaskStream\n } = image;\n if (smaskStream) {\n const smaskRef = xref.getNewTemporaryRef();\n changes.put(smaskRef, {\n data: smaskStream\n });\n imageStream.dict.set(\"SMask\", smaskRef);\n }\n const imageRef = image.imageRef = xref.getNewTemporaryRef();\n changes.put(imageRef, {\n data: imageStream\n });\n image.imageStream = null;\n image.imageRenderStream = null;\n image.smaskStream = null;\n image.smaskRenderStream = null;\n }\n promises.push(StampAnnotation.createNewAnnotation(xref, annotation, changes, {\n image\n }));\n break;\n case AnnotationEditorType.SIGNATURE:\n promises.push(StampAnnotation.createNewAnnotation(xref, annotation, changes, {}));\n break;\n }\n }\n return {\n annotations: (await Promise.all(promises)).flat()\n };\n }\n static async printNewAnnotations(annotationGlobals, evaluator, task, annotations, imagePromises) {\n if (!annotations) {\n return null;\n }\n const {\n options,\n xref\n } = evaluator;\n const promises = [];\n for (const annotation of annotations) {\n if (annotation.deleted) {\n continue;\n }\n switch (annotation.annotationType) {\n case AnnotationEditorType.FREETEXT:\n promises.push(FreeTextAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluator,\n task,\n evaluatorOptions: options\n }));\n break;\n case AnnotationEditorType.HIGHLIGHT:\n if (annotation.quadPoints) {\n promises.push(HighlightAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n } else {\n promises.push(InkAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n }\n break;\n case AnnotationEditorType.INK:\n promises.push(InkAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n break;\n case AnnotationEditorType.STAMP:\n const image = options.isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null;\n if (image?.imageStream) {\n const {\n imageStream,\n imageRenderStream,\n smaskStream,\n smaskRenderStream\n } = image;\n const imageRef = imageRenderStream || new JpegStream(imageStream, imageStream.length);\n if (smaskStream || smaskRenderStream) {\n imageRef.dict.set(\"SMask\", smaskRenderStream || smaskStream);\n }\n image.imageRef = imageRef;\n image.imageStream = null;\n image.imageRenderStream = null;\n image.smaskStream = null;\n image.smaskRenderStream = null;\n }\n promises.push(StampAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n image,\n evaluatorOptions: options\n }));\n break;\n case AnnotationEditorType.SIGNATURE:\n promises.push(StampAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n break;\n }\n }\n return Promise.all(promises);\n }\n}\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n const rgbColor = defaultColor || new Uint8ClampedArray(3);\n switch (color.length) {\n case 0:\n return null;\n case 1:\n ColorSpaceUtils.gray.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n case 3:\n ColorSpaceUtils.rgb.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n case 4:\n ColorSpaceUtils.cmyk.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n default:\n return defaultColor;\n }\n}\nfunction getPdfColorArray(color, defaultValue = null) {\n return color && Array.from(color, c => c / 255) || defaultValue;\n}\nfunction getQuadPoints(dict, rect) {\n const quadPoints = dict.getArray(\"QuadPoints\");\n if (!isNumberArray(quadPoints, null) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {\n return null;\n }\n const newQuadPoints = new Float32Array(quadPoints.length);\n for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {\n const [x1, y1, x2, y2, x3, y3, x4, y4] = quadPoints.slice(i, i + 8);\n const minX = Math.min(x1, x2, x3, x4);\n const maxX = Math.max(x1, x2, x3, x4);\n const minY = Math.min(y1, y2, y3, y4);\n const maxY = Math.max(y1, y2, y3, y4);\n if (rect !== null && (minX < rect[0] || maxX > rect[2] || minY < rect[1] || maxY > rect[3])) {\n return null;\n }\n newQuadPoints.set([minX, maxY, maxX, maxY, minX, minY, maxX, minY], i);\n }\n return newQuadPoints;\n}\nfunction getTransformMatrix(rect, bbox, matrix) {\n const minMax = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox(bbox, matrix, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n if (minX === maxX || minY === maxY) {\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];\n}\nfunction writeLineToCurveToAppearance(data, buffer, maybeClose = false) {\n buffer.push(`${numberToString(data[4])} ${numberToString(data[5])} m`);\n for (let i = 6, ii = data.length; i < ii; i += 6) {\n if (isNaN(data[i])) {\n buffer.push(`${numberToString(data[i + 4])} ${numberToString(data[i + 5])} l`);\n } else {\n const curve = data.slice(i, i + 6);\n buffer.push(`${curve.map(numberToString).join(\" \")} c`);\n }\n }\n if (maybeClose && data.length === 6) {\n buffer.push(`${numberToString(data[4])} ${numberToString(data[5])} l`);\n }\n}\nclass Annotation {\n appearance = null;\n _oc = undefined;\n constructor(params) {\n const {\n annotationGlobals,\n dict,\n orphanFields,\n ref,\n subtype,\n xref\n } = params;\n const parentRef = orphanFields?.get(ref);\n if (parentRef) {\n dict.set(\"Parent\", parentRef);\n }\n this.setTitle(dict.get(\"T\"));\n this.setContents(dict.get(\"Contents\"));\n this.setModificationDate(dict.get(\"M\"));\n this.setFlags(dict.get(\"F\"));\n this.setRectangle(dict.getArray(\"Rect\"));\n this.setColor(dict.getArray(\"C\"));\n this.setBorderStyle(dict);\n this.setAppearance(dict);\n this.#setOptionalContent(xref, dict);\n const MK = dict.get(\"MK\");\n this.setBorderAndBackgroundColors(MK);\n this.setRotation(MK, dict);\n this.ref = params.ref instanceof Ref ? params.ref : null;\n this._streams = [];\n if (this.appearance) {\n this._streams.push(this.appearance);\n }\n const isLocked = !!(this.flags & AnnotationFlag.LOCKED);\n const isContentLocked = !!(this.flags & AnnotationFlag.LOCKEDCONTENTS);\n this.data = {\n annotationType: AnnotationType[subtype?.toUpperCase()],\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n rotation: this.rotation,\n contentsObj: this._contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n oc: this._oc,\n rect: this.rectangle,\n subtype,\n hasOwnCanvas: false,\n noRotate: !!(this.flags & AnnotationFlag.NOROTATE),\n noHTML: isLocked && isContentLocked,\n isEditable: false,\n structParent: -1\n };\n if (annotationGlobals.structTreeRoot) {\n let structParent = dict.get(\"StructParent\");\n this.data.structParent = structParent = Number.isInteger(structParent) && structParent >= 0 ? structParent : -1;\n annotationGlobals.structTreeRoot.addAnnotationIdToPage(params.pageRef, structParent, this.ref);\n }\n if (params.collectFields) {\n const kids = dict.get(\"Kids\");\n if (Array.isArray(kids)) {\n const kidIds = [];\n for (const kid of kids) {\n if (kid instanceof Ref) {\n kidIds.push(kid.toString());\n }\n }\n if (kidIds.length !== 0) {\n this.data.kidIds = kidIds;\n }\n }\n this.data.actions = collectActions(xref, dict, AnnotationActionEventType);\n this.data.fieldName = this._constructFieldName(dict);\n this.data.pageIndex = params.pageIndex;\n }\n const it = dict.get(\"IT\");\n if (it instanceof Name) {\n this.data.it = it.name;\n }\n this._isOffscreenCanvasSupported = params.evaluatorOptions.isOffscreenCanvasSupported;\n this._fallbackFontDict = null;\n this._needAppearances = false;\n }\n _getOperatorListNoAppearance() {\n return {\n opList: new OperatorList(),\n separateForm: false,\n separateCanvas: false\n };\n }\n _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n _buildFlags(noView, noPrint) {\n let {\n flags\n } = this;\n if (noView === undefined) {\n if (noPrint === undefined) {\n return undefined;\n }\n if (noPrint) {\n return flags & ~AnnotationFlag.PRINT;\n }\n return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.PRINT;\n }\n if (noView) {\n flags |= AnnotationFlag.PRINT;\n if (noPrint) {\n return flags & ~AnnotationFlag.NOVIEW | AnnotationFlag.HIDDEN;\n }\n return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW;\n }\n flags &= ~(AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW);\n if (noPrint) {\n return flags & ~AnnotationFlag.PRINT;\n }\n return flags | AnnotationFlag.PRINT;\n }\n _isViewable(flags) {\n return !this._hasFlag(flags, AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, AnnotationFlag.NOVIEW);\n }\n _isPrintable(flags) {\n return this._hasFlag(flags, AnnotationFlag.PRINT) && !this._hasFlag(flags, AnnotationFlag.HIDDEN) && !this._hasFlag(flags, AnnotationFlag.INVISIBLE);\n }\n mustBeViewed(annotationStorage, _renderForms) {\n const noView = annotationStorage?.get(this.data.id)?.noView;\n if (noView !== undefined) {\n return !noView;\n }\n return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n }\n mustBePrinted(annotationStorage) {\n const noPrint = annotationStorage?.get(this.data.id)?.noPrint;\n if (noPrint !== undefined) {\n return !noPrint;\n }\n return this.printable;\n }\n mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\n return isEditing ? !this.data.isEditable : !modifiedIds?.has(this.data.id);\n }\n get viewable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return true;\n }\n return this._isViewable(this.flags);\n }\n get printable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return false;\n }\n return this._isPrintable(this.flags);\n }\n _parseStringHelper(data) {\n const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n return {\n str,\n dir\n };\n }\n setDefaultAppearance(params) {\n const {\n dict,\n annotationGlobals\n } = params;\n const defaultAppearance = getInheritableProperty({\n dict,\n key: \"DA\"\n }) || annotationGlobals.acroForm.get(\"DA\");\n this._defaultAppearance = typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance);\n }\n setTitle(title) {\n this._title = this._parseStringHelper(title);\n }\n setContents(contents) {\n this._contents = this._parseStringHelper(contents);\n }\n setModificationDate(modificationDate) {\n this.modificationDate = typeof modificationDate === \"string\" ? modificationDate : null;\n }\n setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n if (this.flags & AnnotationFlag.INVISIBLE && this.constructor.name !== \"Annotation\") {\n this.flags ^= AnnotationFlag.INVISIBLE;\n }\n }\n hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n setRectangle(rectangle) {\n this.rectangle = lookupNormalRect(rectangle, [0, 0, 0, 0]);\n }\n setColor(color) {\n this.color = getRgbColor(color);\n }\n setLineEndings(lineEndings) {\n this.lineEndings = [\"None\", \"None\"];\n if (Array.isArray(lineEndings) && lineEndings.length === 2) {\n for (let i = 0; i < 2; i++) {\n const obj = lineEndings[i];\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"None\":\n continue;\n case \"Square\":\n case \"Circle\":\n case \"Diamond\":\n case \"OpenArrow\":\n case \"ClosedArrow\":\n case \"Butt\":\n case \"ROpenArrow\":\n case \"RClosedArrow\":\n case \"Slash\":\n this.lineEndings[i] = obj.name;\n continue;\n }\n }\n warn(`Ignoring invalid lineEnding: ${obj}`);\n }\n }\n }\n setRotation(mk, dict) {\n this.rotation = 0;\n let angle = mk instanceof Dict ? mk.get(\"R\") || 0 : dict.get(\"Rotate\") || 0;\n if (Number.isInteger(angle) && angle !== 0) {\n angle %= 360;\n if (angle < 0) {\n angle += 360;\n }\n if (angle % 90 === 0) {\n this.rotation = angle;\n }\n }\n }\n setBorderAndBackgroundColors(mk) {\n if (mk instanceof Dict) {\n this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n } else {\n this.borderColor = this.backgroundColor = null;\n }\n }\n setBorderStyle(borderStyle) {\n this.borderStyle = new AnnotationBorderStyle();\n if (!(borderStyle instanceof Dict)) {\n return;\n }\n if (borderStyle.has(\"BS\")) {\n const dict = borderStyle.get(\"BS\");\n if (dict instanceof Dict) {\n const dictType = dict.get(\"Type\");\n if (!dictType || isName(dictType, \"Border\")) {\n this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n this.borderStyle.setStyle(dict.get(\"S\"));\n this.borderStyle.setDashArray(dict.getArray(\"D\"));\n }\n }\n } else if (borderStyle.has(\"Border\")) {\n const array = borderStyle.getArray(\"Border\");\n if (Array.isArray(array)) {\n if (array.length >= 3) {\n this.borderStyle.setHorizontalCornerRadius(array[0]);\n this.borderStyle.setVerticalCornerRadius(array[1]);\n this.borderStyle.setWidth(array[2], this.rectangle);\n if (array.length === 4) {\n this.borderStyle.setDashArray(array[3], true);\n }\n } else if (array.length === 0) {\n this.borderStyle.setWidth(0);\n }\n }\n } else {\n this.borderStyle.setWidth(0);\n }\n }\n setAppearance(dict) {\n const appearanceStates = dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n const normalAppearanceState = appearanceStates.get(\"N\");\n if (normalAppearanceState instanceof BaseStream) {\n this.appearance = normalAppearanceState;\n return;\n }\n if (!(normalAppearanceState instanceof Dict)) {\n return;\n }\n const as = dict.get(\"AS\");\n if (!(as instanceof Name)) {\n return;\n }\n const appearance = normalAppearanceState.get(as.name);\n if (appearance instanceof BaseStream) {\n this.appearance = appearance;\n }\n }\n #setOptionalContent(xref, dict) {\n if (dict.has(\"OC\")) {\n try {\n this._oc = parseMarkedContentProps(xref, dict.get(\"OC\"), null);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`#setOptionalContent: ${ex}`);\n }\n }\n }\n async loadResources(keys, appearance) {\n const resources = await appearance.dict.getAsync(\"Resources\");\n if (resources) {\n await ObjectLoader.load(resources, keys, resources.xref);\n }\n return resources;\n }\n get _ownCanvasRequiresForms() {\n return false;\n }\n async getOperatorList(evaluator, task, intent, annotationStorage) {\n const {\n hasOwnCanvas,\n id,\n rect\n } = this.data;\n let appearance = this.appearance;\n const isUsingOwnCanvas = !!(hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY && (!this._ownCanvasRequiresForms || intent & RenderingIntentFlag.ANNOTATIONS_FORMS));\n if (isUsingOwnCanvas && (this.width === 0 || this.height === 0)) {\n this.data.hasOwnCanvas = false;\n return this._getOperatorListNoAppearance();\n }\n if (!appearance) {\n if (!isUsingOwnCanvas) {\n return this._getOperatorListNoAppearance();\n }\n appearance = new StringStream(\"\", new Dict());\n }\n const appearanceDict = appearance.dict;\n const resources = await this.loadResources(RESOURCES_KEYS_OPERATOR_LIST, appearance);\n const bbox = lookupRect(appearanceDict.getArray(\"BBox\"), [0, 0, this.width, this.height]);\n const matrix = lookupMatrix(appearanceDict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n const transform = getTransformMatrix(rect, bbox, matrix);\n const opList = new OperatorList();\n const optionalContent = this._oc;\n if (optionalContent !== undefined) {\n opList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n opList.addOp(OPS.beginAnnotation, [id, rect, transform, matrix, isUsingOwnCanvas]);\n await evaluator.getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList,\n fallbackFontDict: this._fallbackFontDict\n });\n opList.addOp(OPS.endAnnotation, []);\n if (optionalContent !== undefined) {\n opList.addOp(OPS.endMarkedContent, []);\n }\n this.reset();\n return {\n opList,\n separateForm: false,\n separateCanvas: isUsingOwnCanvas\n };\n }\n async save(evaluator, task, annotationStorage, changes) {\n return null;\n }\n get overlaysTextContent() {\n return false;\n }\n get hasTextContent() {\n return false;\n }\n async extractTextContent(evaluator, task, viewBox) {\n if (!this.appearance) {\n return;\n }\n const resources = await this.loadResources(RESOURCES_KEYS_TEXT_CONTENT, this.appearance);\n const text = [];\n const buffer = [];\n let firstPositionX = Infinity;\n let firstPositionY = Infinity;\n let firstPosition = null;\n const sink = {\n desiredSize: Math.Infinity,\n ready: true,\n enqueue(chunk, size) {\n for (const item of chunk.items) {\n if (item.str === undefined) {\n continue;\n }\n firstPositionX = Math.min(firstPositionX, item.transform[4]);\n firstPositionY = Math.min(firstPositionY, item.transform[5]);\n buffer.push(item.str);\n if (item.hasEOL) {\n text.push(buffer.join(\"\").trimEnd());\n buffer.length = 0;\n }\n }\n }\n };\n await evaluator.getTextContent({\n stream: this.appearance,\n task,\n resources,\n includeMarkedContent: true,\n keepWhiteSpace: true,\n sink,\n viewBox\n });\n this.reset();\n if (firstPositionX !== Infinity) {\n firstPosition = [firstPositionX, firstPositionY];\n }\n if (buffer.length) {\n text.push(buffer.join(\"\").trimEnd());\n }\n if (text.length > 1 || text[0]) {\n const appearanceDict = this.appearance.dict;\n const bbox = lookupRect(appearanceDict.getArray(\"BBox\"), null);\n const matrix = lookupMatrix(appearanceDict.getArray(\"Matrix\"), null);\n this.data.textPosition = this._transformPoint(firstPosition, bbox, matrix);\n this.data.textContent = text;\n }\n }\n _transformPoint(coords, bbox, matrix) {\n const {\n rect\n } = this.data;\n bbox ||= [0, 0, 1, 1];\n matrix ||= [1, 0, 0, 1, 0, 0];\n const transform = getTransformMatrix(rect, bbox, matrix);\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n const p = coords.slice();\n Util.applyTransform(p, transform);\n Util.applyTransform(p, matrix);\n return p;\n }\n getFieldObject() {\n if (this.data.kidIds) {\n return {\n id: this.data.id,\n actions: this.data.actions,\n name: this.data.fieldName,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"\",\n kidIds: this.data.kidIds,\n page: this.data.pageIndex,\n rotation: this.rotation\n };\n }\n return null;\n }\n reset() {\n for (const stream of this._streams) {\n stream.reset();\n }\n }\n _constructFieldName(dict) {\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n warn(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n if (!dict.has(\"Parent\")) {\n return stringToPDFString(dict.get(\"T\"));\n }\n const fieldName = [];\n if (dict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n }\n let loopDict = dict;\n const visited = new RefSet();\n if (dict.objId) {\n visited.put(dict.objId);\n }\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n if (!(loopDict instanceof Dict) || loopDict.objId && visited.has(loopDict.objId)) {\n break;\n }\n if (loopDict.objId) {\n visited.put(loopDict.objId);\n }\n if (loopDict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n }\n }\n return fieldName.join(\".\");\n }\n _getAttachmentId(fsDict, fsRef, annotationGlobals, isSound = false) {\n if (!(fsDict instanceof Dict)) {\n return undefined;\n }\n if (!(fsRef instanceof Ref)) {\n fsRef = FileSpec.pickPlatformItem(fsDict.get(\"EF\"), true);\n }\n return fsRef instanceof Ref ? annotationGlobals.catalog.getAttachmentIdForAnnotation(fsRef, isSound) : undefined;\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass AnnotationBorderStyle {\n width = 1;\n rawWidth = 1;\n style = AnnotationBorderStyleType.SOLID;\n dashArray = [3];\n horizontalCornerRadius = 0;\n verticalCornerRadius = 0;\n setWidth(width, rect = [0, 0, 0, 0]) {\n if (width instanceof Name) {\n this.width = 0;\n return;\n }\n if (typeof width === \"number\") {\n if (width > 0) {\n this.rawWidth = width;\n const maxWidth = (rect[2] - rect[0]) / 2;\n const maxHeight = (rect[3] - rect[1]) / 2;\n if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {\n warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n width = 1;\n }\n }\n this.width = width;\n }\n }\n setStyle(style) {\n if (!(style instanceof Name)) {\n return;\n }\n switch (style.name) {\n case \"S\":\n this.style = AnnotationBorderStyleType.SOLID;\n break;\n case \"D\":\n this.style = AnnotationBorderStyleType.DASHED;\n break;\n case \"B\":\n this.style = AnnotationBorderStyleType.BEVELED;\n break;\n case \"I\":\n this.style = AnnotationBorderStyleType.INSET;\n break;\n case \"U\":\n this.style = AnnotationBorderStyleType.UNDERLINE;\n break;\n default:\n break;\n }\n }\n setDashArray(dashArray, forceStyle = false) {\n if (Array.isArray(dashArray)) {\n let isValid = true;\n let allZeros = true;\n for (const element of dashArray) {\n const validNumber = +element >= 0;\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n if (dashArray.length === 0 || isValid && !allZeros) {\n this.dashArray = dashArray;\n if (forceStyle) {\n this.setStyle(Name.get(\"D\"));\n }\n } else {\n this.width = 0;\n }\n } else if (dashArray) {\n this.width = 0;\n }\n }\n setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n}\nclass MarkupAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict\n } = params;\n if (dict.has(\"IRT\")) {\n const rawIRT = dict.getRaw(\"IRT\");\n this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\n const rt = dict.get(\"RT\");\n this.data.replyType = rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\n }\n let popupRef = null;\n if (this.data.replyType === AnnotationReplyType.GROUP) {\n const parent = dict.get(\"IRT\");\n this.setTitle(parent.get(\"T\"));\n this.data.titleObj = this._title;\n this.setContents(parent.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n if (!parent.has(\"CreationDate\")) {\n this.data.creationDate = null;\n } else {\n this.setCreationDate(parent.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n }\n if (!parent.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parent.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n popupRef = parent.getRaw(\"Popup\");\n if (!parent.has(\"C\")) {\n this.data.color = null;\n } else {\n this.setColor(parent.getArray(\"C\"));\n this.data.color = this.color;\n }\n } else {\n this.data.titleObj = this._title;\n this.setCreationDate(dict.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n popupRef = dict.getRaw(\"Popup\");\n if (!dict.has(\"C\")) {\n this.data.color = null;\n }\n }\n this.data.popupRef = popupRef instanceof Ref ? popupRef.toString() : null;\n if (dict.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n }\n }\n setCreationDate(creationDate) {\n this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\n }\n _setDefaultAppearance({\n xref,\n extra,\n strokeColor,\n fillColor,\n blendMode,\n strokeAlpha,\n fillAlpha,\n pointsCallback\n }) {\n const bbox = this.data.rect = BBOX_INIT.slice();\n const buffer = [\"q\"];\n if (extra) {\n buffer.push(extra);\n }\n if (strokeColor) {\n buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n }\n if (fillColor) {\n buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n }\n const pointsArray = this.data.quadPoints || Float32Array.from([this.rectangle[0], this.rectangle[3], this.rectangle[2], this.rectangle[3], this.rectangle[0], this.rectangle[1], this.rectangle[2], this.rectangle[1]]);\n for (let i = 0, ii = pointsArray.length; i < ii; i += 8) {\n const points = pointsCallback(buffer, pointsArray.subarray(i, i + 8));\n Util.rectBoundingBox(...points, bbox);\n }\n buffer.push(\"Q\");\n const formDict = new Dict(xref);\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n const appearanceStream = new StringStream(buffer.join(\" \"), appearanceStreamDict);\n formDict.set(\"Fm0\", appearanceStream);\n const gsDict = new Dict(xref);\n if (blendMode) {\n gsDict.setIfName(\"BM\", blendMode);\n }\n gsDict.setIfNumber(\"CA\", strokeAlpha);\n gsDict.setIfNumber(\"ca\", fillAlpha);\n const stateDict = new Dict(xref);\n stateDict.set(\"GS0\", gsDict);\n const resources = new Dict(xref);\n resources.set(\"ExtGState\", stateDict);\n resources.set(\"XObject\", formDict);\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Resources\", resources);\n appearanceDict.set(\"BBox\", bbox);\n this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\", appearanceDict);\n this._streams.push(this.appearance, appearanceStream);\n }\n static async createNewAnnotation(xref, annotation, changes, params) {\n const annotationRef = annotation.ref ||= xref.getNewTemporaryRef();\n const ap = await this.createNewAppearanceStream(annotation, xref, params);\n let annotationDict;\n if (ap) {\n const apRef = xref.getNewTemporaryRef();\n annotationDict = this.createNewDict(annotation, xref, {\n apRef\n });\n changes.put(apRef, {\n data: ap\n });\n } else {\n annotationDict = this.createNewDict(annotation, xref, {});\n }\n if (Number.isInteger(annotation.parentTreeId)) {\n annotationDict.set(\"StructParent\", annotation.parentTreeId);\n }\n changes.put(annotationRef, {\n data: annotationDict\n });\n const retRef = {\n ref: annotationRef\n };\n const {\n popup\n } = annotation;\n if (popup) {\n if (popup.deleted) {\n annotationDict.delete(\"Popup\");\n annotationDict.delete(\"Contents\");\n annotationDict.delete(\"RC\");\n return retRef;\n }\n const popupRef = popup.ref ||= xref.getNewTemporaryRef();\n popup.parent = annotationRef;\n const popupDict = PopupAnnotation.createNewDict(popup, xref);\n changes.put(popupRef, {\n data: popupDict\n });\n annotationDict.setIfDefined(\"Contents\", stringToAsciiOrUTF16BE(popup.contents));\n annotationDict.set(\"Popup\", popupRef);\n return [retRef, {\n ref: popupRef\n }];\n }\n return retRef;\n }\n static async createNewPrintAnnotation(annotationGlobals, xref, annotation, params) {\n const ap = await this.createNewAppearanceStream(annotation, xref, params);\n const annotationDict = this.createNewDict(annotation, xref, ap ? {\n ap\n } : {});\n const newAnnotation = new this.prototype.constructor({\n dict: annotationDict,\n xref,\n annotationGlobals,\n evaluatorOptions: params.evaluatorOptions\n });\n if (annotation.ref) {\n newAnnotation.ref = newAnnotation.refToReplace = annotation.ref;\n }\n return newAnnotation;\n }\n}\nclass WidgetAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref,\n annotationGlobals\n } = params;\n const data = this.data;\n this._needAppearances = params.needAppearances;\n if (data.fieldName === undefined) {\n data.fieldName = this._constructFieldName(dict);\n }\n if (data.actions === undefined) {\n data.actions = collectActions(xref, dict, AnnotationActionEventType);\n }\n let fieldValue = getInheritableProperty({\n dict,\n key: \"V\",\n getArray: true\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n const defaultFieldValue = getInheritableProperty({\n dict,\n key: \"DV\",\n getArray: true\n });\n data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n if (fieldValue === undefined && annotationGlobals.xfaDatasets) {\n const path = this._title.str;\n if (path) {\n this._hasValueFromXFA = true;\n data.fieldValue = fieldValue = annotationGlobals.xfaDatasets.getValue(path);\n }\n }\n if (fieldValue === undefined && data.defaultFieldValue !== null) {\n data.fieldValue = data.defaultFieldValue;\n }\n data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n this.setDefaultAppearance(params);\n data.hasAppearance ||= this._needAppearances && data.fieldValue !== undefined && data.fieldValue !== null;\n const fieldType = getInheritableProperty({\n dict,\n key: \"FT\"\n });\n data.fieldType = fieldType instanceof Name ? fieldType.name : null;\n const localResources = getInheritableProperty({\n dict,\n key: \"DR\"\n });\n const acroFormResources = annotationGlobals.acroForm.get(\"DR\");\n const appearanceResources = this.appearance?.dict.get(\"Resources\");\n this._fieldResources = {\n localResources,\n acroFormResources,\n appearanceResources,\n mergedResources: Dict.merge({\n xref,\n dictArray: [localResources, appearanceResources, acroFormResources],\n mergeSubDicts: true\n })\n };\n data.fieldFlags = getInheritableProperty({\n dict,\n key: \"Ff\"\n });\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n data.password = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n data.required = this.hasFieldFlag(AnnotationFieldFlag.REQUIRED);\n data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN) || this._hasFlag(data.annotationFlags, AnnotationFlag.NOVIEW);\n }\n _decodeFormValue(formValue) {\n if (Array.isArray(formValue)) {\n const arr = formValue.map(item => this._decodeFormValue(item)).filter(item => item !== null);\n return arr.length > 0 ? arr : null;\n } else if (formValue instanceof Name) {\n return formValue.name;\n } else if (typeof formValue === \"string\") {\n return stringToPDFString(formValue);\n }\n return null;\n }\n hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n _isViewable(flags) {\n return true;\n }\n mustBeViewed(annotationStorage, renderForms) {\n if (renderForms) {\n return this.viewable;\n }\n return super.mustBeViewed(annotationStorage, renderForms) && !this._hasFlag(this.flags, AnnotationFlag.NOVIEW);\n }\n getRotationMatrix(annotationStorage) {\n let rotation = annotationStorage?.get(this.data.id)?.rotation;\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n return rotation === 0 ? IDENTITY_MATRIX : getRotationMatrix(rotation, this.width, this.height);\n }\n getBorderAndBackgroundAppearances(annotationStorage) {\n let rotation = annotationStorage?.get(this.data.id)?.rotation;\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n if (!this.backgroundColor && !this.borderColor) {\n return \"\";\n }\n const rect = rotation === 0 || rotation === 180 ? `0 0 ${this.width} ${this.height} re` : `0 0 ${this.height} ${this.width} re`;\n let str = \"\";\n if (this.backgroundColor) {\n str = `${getPdfColor(this.backgroundColor, true)} ${rect} f `;\n }\n if (this.borderColor) {\n const borderWidth = this.borderStyle.width || 1;\n str += `${borderWidth} w ${getPdfColor(this.borderColor, false)} ${rect} S `;\n }\n return str;\n }\n async getOperatorList(evaluator, task, intent, annotationStorage) {\n if (intent & RenderingIntentFlag.ANNOTATIONS_FORMS && !(this instanceof SignatureWidgetAnnotation) && !this.data.noHTML && !this.data.hasOwnCanvas) {\n const list = this._getOperatorListNoAppearance();\n list.separateForm = true;\n return list;\n }\n if (!this._hasText) {\n return super.getOperatorList(evaluator, task, intent, annotationStorage);\n }\n const content = await this._getAppearance(evaluator, task, intent, annotationStorage);\n if (this.appearance && content === null) {\n return super.getOperatorList(evaluator, task, intent, annotationStorage);\n }\n const opList = new OperatorList();\n if (!this._defaultAppearance || content === null) {\n return {\n opList,\n separateForm: false,\n separateCanvas: false\n };\n }\n const isUsingOwnCanvas = !!(this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY);\n const matrix = [1, 0, 0, 1, 0, 0];\n const bbox = [0, 0, this.width, this.height];\n const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n const optionalContent = this._oc;\n if (optionalContent !== undefined) {\n opList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n opList.addOp(OPS.beginAnnotation, [this.data.id, this.data.rect, transform, this.getRotationMatrix(annotationStorage), isUsingOwnCanvas]);\n const stream = new StringStream(content);\n await evaluator.getOperatorList({\n stream,\n task,\n resources: this._fieldResources.mergedResources,\n operatorList: opList\n });\n opList.addOp(OPS.endAnnotation, []);\n if (optionalContent !== undefined) {\n opList.addOp(OPS.endMarkedContent, []);\n }\n return {\n opList,\n separateForm: false,\n separateCanvas: isUsingOwnCanvas\n };\n }\n _getMKDict(rotation) {\n const mk = new Dict(null);\n if (rotation) {\n mk.set(\"R\", rotation);\n }\n mk.setIfArray(\"BC\", getPdfColorArray(this.borderColor));\n mk.setIfArray(\"BG\", getPdfColorArray(this.backgroundColor));\n return mk.size > 0 ? mk : null;\n }\n amendSavedDict(annotationStorage, dict) {}\n setValue(dict, value, xref, changes) {\n const {\n dict: parentDict,\n ref: parentRef\n } = getParentToUpdate(dict, this.ref, xref);\n if (!parentDict) {\n dict.set(\"V\", value);\n } else if (!changes.has(parentRef)) {\n const newParentDict = parentDict.clone();\n newParentDict.set(\"V\", value);\n changes.put(parentRef, {\n data: newParentDict\n });\n return newParentDict;\n }\n return null;\n }\n async save(evaluator, task, annotationStorage, changes) {\n const storageEntry = annotationStorage?.get(this.data.id);\n const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n let value = storageEntry?.value,\n rotation = storageEntry?.rotation;\n if (value === this.data.fieldValue || value === undefined) {\n if (!this._hasValueFromXFA && rotation === undefined && flags === undefined) {\n return;\n }\n value ||= this.data.fieldValue;\n }\n if (rotation === undefined && !this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && isArrayEqual(value, this.data.fieldValue) && flags === undefined) {\n return;\n }\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n let appearance = null;\n if (!this._needAppearances) {\n appearance = await this._getAppearance(evaluator, task, RenderingIntentFlag.SAVE, annotationStorage);\n if (appearance === null && flags === undefined) {\n return;\n }\n } else {}\n let needAppearances = false;\n if (appearance?.needAppearances) {\n needAppearances = true;\n appearance = null;\n }\n const {\n xref\n } = evaluator;\n const originalDict = xref.fetchIfRef(this.ref);\n if (!(originalDict instanceof Dict)) {\n return;\n }\n const dict = new Dict(xref);\n for (const [key, rawVal] of originalDict.getRawEntries()) {\n if (key !== \"AP\") {\n dict.set(key, rawVal);\n }\n }\n if (flags !== undefined) {\n dict.set(\"F\", flags);\n if (appearance === null && !needAppearances) {\n const ap = originalDict.getRaw(\"AP\");\n if (ap) {\n dict.set(\"AP\", ap);\n }\n }\n }\n const xfa = {\n path: this.data.fieldName,\n value\n };\n const newParentDict = this.setValue(dict, Array.isArray(value) ? value.map(stringToAsciiOrUTF16BE) : stringToAsciiOrUTF16BE(value), xref, changes);\n this.amendSavedDict(annotationStorage, newParentDict || dict);\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n changes.put(this.ref, {\n data: dict,\n xfa,\n needAppearances\n });\n if (appearance !== null) {\n const newRef = xref.getNewTemporaryRef();\n const AP = new Dict(xref);\n dict.set(\"AP\", AP);\n AP.set(\"N\", newRef);\n const resources = this._getSaveFieldResources(xref),\n appearanceDict = new Dict(xref);\n appearanceDict.setIfName(\"Subtype\", \"Form\");\n appearanceDict.set(\"Resources\", resources);\n const bbox = rotation % 180 === 0 ? [0, 0, this.width, this.height] : [0, 0, this.height, this.width];\n appearanceDict.set(\"BBox\", bbox);\n const appearanceStream = new StringStream(appearance, appearanceDict);\n const rotationMatrix = this.getRotationMatrix(annotationStorage);\n if (rotationMatrix !== IDENTITY_MATRIX) {\n appearanceDict.set(\"Matrix\", rotationMatrix);\n }\n changes.put(newRef, {\n data: appearanceStream,\n xfa: null,\n needAppearances: false\n });\n }\n dict.set(\"M\", `D:${getModificationDate()}`);\n }\n async _getAppearance(evaluator, task, intent, annotationStorage) {\n if (this.data.password) {\n return null;\n }\n const storageEntry = annotationStorage?.get(this.data.id);\n let value, rotation;\n if (storageEntry) {\n value = storageEntry.formattedValue || storageEntry.value;\n rotation = storageEntry.rotation;\n }\n if (rotation === undefined && value === undefined && !this._needAppearances) {\n if (!this._hasValueFromXFA || this.appearance) {\n return null;\n }\n }\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n if (value === undefined) {\n value = this.data.fieldValue;\n if (!value) {\n return `/Tx BMC q ${colors}Q EMC`;\n }\n }\n if (Array.isArray(value) && value.length === 1) {\n value = value[0];\n }\n assert(typeof value === \"string\", \"Expected `value` to be a string.\");\n value = value.trimEnd();\n if (this.data.combo) {\n const option = this.data.options.find(({\n exportValue\n }) => value === exportValue);\n value = option?.displayValue || value;\n }\n if (value === \"\") {\n return `/Tx BMC q ${colors}Q EMC`;\n }\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n let lineCount = -1;\n let lines;\n if (this.data.multiLine) {\n lines = value.split(/\\r\\n?|\\n/).map(line => line.normalize(\"NFC\"));\n lineCount = lines.length;\n } else {\n lines = [value.replace(/\\r\\n?|\\n/, \"\").normalize(\"NFC\")];\n }\n const defaultPadding = 1;\n const defaultHPadding = 2;\n let {\n width: totalWidth,\n height: totalHeight\n } = this;\n if (rotation === 90 || rotation === 270) {\n [totalWidth, totalHeight] = [totalHeight, totalWidth];\n }\n if (!this._defaultAppearance) {\n this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = \"/Helvetica 0 Tf 0 g\");\n }\n let font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources);\n let defaultAppearance, fontSize, lineHeight;\n const encodedLines = [];\n let encodingError = false;\n for (const line of lines) {\n const encodedString = font.encodeString(line);\n if (encodedString.length > 1) {\n encodingError = true;\n }\n encodedLines.push(encodedString.join(\"\"));\n }\n if (encodingError && intent & RenderingIntentFlag.SAVE) {\n return {\n needAppearances: true\n };\n }\n if (encodingError && this._isOffscreenCanvasSupported) {\n const fontFamily = this.data.comb ? \"monospace\" : \"sans-serif\";\n const fakeUnicodeFont = new FakeUnicodeFont(evaluator.xref, fontFamily);\n const resources = fakeUnicodeFont.createFontResources(lines.join(\"\"));\n const newFont = resources.getRaw(\"Font\");\n if (this._fieldResources.mergedResources.has(\"Font\")) {\n const oldFont = this._fieldResources.mergedResources.get(\"Font\");\n for (const [key, rawVal] of newFont.getRawEntries()) {\n oldFont.set(key, rawVal);\n }\n } else {\n this._fieldResources.mergedResources.set(\"Font\", newFont);\n }\n const fontName = fakeUnicodeFont.fontName.name;\n font = await WidgetAnnotation._getFontData(evaluator, task, {\n fontName,\n fontSize: 0\n }, resources);\n for (let i = 0, ii = encodedLines.length; i < ii; i++) {\n encodedLines[i] = stringToUTF16String(lines[i]);\n }\n const savedDefaultAppearance = Object.assign(Object.create(null), this.data.defaultAppearanceData);\n this.data.defaultAppearanceData.fontSize = 0;\n this.data.defaultAppearanceData.fontName = fontName;\n [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount);\n this.data.defaultAppearanceData = savedDefaultAppearance;\n } else {\n if (!this._isOffscreenCanvasSupported) {\n warn(\"_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.\");\n }\n [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount);\n }\n let descent = font.descent;\n if (isNaN(descent)) {\n descent = BASELINE_FACTOR * lineHeight;\n } else {\n descent = Math.max(BASELINE_FACTOR * lineHeight, Math.abs(descent) * fontSize);\n }\n const defaultVPadding = Math.min(Math.floor((totalHeight - fontSize) / 2), defaultPadding);\n const alignment = this.data.textAlignment;\n let {\n ascent: fontAscent,\n descent: fontDescent\n } = font;\n if (isNaN(fontAscent) || isNaN(fontDescent) || !fontAscent && !fontDescent) {\n fontAscent = (/* inlined export .LINE_FACTOR */1.35) - (/* inlined export .LINE_DESCENT_FACTOR */0.35);\n fontDescent = (/* inlined export .LINE_DESCENT_FACTOR */0.35);\n } else {\n fontDescent = Math.abs(fontDescent);\n }\n const vShift = (totalHeight - (fontAscent + fontDescent) * fontSize) / 2 + fontDescent * fontSize;\n if (this.data.multiLine) {\n return this._getMultilineAppearance(defaultAppearance, encodedLines, font, fontSize, totalWidth, totalHeight, alignment, defaultHPadding, defaultVPadding, descent, lineHeight, annotationStorage);\n }\n if (this.data.comb) {\n return this._getCombAppearance(defaultAppearance, font, encodedLines[0], fontSize, totalWidth, vShift, alignment, bidi(lines[0]).dir === \"rtl\", annotationStorage);\n }\n const bottomPadding = vShift;\n if (alignment === 0 || alignment > 2) {\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${numberToString(defaultHPadding)} ${numberToString(bottomPadding)} Tm (${escapeString(encodedLines[0])}) Tj` + \" ET Q EMC\";\n }\n const prevInfo = {\n shift: 0\n };\n const renderedText = this._renderText(encodedLines[0], font, fontSize, totalWidth, alignment, prevInfo, defaultHPadding, bottomPadding);\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + \" ET Q EMC\";\n }\n static async _getFontData(evaluator, task, appearanceData, resources) {\n const operatorList = new OperatorList();\n const initialState = {\n font: null,\n clone() {\n return this;\n }\n };\n const {\n fontName,\n fontSize\n } = appearanceData;\n await evaluator.handleSetFont(resources, [fontName && Name.get(fontName), fontSize], null, operatorList, task, initialState, null);\n return initialState.font;\n }\n _getTextWidth(text, font) {\n return Math.sumPrecise(font.charsToGlyphs(text).map(g => g.width)) / 1000;\n }\n _computeFontSize(height, width, text, font, lineCount) {\n let {\n fontSize\n } = this.data.defaultAppearanceData;\n let lineHeight = (fontSize || 12) * (/* inlined export .LINE_FACTOR */1.35),\n numberOfLines = Math.round(height / lineHeight);\n if (!fontSize) {\n const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n if (lineCount === -1) {\n const textWidth = this._getTextWidth(text, font);\n fontSize = roundWithTwoDigits(Math.min(height / (/* inlined export .LINE_FACTOR */1.35), width / textWidth));\n numberOfLines = 1;\n } else {\n const lines = text.split(/\\r\\n?|\\n/);\n const cachedLines = [];\n for (const line of lines) {\n const encoded = font.encodeString(line).join(\"\");\n const glyphs = font.charsToGlyphs(encoded);\n const positions = font.getCharPositions(encoded);\n cachedLines.push({\n line: encoded,\n glyphs,\n positions\n });\n }\n const isTooBig = fsize => {\n let totalHeight = 0;\n for (const cache of cachedLines) {\n const chunks = this._splitLine(null, font, fsize, width, cache);\n totalHeight += chunks.length * fsize;\n if (totalHeight > height) {\n return true;\n }\n }\n return false;\n };\n numberOfLines = Math.max(numberOfLines, lineCount);\n while (true) {\n lineHeight = height / numberOfLines;\n fontSize = roundWithTwoDigits(lineHeight / (/* inlined export .LINE_FACTOR */1.35));\n if (isTooBig(fontSize)) {\n numberOfLines++;\n continue;\n }\n break;\n }\n }\n const {\n fontName,\n fontColor\n } = this.data.defaultAppearanceData;\n this._defaultAppearance = createDefaultAppearance({\n fontSize,\n fontName,\n fontColor\n });\n }\n return [this._defaultAppearance, fontSize, height / numberOfLines];\n }\n _renderText(text, font, fontSize, totalWidth, alignment, prevInfo, hPadding, vPadding) {\n let shift;\n if (alignment === 1) {\n const width = this._getTextWidth(text, font) * fontSize;\n shift = (totalWidth - width) / 2;\n } else if (alignment === 2) {\n const width = this._getTextWidth(text, font) * fontSize;\n shift = totalWidth - width - hPadding;\n } else {\n shift = hPadding;\n }\n const shiftStr = numberToString(shift - prevInfo.shift);\n prevInfo.shift = shift;\n vPadding = numberToString(vPadding);\n return `${shiftStr} ${vPadding} Td (${escapeString(text)}) Tj`;\n }\n _getSaveFieldResources(xref) {\n const {\n localResources,\n appearanceResources,\n acroFormResources\n } = this._fieldResources;\n const fontName = this.data.defaultAppearanceData?.fontName;\n if (!fontName) {\n return localResources || Dict.empty;\n }\n for (const resources of [localResources, appearanceResources]) {\n if (resources instanceof Dict) {\n const localFont = resources.get(\"Font\");\n if (localFont instanceof Dict && localFont.has(fontName)) {\n return resources;\n }\n }\n }\n if (acroFormResources instanceof Dict) {\n const acroFormFont = acroFormResources.get(\"Font\");\n if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n const subFontDict = new Dict(xref);\n subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n const subResourcesDict = new Dict(xref);\n subResourcesDict.set(\"Font\", subFontDict);\n return Dict.merge({\n xref,\n dictArray: [subResourcesDict, localResources],\n mergeSubDicts: true\n });\n }\n }\n return localResources || Dict.empty;\n }\n getFieldObject() {\n return null;\n }\n}\nclass TextWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n const {\n dict\n } = params;\n if (dict.has(\"PMD\")) {\n this.flags |= AnnotationFlag.HIDDEN;\n this.data.hidden = true;\n warn(\"Barcodes are not supported\");\n }\n this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML;\n this._hasText = true;\n if (typeof this.data.fieldValue !== \"string\") {\n this.data.fieldValue = \"\";\n }\n let alignment = getInheritableProperty({\n dict,\n key: \"Q\"\n });\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n this.data.textAlignment = alignment;\n let maximumLength = getInheritableProperty({\n dict,\n key: \"MaxLen\"\n });\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = 0;\n }\n this.data.maxLen = maximumLength;\n this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n this.data.comb = this.hasFieldFlag(AnnotationFieldFlag.COMB) && !this.data.multiLine && !this.data.password && !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== 0;\n this.data.doNotScroll = this.hasFieldFlag(AnnotationFieldFlag.DONOTSCROLL);\n const {\n actions\n } = this.data;\n if (!actions) {\n return;\n }\n const AFDateTime = /^AF(Date|Time)_(?:Keystroke|Format)(?:Ex)?\\(['\"]?([^'\"]+)['\"]?\\);$/;\n let canUseHTMLDateTime = false;\n const aFormat = actions.get(\"Format\"),\n aKeystroke = actions.get(\"Keystroke\");\n if (aFormat?.length === 1 && aKeystroke?.length === 1 && AFDateTime.test(aFormat[0]) && AFDateTime.test(aKeystroke[0]) || aFormat?.length === 0 && aKeystroke?.length === 1 && AFDateTime.test(aKeystroke[0]) || aKeystroke?.length === 0 && aFormat?.length === 1 && AFDateTime.test(aFormat[0])) {\n canUseHTMLDateTime = true;\n }\n const actionsToVisit = [];\n if (aFormat) {\n actionsToVisit.push(...aFormat);\n }\n if (aKeystroke) {\n actionsToVisit.push(...aKeystroke);\n }\n if (canUseHTMLDateTime) {\n actions.delete(\"Keystroke\");\n actions.set(\"Format\", actionsToVisit);\n }\n for (const formatAction of actionsToVisit) {\n const m = formatAction.match(AFDateTime);\n if (!m) {\n continue;\n }\n const isDate = m[1] === \"Date\";\n let format = m[2];\n const num = parseInt(format, 10);\n if (!isNaN(num) && Math.floor(Math.log10(num)) + 1 === m[2].length) {\n format = (isDate ? DateFormats : TimeFormats)[num] ?? format;\n }\n this.data.datetimeFormat = format;\n if (!canUseHTMLDateTime) {\n break;\n }\n if (isDate) {\n if (/HH|MM|ss|h/.test(format)) {\n this.data.datetimeType = \"datetime-local\";\n this.data.timeStep = /ss/.test(format) ? 1 : 60;\n } else {\n this.data.datetimeType = \"date\";\n }\n break;\n }\n this.data.datetimeType = \"time\";\n this.data.timeStep = /ss/.test(format) ? 1 : 60;\n break;\n }\n }\n get hasTextContent() {\n return !!this.appearance && !this._needAppearances;\n }\n _getCombAppearance(defaultAppearance, font, text, fontSize, width, vShift, alignment, isRTL, annotationStorage) {\n const combWidth = width / this.data.maxLen;\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n const cells = font.getCharPositions(text).map(([start, end]) => {\n const glyph = text.substring(start, end);\n return {\n glyph,\n width: this._getTextWidth(glyph, font) * fontSize\n };\n });\n if (isRTL) {\n cells.reverse();\n }\n const textWidth = combWidth * cells.length;\n let hShift = 0;\n if (alignment === 1) {\n hShift += Math.floor((width - textWidth) / (2 * combWidth)) * combWidth;\n } else if (alignment === 2) {\n hShift += width - textWidth;\n }\n const buf = [];\n let previousWidth = 0;\n for (let i = 0, ii = cells.length; i < ii; i++) {\n const {\n glyph,\n width: glyphWidth\n } = cells[i];\n const shift = i === 0 ? (combWidth - glyphWidth) / 2 : combWidth + (previousWidth - glyphWidth) / 2;\n buf.push(`${numberToString(shift)} 0 Td (${escapeString(glyph)}) Tj`);\n previousWidth = glyphWidth;\n }\n const renderedComb = buf.join(\" \");\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${numberToString(hShift)} ${numberToString(vShift)} Tm ${renderedComb}` + \" ET Q EMC\";\n }\n _getMultilineAppearance(defaultAppearance, lines, font, fontSize, width, height, alignment, hPadding, vPadding, descent, lineHeight, annotationStorage) {\n const buf = [];\n const totalWidth = width - 2 * hPadding;\n const prevInfo = {\n shift: 0\n };\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n const chunks = this._splitLine(line, font, fontSize, totalWidth);\n for (let j = 0, jj = chunks.length; j < jj; j++) {\n const chunk = chunks[j];\n const vShift = i === 0 && j === 0 ? -vPadding - (lineHeight - descent) : -lineHeight;\n buf.push(this._renderText(chunk, font, fontSize, width, alignment, prevInfo, hPadding, vShift));\n }\n }\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n const renderedText = buf.join(\"\\n\");\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 ${numberToString(height)} Tm ${renderedText}` + \" ET Q EMC\";\n }\n _splitLine(line, font, fontSize, width, cache = {}) {\n line = cache.line || line;\n const glyphs = cache.glyphs || font.charsToGlyphs(line);\n if (glyphs.length <= 1) {\n return [line];\n }\n const positions = cache.positions || font.getCharPositions(line);\n const scale = fontSize / 1000;\n const chunks = [];\n let lastSpacePosInStringStart = -1,\n lastSpacePosInStringEnd = -1,\n lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const [start, end] = positions[i];\n const glyph = glyphs[i];\n const glyphWidth = glyph.width * scale;\n if (glyph.unicode === \" \") {\n if (currentWidth + glyphWidth > width) {\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n lastSpacePosInStringStart = -1;\n lastSpacePos = -1;\n } else {\n currentWidth += glyphWidth;\n lastSpacePosInStringStart = start;\n lastSpacePosInStringEnd = end;\n lastSpacePos = i;\n }\n } else if (currentWidth + glyphWidth > width) {\n if (lastSpacePosInStringStart !== -1) {\n chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n startChunk = lastSpacePosInStringEnd;\n i = lastSpacePos + 1;\n lastSpacePosInStringStart = -1;\n currentWidth = 0;\n } else {\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n }\n } else {\n currentWidth += glyphWidth;\n }\n }\n if (startChunk < line.length) {\n chunks.push(line.substring(startChunk));\n }\n return chunks;\n }\n async extractTextContent(evaluator, task, viewBox) {\n await super.extractTextContent(evaluator, task, viewBox);\n const text = this.data.textContent;\n if (!text) {\n return;\n }\n const allText = text.join(\"\\n\");\n if (allText === this.data.fieldValue) {\n return;\n }\n const regex = allText.replaceAll(/([.*+?^${}()|[\\]\\\\])|(\\s+)/g, (_m, p1) => p1 ? `\\\\${p1}` : \"\\\\s+\");\n if (new RegExp(`^\\\\s*${regex}\\\\s*$`).test(this.data.fieldValue)) {\n this.data.textContent = this.data.fieldValue.split(\"\\n\");\n }\n }\n getFieldObject() {\n return {\n id: this.data.id,\n value: this.data.fieldValue,\n defaultValue: this.data.defaultFieldValue || \"\",\n multiline: this.data.multiLine,\n password: this.data.password,\n charLimit: this.data.maxLen,\n comb: this.data.comb,\n editable: !this.data.readOnly,\n hidden: this.data.hidden,\n name: this.data.fieldName,\n rect: this.data.rect,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n rotation: this.rotation,\n datetimeFormat: this.data.datetimeFormat,\n hasDatetimeHTML: !!this.data.datetimeType,\n type: \"text\"\n };\n }\n}\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n this.checkedAppearance = null;\n this.uncheckedAppearance = null;\n const isRadio = this.hasFieldFlag(AnnotationFieldFlag.RADIO),\n isPushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.checkBox = !isRadio && !isPushButton;\n this.data.radioButton = isRadio && !isPushButton;\n this.data.pushButton = isPushButton;\n this.data.isTooltipOnly = false;\n this.data.hasOwnCanvas = true;\n this.data.noHTML = false;\n if (this.data.checkBox) {\n this._processCheckBox(params);\n } else if (this.data.radioButton) {\n this._processRadioButton(params);\n } else if (this.data.pushButton) {\n this._processPushButton(params);\n } else {\n warn(\"Invalid field flags for button widget annotation\");\n }\n }\n get _ownCanvasRequiresForms() {\n return this.data.checkBox || this.data.radioButton;\n }\n #getOperatorListForAppearance(evaluator, task, intent, annotationStorage, rotation, appearance) {\n if (!appearance) {\n return this._getOperatorListNoAppearance();\n }\n const savedAppearance = this.appearance;\n const savedMatrix = lookupMatrix(appearance.dict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n if (rotation) {\n appearance.dict.set(\"Matrix\", this.getRotationMatrix(annotationStorage));\n }\n this.appearance = appearance;\n const operatorList = super.getOperatorList(evaluator, task, intent, annotationStorage);\n this.appearance = savedAppearance;\n appearance.dict.set(\"Matrix\", savedMatrix);\n return operatorList;\n }\n async getOperatorList(evaluator, task, intent, annotationStorage) {\n if (this.data.pushButton) {\n return super.getOperatorList(evaluator, task, intent, false, annotationStorage);\n }\n if (intent & RenderingIntentFlag.DISPLAY && intent & RenderingIntentFlag.ANNOTATIONS_FORMS && (this.data.checkBox || this.data.radioButton)) {\n const setCanvasName = (operatorList, name) => {\n const index = operatorList.fnArray.indexOf(OPS.beginAnnotation);\n if (index !== -1) {\n operatorList.argsArray[index].push(name);\n }\n };\n const checked = await this.#getOperatorListForAppearance(evaluator, task, intent, annotationStorage, null, this.checkedAppearance);\n setCanvasName(checked.opList, \"checked\");\n const unchecked = await this.#getOperatorListForAppearance(evaluator, task, intent, annotationStorage, null, this.uncheckedAppearance);\n setCanvasName(unchecked.opList, \"unchecked\");\n checked.opList.addOpList(unchecked.opList);\n checked.separateForm ||= unchecked.separateForm;\n checked.separateCanvas ||= unchecked.separateCanvas;\n return checked;\n }\n let value = null;\n let rotation = null;\n if (annotationStorage) {\n const storageEntry = annotationStorage.get(this.data.id);\n value = storageEntry ? storageEntry.value : null;\n rotation = storageEntry ? storageEntry.rotation : null;\n }\n if (value === null && this.appearance) {\n return super.getOperatorList(evaluator, task, intent, annotationStorage);\n }\n value ??= this.data.checkBox ? this.data.fieldValue === this.data.exportValue : this.data.fieldValue === this.data.buttonValue;\n return this.#getOperatorListForAppearance(evaluator, task, intent, annotationStorage, rotation, value ? this.checkedAppearance : this.uncheckedAppearance);\n }\n async save(evaluator, task, annotationStorage, changes) {\n if (this.data.checkBox) {\n this._saveCheckbox(evaluator, task, annotationStorage, changes);\n return;\n }\n if (this.data.radioButton) {\n this._saveRadioButton(evaluator, task, annotationStorage, changes);\n }\n }\n async _saveCheckbox(evaluator, task, annotationStorage, changes) {\n if (!annotationStorage) {\n return;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n let rotation = storageEntry?.rotation,\n value = storageEntry?.value;\n if (rotation === undefined && flags === undefined) {\n if (value === undefined) {\n return;\n }\n const defaultValue = this.data.fieldValue === this.data.exportValue;\n if (defaultValue === value) {\n return;\n }\n }\n let dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return;\n }\n dict = dict.clone();\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n if (value === undefined) {\n value = this.data.fieldValue === this.data.exportValue;\n }\n const xfa = {\n path: this.data.fieldName,\n value: value ? this.data.exportValue : \"\"\n };\n const name = Name.get(value ? this._onStateName : \"Off\");\n this.setValue(dict, name, evaluator.xref, changes);\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n if (flags !== undefined) {\n dict.set(\"F\", flags);\n }\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n changes.put(this.ref, {\n data: dict,\n xfa,\n needAppearances: false\n });\n }\n async _saveRadioButton(evaluator, task, annotationStorage, changes) {\n if (!annotationStorage) {\n return;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n let rotation = storageEntry?.rotation,\n value = storageEntry?.value;\n if (rotation === undefined && flags === undefined) {\n if (value === undefined) {\n return;\n }\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\n if (defaultValue === value) {\n return;\n }\n }\n let dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return;\n }\n dict = dict.clone();\n if (value === undefined) {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n const xfa = {\n path: this.data.fieldName,\n value: value ? this.data.buttonValue : \"\"\n };\n const name = Name.get(value ? this._onStateName : \"Off\");\n if (value) {\n this.setValue(dict, name, evaluator.xref, changes);\n }\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n if (flags !== undefined) {\n dict.set(\"F\", flags);\n }\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n changes.put(this.ref, {\n data: dict,\n xfa,\n needAppearances: false\n });\n }\n _getDefaultCheckedAppearance(params, type) {\n const {\n width,\n height\n } = this;\n const bbox = [0, 0, width, height];\n const FONT_RATIO = 0.8;\n const fontSize = Math.min(width, height) * FONT_RATIO;\n let metrics, char;\n if (type === \"check\") {\n metrics = {\n width: 0.755 * fontSize,\n height: 0.705 * fontSize\n };\n char = \"\\x33\";\n } else if (type === \"disc\") {\n metrics = {\n width: 0.791 * fontSize,\n height: 0.705 * fontSize\n };\n char = \"\\x6C\";\n } else {\n unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n }\n const xShift = numberToString((width - metrics.width) / 2);\n const yShift = numberToString((height - metrics.height) / 2);\n const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n const appearanceStreamDict = new Dict(params.xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", bbox);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n const resources = new Dict(params.xref);\n const font = new Dict(params.xref);\n font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n resources.set(\"Font\", font);\n appearanceStreamDict.set(\"Resources\", resources);\n this.checkedAppearance = new StringStream(appearance, appearanceStreamDict);\n this._streams.push(this.checkedAppearance);\n }\n _getOnStateName(dict) {\n const appearanceStates = dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return null;\n }\n const normalAppearance = appearanceStates.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return null;\n }\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n return key;\n }\n }\n return null;\n }\n _getExportValueForOptIndex(index, opt, xref) {\n if (Number.isInteger(index) && index >= 0 && index < opt.length) {\n const value = this._decodeFormValue(xref.fetchIfRef(opt[index]));\n if (typeof value === \"string\") {\n return value;\n }\n }\n return null;\n }\n _getOptInfo(dict, onState, opt, xref) {\n if (!Array.isArray(opt)) {\n return null;\n }\n const stateToIndex = new Map();\n let currentIndex = null;\n const fieldParent = dict.get(\"Parent\");\n const kids = fieldParent instanceof Dict ? fieldParent.get(\"Kids\") : null;\n if (Array.isArray(kids)) {\n for (let i = 0, ii = Math.min(kids.length, opt.length); i < ii; i++) {\n const kid = kids[i];\n if (kid instanceof Ref && isRefsEqual(kid, this.ref)) {\n currentIndex = i;\n }\n const kidDict = xref.fetchIfRef(kid);\n if (!(kidDict instanceof Dict)) {\n continue;\n }\n if (kidDict === dict) {\n currentIndex = i;\n }\n const kidOnState = this._getOnStateName(kidDict);\n if (typeof kidOnState === \"string\" && !stateToIndex.has(kidOnState)) {\n stateToIndex.set(kidOnState, i);\n }\n }\n } else if (opt.length === 1 && typeof onState === \"string\") {\n currentIndex = 0;\n stateToIndex.set(onState, 0);\n }\n return {\n currentIndex,\n opt,\n stateToIndex\n };\n }\n _getExportValue(state, optInfo, xref) {\n if (!optInfo || typeof state !== \"string\" || state === \"Off\") {\n return state;\n }\n if (state === this._onStateName) {\n const exportValue = this._getExportValueForOptIndex(optInfo.currentIndex, optInfo.opt, xref);\n if (exportValue !== null) {\n return exportValue;\n }\n }\n if (optInfo.stateToIndex.has(state)) {\n const exportValue = this._getExportValueForOptIndex(optInfo.stateToIndex.get(state), optInfo.opt, xref);\n if (exportValue !== null) {\n return exportValue;\n }\n }\n const index = parseInt(state, 10);\n if (Number.isInteger(index) && String(index) === state) {\n return this._getExportValueForOptIndex(index, optInfo.opt, xref) || state;\n }\n return state;\n }\n _processCheckBox(params) {\n const customAppearance = params.dict.get(\"AP\");\n let normalAppearance = customAppearance instanceof Dict ? customAppearance.get(\"N\") : null;\n if (!(normalAppearance instanceof Dict)) {\n normalAppearance = null;\n }\n const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n if (typeof asValue === \"string\") {\n this.data.fieldValue = asValue;\n }\n const yes = this.data.fieldValue !== null && this.data.fieldValue !== \"Off\" ? this.data.fieldValue : \"Yes\";\n const exportValues = normalAppearance ? [...normalAppearance.getKeys()] : [];\n if (exportValues.length === 0) {\n exportValues.push(\"Off\", yes);\n } else if (exportValues.length === 1) {\n if (exportValues[0] === \"Off\") {\n exportValues.push(yes);\n } else {\n exportValues.unshift(\"Off\");\n }\n } else if (exportValues.includes(yes)) {\n exportValues.length = 0;\n exportValues.push(\"Off\", yes);\n } else {\n const otherYes = exportValues.find(v => v !== \"Off\");\n exportValues.length = 0;\n exportValues.push(\"Off\", otherYes);\n }\n const onState = exportValues[1];\n this._onStateName = onState;\n const opt = getInheritableProperty({\n dict: params.dict,\n key: \"Opt\"\n });\n const optInfo = this._getOptInfo(params.dict, onState, opt, params.xref);\n this.data.exportValue = this._getExportValue(onState, optInfo, params.xref);\n if (!exportValues.includes(this.data.fieldValue) && this.data.fieldValue !== this.data.exportValue) {\n this.data.fieldValue = \"Off\";\n }\n this.data.fieldValue = this._getExportValue(this.data.fieldValue, optInfo, params.xref);\n this.data.defaultFieldValue = this._getExportValue(this.data.defaultFieldValue, optInfo, params.xref);\n const checkedAppearance = normalAppearance?.get(onState);\n this.checkedAppearance = checkedAppearance instanceof BaseStream ? checkedAppearance : null;\n const uncheckedAppearance = normalAppearance?.get(\"Off\");\n this.uncheckedAppearance = uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"check\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n if (this.data.defaultFieldValue === null) {\n this.data.defaultFieldValue = \"Off\";\n }\n }\n _processRadioButton(params) {\n this.data.buttonValue = null;\n const fieldParent = params.dict.get(\"Parent\");\n if (fieldParent instanceof Dict) {\n this.parent = params.dict.getRaw(\"Parent\");\n const fieldParentValue = fieldParent.get(\"V\");\n if (fieldParentValue instanceof Name) {\n this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n }\n }\n const appearanceStates = params.dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n const normalAppearance = appearanceStates.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n let onState = null;\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n onState = key;\n break;\n }\n }\n this._onStateName = onState;\n const opt = getInheritableProperty({\n dict: params.dict,\n key: \"Opt\"\n });\n const optInfo = this._getOptInfo(params.dict, onState, opt, params.xref);\n this.data.buttonValue = this._getExportValue(onState, optInfo, params.xref);\n this.data.fieldValue = this._getExportValue(this.data.fieldValue, optInfo, params.xref);\n this.data.defaultFieldValue = this._getExportValue(this.data.defaultFieldValue, optInfo, params.xref);\n const checkedAppearance = normalAppearance.get(onState);\n this.checkedAppearance = checkedAppearance instanceof BaseStream ? checkedAppearance : null;\n const uncheckedAppearance = normalAppearance.get(\"Off\");\n this.uncheckedAppearance = uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"disc\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n if (this.data.defaultFieldValue === null) {\n this.data.defaultFieldValue = \"Off\";\n }\n }\n _processPushButton(params) {\n const {\n dict,\n annotationGlobals\n } = params;\n if (!dict.has(\"A\") && !dict.has(\"AA\") && !this.data.alternativeText) {\n warn(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n this.data.isTooltipOnly = !dict.has(\"A\") && !dict.has(\"AA\");\n Catalog.parseDestDictionary({\n destDict: dict,\n resultObj: this.data,\n docBaseUrl: annotationGlobals.baseUrl,\n docAttachments: annotationGlobals.attachments\n });\n }\n getFieldObject() {\n let type = \"button\";\n let exportValues;\n if (this.data.checkBox) {\n type = \"checkbox\";\n exportValues = this.data.exportValue;\n } else if (this.data.radioButton) {\n type = \"radiobutton\";\n exportValues = this.data.buttonValue;\n }\n return {\n id: this.data.id,\n value: this.data.fieldValue || \"Off\",\n defaultValue: this.data.defaultFieldValue,\n exportValues,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n rotation: this.rotation,\n type\n };\n }\n get fallbackFontDict() {\n const dict = new Dict();\n dict.setIfName(\"BaseFont\", \"ZapfDingbats\");\n dict.setIfName(\"Type\", \"FallbackType\");\n dict.setIfName(\"Subtype\", \"FallbackType\");\n dict.setIfName(\"Encoding\", \"ZapfDingbatsEncoding\");\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.indices = dict.getArray(\"I\");\n this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0;\n this.data.options = [];\n const options = getInheritableProperty({\n dict,\n key: \"Opt\"\n });\n if (Array.isArray(options)) {\n for (let i = 0, ii = options.length; i < ii; i++) {\n const option = xref.fetchIfRef(options[i]);\n const isOptionArray = Array.isArray(option);\n this.data.options[i] = {\n exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option),\n displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option)\n };\n }\n }\n if (!this.hasIndices) {\n if (typeof this.data.fieldValue === \"string\") {\n this.data.fieldValue = [this.data.fieldValue];\n } else {\n this.data.fieldValue ||= [];\n }\n } else {\n this.data.fieldValue = [];\n const ii = this.data.options.length;\n for (const i of this.indices) {\n if (Number.isInteger(i) && i >= 0 && i < ii) {\n this.data.fieldValue.push(this.data.options[i].exportValue);\n }\n }\n }\n if (this.data.options.length === 0 && this.data.fieldValue.length > 0) {\n this.data.options = this.data.fieldValue.map(value => ({\n exportValue: value,\n displayValue: value\n }));\n }\n this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n this._hasText = true;\n }\n getFieldObject() {\n const type = this.data.combo ? \"combobox\" : \"listbox\";\n const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n return {\n id: this.data.id,\n value,\n defaultValue: this.data.defaultFieldValue,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n numItems: this.data.fieldValue.length,\n multipleSelection: this.data.multiSelect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n items: this.data.options,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n rotation: this.rotation,\n type\n };\n }\n amendSavedDict(annotationStorage, dict) {\n if (!this.hasIndices) {\n return;\n }\n let values = annotationStorage?.get(this.data.id)?.value;\n if (!Array.isArray(values)) {\n values = [values];\n }\n const indices = [];\n const {\n options\n } = this.data;\n for (let i = 0, j = 0, ii = options.length; i < ii; i++) {\n if (options[i].exportValue === values[j]) {\n indices.push(i);\n j += 1;\n }\n }\n dict.set(\"I\", indices);\n }\n async _getAppearance(evaluator, task, intent, annotationStorage) {\n if (this.data.combo) {\n return super._getAppearance(evaluator, task, intent, annotationStorage);\n }\n let exportedValue, rotation;\n const storageEntry = annotationStorage?.get(this.data.id);\n if (storageEntry) {\n rotation = storageEntry.rotation;\n exportedValue = storageEntry.value;\n }\n if (rotation === undefined && exportedValue === undefined && !this._needAppearances) {\n return null;\n }\n if (exportedValue === undefined) {\n exportedValue = this.data.fieldValue;\n } else if (!Array.isArray(exportedValue)) {\n exportedValue = [exportedValue];\n }\n const defaultPadding = 1;\n const defaultHPadding = 2;\n let {\n width: totalWidth,\n height: totalHeight\n } = this;\n if (rotation === 90 || rotation === 270) {\n [totalWidth, totalHeight] = [totalHeight, totalWidth];\n }\n const lineCount = this.data.options.length;\n const valueIndices = [];\n for (let i = 0; i < lineCount; i++) {\n const {\n exportValue\n } = this.data.options[i];\n if (exportedValue.includes(exportValue)) {\n valueIndices.push(i);\n }\n }\n if (!this._defaultAppearance) {\n this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = \"/Helvetica 0 Tf 0 g\");\n }\n const font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources);\n let defaultAppearance;\n let {\n fontSize\n } = this.data.defaultAppearanceData;\n if (!fontSize) {\n const lineHeight = (totalHeight - defaultPadding) / lineCount;\n let lineWidth = -1;\n let value;\n for (const {\n displayValue\n } of this.data.options) {\n const width = this._getTextWidth(displayValue, font);\n if (width > lineWidth) {\n lineWidth = width;\n value = displayValue;\n }\n }\n [defaultAppearance, fontSize] = this._computeFontSize(lineHeight, totalWidth - 2 * defaultHPadding, value, font, -1);\n } else {\n defaultAppearance = this._defaultAppearance;\n }\n const lineHeight = fontSize * (/* inlined export .LINE_FACTOR */1.35);\n const vPadding = (lineHeight - fontSize) / 2;\n const numberOfVisibleLines = Math.floor(totalHeight / lineHeight);\n let firstIndex = 0;\n if (valueIndices.length > 0) {\n const minIndex = Math.min(...valueIndices);\n const maxIndex = Math.max(...valueIndices);\n firstIndex = MathClamp(maxIndex - numberOfVisibleLines + 1, 0, minIndex);\n }\n const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount);\n const buf = [\"/Tx BMC q\", `1 1 ${totalWidth} ${totalHeight} re W n`];\n if (valueIndices.length) {\n buf.push(\"0.600006 0.756866 0.854904 rg\");\n for (const index of valueIndices) {\n if (firstIndex <= index && index < end) {\n buf.push(`1 ${totalHeight - (index - firstIndex + 1) * lineHeight} ${totalWidth} ${lineHeight} re f`);\n }\n }\n }\n buf.push(\"BT\", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`);\n const prevInfo = {\n shift: 0\n };\n for (let i = firstIndex; i < end; i++) {\n const {\n displayValue\n } = this.data.options[i];\n const vpadding = i === firstIndex ? vPadding : 0;\n buf.push(this._renderText(displayValue, font, fontSize, totalWidth, 0, prevInfo, defaultHPadding, -lineHeight + vpadding));\n }\n buf.push(\"ET Q EMC\");\n return buf.join(\"\\n\");\n }\n}\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n _hasValueFromXFA = false;\n constructor(params) {\n super(params);\n this.data.fieldValue = null;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = !this.data.hasOwnCanvas;\n }\n getFieldObject() {\n return {\n id: this.data.id,\n value: null,\n page: this.data.pageIndex,\n type: \"signature\"\n };\n }\n}\nclass TextAnnotation extends MarkupAnnotation {\n constructor(params) {\n const DEFAULT_ICON_SIZE = 22;\n super(params);\n this.data.noRotate = true;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n const {\n dict\n } = params;\n if (this.data.hasAppearance) {\n this.data.name = \"NoIcon\";\n } else {\n this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n }\n if (dict.has(\"State\")) {\n this.data.state = dict.get(\"State\") || null;\n this.data.stateModel = dict.get(\"StateModel\") || null;\n } else {\n this.data.state = null;\n this.data.stateModel = null;\n }\n }\n}\nclass LinkAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict,\n annotationGlobals\n } = params;\n this.data.noHTML = false;\n const quadPoints = getQuadPoints(dict, this.rectangle);\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n this.data.borderColor ||= this.data.color;\n Catalog.parseDestDictionary({\n destDict: dict,\n resultObj: this.data,\n docBaseUrl: annotationGlobals.baseUrl,\n docAttachments: annotationGlobals.attachments\n });\n }\n get overlaysTextContent() {\n return true;\n }\n}\nclass PopupAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict\n } = params;\n this.data.noHTML = false;\n if (this.width === 0 || this.height === 0) {\n this.data.rect = null;\n }\n let parentItem = dict.get(\"Parent\");\n if (!parentItem) {\n warn(\"Popup annotation has a missing or invalid parent annotation.\");\n return;\n }\n this.data.parentRect = lookupNormalRect(parentItem.getArray(\"Rect\"), null);\n this.data.creationDate = parentItem.get(\"CreationDate\") || \"\";\n const rt = parentItem.get(\"RT\");\n if (isName(rt, AnnotationReplyType.GROUP)) {\n parentItem = parentItem.get(\"IRT\");\n }\n if (!parentItem.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parentItem.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n if (!parentItem.has(\"C\")) {\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray(\"C\"));\n this.data.color = this.color;\n }\n if (!this.viewable) {\n const parentFlags = parentItem.get(\"F\");\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n this.setTitle(parentItem.get(\"T\"));\n this.data.titleObj = this._title;\n this.setContents(parentItem.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n if (parentItem.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n }\n this.data.open = !!dict.get(\"Open\");\n }\n static createNewDict(annotation, xref, _params) {\n const {\n oldAnnotation,\n rect,\n parent\n } = annotation;\n const popup = oldAnnotation || new Dict(xref);\n popup.setIfNotExists(\"Type\", Name.get(\"Annot\"));\n popup.setIfNotExists(\"Subtype\", Name.get(\"Popup\"));\n popup.setIfNotExists(\"Open\", false);\n popup.setIfArray(\"Rect\", rect);\n popup.set(\"Parent\", parent);\n return popup;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n return null;\n }\n}\nclass FreeTextAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n const {\n annotationGlobals,\n xref\n } = params;\n this.setDefaultAppearance(params);\n this._hasAppearance = !!this.appearance;\n if (this._hasAppearance) {\n const {\n fontColor,\n fontSize\n } = parseAppearanceStream(this.appearance, xref, annotationGlobals.globalColorSpaceCache);\n this.data.defaultAppearanceData.fontColor = fontColor;\n this.data.defaultAppearanceData.fontSize = fontSize || 10;\n } else {\n this.data.defaultAppearanceData.fontSize ||= 10;\n const {\n fontColor,\n fontSize\n } = this.data.defaultAppearanceData;\n if (this._contents.str) {\n this.data.textContent = this._contents.str.split(/\\r\\n?|\\n/).map(line => line.trimEnd());\n const {\n coords,\n bbox,\n matrix\n } = FakeUnicodeFont.getFirstPositionInfo(this.rectangle, this.rotation, fontSize);\n this.data.textPosition = this._transformPoint(coords, bbox, matrix);\n }\n if (this._isOffscreenCanvasSupported) {\n const strokeAlpha = params.dict.get(\"CA\");\n const fakeUnicodeFont = new FakeUnicodeFont(xref, \"sans-serif\");\n this.appearance = fakeUnicodeFont.createAppearance(this._contents.str, this.rectangle, this.rotation, fontSize, fontColor, strokeAlpha);\n this._streams.push(this.appearance);\n } else {\n warn(\"FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.\");\n }\n }\n }\n get hasTextContent() {\n return this._hasAppearance;\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n color,\n date,\n fontSize,\n oldAnnotation,\n rect,\n rotation,\n user,\n value\n } = annotation;\n const freetext = oldAnnotation || new Dict(xref);\n freetext.setIfNotExists(\"Type\", Name.get(\"Annot\"));\n freetext.setIfNotExists(\"Subtype\", Name.get(\"FreeText\"));\n freetext.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate(date)}`);\n if (oldAnnotation) {\n freetext.delete(\"RC\");\n }\n freetext.setIfArray(\"Rect\", rect);\n const da = `/Helv ${fontSize} Tf ${getPdfColor(color, true)}`;\n freetext.set(\"DA\", da);\n freetext.setIfDefined(\"Contents\", stringToAsciiOrUTF16BE(value));\n freetext.setIfNotExists(\"F\", 4);\n freetext.setIfNotExists(\"Border\", [0, 0, 0]);\n freetext.setIfNumber(\"Rotate\", rotation);\n freetext.setIfDefined(\"T\", stringToAsciiOrUTF16BE(user));\n if (apRef || ap) {\n const n = new Dict(xref);\n freetext.set(\"AP\", n);\n n.set(\"N\", apRef || ap);\n }\n return freetext;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n const {\n baseFontRef,\n evaluator,\n task\n } = params;\n const {\n color,\n fontSize,\n rect,\n rotation,\n value\n } = annotation;\n if (!color) {\n return null;\n }\n const resources = new Dict(xref);\n const font = new Dict(xref);\n if (baseFontRef) {\n font.set(\"Helv\", baseFontRef);\n } else {\n const baseFont = new Dict(xref);\n baseFont.setIfName(\"BaseFont\", \"Helvetica\");\n baseFont.setIfName(\"Type\", \"Font\");\n baseFont.setIfName(\"Subtype\", \"Type1\");\n baseFont.setIfName(\"Encoding\", \"WinAnsiEncoding\");\n font.set(\"Helv\", baseFont);\n }\n resources.set(\"Font\", font);\n const helv = await WidgetAnnotation._getFontData(evaluator, task, {\n fontName: \"Helv\",\n fontSize\n }, resources);\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n const lines = value.split(\"\\n\");\n const scale = fontSize / 1000;\n let totalWidth = -Infinity;\n const encodedLines = [];\n for (let line of lines) {\n const encoded = helv.encodeString(line);\n if (encoded.length > 1) {\n return null;\n }\n line = encoded.join(\"\");\n encodedLines.push(line);\n let lineWidth = 0;\n const glyphs = helv.charsToGlyphs(line);\n for (const glyph of glyphs) {\n lineWidth += glyph.width * scale;\n }\n totalWidth = Math.max(totalWidth, lineWidth);\n }\n const hscale = totalWidth > w ? w / totalWidth : 1;\n let vscale = 1;\n const lineHeight = (/* inlined export .LINE_FACTOR */1.35) * fontSize;\n const lineAscent = ((/* inlined export .LINE_FACTOR */1.35) - (/* inlined export .LINE_DESCENT_FACTOR */0.35)) * fontSize;\n const totalHeight = lineHeight * lines.length;\n if (totalHeight > h) {\n vscale = h / totalHeight;\n }\n const fscale = Math.min(hscale, vscale);\n const newFontSize = fontSize * fscale;\n let firstPoint, clipBox, matrix;\n switch (rotation) {\n case 0:\n matrix = [1, 0, 0, 1];\n clipBox = [rect[0], rect[1], w, h];\n firstPoint = [rect[0], rect[3] - lineAscent];\n break;\n case 90:\n matrix = [0, 1, -1, 0];\n clipBox = [rect[1], -rect[2], w, h];\n firstPoint = [rect[1], -rect[0] - lineAscent];\n break;\n case 180:\n matrix = [-1, 0, 0, -1];\n clipBox = [-rect[2], -rect[3], w, h];\n firstPoint = [-rect[2], -rect[1] - lineAscent];\n break;\n case 270:\n matrix = [0, -1, 1, 0];\n clipBox = [-rect[3], rect[0], w, h];\n firstPoint = [-rect[3], rect[2] - lineAscent];\n break;\n }\n const buffer = [\"q\", `${matrix.join(\" \")} 0 0 cm`, `${clipBox.join(\" \")} re W n`, `BT`, `${getPdfColor(color, true)}`, `0 Tc /Helv ${numberToString(newFontSize)} Tf`];\n buffer.push(`${firstPoint.join(\" \")} Td (${escapeString(encodedLines[0])}) Tj`);\n const vShift = numberToString(lineHeight);\n for (let i = 1, ii = encodedLines.length; i < ii; i++) {\n const line = encodedLines[i];\n buffer.push(`0 -${vShift} Td (${escapeString(line)}) Tj`);\n }\n buffer.push(\"ET\", \"Q\");\n const appearance = buffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Resources\", resources);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, -rect[0], -rect[1]]);\n return new StringStream(appearance, appearanceStreamDict);\n }\n}\nclass LineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n const lineCoordinates = lookupRect(dict.getArray(\"L\"), [0, 0, 0, 0]);\n this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n this.setLineEndings(dict.getArray(\"LE\"));\n this.data.lineEndings = this.lineEndings;\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n const fillColor = getPdfColorArray(interiorColor);\n const fillAlpha = fillColor ? strokeAlpha : null;\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust];\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} ${lineCoordinates[3]} l`, \"S\");\n return [points[0] - borderWidth, points[7] - borderWidth, points[2] + borderWidth, points[3] + borderWidth];\n }\n });\n }\n }\n}\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n const fillColor = getPdfColorArray(interiorColor);\n const fillAlpha = fillColor ? strokeAlpha : null;\n if (this.borderStyle.width === 0 && !fillColor) {\n return;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x = points[4] + this.borderStyle.width / 2;\n const y = points[5] + this.borderStyle.width / 2;\n const width = points[6] - points[4] - this.borderStyle.width;\n const height = points[3] - points[7] - this.borderStyle.width;\n buffer.push(`${x} ${y} ${width} ${height} re`);\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n }\n}\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n const fillColor = getPdfColorArray(interiorColor);\n const fillAlpha = fillColor ? strokeAlpha : null;\n if (this.borderStyle.width === 0 && !fillColor) {\n return;\n }\n const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4));\n this._setDefaultAppearance({\n xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x0 = points[0] + this.borderStyle.width / 2;\n const y0 = points[1] - this.borderStyle.width / 2;\n const x1 = points[6] - this.borderStyle.width / 2;\n const y1 = points[7] + this.borderStyle.width / 2;\n const xMid = x0 + (x1 - x0) / 2;\n const yMid = y0 + (y1 - y0) / 2;\n const xOffset = (x1 - x0) / 2 * controlPointsDistance;\n const yOffset = (y1 - y0) / 2 * controlPointsDistance;\n buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, \"h\");\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n }\n}\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n this.data.vertices = null;\n if (!(this instanceof PolygonAnnotation)) {\n this.setLineEndings(dict.getArray(\"LE\"));\n this.data.lineEndings = this.lineEndings;\n }\n const rawVertices = dict.getArray(\"Vertices\");\n if (!isNumberArray(rawVertices, null)) {\n return;\n }\n const vertices = this.data.vertices = Float32Array.from(rawVertices);\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n let fillColor = getRgbColor(dict.getArray(\"IC\"), null);\n fillColor &&= getPdfColorArray(fillColor);\n let operator;\n if (fillColor) {\n if (this.color) {\n operator = fillColor.every((c, i) => c === strokeColor[i]) ? \"f\" : \"B\";\n } else {\n operator = \"f\";\n }\n } else {\n operator = \"S\";\n }\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n const bbox = BBOX_INIT.slice();\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n Util.rectBoundingBox(vertices[i] - borderAdjust, vertices[i + 1] - borderAdjust, vertices[i] + borderAdjust, vertices[i + 1] + borderAdjust, bbox);\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n fillColor,\n fillAlpha: fillColor ? strokeAlpha : null,\n pointsCallback: (buffer, points) => {\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n buffer.push(`${vertices[i]} ${vertices[i + 1]} ${i === 0 ? \"m\" : \"l\"}`);\n }\n buffer.push(operator);\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n }\n}\nclass PolygonAnnotation extends PolylineAnnotation {}\nclass CaretAnnotation extends MarkupAnnotation {}\nclass InkAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n const {\n dict,\n xref\n } = params;\n this.data.inkLists = [];\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n this.data.opacity = dict.get(\"CA\") || 1;\n const rawInkLists = dict.getArray(\"InkList\");\n if (!Array.isArray(rawInkLists)) {\n return;\n }\n for (const rawInkList of rawInkLists) {\n if (!Array.isArray(rawInkList)) {\n continue;\n }\n const inkList = new Float32Array(rawInkList.length);\n this.data.inkLists.push(inkList);\n for (let j = 0, jj = rawInkList.length; j < jj; j += 2) {\n const x = xref.fetchIfRef(rawInkList[j]),\n y = xref.fetchIfRef(rawInkList[j + 1]);\n if (typeof x === \"number\" && typeof y === \"number\") {\n inkList[j] = x;\n inkList[j + 1] = y;\n }\n }\n }\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n const bbox = BBOX_INIT.slice();\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n Util.rectBoundingBox(inkList[i] - borderAdjust, inkList[i + 1] - borderAdjust, inkList[i] + borderAdjust, inkList[i + 1] + borderAdjust, bbox);\n }\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n buffer.push(`${inkList[i]} ${inkList[i + 1]} ${i === 0 ? \"m\" : \"l\"}`);\n }\n buffer.push(\"S\");\n }\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n oldAnnotation,\n color,\n date,\n opacity,\n paths,\n outlines,\n rect,\n rotation,\n thickness,\n user\n } = annotation;\n const ink = oldAnnotation || new Dict(xref);\n ink.setIfNotExists(\"Type\", Name.get(\"Annot\"));\n ink.setIfNotExists(\"Subtype\", Name.get(\"Ink\"));\n ink.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate(date)}`);\n ink.setIfArray(\"Rect\", rect);\n ink.setIfArray(\"InkList\", outlines?.points || paths?.points);\n ink.setIfNotExists(\"F\", 4);\n ink.setIfNumber(\"Rotate\", rotation);\n ink.setIfDefined(\"T\", stringToAsciiOrUTF16BE(user));\n if (outlines) {\n ink.setIfName(\"IT\", \"InkHighlight\");\n }\n if (thickness > 0) {\n const bs = new Dict(xref);\n ink.set(\"BS\", bs);\n bs.set(\"W\", thickness);\n }\n ink.setIfArray(\"C\", getPdfColorArray(color));\n ink.setIfNumber(\"CA\", opacity);\n if (ap || apRef) {\n const n = new Dict(xref);\n ink.set(\"AP\", n);\n n.set(\"N\", apRef || ap);\n }\n return ink;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n if (annotation.outlines) {\n return this.createNewAppearanceStreamForHighlight(annotation, xref, params);\n }\n const {\n color,\n rect,\n paths,\n thickness,\n opacity\n } = annotation;\n if (!color) {\n return null;\n }\n const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${getPdfColor(color, false)}`];\n if (opacity !== 1) {\n appearanceBuffer.push(\"/R0 gs\");\n }\n for (const outline of paths.lines) {\n writeLineToCurveToAppearance(outline, appearanceBuffer, true);\n }\n appearanceBuffer.push(\"S\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n if (opacity !== 1) {\n const resources = new Dict(xref);\n const extGState = new Dict(xref);\n const r0 = new Dict(xref);\n r0.set(\"CA\", opacity);\n r0.setIfName(\"Type\", \"ExtGState\");\n extGState.set(\"R0\", r0);\n resources.set(\"ExtGState\", extGState);\n appearanceStreamDict.set(\"Resources\", resources);\n }\n return new StringStream(appearance, appearanceStreamDict);\n }\n static async createNewAppearanceStreamForHighlight(annotation, xref, params) {\n const {\n color,\n rect,\n outlines: {\n outline\n },\n opacity\n } = annotation;\n if (!color) {\n return null;\n }\n const appearanceBuffer = [`${getPdfColor(color, true)}`, \"/R0 gs\"];\n writeLineToCurveToAppearance(outline, appearanceBuffer);\n appearanceBuffer.push(\"h f\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n const resources = new Dict(xref);\n const extGState = new Dict(xref);\n resources.set(\"ExtGState\", extGState);\n appearanceStreamDict.set(\"Resources\", resources);\n const r0 = new Dict(xref);\n extGState.set(\"R0\", r0);\n r0.setIfName(\"BM\", \"Multiply\");\n if (opacity !== 1) {\n r0.set(\"ca\", opacity);\n r0.setIfName(\"Type\", \"ExtGState\");\n }\n return new StringStream(appearance, appearanceStreamDict);\n }\n}\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n this.data.opacity = dict.get(\"CA\") || 1;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const fillColor = getPdfColorArray(this.color, [1, 1, 0]);\n const fillAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n fillColor,\n blendMode: \"Multiply\",\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${points[0]} ${points[1]} m`, `${points[2]} ${points[3]} l`, `${points[6]} ${points[7]} l`, `${points[4]} ${points[5]} l`, \"f\");\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n get overlaysTextContent() {\n return true;\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n color,\n date,\n oldAnnotation,\n opacity,\n rect,\n rotation,\n user,\n quadPoints\n } = annotation;\n const highlight = oldAnnotation || new Dict(xref);\n highlight.setIfNotExists(\"Type\", Name.get(\"Annot\"));\n highlight.setIfNotExists(\"Subtype\", Name.get(\"Highlight\"));\n highlight.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate(date)}`);\n highlight.setIfArray(\"Rect\", rect);\n highlight.setIfNotExists(\"F\", 4);\n highlight.setIfNotExists(\"Border\", [0, 0, 0]);\n highlight.setIfNumber(\"Rotate\", rotation);\n highlight.setIfArray(\"QuadPoints\", quadPoints);\n highlight.setIfArray(\"C\", getPdfColorArray(color));\n highlight.setIfNumber(\"CA\", opacity);\n highlight.setIfDefined(\"T\", stringToAsciiOrUTF16BE(user));\n if (apRef || ap) {\n const n = new Dict(xref);\n highlight.set(\"AP\", n);\n n.set(\"N\", apRef || ap);\n }\n return highlight;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n const {\n color,\n rect,\n outlines,\n opacity\n } = annotation;\n if (!color) {\n return null;\n }\n const appearanceBuffer = [`${getPdfColor(color, true)}`, \"/R0 gs\"];\n const buffer = [];\n for (const outline of outlines) {\n buffer.length = 0;\n buffer.push(`${numberToString(outline[0])} ${numberToString(outline[1])} m`);\n for (let i = 2, ii = outline.length; i < ii; i += 2) {\n buffer.push(`${numberToString(outline[i])} ${numberToString(outline[i + 1])} l`);\n }\n buffer.push(\"h\");\n appearanceBuffer.push(buffer.join(\"\\n\"));\n }\n appearanceBuffer.push(\"f*\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n const resources = new Dict(xref);\n const extGState = new Dict(xref);\n resources.set(\"ExtGState\", extGState);\n appearanceStreamDict.set(\"Resources\", resources);\n const r0 = new Dict(xref);\n extGState.set(\"R0\", r0);\n r0.setIfName(\"BM\", \"Multiply\");\n if (opacity !== 1) {\n r0.set(\"ca\", opacity);\n r0.setIfName(\"Type\", \"ExtGState\");\n }\n return new StringStream(appearance, appearanceStreamDict);\n }\n}\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 0.571 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${points[4]} ${points[5] + 1.3} m`, `${points[6]} ${points[7] + 1.3} l`, \"S\");\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n get overlaysTextContent() {\n return true;\n }\n}\nclass SquigglyAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const dy = (points[1] - points[5]) / 6;\n let shift = dy;\n let x = points[4];\n const y = points[5];\n const xEnd = points[6];\n buffer.push(`${x} ${y + shift} m`);\n do {\n x += 2;\n shift = shift === 0 ? dy : 0;\n buffer.push(`${x} ${y + shift} l`);\n } while (x < xEnd);\n buffer.push(\"S\");\n return [points[4], y - 2 * dy, xEnd, y + 2 * dy];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n get overlaysTextContent() {\n return true;\n }\n}\nclass StrikeOutAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${(points[0] + points[4]) / 2} ` + `${(points[1] + points[5]) / 2} m`, `${(points[2] + points[6]) / 2} ` + `${(points[3] + points[7]) / 2} l`, \"S\");\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n get overlaysTextContent() {\n return true;\n }\n}\nclass StampAnnotation extends MarkupAnnotation {\n #savedHasOwnCanvas = null;\n constructor(params) {\n super(params);\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n }\n mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\n if (isEditing) {\n if (!this.data.isEditable) {\n return true;\n }\n this.#savedHasOwnCanvas ??= this.data.hasOwnCanvas;\n this.data.hasOwnCanvas = true;\n return true;\n }\n if (this.#savedHasOwnCanvas !== null) {\n this.data.hasOwnCanvas = this.#savedHasOwnCanvas;\n this.#savedHasOwnCanvas = null;\n }\n return !modifiedIds?.has(this.data.id);\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n date,\n oldAnnotation,\n rect,\n rotation,\n user\n } = annotation;\n const stamp = oldAnnotation || new Dict(xref);\n stamp.setIfNotExists(\"Type\", Name.get(\"Annot\"));\n stamp.setIfNotExists(\"Subtype\", Name.get(\"Stamp\"));\n stamp.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate(date)}`);\n stamp.setIfArray(\"Rect\", rect);\n stamp.setIfNotExists(\"F\", 4);\n stamp.setIfNotExists(\"Border\", [0, 0, 0]);\n stamp.setIfNumber(\"Rotate\", rotation);\n stamp.setIfDefined(\"T\", stringToAsciiOrUTF16BE(user));\n if (apRef || ap) {\n const n = new Dict(xref);\n stamp.set(\"AP\", n);\n n.set(\"N\", apRef || ap);\n }\n return stamp;\n }\n static async #createNewAppearanceStreamForDrawing(annotation, xref) {\n const {\n areContours,\n color,\n rect,\n lines,\n thickness\n } = annotation;\n if (!color) {\n return null;\n }\n const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${getPdfColor(color, areContours)}`];\n for (const line of lines) {\n writeLineToCurveToAppearance(line, appearanceBuffer, true);\n }\n appearanceBuffer.push(areContours ? \"F\" : \"S\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n return new StringStream(appearance, appearanceStreamDict);\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n if (annotation.oldAnnotation) {\n return null;\n }\n if (annotation.isSignature) {\n return this.#createNewAppearanceStreamForDrawing(annotation, xref);\n }\n const {\n rotation\n } = annotation;\n const {\n imageRef,\n width,\n height\n } = params.image;\n const resources = new Dict(xref);\n const xobject = new Dict(xref);\n resources.set(\"XObject\", xobject);\n xobject.set(\"Im0\", imageRef);\n const appearance = `q ${width} 0 0 ${height} 0 0 cm /Im0 Do Q`;\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", [0, 0, width, height]);\n appearanceStreamDict.set(\"Resources\", resources);\n if (rotation) {\n const matrix = getRotationMatrix(rotation, width, height);\n appearanceStreamDict.set(\"Matrix\", matrix);\n }\n return new StringStream(appearance, appearanceStreamDict);\n }\n}\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n annotationGlobals,\n dict\n } = params;\n const fsDict = dict.get(\"FS\");\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n this.data.fileId = this._getAttachmentId(fsDict, dict.getRaw(\"FS\"), annotationGlobals);\n this.data.file = new FileSpec(fsDict).serializable;\n const name = dict.get(\"Name\");\n this.data.name = name instanceof Name ? stringToPDFString(name.name) : \"PushPin\";\n const fillAlpha = dict.get(\"ca\");\n this.data.fillAlpha = typeof fillAlpha === \"number\" && fillAlpha >= 0 && fillAlpha <= 1 ? fillAlpha : null;\n }\n}\nclass MediaAnnotation extends Annotation {\n static #MEDIA_MIME_TYPE_RE = /^(?:video|audio)\\//;\n constructor(params) {\n super(params);\n this.data.noHTML = true;\n }\n _setMediaData({\n assetRef,\n assetDict,\n filename,\n contentType,\n wrapSound = false\n }, annotationGlobals) {\n this.data.noHTML = false;\n this.data.richMedia = {\n fileId: this._getAttachmentId(assetDict, assetRef, annotationGlobals, wrapSound),\n filename,\n contentType\n };\n }\n static _getContentType(assetDict, filename, contentType = null) {\n if (typeof contentType === \"string\" && MediaAnnotation.#MEDIA_MIME_TYPE_RE.test(contentType)) {\n return contentType;\n }\n const stream = FileSpec.pickPlatformItem(assetDict.get(\"EF\"));\n const subtype = stream instanceof BaseStream ? stream.dict?.get(\"Subtype\") : null;\n if (subtype instanceof Name && MediaAnnotation.#MEDIA_MIME_TYPE_RE.test(subtype.name)) {\n return subtype.name;\n }\n const ext = filename.split(\".\").at(-1)?.toLowerCase();\n switch (ext) {\n case \"mp4\":\n case \"m4v\":\n return \"video/mp4\";\n case \"webm\":\n return \"video/webm\";\n case \"ogv\":\n return \"video/ogg\";\n case \"mov\":\n return \"video/quicktime\";\n case \"mp3\":\n return \"audio/mpeg\";\n case \"m4a\":\n return \"audio/mp4\";\n case \"wav\":\n return \"audio/wav\";\n case \"oga\":\n case \"ogg\":\n return \"audio/ogg\";\n default:\n return null;\n }\n }\n}\nclass RichMediaAnnotation extends MediaAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref,\n annotationGlobals\n } = params;\n const content = dict.get(\"RichMediaContent\");\n if (!(content instanceof Dict)) {\n return;\n }\n const asset = RichMediaAnnotation.#findAsset(content, xref);\n if (!asset) {\n warn(\"RichMedia annotation has no playable asset.\");\n return;\n }\n this._setMediaData(asset, annotationGlobals);\n }\n static #findAsset(content, xref) {\n const configurations = content.get(\"Configurations\");\n if (!Array.isArray(configurations)) {\n return null;\n }\n for (const configRef of configurations) {\n const config = xref.fetchIfRef(configRef);\n if (!(config instanceof Dict)) {\n continue;\n }\n const instances = config.get(\"Instances\");\n if (!Array.isArray(instances)) {\n continue;\n }\n for (const instanceRef of instances) {\n const instance = xref.fetchIfRef(instanceRef);\n if (!(instance instanceof Dict)) {\n continue;\n }\n if (isName(instance.get(\"Subtype\"), \"Flash\")) {\n continue;\n }\n const rawAsset = instance.getRaw(\"Asset\");\n const asset = xref.fetchIfRef(rawAsset);\n if (!(asset instanceof Dict)) {\n continue;\n }\n if (!FileSpec.hasEmbeddedFile(asset)) {\n continue;\n }\n const {\n filename\n } = new FileSpec(asset).serializable;\n const contentType = MediaAnnotation._getContentType(asset, filename);\n if (!contentType) {\n continue;\n }\n return {\n assetRef: rawAsset instanceof Ref ? rawAsset : null,\n assetDict: asset,\n filename,\n contentType\n };\n }\n }\n return null;\n }\n}\nclass ScreenAnnotation extends MediaAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref,\n annotationGlobals\n } = params;\n const asset = ScreenAnnotation.#findAsset(dict, xref);\n if (!asset) {\n return;\n }\n this._setMediaData(asset, annotationGlobals);\n }\n static #findAsset(dict, xref) {\n for (const action of this.#renditionActions(dict)) {\n const asset = this.#findRenditionAsset(action.get(\"R\"), xref, new RefSet());\n if (asset) {\n return asset;\n }\n }\n return null;\n }\n static *#renditionActions(dict) {\n const action = dict.get(\"A\");\n if (action instanceof Dict && isName(action.get(\"S\"), \"Rendition\") && this.#isPlayAction(action)) {\n yield action;\n }\n const additionalActions = dict.get(\"AA\");\n if (additionalActions instanceof Dict) {\n for (const [, aa] of additionalActions) {\n if (aa instanceof Dict && isName(aa.get(\"S\"), \"Rendition\") && this.#isPlayAction(aa)) {\n yield aa;\n }\n }\n }\n }\n static #isPlayAction(action) {\n const operation = action.get(\"OP\");\n return operation === undefined || operation === AnnotationRenditionOperation.PLAY_OR_RESUME || operation === AnnotationRenditionOperation.PLAY;\n }\n static #findRenditionAsset(rendition, xref, seen) {\n if (!(rendition instanceof Dict)) {\n return null;\n }\n const subtype = rendition.get(\"S\");\n if (isName(subtype, \"MR\")) {\n return this.#findClipAsset(rendition.get(\"C\"), xref);\n }\n if (isName(subtype, \"SR\")) {\n const renditions = rendition.get(\"R\");\n if (Array.isArray(renditions)) {\n for (const ref of renditions) {\n if (ref instanceof Ref) {\n if (seen.has(ref)) {\n continue;\n }\n seen.put(ref);\n }\n const asset = this.#findRenditionAsset(xref.fetchIfRef(ref), xref, seen);\n if (asset) {\n return asset;\n }\n }\n }\n }\n return null;\n }\n static #findClipAsset(clip, xref) {\n if (!(clip instanceof Dict) || !isName(clip.get(\"S\"), \"MCD\")) {\n return null;\n }\n const rawData = clip.getRaw(\"D\");\n const data = xref.fetchIfRef(rawData);\n const contentTypeHint = clip.get(\"CT\");\n let explicitType = typeof contentTypeHint === \"string\" ? contentTypeHint : null;\n let assetDict, filename;\n if (data instanceof BaseStream) {\n assetDict = data.dict;\n const name = clip.get(\"N\");\n filename = typeof name === \"string\" ? stringToPDFString(name) : \"\";\n if (!explicitType) {\n const subtype = data.dict.get(\"Subtype\");\n if (subtype instanceof Name) {\n explicitType = subtype.name;\n }\n }\n } else if (data instanceof Dict) {\n if (!FileSpec.hasEmbeddedFile(data)) {\n return null;\n }\n assetDict = data;\n ({\n filename\n } = new FileSpec(data).serializable);\n } else {\n return null;\n }\n const contentType = MediaAnnotation._getContentType(assetDict, filename, explicitType);\n if (!contentType) {\n return null;\n }\n return {\n assetRef: rawData instanceof Ref ? rawData : null,\n assetDict,\n filename,\n contentType\n };\n }\n}\nclass SoundAnnotation extends MediaAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref,\n annotationGlobals\n } = params;\n const soundRef = dict.getRaw(\"Sound\");\n if (!(soundRef instanceof Ref)) {\n return;\n }\n let sound;\n try {\n sound = xref.fetch(soundRef);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`SoundAnnotation: \"${ex}\".`);\n return;\n }\n if (!(sound instanceof BaseStream) || !getSoundFormat(sound.dict)) {\n return;\n }\n this._setMediaData({\n assetRef: soundRef,\n assetDict: sound.dict,\n filename: \"sound.wav\",\n contentType: \"audio/wav\",\n wrapSound: true\n }, annotationGlobals);\n }\n}\n\n;// ./src/core/calculate_md5.js\n\nconst PARAMS = {\n get r() {\n return shadow(this, \"r\", 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]));\n },\n get k() {\n return shadow(this, \"k\", 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]));\n }\n};\nfunction calculateMD5(data, offset, length) {\n let h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n const paddedLength = length + 72 & ~63;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n if (i < n) {\n i = n;\n }\n padded[i++] = length << 3 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >>> 29 & 0xff;\n i += 3;\n const w = new Int32Array(16);\n const {\n k,\n r\n } = PARAMS;\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24;\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n f,\n g;\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n f = b & c | ~b & d;\n g = j;\n } else if (j < 32) {\n f = d & b | ~d & c;\n g = 5 * j + 1 & 15;\n } else if (j < 48) {\n f = b ^ c ^ d;\n g = 3 * j + 5 & 15;\n } else {\n f = c ^ (b | ~d);\n g = 7 * j & 15;\n }\n const tmp = d,\n rotateArg = a + f + k[j] + w[g] | 0,\n rotate = r[j];\n d = c;\n c = b;\n b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0;\n a = tmp;\n }\n h0 = h0 + a | 0;\n h1 = h1 + b | 0;\n h2 = h2 + c | 0;\n h3 = h3 + d | 0;\n }\n return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);\n}\n\n;// ./src/core/dataset_reader.js\n\n\n\nfunction decodeString(str) {\n try {\n return stringToUTF8String(str);\n } catch (ex) {\n warn(`UTF-8 decoding failed: \"${ex}\".`);\n return str;\n }\n}\nclass DatasetXMLParser extends SimpleXMLParser {\n node = null;\n onEndElement(name) {\n const node = super.onEndElement(name);\n if (node && name === \"xfa:datasets\") {\n this.node = node;\n throw new Error(\"Aborting DatasetXMLParser.\");\n }\n }\n}\nclass DatasetReader {\n constructor(data) {\n if (data.datasets) {\n this.node = new SimpleXMLParser({\n hasAttributes: true\n }).parseFromString(data.datasets).documentElement;\n } else {\n const parser = new DatasetXMLParser({\n hasAttributes: true\n });\n try {\n parser.parseFromString(data[\"xdp:xdp\"]);\n } catch {}\n this.node = parser.node;\n }\n }\n getValue(path) {\n if (!this.node || !path) {\n return \"\";\n }\n const node = this.node.searchNode(parseXFAPath(path), 0);\n if (!node) {\n return \"\";\n }\n const first = node.firstChild;\n if (first?.nodeName === \"value\") {\n return node.children.map(child => decodeString(child.textContent));\n }\n return decodeString(node.textContent);\n }\n}\n\n;// ./src/core/intersector.js\nclass SingleIntersector {\n #annotation;\n minX = Infinity;\n minY = Infinity;\n maxX = -Infinity;\n maxY = -Infinity;\n #quadPoints = null;\n #text = [];\n #extraChars = [];\n #lastIntersectingQuadIndex = -1;\n #canTakeExtraChars = false;\n constructor(annotation) {\n this.#annotation = annotation;\n const quadPoints = annotation.data.quadPoints;\n if (!quadPoints) {\n [this.minX, this.minY, this.maxX, this.maxY] = annotation.data.rect;\n return;\n }\n for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {\n this.minX = Math.min(this.minX, quadPoints[i]);\n this.maxX = Math.max(this.maxX, quadPoints[i + 2]);\n this.minY = Math.min(this.minY, quadPoints[i + 5]);\n this.maxY = Math.max(this.maxY, quadPoints[i + 1]);\n }\n if (quadPoints.length > 8) {\n this.#quadPoints = quadPoints;\n }\n }\n #intersects(x, y) {\n if (this.minX >= x || this.maxX <= x || this.minY >= y || this.maxY <= y) {\n return false;\n }\n const quadPoints = this.#quadPoints;\n if (!quadPoints) {\n return true;\n }\n if (this.#lastIntersectingQuadIndex >= 0) {\n const i = this.#lastIntersectingQuadIndex;\n if (!(quadPoints[i] >= x || quadPoints[i + 2] <= x || quadPoints[i + 5] >= y || quadPoints[i + 1] <= y)) {\n return true;\n }\n this.#lastIntersectingQuadIndex = -1;\n }\n for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {\n if (!(quadPoints[i] >= x || quadPoints[i + 2] <= x || quadPoints[i + 5] >= y || quadPoints[i + 1] <= y)) {\n this.#lastIntersectingQuadIndex = i;\n return true;\n }\n }\n return false;\n }\n addGlyph(x, y, glyph) {\n if (!this.#intersects(x, y)) {\n this.disableExtraChars();\n return false;\n }\n if (this.#extraChars.length > 0) {\n this.#text.push(this.#extraChars.join(\"\"));\n this.#extraChars.length = 0;\n }\n this.#text.push(glyph);\n this.#canTakeExtraChars = true;\n return true;\n }\n addExtraChar(char) {\n if (this.#canTakeExtraChars) {\n this.#extraChars.push(char);\n }\n }\n disableExtraChars() {\n if (!this.#canTakeExtraChars) {\n return;\n }\n this.#canTakeExtraChars = false;\n this.#extraChars.length = 0;\n }\n setText() {\n this.#annotation.data.overlaidText = this.#text.join(\"\");\n }\n}\nconst STEPS = 64;\nclass Intersector {\n #intersectors = [];\n #grid = [];\n #minX;\n #maxX;\n #minY;\n #maxY;\n #invXRatio;\n #invYRatio;\n constructor(annotations) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n const intersectors = this.#intersectors;\n for (const annotation of annotations) {\n if (!annotation.data.quadPoints && !annotation.data.rect) {\n continue;\n }\n const intersector = new SingleIntersector(annotation);\n intersectors.push(intersector);\n minX = Math.min(minX, intersector.minX);\n minY = Math.min(minY, intersector.minY);\n maxX = Math.max(maxX, intersector.maxX);\n maxY = Math.max(maxY, intersector.maxY);\n }\n this.#minX = minX;\n this.#minY = minY;\n this.#maxX = maxX;\n this.#maxY = maxY;\n this.#invXRatio = (STEPS - 1) / (maxX - minX);\n this.#invYRatio = (STEPS - 1) / (maxY - minY);\n for (const intersector of intersectors) {\n const iMin = this.#getGridIndex(intersector.minX, intersector.minY);\n const iMax = this.#getGridIndex(intersector.maxX, intersector.maxY);\n const w = (iMax - iMin) % STEPS;\n const h = Math.floor((iMax - iMin) / STEPS);\n for (let i = iMin; i <= iMin + h * STEPS; i += STEPS) {\n for (let j = 0; j <= w; j++) {\n (this.#grid[i + j] ??= []).push(intersector);\n }\n }\n }\n }\n #getGridIndex(x, y) {\n const i = Math.floor((x - this.#minX) * this.#invXRatio);\n const j = Math.floor((y - this.#minY) * this.#invYRatio);\n return i + j * STEPS;\n }\n addGlyph(transform, width, height, glyph) {\n const x = transform[4] + width / 2;\n const y = transform[5] + height / 2;\n if (x < this.#minX || y < this.#minY || x > this.#maxX || y > this.#maxY) {\n return;\n }\n const intersectors = this.#grid[this.#getGridIndex(x, y)];\n if (!intersectors) {\n return;\n }\n for (const intersector of intersectors) {\n intersector.addGlyph(x, y, glyph);\n }\n }\n addExtraChar(char) {\n for (const intersector of this.#intersectors) {\n intersector.addExtraChar(char);\n }\n }\n setText() {\n for (const intersector of this.#intersectors) {\n intersector.setText();\n }\n }\n}\n\n;// ./src/core/calculate_sha_other.js\n\nclass Word64 {\n constructor(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n and(word) {\n this.high &= word.high;\n this.low &= word.low;\n }\n xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n }\n shiftRight(places) {\n this.low = this.low >>> places | this.high << 32 - places;\n this.high = this.high >>> places | 0;\n }\n rotateRight(places) {\n let low, high;\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n places &= 31;\n this.low = low >>> places | high << 32 - places;\n this.high = high >>> places | low << 32 - places;\n }\n not() {\n this.high = ~this.high;\n this.low = ~this.low;\n }\n add(word) {\n const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n let highAdd = (this.high >>> 0) + (word.high >>> 0);\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n }\n copyTo(bytes, offset) {\n bytes[offset] = this.high >>> 24 & 0xff;\n bytes[offset + 1] = this.high >> 16 & 0xff;\n bytes[offset + 2] = this.high >> 8 & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = this.low >>> 24 & 0xff;\n bytes[offset + 5] = this.low >> 16 & 0xff;\n bytes[offset + 6] = this.low >> 8 & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n }\n assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n}\nconst calculate_sha_other_PARAMS = {\n get k() {\n return shadow(this, \"k\", [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]);\n }\n};\nfunction ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n}\nfunction maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n}\nfunction sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n}\nfunction sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n}\nfunction littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n}\nfunction littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n}\nfunction calculateSHA512(data, offset, length, mode384 = false) {\n let h0, h1, h2, h3, h4, h5, h6, h7;\n if (!mode384) {\n h0 = new Word64(0x6a09e667, 0xf3bcc908);\n h1 = new Word64(0xbb67ae85, 0x84caa73b);\n h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new Word64(0x510e527f, 0xade682d1);\n h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new Word64(0x5be0cd19, 0x137e2179);\n } else {\n h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new Word64(0x629a292a, 0x367cd507);\n h2 = new Word64(0x9159015a, 0x3070dd17);\n h3 = new Word64(0x152fecd8, 0xf70e5939);\n h4 = new Word64(0x67332667, 0xffc00b31);\n h5 = new Word64(0x8eb44a87, 0x68581511);\n h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n }\n const paddedLength = Math.ceil((length + 17) / 128) * 128;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 16;\n if (i < n) {\n i = n;\n }\n i += 11;\n padded[i++] = length >>> 29 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length << 3 & 0xff;\n const w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n const {\n k\n } = calculate_sha_other_PARAMS;\n let a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n let d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n let g = new Word64(0, 0),\n h = new Word64(0, 0);\n const t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n const tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0);\n let tmp3;\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7];\n i += 8;\n }\n for (j = 16; j < 80; ++j) {\n tmp3 = w[j];\n littleSigmaPrime(tmp3, w[j - 2], tmp2);\n tmp3.add(w[j - 7]);\n littleSigma(tmp1, w[j - 15], tmp2);\n tmp3.add(tmp1);\n tmp3.add(w[j - 16]);\n }\n a.assign(h0);\n b.assign(h1);\n c.assign(h2);\n d.assign(h3);\n e.assign(h4);\n f.assign(h5);\n g.assign(h6);\n h.assign(h7);\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n sigmaPrime(tmp1, e, tmp2);\n t1.add(tmp1);\n ch(tmp1, e, f, g, tmp2);\n t1.add(tmp1);\n t1.add(k[j]);\n t1.add(w[j]);\n sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\n tmp3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n tmp3.assign(t1);\n tmp3.add(t2);\n a = tmp3;\n }\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n let result;\n if (!mode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n } else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n return result;\n}\nfunction calculateSHA384(data, offset, length) {\n return calculateSHA512(data, offset, length, true);\n}\n\n;// ./src/core/calculate_sha256.js\n\nconst calculate_sha256_PARAMS = {\n get k() {\n return shadow(this, \"k\", [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]);\n }\n};\nfunction rotr(x, n) {\n return x >>> n | x << 32 - n;\n}\nfunction calculate_sha256_ch(x, y, z) {\n return x & y ^ ~x & z;\n}\nfunction calculate_sha256_maj(x, y, z) {\n return x & y ^ x & z ^ y & z;\n}\nfunction calculate_sha256_sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n}\nfunction calculate_sha256_sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n}\nfunction calculate_sha256_littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n}\nfunction calculate_sha256_littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n}\nfunction calculateSHA256(data, offset, length) {\n let h0 = 0x6a09e667,\n h1 = 0xbb67ae85,\n h2 = 0x3c6ef372,\n h3 = 0xa54ff53a,\n h4 = 0x510e527f,\n h5 = 0x9b05688c,\n h6 = 0x1f83d9ab,\n h7 = 0x5be0cd19;\n const paddedLength = Math.ceil((length + 9) / 64) * 64;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n if (i < n) {\n i = n;\n }\n i += 3;\n padded[i++] = length >>> 29 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length << 3 & 0xff;\n const w = new Uint32Array(64);\n const {\n k\n } = calculate_sha256_PARAMS;\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n i += 4;\n }\n for (j = 16; j < 64; ++j) {\n w[j] = calculate_sha256_littleSigmaPrime(w[j - 2]) + w[j - 7] + calculate_sha256_littleSigma(w[j - 15]) + w[j - 16] | 0;\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n e = h4,\n f = h5,\n g = h6,\n h = h7,\n t1,\n t2;\n for (j = 0; j < 64; ++j) {\n t1 = h + calculate_sha256_sigmaPrime(e) + calculate_sha256_ch(e, f, g) + k[j] + w[j];\n t2 = calculate_sha256_sigma(a) + calculate_sha256_maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = d + t1 | 0;\n d = c;\n c = b;\n b = a;\n a = t1 + t2 | 0;\n }\n h0 = h0 + a | 0;\n h1 = h1 + b | 0;\n h2 = h2 + c | 0;\n h3 = h3 + d | 0;\n h4 = h4 + e | 0;\n h5 = h5 + f | 0;\n h6 = h6 + g | 0;\n h7 = h7 + h | 0;\n }\n return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);\n}\n\n;// ./src/core/decrypt_stream.js\n\nconst chunkSize = 512;\nclass DecryptStream extends DecodeStream {\n #nextChunk = null;\n constructor(str, maybeLength, decrypt) {\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n }\n readBlock() {\n let chunk = this.#nextChunk ?? this.stream.getBytes(chunkSize);\n if (!chunk.length) {\n this.eof = true;\n return;\n }\n this.#nextChunk = this.stream.getBytes(chunkSize);\n const hasMoreData = this.#nextChunk.length > 0;\n const decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n const bufferLength = this.bufferLength,\n newLength = bufferLength + chunk.length,\n buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n getOriginalStream() {\n return this;\n }\n}\n\n;// ./src/core/sasl_prep.js\nconst NON_ASCII_SPACES = new Set([0x00a0, 0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200a, 0x200b, 0x202f, 0x205f, 0x3000]);\nconst COMMONLY_MAPPED_TO_NOTHING = new Set([0x00ad, 0x034f, 0x1806, 0x180b, 0x180c, 0x180d, 0x200b, 0x200c, 0x200d, 0x2060, 0xfe00, 0xfe01, 0xfe02, 0xfe03, 0xfe04, 0xfe05, 0xfe06, 0xfe07, 0xfe08, 0xfe09, 0xfe0a, 0xfe0b, 0xfe0c, 0xfe0d, 0xfe0e, 0xfe0f, 0xfeff]);\nfunction saslPrep(str) {\n let mapped = \"\";\n for (const char of str) {\n const code = char.codePointAt(0);\n if (NON_ASCII_SPACES.has(code)) {\n mapped += \" \";\n } else if (!COMMONLY_MAPPED_TO_NOTHING.has(code)) {\n mapped += char;\n }\n }\n return mapped.normalize(\"NFKC\");\n}\n\n;// ./src/core/crypto.js\n\n\n\n\n\n\n\nclass ARCFourCipher {\n a = 0;\n b = 0;\n constructor(key) {\n const s = new Uint8Array(256);\n const keyLength = key.length;\n for (let i = 0; i < 256; ++i) {\n s[i] = i;\n }\n for (let i = 0, j = 0; i < 256; ++i) {\n const tmp = s[i];\n j = j + tmp + key[i % keyLength] & 0xff;\n s[i] = s[j];\n s[j] = tmp;\n }\n this.s = s;\n }\n encryptBlock(data) {\n let a = this.a,\n b = this.b;\n const s = this.s;\n const n = data.length;\n const output = new Uint8Array(n);\n for (let i = 0; i < n; ++i) {\n a = a + 1 & 0xff;\n const tmp = s[a];\n b = b + tmp & 0xff;\n const tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[tmp + tmp2 & 0xff];\n }\n this.a = a;\n this.b = b;\n return output;\n }\n decryptBlock(data) {\n return this.encryptBlock(data);\n }\n encrypt(data) {\n return this.encryptBlock(data);\n }\n}\nclass NullCipher {\n decryptBlock(data) {\n return data;\n }\n encrypt(data) {\n return data;\n }\n}\nclass AESBaseCipher {\n _s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);\n _inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);\n _mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n _mixCol = Uint8Array.from({\n length: 256\n }, (_, i) => i < 128 ? i << 1 : i << 1 ^ 0x1b);\n constructor() {\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n _expandKey(cipherKey) {\n unreachable(\"Cannot call `_expandKey` on the base class\");\n }\n _decrypt(input, key) {\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n }\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (let j = 0; j < 16; j += 4) {\n const s0 = this._mix[state[j]];\n const s1 = this._mix[state[j + 1]];\n const s2 = this._mix[state[j + 2]];\n const s3 = this._mix[state[j + 3]];\n t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8;\n state[j] = t >>> 24 & 0xff;\n state[j + 1] = t >> 16 & 0xff;\n state[j + 2] = t >> 8 & 0xff;\n state[j + 3] = t & 0xff;\n }\n }\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n state[j] ^= key[j];\n }\n return state;\n }\n _encrypt(input, key) {\n const s = this._s;\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n for (let j = 0; j < 16; ++j) {\n state[j] ^= key[j];\n }\n for (let i = 1; i < this._cyclesOfRepetition; i++) {\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n for (let j = 0; j < 16; j += 4) {\n const s0 = state[j];\n const s1 = state[j + 1];\n const s2 = state[j + 2];\n const s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j] ^= t ^ this._mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n return state;\n }\n _decryptBlock2(data, finalize) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n let iv = this.iv;\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n const plain = this._decrypt(buffer, this._key);\n for (let j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n let outputLength = 16 * result.length;\n if (finalize) {\n const lastBlock = result.at(-1);\n let psLen = lastBlock[15];\n if (psLen <= 16) {\n for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n psLen = 0;\n break;\n }\n }\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n decryptBlock(data, finalize, iv = null) {\n const sourceLength = data.length;\n const buffer = this.buffer;\n let bufferLength = this.bufferPosition;\n if (iv) {\n this.iv = iv;\n } else {\n for (let i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) {\n this.bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n this.iv = buffer;\n data = data.subarray(16);\n }\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n encrypt(data, iv) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n iv ||= new Uint8Array(16);\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n for (let j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n const cipher = this._encrypt(buffer, this._key);\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n const outputLength = 16 * result.length;\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n}\nclass AES128Cipher extends AESBaseCipher {\n _rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);\n constructor(key) {\n super();\n this._cyclesOfRepetition = 10;\n this._keySize = 160;\n this._key = this._expandKey(key);\n }\n _expandKey(cipherKey) {\n const b = 176;\n const s = this._s;\n const rcon = this._rcon;\n const result = new Uint8Array(b);\n result.set(cipherKey);\n for (let j = 16, i = 1; j < b; ++i) {\n let t1 = result[j - 3];\n let t2 = result[j - 2];\n let t3 = result[j - 1];\n let t4 = result[j - 4];\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n t1 ^= rcon[i];\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 16];\n j++;\n result[j] = t2 ^= result[j - 16];\n j++;\n result[j] = t3 ^= result[j - 16];\n j++;\n result[j] = t4 ^= result[j - 16];\n j++;\n }\n }\n return result;\n }\n}\nclass AES256Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n this._cyclesOfRepetition = 14;\n this._keySize = 224;\n this._key = this._expandKey(key);\n }\n _expandKey(cipherKey) {\n const b = 240;\n const s = this._s;\n const result = new Uint8Array(b);\n result.set(cipherKey);\n let r = 1;\n let t1, t2, t3, t4;\n for (let j = 32, i = 1; j < b; ++i) {\n if (j % 32 === 16) {\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n } else if (j % 32 === 0) {\n t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n t1 ^= r;\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 32];\n j++;\n result[j] = t2 ^= result[j - 32];\n j++;\n result[j] = t3 ^= result[j - 32];\n j++;\n result[j] = t4 ^= result[j - 32];\n j++;\n }\n }\n return result;\n }\n}\nclass PDFBase {\n _hash(password, input, userBytes) {\n unreachable(\"Abstract method `_hash` called\");\n }\n checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = this._hash(password, hashData, userBytes);\n return isArrayEqual(result, ownerPassword);\n }\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = this._hash(password, hashData, []);\n return isArrayEqual(result, userPassword);\n }\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = this._hash(password, hashData, userBytes);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n const key = this._hash(password, hashData, []);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n}\nclass PDF17 extends PDFBase {\n _hash(password, input, userBytes) {\n return calculateSHA256(input, 0, input.length);\n }\n}\nclass PDF20 extends PDFBase {\n _hash(password, input, userBytes) {\n let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n let e = [0];\n let i = 0;\n while (i < 64 || e.at(-1) > i - 32) {\n const combinedLength = password.length + k.length + userBytes.length,\n combinedArray = new Uint8Array(combinedLength);\n let writeOffset = 0;\n combinedArray.set(password, writeOffset);\n writeOffset += password.length;\n combinedArray.set(k, writeOffset);\n writeOffset += k.length;\n combinedArray.set(userBytes, writeOffset);\n const k1 = new Uint8Array(combinedLength * 64);\n for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n k1.set(combinedArray, pos);\n }\n const cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n const remainder = Math.sumPrecise(e.slice(0, 16)) % 3;\n if (remainder === 0) {\n k = calculateSHA256(e, 0, e.length);\n } else if (remainder === 1) {\n k = calculateSHA384(e, 0, e.length);\n } else if (remainder === 2) {\n k = calculateSHA512(e, 0, e.length);\n }\n i++;\n }\n return k.subarray(0, 32);\n }\n}\nclass CipherTransform {\n #cipherCache = new Map();\n embeddedFilterName = null;\n constructor(resolveCipher, stringFilterName = null, streamFilterName = null) {\n this.resolveCipher = resolveCipher;\n this.streamFilterName = streamFilterName;\n this.stringFilterName = stringFilterName;\n }\n #getCipher(filterName = null) {\n const key = filterName instanceof Name ? filterName.name : \"__default__\";\n return this.#cipherCache.getOrInsertComputed(key, () => this.resolveCipher(filterName));\n }\n createStream(stream, length, cryptFilterName = null) {\n const defaultFilterName = this.embeddedFilterName && isDict(stream.dict, \"EmbeddedFile\") ? this.embeddedFilterName : this.streamFilterName;\n const Cipher = this.#getCipher(cryptFilterName || defaultFilterName);\n const cipher = new Cipher();\n return new DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n });\n }\n decryptString(s) {\n const Cipher = this.#getCipher(this.stringFilterName);\n const cipher = new Cipher();\n let data = stringToBytes(s);\n data = cipher.decryptBlock(data, true);\n return bytesToString(data);\n }\n encryptString(s) {\n const Cipher = this.#getCipher(this.stringFilterName);\n const cipher = new Cipher();\n if (cipher instanceof AESBaseCipher) {\n const strLen = s.length;\n const pad = 16 - strLen % 16;\n s += String.fromCharCode(pad).repeat(pad);\n const iv = new Uint8Array(16);\n crypto.getRandomValues(iv);\n let data = stringToBytes(s);\n data = cipher.encrypt(data, iv);\n const buf = new Uint8Array(16 + data.length);\n buf.set(iv);\n buf.set(data, 16);\n return bytesToString(buf);\n }\n let data = stringToBytes(s);\n data = cipher.encrypt(data);\n return bytesToString(data);\n }\n}\nfunction utf8PasswordToBytes(password) {\n try {\n password = utf8StringToString(password);\n } catch {\n warn(\"CipherTransformFactory: Unable to convert UTF8 encoded password.\");\n }\n return stringToBytes(password);\n}\nclass CipherTransformFactory {\n #fileId;\n static get _defaultPasswordBytes() {\n return shadow(this, \"_defaultPasswordBytes\", new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]));\n }\n #createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {\n if (password) {\n const passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n const pdfAlgorithm = revision === 6 ? new PDF20() : new PDF17();\n if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {\n return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n }\n return null;\n }\n #prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {\n const hashDataSize = 40 + ownerPassword.length + fileId.length;\n const hashData = new Uint8Array(hashDataSize);\n let i = 0,\n j,\n n;\n if (password) {\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n j = 0;\n while (i < 32) {\n hashData[i++] = CipherTransformFactory._defaultPasswordBytes[j++];\n }\n hashData.set(ownerPassword, i);\n i += ownerPassword.length;\n hashData[i++] = flags & 0xff;\n hashData[i++] = flags >> 8 & 0xff;\n hashData[i++] = flags >> 16 & 0xff;\n hashData[i++] = flags >>> 24 & 0xff;\n hashData.set(fileId, i);\n i += fileId.length;\n if (revision >= 4 && !encryptMetadata) {\n hashData.fill(0xff, i, i + 4);\n i += 4;\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n const encryptionKey = hash.subarray(0, keyLengthInBytes);\n let cipher, checkData;\n if (revision >= 3) {\n i = 0;\n hashData.set(CipherTransformFactory._defaultPasswordBytes, i);\n i += 32;\n hashData.set(fileId, i);\n i += fileId.length;\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n const derivedKey = new Uint8Array(n);\n for (j = 1; j <= 19; ++j) {\n for (let k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\n } else {\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(CipherTransformFactory._defaultPasswordBytes);\n }\n return checkData.every((data, k) => userPassword[k] === data) ? encryptionKey : null;\n }\n #decodeUserPassword(password, ownerPassword, revision, keyLength) {\n const hashData = new Uint8Array(32);\n let i = 0;\n const n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n let j = 0;\n while (i < 32) {\n hashData[i++] = CipherTransformFactory._defaultPasswordBytes[j++];\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n let cipher, userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n const derivedKey = new Uint8Array(keyLengthInBytes);\n for (j = 19; j >= 0; j--) {\n for (let k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n userPassword = cipher.encryptBlock(userPassword);\n }\n } else {\n cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher.encryptBlock(ownerPassword);\n }\n return userPassword;\n }\n #buildObjectKey(num, gen, encryptionKey, isAes = false) {\n const n = encryptionKey.length;\n const key = new Uint8Array(n + 9);\n key.set(encryptionKey);\n let i = n;\n key[i++] = num & 0xff;\n key[i++] = num >> 8 & 0xff;\n key[i++] = num >> 16 & 0xff;\n key[i++] = gen & 0xff;\n key[i++] = gen >> 8 & 0xff;\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n const hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(n + 5, 16));\n }\n constructor(dict, fileId, password) {\n const filter = dict.get(\"Filter\");\n if (!isName(filter, \"Standard\")) {\n throw new FormatError(\"unknown encryption method\");\n }\n this.filterName = filter.name;\n this.dict = dict;\n this.#fileId = fileId;\n const algorithm = dict.get(\"V\");\n if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {\n throw new FormatError(\"unsupported encryption algorithm\");\n }\n this.algorithm = algorithm;\n let keyLength = dict.get(\"Length\");\n if (!keyLength) {\n if (algorithm <= 3) {\n keyLength = 40;\n } else {\n const cfDict = dict.get(\"CF\");\n const streamCryptoName = dict.get(\"StmF\");\n if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n cfDict.suppressEncryption = true;\n const handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = handlerDict?.get(\"Length\") || 128;\n if (keyLength < 40) {\n keyLength <<= 3;\n }\n }\n }\n }\n if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n throw new FormatError(\"invalid key length\");\n }\n let cf = null;\n let stmf = Name.get(\"Identity\");\n let strf = Name.get(\"Identity\");\n let eff = stmf;\n if (algorithm >= 4) {\n cf = dict.get(\"CF\");\n if (cf instanceof Dict) {\n cf.suppressEncryption = true;\n }\n stmf = dict.get(\"StmF\") || Name.get(\"Identity\");\n strf = dict.get(\"StrF\") || Name.get(\"Identity\");\n eff = dict.get(\"EFF\") || stmf;\n }\n this.cf = cf;\n this.stmf = stmf;\n this.strf = strf;\n this.eff = eff;\n const ownerBytes = stringToBytes(dict.get(\"O\")),\n userBytes = stringToBytes(dict.get(\"U\"));\n const ownerPassword = ownerBytes.subarray(0, 32);\n const userPassword = userBytes.subarray(0, 32);\n const flags = dict.get(\"P\");\n const revision = dict.get(\"R\");\n const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n const fileIdBytes = stringToBytes(fileId);\n let passwordBytes, rawPasswordBytes;\n if (password) {\n if (revision === 6) {\n const preppedPassword = saslPrep(password);\n passwordBytes = utf8PasswordToBytes(preppedPassword);\n if (preppedPassword !== password) {\n rawPasswordBytes = utf8PasswordToBytes(password);\n }\n } else if (algorithm === 5) {\n passwordBytes = utf8PasswordToBytes(password);\n } else {\n passwordBytes = stringToBytes(password);\n }\n }\n let encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = this.#prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n } else {\n const ownerValidationSalt = ownerBytes.subarray(32, 40);\n const ownerKeySalt = ownerBytes.subarray(40, 48);\n const uBytes = userBytes.subarray(0, 48);\n const userValidationSalt = userBytes.subarray(32, 40);\n const userKeySalt = userBytes.subarray(40, 48);\n const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n const userEncryption = stringToBytes(dict.get(\"UE\"));\n const perms = stringToBytes(dict.get(\"Perms\"));\n for (const candidate of rawPasswordBytes ? [passwordBytes, rawPasswordBytes] : [passwordBytes]) {\n encryptionKey = this.#createEncryptionKey20(revision, candidate, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);\n if (encryptionKey) {\n break;\n }\n }\n }\n if (!encryptionKey) {\n if (!password) {\n if (this.algorithm >= 4 && isName(this.stmf, \"Identity\") && isName(this.strf, \"Identity\")) {\n const effCF = this.cf?.get(this.eff.name);\n const authEvent = effCF?.get(\"AuthEvent\");\n if (isName(authEvent, \"EFOpen\")) {\n this.encryptionKey = null;\n return;\n }\n }\n throw new PasswordException(\"No password given\", PasswordResponses.NEED_PASSWORD);\n }\n const decodedPassword = this.#decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n encryptionKey = this.#prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n }\n if (!encryptionKey) {\n throw new PasswordException(\"Incorrect Password\", PasswordResponses.INCORRECT_PASSWORD);\n }\n if (algorithm === 4 && encryptionKey.length < 16) {\n this.encryptionKey = new Uint8Array(16);\n this.encryptionKey.set(encryptionKey);\n } else {\n this.encryptionKey = encryptionKey;\n }\n }\n setPassword(password) {\n const transform = new CipherTransformFactory(this.dict, this.#fileId, password);\n this.encryptionKey = transform.encryptionKey;\n }\n createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n const resolveCipher = filterName => {\n if (!(filterName instanceof Name)) {\n throw new FormatError(\"Invalid crypt filter name.\");\n }\n const cryptFilter = this.cf.get(filterName.name);\n const cfm = cryptFilter?.get(\"CFM\");\n if (!cfm || cfm.name === \"None\") {\n return NullCipher;\n }\n if (!this.encryptionKey) {\n throw new PasswordException(\"No password given\", PasswordResponses.NEED_PASSWORD);\n }\n if (this.algorithm === 5 || cfm.name === \"AESV3\") {\n return AES256Cipher.bind(null, this.encryptionKey);\n }\n if (cfm.name === \"V2\") {\n return ARCFourCipher.bind(null, this.#buildObjectKey(num, gen, this.encryptionKey, false));\n }\n if (cfm.name === \"AESV2\") {\n return AES128Cipher.bind(null, this.#buildObjectKey(num, gen, this.encryptionKey, true));\n }\n throw new FormatError(\"Unknown crypto method\");\n };\n const transform = new CipherTransform(resolveCipher, this.strf, this.stmf);\n transform.embeddedFilterName = this.eff;\n return transform;\n }\n const resolveCipher = () => ARCFourCipher.bind(null, this.#buildObjectKey(num, gen, this.encryptionKey, false));\n return new CipherTransform(resolveCipher);\n }\n}\n\n;// ./src/core/xref.js\n\n\n\n\n\n\nclass XRef {\n #cacheMap = new Map();\n #entries = [];\n #newPersistentRefNum = null;\n #newTemporaryRefNum = null;\n #parsedWithRecovery = false;\n #pendingRefs = new RefSet();\n #persistentRefsCache = null;\n #xrefSectionOffsets = new Set();\n #xrefSectionsComplete = true;\n #xrefStms = new Set();\n constructor(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n }\n getNewPersistentRef(obj) {\n if (this.#newPersistentRefNum === null) {\n this.#newPersistentRefNum = this.#entries.length || 1;\n }\n const num = this.#newPersistentRefNum++;\n this.#cacheMap.set(num, obj);\n return Ref.get(num, 0);\n }\n getNewTemporaryRef() {\n if (this.#newTemporaryRefNum === null) {\n this.#newTemporaryRefNum = this.#entries.length || 1;\n if (this.#newPersistentRefNum) {\n this.#persistentRefsCache = new Map();\n for (let i = this.#newTemporaryRefNum; i < this.#newPersistentRefNum; i++) {\n this.#persistentRefsCache.set(i, this.#cacheMap.get(i));\n this.#cacheMap.delete(i);\n }\n }\n }\n return Ref.get(this.#newTemporaryRefNum++, 0);\n }\n resetNewTemporaryRef() {\n this.#newTemporaryRefNum = null;\n if (this.#persistentRefsCache) {\n for (const [num, obj] of this.#persistentRefsCache) {\n this.#cacheMap.set(num, obj);\n }\n }\n this.#persistentRefsCache = null;\n }\n setStartXRef(startXRef) {\n this.startXRefQueue = [startXRef];\n }\n parse(recoveryMode = false) {\n this.#parsedWithRecovery = recoveryMode;\n let trailerDict;\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n warn(\"Indexing all PDF objects\");\n trailerDict = this.indexObjects();\n }\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n let encrypt;\n try {\n encrypt = trailerDict.get(\"Encrypt\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n }\n if (encrypt instanceof Dict) {\n const ids = trailerDict.get(\"ID\");\n const fileId = ids?.length ? ids[0] : \"\";\n encrypt.suppressEncryption = true;\n this.encrypt = new CipherTransformFactory(encrypt, fileId, this.pdfManager.password);\n }\n let root;\n try {\n root = trailerDict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n }\n if (root instanceof Dict) {\n try {\n const pages = root.get(\"Pages\");\n if (pages instanceof Dict) {\n this.root = root;\n return;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n }\n }\n if (!recoveryMode) {\n throw new XRefParseException();\n }\n throw new InvalidPDFException(\"Invalid Root reference.\");\n }\n processXRefTable(parser) {\n this._tableState ??= {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2\n };\n const obj = this.readXRefTable(parser);\n if (!isCmd(obj, \"trailer\")) {\n throw new FormatError(\"Invalid XRef table: could not find trailer dictionary\");\n }\n let dict = parser.getObj();\n if (dict instanceof BaseStream) {\n dict = dict.dict;\n }\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Invalid XRef table: could not parse trailer dictionary\");\n }\n delete this._tableState;\n return dict;\n }\n readXRefTable(parser) {\n const stream = parser.lexer.stream;\n const tableState = this._tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n let obj;\n while (true) {\n if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n if (isCmd(obj = parser.getObj(), \"trailer\")) {\n break;\n }\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n let first = tableState.firstEntryNum;\n const count = tableState.entryCount;\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new FormatError(\"Invalid XRef table: wrong types in subsection header\");\n }\n for (let i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n const entry = {\n offset: parser.getObj(),\n gen: parser.getObj(),\n free: false,\n uncompressed: false\n };\n const type = parser.getObj();\n if (type instanceof Cmd) {\n switch (type.cmd) {\n case \"f\":\n entry.free = true;\n break;\n case \"n\":\n entry.uncompressed = true;\n break;\n }\n }\n if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {\n throw new FormatError(`Invalid entry in XRef subsection: ${first}, ${count}`);\n }\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n this.#entries[first + i] ??= entry;\n }\n tableState.entryNum = 0;\n tableState.streamPos = stream.pos;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n delete tableState.firstEntryNum;\n delete tableState.entryCount;\n }\n if (this.#entries[0] && !this.#entries[0].free) {\n throw new FormatError(\"Invalid XRef table: unexpected first object\");\n }\n return obj;\n }\n processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n const {\n dict,\n pos\n } = stream;\n const byteWidths = dict.get(\"W\");\n const range = dict.get(\"Index\") || [0, dict.get(\"Size\")];\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: pos\n };\n }\n this.readXRefStream(stream);\n delete this.streamState;\n return stream.dict;\n }\n readXRefStream(stream) {\n const streamState = this.streamState;\n stream.pos = streamState.streamPos;\n const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] = streamState.byteWidths;\n const entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n const [first, n] = entryRanges;\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n }\n if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {\n throw new FormatError(`Invalid XRef entry fields length: ${first}, ${n}`);\n }\n for (let i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n let type = 0,\n offset = 0,\n generation = 0;\n for (let j = 0; j < typeFieldWidth; ++j) {\n const typeByte = stream.getByte();\n if (typeByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n }\n type = type << 8 | typeByte;\n }\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (let j = 0; j < offsetFieldWidth; ++j) {\n const offsetByte = stream.getByte();\n if (offsetByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n }\n offset = offset << 8 | offsetByte;\n }\n for (let j = 0; j < generationFieldWidth; ++j) {\n const generationByte = stream.getByte();\n if (generationByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n }\n generation = generation << 8 | generationByte;\n }\n const entry = {\n offset,\n gen: generation,\n free: false,\n uncompressed: false\n };\n switch (type) {\n case 0:\n entry.free = true;\n break;\n case 1:\n entry.uncompressed = true;\n break;\n case 2:\n break;\n default:\n throw new FormatError(`Invalid XRef entry type: ${type}`);\n }\n this.#entries[first + i] ??= entry;\n }\n streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n }\n indexObjects() {\n const TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n const PERCENT = 0x25,\n LT = 0x3c;\n function readToken(data, offset) {\n let token = \"\",\n ch = data[offset];\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n return token;\n }\n function skipUntil(data, offset, what) {\n const length = what.length,\n dataLength = data.length;\n let skipped = 0;\n while (offset < dataLength) {\n let i = 0;\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n if (i >= length) {\n break;\n }\n offset++;\n skipped++;\n }\n return skipped;\n }\n const gEndobjRegExp = /\\b(endobj|\\d+\\s+\\d+\\s+obj|xref|trailer\\s*<<)\\b/g;\n const gStartxrefRegExp = /\\b(startxref|\\d+\\s+\\d+\\s+obj)\\b/g;\n const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n const startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);\n const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n this.#entries.length = 0;\n this.#cacheMap.clear();\n const stream = this.stream;\n stream.pos = 0;\n const buffer = stream.getBytes(),\n bufferStr = bytesToString(buffer),\n length = buffer.length;\n let position = stream.start;\n const trailers = [],\n xrefStms = [];\n while (position < length) {\n let ch = buffer[position];\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n if (ch === PERCENT) {\n do {\n ++position;\n if (position >= length) {\n break;\n }\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n continue;\n }\n const token = readToken(buffer, position);\n let m;\n if (token.startsWith(\"xref\") && (token.length === 4 || /\\s/.test(token[4]))) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if (m = objRegExp.exec(token)) {\n const num = m[1] | 0,\n gen = m[2] | 0;\n const startPos = position + token.length;\n let contentLength,\n updateEntries = false;\n if (!this.#entries[num]) {\n updateEntries = true;\n } else if (this.#entries[num].gen === gen) {\n try {\n const parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(startPos))\n });\n parser.getObj();\n updateEntries = true;\n } catch (ex) {\n if (ex instanceof ParserEOFException) {\n warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n } else {\n updateEntries = true;\n }\n }\n }\n if (updateEntries) {\n this.#entries[num] = {\n offset: position - stream.start,\n gen,\n free: false,\n uncompressed: true\n };\n }\n gEndobjRegExp.lastIndex = startPos;\n const match = gEndobjRegExp.exec(bufferStr);\n if (match) {\n const endPos = gEndobjRegExp.lastIndex + 1;\n contentLength = endPos - position;\n if (match[1] !== \"endobj\") {\n warn(`indexObjects: Found \"${match[1]}\" inside of another \"obj\", ` + 'caused by missing \"endobj\" -- trying to recover.');\n contentLength -= match[1].length + 1;\n }\n } else {\n contentLength = length - position;\n }\n const content = buffer.subarray(position, position + contentLength);\n const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.#xrefStms.add(position - stream.start);\n }\n position += contentLength;\n } else if (token.startsWith(\"trailer\") && (token.length === 7 || /\\s/.test(token[7]))) {\n trailers.push(position);\n const startPos = position + token.length;\n let contentLength;\n gStartxrefRegExp.lastIndex = startPos;\n const match = gStartxrefRegExp.exec(bufferStr);\n if (match) {\n const endPos = gStartxrefRegExp.lastIndex + 1;\n contentLength = endPos - position;\n if (match[1] !== \"startxref\") {\n warn(`indexObjects: Found \"${match[1]}\" after \"trailer\", ` + 'caused by missing \"startxref\" -- trying to recover.');\n contentLength -= match[1].length + 1;\n }\n } else {\n contentLength = length - position;\n }\n position += contentLength;\n } else {\n position += token.length + 1;\n }\n }\n for (const xrefStm of xrefStms) {\n this.startXRefQueue.push(xrefStm);\n this.readXRef(true);\n }\n const trailerDicts = [];\n let isEncrypted = false;\n for (const trailer of trailers) {\n stream.pos = trailer;\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n recoveryMode: true\n });\n const obj = parser.getObj();\n if (!isCmd(obj, \"trailer\")) {\n continue;\n }\n const dict = parser.getObj();\n if (!(dict instanceof Dict)) {\n continue;\n }\n trailerDicts.push(dict);\n if (dict.has(\"Encrypt\")) {\n isEncrypted = true;\n }\n }\n let trailerDict, trailerError;\n for (const dict of [...trailerDicts, \"genFallback\", ...trailerDicts]) {\n if (dict === \"genFallback\") {\n if (!trailerError) {\n break;\n }\n this._generationFallback = true;\n continue;\n }\n let validPagesDict = false;\n try {\n const rootDict = dict.get(\"Root\");\n if (!(rootDict instanceof Dict)) {\n continue;\n }\n const pagesDict = rootDict.get(\"Pages\");\n if (!(pagesDict instanceof Dict)) {\n continue;\n }\n const pagesCount = pagesDict.get(\"Count\");\n if (Number.isInteger(pagesCount)) {\n validPagesDict = true;\n }\n } catch (ex) {\n trailerError = ex;\n continue;\n }\n if (validPagesDict && (!isEncrypted || dict.has(\"Encrypt\")) && dict.has(\"ID\")) {\n return dict;\n }\n trailerDict = dict;\n }\n if (trailerDict) {\n return trailerDict;\n }\n if (this.topDict) {\n return this.topDict;\n }\n if (!trailerDicts.length) {\n for (const num in this.#entries) {\n const entry = this.#entries[num];\n if (!entry) {\n continue;\n }\n const ref = Ref.get(parseInt(num, 10), entry.gen);\n let obj;\n try {\n obj = this.fetch(ref);\n } catch {\n continue;\n }\n if (obj instanceof BaseStream) {\n obj = obj.dict;\n }\n if (obj instanceof Dict && obj.has(\"Root\")) {\n return obj;\n }\n }\n }\n throw new InvalidPDFException(\"Invalid PDF structure.\");\n }\n readXRef(recoveryMode = false) {\n const stream = this.stream;\n const startXRefParsedCache = new Set();\n while (this.startXRefQueue.length) {\n try {\n const startXRef = this.startXRefQueue[0];\n if (startXRefParsedCache.has(startXRef)) {\n warn(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n startXRefParsedCache.add(startXRef);\n stream.pos = startXRef + stream.start;\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true\n });\n let obj = parser.getObj();\n let dict;\n if (isCmd(obj, \"xref\")) {\n dict = this.processXRefTable(parser);\n this.topDict ||= dict;\n obj = dict.get(\"XRefStm\");\n if (Number.isInteger(obj) && !this.#xrefStms.has(obj)) {\n this.#xrefStms.add(obj);\n this.startXRefQueue.push(obj);\n }\n } else if (Number.isInteger(obj)) {\n if (!Number.isInteger(parser.getObj()) || !isCmd(parser.getObj(), \"obj\") || !((obj = parser.getObj()) instanceof BaseStream)) {\n throw new FormatError(\"Invalid XRef stream\");\n }\n dict = this.processXRefStream(obj);\n this.topDict ||= dict;\n if (!dict) {\n throw new FormatError(\"Failed to read XRef stream\");\n }\n } else {\n throw new FormatError(\"Invalid XRef stream header\");\n }\n this.#xrefSectionOffsets.add(startXRef);\n obj = dict.get(\"Prev\");\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if (obj instanceof Ref) {\n this.startXRefQueue.push(obj.num);\n }\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n this.#xrefSectionsComplete = false;\n info(\"(while reading XRef): \" + e);\n }\n this.startXRefQueue.shift();\n }\n if (this.topDict) {\n return this.topDict;\n }\n if (recoveryMode) {\n return undefined;\n }\n throw new XRefParseException();\n }\n countUpdatesAfter(offset) {\n if (this.#parsedWithRecovery || !this.#xrefSectionsComplete) {\n return null;\n }\n const relativeOffset = offset - this.stream.start;\n let count = 0;\n for (const sectionOffset of this.#xrefSectionOffsets) {\n if (sectionOffset >= relativeOffset && !this.#xrefStms.has(sectionOffset)) {\n count++;\n }\n }\n return count;\n }\n getEntry(i) {\n const entry = this.#entries[i];\n return entry && !entry.free && entry.offset ? entry : null;\n }\n fetchIfRef(obj, suppressEncryption = false) {\n return obj instanceof Ref ? this.fetch(obj, suppressEncryption) : obj;\n }\n fetch(ref, suppressEncryption = false) {\n if (!(ref instanceof Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n const num = ref.num;\n const cacheEntry = this.#cacheMap.get(num);\n if (cacheEntry !== undefined) {\n if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n return cacheEntry;\n }\n let xrefEntry = this.getEntry(num);\n if (xrefEntry === null) {\n return xrefEntry;\n }\n if (this.#pendingRefs.has(ref)) {\n this.#pendingRefs.remove(ref);\n warn(`Ignoring circular reference: ${ref}.`);\n return CIRCULAR_REF;\n }\n this.#pendingRefs.put(ref);\n try {\n xrefEntry = xrefEntry.uncompressed ? this.fetchUncompressed(ref, xrefEntry, suppressEncryption) : this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n this.#pendingRefs.remove(ref);\n } catch (ex) {\n this.#pendingRefs.remove(ref);\n throw ex;\n }\n if (xrefEntry instanceof Dict) {\n xrefEntry.objId = ref.toString();\n } else if (xrefEntry instanceof BaseStream) {\n xrefEntry.dict.objId = ref.toString();\n }\n return xrefEntry;\n }\n fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n const gen = ref.gen;\n let num = ref.num;\n if (xrefEntry.gen !== gen) {\n const msg = `Inconsistent generation in XRef: ${ref}`;\n if (this._generationFallback && xrefEntry.gen < gen) {\n warn(msg);\n return this.fetchUncompressed(Ref.get(num, xrefEntry.gen), xrefEntry, suppressEncryption);\n }\n throw new XRefEntryException(msg);\n }\n const stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start);\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (obj3.cmd !== \"obj\") {\n if (obj3.cmd.startsWith(\"obj\")) {\n num = parseInt(obj3.cmd.substring(3), 10);\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n xrefEntry = this.encrypt && !suppressEncryption ? parser.getObj(this.encrypt.createCipherTransform(num, gen)) : parser.getObj();\n if (!(xrefEntry instanceof BaseStream)) {\n this.#cacheMap.set(num, xrefEntry);\n }\n return xrefEntry;\n }\n fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n const tableOffset = xrefEntry.offset;\n const stream = this.fetch(Ref.get(tableOffset, 0));\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"bad ObjStm stream\");\n }\n const first = stream.dict.get(\"First\");\n const n = stream.dict.get(\"N\");\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n }\n let parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true\n });\n const nums = new Array(n);\n const offsets = new Array(n);\n for (let i = 0; i < n; ++i) {\n const num = parser.getObj();\n if (!Number.isInteger(num)) {\n throw new FormatError(`invalid object number in the ObjStm stream: ${num}`);\n }\n const offset = parser.getObj();\n if (!Number.isInteger(offset)) {\n throw new FormatError(`invalid object offset in the ObjStm stream: ${offset}`);\n }\n nums[i] = num;\n const entry = this.getEntry(num);\n if (entry?.offset === tableOffset && entry.gen !== i) {\n entry.gen = i;\n }\n offsets[i] = offset;\n }\n const start = (stream.start || 0) + first;\n const entries = new Array(n);\n for (let i = 0; i < n; ++i) {\n const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n if (length < 0) {\n throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n }\n parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(start + offsets[i], length, stream.dict)),\n xref: this,\n allowStreams: true\n });\n const obj = parser.getObj();\n entries[i] = obj;\n if (obj instanceof BaseStream) {\n continue;\n }\n const num = nums[i],\n entry = this.#entries[num];\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n this.#cacheMap.set(num, obj);\n }\n }\n xrefEntry = entries[xrefEntry.gen];\n if (xrefEntry === undefined) {\n throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n }\n return xrefEntry;\n }\n async fetchIfRefAsync(obj, suppressEncryption) {\n return obj instanceof Ref ? this.fetchAsync(obj, suppressEncryption) : obj;\n }\n async fetchAsync(ref, suppressEncryption) {\n try {\n return this.fetch(ref, suppressEncryption);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.pdfManager.requestRange(ex.begin, ex.end);\n return this.fetchAsync(ref, suppressEncryption);\n }\n }\n getCatalogObj() {\n return this.root;\n }\n}\n\n;// ./src/core/document.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\nconst SIGNATURE_TAIL_CHUNK_SIZE = 65536;\nclass Page {\n #resourcesPromise = null;\n constructor({\n pdfManager,\n xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalColorSpaceCache,\n globalImageCache,\n systemFontCache,\n nonBlendModesSet,\n xfaFactory\n }) {\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalColorSpaceCache = globalColorSpaceCache;\n this.globalImageCache = globalImageCache;\n this.systemFontCache = systemFontCache;\n this.nonBlendModesSet = nonBlendModesSet;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.xfaFactory = xfaFactory;\n const idCounters = {\n obj: 0\n };\n this._localIdFactory = class extends globalIdFactory {\n static createObjId() {\n return `p${pageIndex}_${++idCounters.obj}`;\n }\n static getPageObjId() {\n return `p${ref.toString()}`;\n }\n };\n }\n _createPartialEvaluator(handler, pageIndex = this.pageIndex) {\n return new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalColorSpaceCache: this.globalColorSpaceCache,\n globalImageCache: this.globalImageCache,\n systemFontCache: this.systemFontCache,\n options: this.evaluatorOptions\n });\n }\n #getInheritableProperty(key, getArray = false) {\n const value = getInheritableProperty({\n dict: this.pageDict,\n key,\n getArray,\n stopWhenFound: false\n });\n if (!Array.isArray(value)) {\n return value;\n }\n if (value.length === 1 || !(value[0] instanceof Dict)) {\n return value[0];\n }\n return Dict.merge({\n xref: this.xref,\n dictArray: value\n });\n }\n get content() {\n return this.pageDict.getArray(\"Contents\");\n }\n get resources() {\n const resources = this.#getInheritableProperty(\"Resources\");\n return shadow(this, \"resources\", resources instanceof Dict ? resources : Dict.empty);\n }\n getBoundingBox(name) {\n if (this.xfaData) {\n return this.xfaData.bbox;\n }\n const box = lookupNormalRect(this.#getInheritableProperty(name, true), null);\n if (box) {\n if (box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n return box;\n }\n warn(`Empty, or invalid, /${name} entry.`);\n }\n return null;\n }\n get mediaBox() {\n return shadow(this, \"mediaBox\", this.getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX);\n }\n get cropBox() {\n return shadow(this, \"cropBox\", this.getBoundingBox(\"CropBox\") || this.mediaBox);\n }\n get userUnit() {\n const obj = this.pageDict.get(\"UserUnit\");\n return shadow(this, \"userUnit\", typeof obj === \"number\" && obj > 0 ? obj : 1.0);\n }\n get view() {\n const {\n cropBox,\n mediaBox\n } = this;\n if (cropBox !== mediaBox && !isArrayEqual(cropBox, mediaBox)) {\n const box = Util.intersect(cropBox, mediaBox);\n if (box && box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n return shadow(this, \"view\", box);\n }\n warn(\"Empty /CropBox and /MediaBox intersection.\");\n }\n return shadow(this, \"view\", mediaBox);\n }\n get rotate() {\n let rotate = this.#getInheritableProperty(\"Rotate\") || 0;\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate %= 360;\n } else if (rotate < 0) {\n rotate = (rotate % 360 + 360) % 360;\n }\n return shadow(this, \"rotate\", rotate);\n }\n #onSubStreamError(reason, objId) {\n if (this.evaluatorOptions.ignoreErrors) {\n warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n return;\n }\n throw reason;\n }\n async getContentStream() {\n const content = await this.pdfManager.ensure(this, \"content\");\n if (content instanceof BaseStream && !content.isImageStream) {\n if (content.isAsync) {\n const bytes = await content.asyncGetBytes();\n if (bytes) {\n return new Stream(bytes, 0, bytes.length, content.dict);\n }\n }\n return content;\n }\n if (Array.isArray(content)) {\n const promises = [];\n for (let i = 0, ii = content.length; i < ii; i++) {\n const item = content[i];\n if (item instanceof BaseStream && item.isAsync) {\n promises.push(item.asyncGetBytes().then(bytes => {\n if (bytes) {\n content[i] = new Stream(bytes, 0, bytes.length, item.dict);\n }\n }));\n }\n }\n if (promises.length > 0) {\n await Promise.all(promises);\n }\n return new StreamsSequenceStream(content, this.#onSubStreamError.bind(this));\n }\n return new NullStream();\n }\n get xfaData() {\n return shadow(this, \"xfaData\", this.xfaFactory ? {\n bbox: this.xfaFactory.getBoundingBox(this.pageIndex)\n } : null);\n }\n async #replaceIdByRef(annotations, deletedAnnotations, existingAnnotations) {\n const promises = [];\n for (const annotation of annotations) {\n if (!annotation.id) {\n continue;\n }\n const ref = Ref.fromString(annotation.id);\n if (!ref) {\n warn(`A non-linked annotation cannot be modified: ${annotation.id}`);\n continue;\n }\n if (annotation.deleted) {\n deletedAnnotations.put(ref);\n if (annotation.popupRef) {\n const popupRef = Ref.fromString(annotation.popupRef);\n if (popupRef) {\n deletedAnnotations.put(popupRef);\n }\n }\n continue;\n }\n if (annotation.popup?.deleted) {\n const popupRef = Ref.fromString(annotation.popupRef);\n if (popupRef) {\n deletedAnnotations.put(popupRef);\n }\n }\n existingAnnotations?.put(ref);\n annotation.ref = ref;\n promises.push(this.xref.fetchAsync(ref).then(obj => {\n if (obj instanceof Dict) {\n annotation.oldAnnotation = obj.clone();\n }\n }, () => {\n warn(`Cannot fetch \\`oldAnnotation\\` for: ${ref}.`);\n }));\n delete annotation.id;\n }\n await Promise.all(promises);\n }\n async saveNewAnnotations(handler, task, annotations, imagePromises, changes) {\n if (this.xfaFactory) {\n throw new Error(\"XFA: Cannot save new annotations.\");\n }\n const partialEvaluator = this._createPartialEvaluator(handler);\n const deletedAnnotations = new RefSet();\n const existingAnnotations = new RefSet();\n await this.#replaceIdByRef(annotations, deletedAnnotations, existingAnnotations);\n const pageDict = this.pageDict;\n const annotationsArray = this.annotations.filter(a => !(a instanceof Ref && deletedAnnotations.has(a)));\n const newData = await AnnotationFactory.saveNewAnnotations(partialEvaluator, this.xref, task, annotations, imagePromises, changes);\n for (const {\n ref\n } of newData.annotations) {\n if (ref instanceof Ref && !existingAnnotations.has(ref)) {\n annotationsArray.push(ref);\n }\n }\n const dict = pageDict.clone();\n dict.set(\"Annots\", annotationsArray);\n changes.put(this.ref, {\n data: dict\n });\n for (const deletedRef of deletedAnnotations) {\n changes.put(deletedRef, {\n data: null\n });\n }\n }\n async save(handler, task, annotationStorage, changes) {\n const partialEvaluator = this._createPartialEvaluator(handler);\n const annotations = await this._parsedAnnotations;\n const promises = [];\n for (const annotation of annotations) {\n promises.push(annotation.save(partialEvaluator, task, annotationStorage, changes).catch(function (reason) {\n warn(\"save - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n return null;\n }));\n }\n return Promise.all(promises);\n }\n async loadResources(keys) {\n await (this.#resourcesPromise ??= this.pdfManager.ensure(this, \"resources\"));\n await ObjectLoader.load(this.resources, keys, this.xref);\n }\n async #getMergedResources(streamDict, keys) {\n const localResources = streamDict?.get(\"Resources\");\n if (!(localResources instanceof Dict && localResources.size)) {\n return this.resources;\n }\n await ObjectLoader.load(localResources, keys, this.xref);\n return Dict.merge({\n xref: this.xref,\n dictArray: [localResources, this.resources],\n mergeSubDicts: true\n });\n }\n async getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n pageIndex = this.pageIndex,\n annotationStorage = null,\n modifiedIds = null\n }) {\n const contentStreamPromise = this.getContentStream();\n const resourcesPromise = this.loadResources(RESOURCES_KEYS_OPERATOR_LIST);\n const partialEvaluator = this._createPartialEvaluator(handler, pageIndex);\n const newAnnotsByPage = !this.xfaFactory ? getNewAnnotationsMap(annotationStorage) : null;\n const newAnnots = newAnnotsByPage?.get(this.pageIndex);\n let newAnnotationsPromise = Promise.resolve(null);\n let deletedAnnotations = null;\n if (newAnnots) {\n const annotationGlobalsPromise = this.pdfManager.ensureDoc(\"annotationGlobals\");\n let imagePromises;\n const missingBitmaps = new Set();\n for (const {\n bitmapId,\n bitmap\n } of newAnnots) {\n if (bitmapId && !bitmap && !missingBitmaps.has(bitmapId)) {\n missingBitmaps.add(bitmapId);\n }\n }\n const {\n isOffscreenCanvasSupported\n } = this.evaluatorOptions;\n if (missingBitmaps.size > 0) {\n const annotationWithBitmaps = newAnnots.slice();\n for (const [key, annotation] of annotationStorage) {\n if (!key.startsWith(AnnotationEditorPrefix)) {\n continue;\n }\n if (annotation.bitmap && missingBitmaps.has(annotation.bitmapId)) {\n annotationWithBitmaps.push(annotation);\n }\n }\n imagePromises = AnnotationFactory.generateImages(annotationWithBitmaps, this.xref, isOffscreenCanvasSupported);\n } else {\n imagePromises = AnnotationFactory.generateImages(newAnnots, this.xref, isOffscreenCanvasSupported);\n }\n deletedAnnotations = new RefSet();\n newAnnotationsPromise = Promise.all([annotationGlobalsPromise, this.#replaceIdByRef(newAnnots, deletedAnnotations, null)]).then(([annotationGlobals]) => {\n if (!annotationGlobals) {\n return null;\n }\n return AnnotationFactory.printNewAnnotations(annotationGlobals, partialEvaluator, task, newAnnots, imagePromises);\n });\n }\n const pageListPromise = Promise.all([contentStreamPromise, resourcesPromise]).then(async ([contentStream]) => {\n const resources = await this.#getMergedResources(contentStream.dict, RESOURCES_KEYS_OPERATOR_LIST);\n const opList = new OperatorList(intent, sink);\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(resources, this.nonBlendModesSet),\n pageIndex,\n cacheKey\n });\n await partialEvaluator.getOperatorList({\n stream: contentStream,\n task,\n resources,\n operatorList: opList\n });\n return opList;\n });\n let [pageOpList, annotations, newAnnotations] = await Promise.all([pageListPromise, this._parsedAnnotations, newAnnotationsPromise]);\n if (newAnnotations) {\n annotations = annotations.filter(a => !(a.ref && deletedAnnotations.has(a.ref)));\n for (let i = 0, ii = newAnnotations.length; i < ii; i++) {\n const newAnnotation = newAnnotations[i];\n if (newAnnotation.refToReplace) {\n const j = annotations.findIndex(a => a.ref && isRefsEqual(a.ref, newAnnotation.refToReplace));\n if (j >= 0) {\n annotations.splice(j, 1, newAnnotation);\n newAnnotations.splice(i--, 1);\n ii--;\n }\n }\n }\n annotations = annotations.concat(newAnnotations);\n }\n if (annotations.length === 0 || intent & RenderingIntentFlag.ANNOTATIONS_DISABLE) {\n pageOpList.flush(true);\n return {\n length: pageOpList.totalLength\n };\n }\n const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n isEditing = !!(intent & RenderingIntentFlag.IS_EDITING),\n intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n const opListPromises = [];\n for (const annotation of annotations) {\n if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage, renderForms) && annotation.mustBeViewedWhenEditing(isEditing, modifiedIds) || intentPrint && annotation.mustBePrinted(annotationStorage)) {\n opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, annotationStorage).catch(function (reason) {\n warn(\"getOperatorList - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n return {\n opList: null,\n separateForm: false,\n separateCanvas: false\n };\n }));\n }\n }\n const opLists = await Promise.all(opListPromises);\n let form = false,\n canvas = false;\n for (const {\n opList,\n separateForm,\n separateCanvas\n } of opLists) {\n pageOpList.addOpList(opList);\n form ||= separateForm;\n canvas ||= separateCanvas;\n }\n pageOpList.flush(true, {\n form,\n canvas\n });\n return {\n length: pageOpList.totalLength\n };\n }\n async extractTextContent({\n handler,\n task,\n includeMarkedContent,\n disableNormalization,\n sink,\n intersector = null\n }) {\n const contentStreamPromise = this.getContentStream();\n const resourcesPromise = this.loadResources(RESOURCES_KEYS_TEXT_CONTENT);\n const langPromise = this.pdfManager.ensureCatalog(\"lang\");\n const [contentStream,, lang] = await Promise.all([contentStreamPromise, resourcesPromise, langPromise]);\n const resources = await this.#getMergedResources(contentStream.dict, RESOURCES_KEYS_TEXT_CONTENT);\n const partialEvaluator = this._createPartialEvaluator(handler);\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources,\n includeMarkedContent,\n disableNormalization,\n sink,\n viewBox: this.view,\n lang,\n intersector\n });\n }\n async getStructTree() {\n const structTreeRoot = await this.pdfManager.ensureCatalog(\"structTreeRoot\");\n if (!structTreeRoot) {\n return null;\n }\n await this._parsedAnnotations;\n try {\n const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [structTreeRoot]);\n return await this.pdfManager.ensure(structTree, \"serializable\");\n } catch (ex) {\n warn(`getStructTree: \"${ex}\".`);\n return null;\n }\n }\n _parseStructTree(structTreeRoot) {\n const tree = new StructTreePage(structTreeRoot, this.pageDict);\n tree.parse(this.ref);\n return tree;\n }\n async getAnnotationsData(handler, task, intent) {\n const annotations = await this._parsedAnnotations;\n if (annotations.length === 0) {\n return annotations;\n }\n const annotationsData = [],\n textContentPromises = [];\n let partialEvaluator;\n const intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n const highlightedAnnotations = [];\n for (const annotation of annotations) {\n const isVisible = intentAny || intentDisplay && annotation.viewable;\n if (isVisible || intentPrint && annotation.printable) {\n annotationsData.push(annotation.data);\n }\n if (annotation.hasTextContent && isVisible) {\n partialEvaluator ??= this._createPartialEvaluator(handler);\n textContentPromises.push(annotation.extractTextContent(partialEvaluator, task, [-Infinity, -Infinity, Infinity, Infinity]).catch(function (reason) {\n warn(`getAnnotationsData - ignoring textContent during \"${task.name}\" task: \"${reason}\".`);\n }));\n } else if (annotation.overlaysTextContent && isVisible) {\n highlightedAnnotations.push(annotation);\n }\n }\n if (highlightedAnnotations.length > 0) {\n const intersector = new Intersector(highlightedAnnotations);\n textContentPromises.push(this.extractTextContent({\n handler,\n task,\n includeMarkedContent: false,\n disableNormalization: false,\n sink: null,\n intersector\n }).then(() => {\n intersector.setText();\n }));\n }\n await Promise.all(textContentPromises);\n return annotationsData;\n }\n get annotations() {\n const annots = this.#getInheritableProperty(\"Annots\");\n return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n }\n get _parsedAnnotations() {\n const promise = this.pdfManager.ensure(this, \"annotations\").then(async annots => {\n if (annots.length === 0) {\n return annots;\n }\n const [annotationGlobals, fieldObjects] = await Promise.all([this.pdfManager.ensureDoc(\"annotationGlobals\"), this.pdfManager.ensureDoc(\"fieldObjects\")]);\n if (!annotationGlobals) {\n return [];\n }\n const orphanFields = fieldObjects?.orphanFields;\n const annotationPromises = [];\n for (const annotationRef of annots) {\n annotationPromises.push(AnnotationFactory.create(this.xref, annotationRef, annotationGlobals, this._localIdFactory, false, orphanFields, null, this.ref).catch(function (reason) {\n warn(`_parsedAnnotations: \"${reason}\".`);\n return null;\n }));\n }\n const sortedAnnotations = [];\n let popupAnnotations, widgetAnnotations;\n for (const annotation of await Promise.all(annotationPromises)) {\n if (!annotation) {\n continue;\n }\n if (annotation instanceof WidgetAnnotation) {\n (widgetAnnotations ||= []).push(annotation);\n continue;\n }\n if (annotation instanceof PopupAnnotation) {\n (popupAnnotations ||= []).push(annotation);\n continue;\n }\n sortedAnnotations.push(annotation);\n }\n if (widgetAnnotations) {\n sortedAnnotations.push(...widgetAnnotations);\n }\n if (popupAnnotations) {\n sortedAnnotations.push(...popupAnnotations);\n }\n return sortedAnnotations;\n });\n return shadow(this, \"_parsedAnnotations\", promise);\n }\n get jsActions() {\n const actions = collectActions(this.xref, this.pageDict, PageActionEventType);\n return shadow(this, \"jsActions\", actions);\n }\n async collectAnnotationsByType(handler, task, types, promises, annotationGlobals) {\n const {\n pageIndex\n } = this;\n if (Object.hasOwn(this, \"_parsedAnnotations\")) {\n const cachedAnnotations = await this._parsedAnnotations;\n for (const {\n data\n } of cachedAnnotations) {\n if (!types || types.has(data.annotationType)) {\n data.pageIndex = pageIndex;\n promises.push(Promise.resolve(data));\n }\n }\n return;\n }\n const annots = await this.pdfManager.ensure(this, \"annotations\");\n let partialEvaluator;\n for (const annotationRef of annots) {\n promises.push(AnnotationFactory.create(this.xref, annotationRef, annotationGlobals, this._localIdFactory, false, null, types, this.ref).then(async annotation => {\n if (!annotation) {\n return null;\n }\n annotation.data.pageIndex = pageIndex;\n if (annotation.hasTextContent && annotation.viewable) {\n partialEvaluator ??= this._createPartialEvaluator(handler);\n await annotation.extractTextContent(partialEvaluator, task, [-Infinity, -Infinity, Infinity, Infinity]);\n }\n return annotation.data;\n }).catch(function (reason) {\n warn(`collectAnnotationsByType: \"${reason}\".`);\n return null;\n }));\n }\n }\n}\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\nfunction find(stream, signature, limit = 1024, backwards = false) {\n const signatureLength = signature.length;\n const scanBytes = stream.peekBytes(limit);\n const scanLength = scanBytes.length - signatureLength;\n if (scanLength <= 0) {\n return false;\n }\n if (backwards) {\n const signatureEnd = signatureLength - 1;\n let pos = scanBytes.length - 1;\n while (pos >= signatureEnd) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) {\n j++;\n }\n if (j >= signatureLength) {\n stream.pos += pos - signatureEnd;\n return true;\n }\n pos--;\n }\n } else {\n let pos = 0;\n while (pos <= scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n stream.pos += pos;\n return true;\n }\n pos++;\n }\n }\n return false;\n}\nclass PDFDocument {\n #pagePromises = new Map();\n #signatureData = null;\n #version = null;\n constructor(pdfManager, stream) {\n if (stream.length <= 0) {\n throw new InvalidPDFException(\"The PDF file is empty, i.e. its size is zero bytes.\");\n }\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new XRef(stream, pdfManager);\n const idCounters = {\n font: 0\n };\n this._globalIdFactory = class {\n static getDocId() {\n return `g_${pdfManager.docId}`;\n }\n static createFontId() {\n return `f${++idCounters.font}`;\n }\n static createObjId() {\n unreachable(\"Abstract method `createObjId` called.\");\n }\n static getPageObjId() {\n unreachable(\"Abstract method `getPageObjId` called.\");\n }\n };\n }\n parse(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new Catalog(this.pdfManager, this.xref);\n }\n get linearization() {\n let linearization = null;\n try {\n linearization = Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(err);\n }\n return shadow(this, \"linearization\", linearization);\n }\n get startXRef() {\n const stream = this.stream;\n let startXRef = 0;\n if (this.linearization) {\n stream.reset();\n if (find(stream, ENDOBJ_SIGNATURE)) {\n stream.skip(6);\n let ch = stream.peekByte();\n while (isWhiteSpace(ch)) {\n stream.pos++;\n ch = stream.peekByte();\n }\n startXRef = stream.pos - stream.start;\n }\n } else {\n const step = 1024;\n const startXRefLength = STARTXREF_SIGNATURE.length;\n let found = false,\n pos = stream.end;\n while (!found && pos > 0) {\n pos -= step - startXRefLength;\n if (pos < 0) {\n pos = 0;\n }\n stream.pos = pos;\n found = find(stream, STARTXREF_SIGNATURE, step, true);\n }\n if (found) {\n stream.skip(9);\n let ch;\n do {\n ch = stream.getByte();\n } while (isWhiteSpace(ch));\n let str = \"\";\n while (ch >= 0x20 && ch <= 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n startXRef = parseInt(str, 10);\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n return shadow(this, \"startXRef\", startXRef);\n }\n checkHeader() {\n const stream = this.stream;\n stream.reset();\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n return;\n }\n stream.moveStart();\n stream.skip(PDF_HEADER_SIGNATURE.length);\n let version = \"\",\n ch;\n while ((ch = stream.getByte()) > 0x20 && version.length < 7) {\n version += String.fromCharCode(ch);\n }\n if (PDF_VERSION_REGEXP.test(version)) {\n this.#version = version;\n } else {\n warn(`Invalid PDF header version: ${version}`);\n }\n }\n parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\n }\n get numPages() {\n let num = 0;\n if (this.catalog.hasActualNumPages) {\n num = this.catalog.numPages;\n } else if (this.xfaFactory) {\n num = this.xfaFactory.getNumPages();\n } else if (this.linearization) {\n num = this.linearization.numPages;\n } else {\n num = this.catalog.numPages;\n }\n return shadow(this, \"numPages\", num);\n }\n #hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\n if (!Array.isArray(fields)) {\n return false;\n }\n return fields.every(field => {\n field = this.xref.fetchIfRef(field);\n if (!(field instanceof Dict)) {\n return false;\n }\n if (field.has(\"Kids\")) {\n if (++recursionDepth > RECURSION_LIMIT) {\n warn(\"#hasOnlyDocumentSignatures: maximum recursion depth reached\");\n return false;\n }\n return this.#hasOnlyDocumentSignatures(field.get(\"Kids\"), recursionDepth);\n }\n const isSignature = isName(getInheritableProperty({\n dict: field,\n key: \"FT\"\n }), \"Sig\");\n const rectangle = field.get(\"Rect\");\n const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0);\n return isSignature && isInvisible;\n });\n }\n get _xfaStreams() {\n const {\n acroForm\n } = this.catalog;\n if (!acroForm) {\n return null;\n }\n const xfa = acroForm.get(\"XFA\");\n const entries = new Map([\"xdp:xdp\", \"template\", \"datasets\", \"config\", \"connectionSet\", \"localeSet\", \"stylesheet\", \"/xdp:xdp\"].map(e => [e, null]));\n if (xfa instanceof BaseStream && !xfa.isEmpty) {\n entries.set(\"xdp:xdp\", xfa);\n return entries;\n }\n if (!Array.isArray(xfa) || xfa.length === 0) {\n return null;\n }\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n let name;\n if (i === 0) {\n name = \"xdp:xdp\";\n } else if (i === ii - 2) {\n name = \"/xdp:xdp\";\n } else {\n name = xfa[i];\n }\n if (!entries.has(name)) {\n continue;\n }\n const data = this.xref.fetchIfRef(xfa[i + 1]);\n if (!(data instanceof BaseStream) || data.isEmpty) {\n continue;\n }\n entries.set(name, data);\n }\n return entries;\n }\n get xfaDatasets() {\n const streams = this._xfaStreams;\n if (!streams) {\n return shadow(this, \"xfaDatasets\", null);\n }\n for (const key of [\"datasets\", \"xdp:xdp\"]) {\n const stream = streams.get(key);\n if (!stream) {\n continue;\n }\n try {\n const str = stringToUTF8String(stream.getString());\n const data = {\n [key]: str\n };\n return shadow(this, \"xfaDatasets\", new DatasetReader(data));\n } catch {\n warn(\"XFA - Invalid utf-8 string.\");\n break;\n }\n }\n return shadow(this, \"xfaDatasets\", null);\n }\n get xfaData() {\n const streams = this._xfaStreams;\n if (!streams) {\n return null;\n }\n const data = new Map();\n for (const [key, stream] of streams) {\n if (!stream) {\n continue;\n }\n try {\n data.set(key, stringToUTF8String(stream.getString()));\n } catch {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n return data;\n }\n get xfaFactory() {\n let data;\n if (this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) {\n data = this.xfaData;\n }\n return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n }\n get isPureXfa() {\n return this.xfaFactory ? this.xfaFactory.isValid() : false;\n }\n get htmlForXfa() {\n return this.xfaFactory ? this.xfaFactory.getPages() : null;\n }\n async #loadXfaImages() {\n const xfaImages = await this.pdfManager.ensureCatalog(\"xfaImages\");\n if (!xfaImages) {\n return;\n }\n this.xfaFactory.setImages(xfaImages);\n }\n async #loadXfaFonts(handler, task) {\n const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n if (!acroForm) {\n return;\n }\n const resources = await acroForm.getAsync(\"DR\");\n if (!(resources instanceof Dict)) {\n return;\n }\n await ObjectLoader.load(resources, [\"Font\"], this.xref);\n const fontRes = resources.get(\"Font\");\n if (!(fontRes instanceof Dict)) {\n return;\n }\n const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions, {\n useSystemFonts: false\n });\n const {\n builtInCMapCache,\n fontCache,\n standardFontDataCache\n } = this.catalog;\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: -1,\n idFactory: this._globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n options\n });\n const operatorList = new OperatorList();\n const pdfFonts = [];\n const initialState = {\n get font() {\n return pdfFonts.at(-1);\n },\n set font(font) {\n pdfFonts.push(font);\n },\n clone() {\n return this;\n }\n };\n const parseFont = (fontName, fallbackFontDict, cssFontInfo) => partialEvaluator.handleSetFont(resources, [Name.get(fontName), 1], null, operatorList, task, initialState, fallbackFontDict, cssFontInfo).catch(reason => {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n });\n const promises = [];\n for (const [fontName, font] of fontRes) {\n const descriptor = font.get(\"FontDescriptor\");\n if (!(descriptor instanceof Dict)) {\n continue;\n }\n const fontFamily = normalizeCSSFontFamily(descriptor.get(\"FontFamily\"));\n const fontWeight = descriptor.get(\"FontWeight\");\n const italicAngle = -descriptor.get(\"ItalicAngle\");\n const cssFontInfo = {\n fontFamily,\n fontWeight,\n italicAngle\n };\n if (!validateCSSFont(cssFontInfo)) {\n continue;\n }\n promises.push(parseFont(fontName, null, cssFontInfo));\n }\n await Promise.all(promises);\n const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n if (!missingFonts) {\n return;\n }\n options.ignoreErrors = true;\n promises.length = 0;\n pdfFonts.length = 0;\n const reallyMissingFonts = new Set();\n for (const missing of missingFonts) {\n if (!getXfaFontName(`${missing}-Regular`)) {\n reallyMissingFonts.add(missing);\n }\n }\n if (reallyMissingFonts.size) {\n missingFonts.push(\"PdfJS-Fallback\");\n }\n for (const missing of missingFonts) {\n if (reallyMissingFonts.has(missing)) {\n continue;\n }\n for (const fontInfo of [{\n name: \"Regular\",\n fontWeight: 400,\n italicAngle: 0\n }, {\n name: \"Bold\",\n fontWeight: 700,\n italicAngle: 0\n }, {\n name: \"Italic\",\n fontWeight: 400,\n italicAngle: 12\n }, {\n name: \"BoldItalic\",\n fontWeight: 700,\n italicAngle: 12\n }]) {\n const name = `${missing}-${fontInfo.name}`;\n promises.push(parseFont(name, getXfaFontDict(name), {\n fontFamily: missing,\n fontWeight: fontInfo.fontWeight,\n italicAngle: fontInfo.italicAngle\n }));\n }\n }\n await Promise.all(promises);\n this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n }\n loadXfaResources(handler, task) {\n return Promise.all([this.#loadXfaFonts(handler, task).catch(() => {}), this.#loadXfaImages()]);\n }\n serializeXfaData(annotationStorage) {\n return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) : null;\n }\n get version() {\n return this.catalog.version || this.#version;\n }\n get formInfo() {\n const formInfo = {\n hasFields: false,\n hasAcroForm: false,\n hasXfa: false,\n hasSignatures: false\n };\n const {\n acroForm\n } = this.catalog;\n if (!acroForm) {\n return shadow(this, \"formInfo\", formInfo);\n }\n try {\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n formInfo.hasFields = hasFields;\n const xfa = acroForm.get(\"XFA\");\n formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || xfa instanceof BaseStream && !xfa.isEmpty;\n const sigFlags = acroForm.get(\"SigFlags\");\n const hasSignatures = !!(sigFlags & 0x1);\n const hasOnlyDocumentSignatures = hasSignatures && this.#hasOnlyDocumentSignatures(fields);\n formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n formInfo.hasSignatures = hasSignatures;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Cannot fetch form information: \"${ex}\".`);\n }\n return shadow(this, \"formInfo\", formInfo);\n }\n get documentInfo() {\n const {\n catalog,\n formInfo,\n xref\n } = this;\n const docInfo = {\n PDFFormatVersion: this.version,\n Language: catalog.lang,\n EncryptFilterName: xref.encrypt?.filterName ?? null,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: formInfo.hasAcroForm,\n IsXFAPresent: formInfo.hasXfa,\n IsCollectionPresent: !!catalog.collection,\n IsSignaturesPresent: formInfo.hasSignatures\n };\n let infoDict;\n try {\n infoDict = xref.trailer.get(\"Info\");\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(\"The document information dictionary is invalid.\");\n }\n if (!(infoDict instanceof Dict)) {\n return shadow(this, \"documentInfo\", docInfo);\n }\n for (const [key, value] of infoDict) {\n switch (key) {\n case \"Title\":\n case \"Author\":\n case \"Subject\":\n case \"Keywords\":\n case \"Creator\":\n case \"Producer\":\n case \"CreationDate\":\n case \"ModDate\":\n if (typeof value === \"string\") {\n docInfo[key] = stringToPDFString(value);\n continue;\n }\n break;\n case \"Trapped\":\n if (value instanceof Name) {\n docInfo[key] = value;\n continue;\n }\n break;\n default:\n let customValue;\n switch (typeof value) {\n case \"string\":\n customValue = stringToPDFString(value);\n break;\n case \"number\":\n case \"boolean\":\n customValue = value;\n break;\n default:\n if (value instanceof Name) {\n customValue = value;\n break;\n }\n warn(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n continue;\n }\n (docInfo.Custom ??= new Map()).set(key, customValue);\n continue;\n }\n warn(`Bad value, for key \"${key}\", in Info: ${value}.`);\n }\n return shadow(this, \"documentInfo\", docInfo);\n }\n get fingerprints() {\n const FINGERPRINT_FIRST_BYTES = 1024;\n const EMPTY_FINGERPRINT = \"\\x00\".repeat(16);\n function validate(data) {\n return typeof data === \"string\" && data.length === 16 && data !== EMPTY_FINGERPRINT;\n }\n const id = this.xref.trailer.get(\"ID\");\n let hashOriginal, hashModified;\n if (Array.isArray(id) && validate(id[0])) {\n hashOriginal = stringToBytes(id[0]);\n if (id[1] !== id[0] && validate(id[1])) {\n hashModified = stringToBytes(id[1]);\n }\n } else {\n hashOriginal = calculateMD5(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n }\n return shadow(this, \"fingerprints\", [hashOriginal.toHex(), hashModified?.toHex() ?? null]);\n }\n async #getLinearizationPage(pageIndex) {\n const {\n catalog,\n linearization,\n xref\n } = this;\n const ref = Ref.get(linearization.objectNumberFirst, 0);\n try {\n const obj = await xref.fetchAsync(ref);\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !obj.has(\"Type\") && !obj.has(\"Kids\") && obj.has(\"Contents\")) {\n if (!catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1);\n }\n if (!catalog.pageIndexCache.has(ref)) {\n catalog.pageIndexCache.put(ref, 0);\n }\n return [obj, ref];\n }\n }\n throw new FormatError(\"The Linearization dictionary doesn't point to a valid Page dictionary.\");\n } catch (reason) {\n warn(`_getLinearizationPage: \"${reason.message}\".`);\n return catalog.getPageDict(pageIndex);\n }\n }\n getPage(pageIndex) {\n const cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const {\n catalog,\n linearization,\n xfaFactory\n } = this;\n let promise;\n if (xfaFactory) {\n promise = Promise.resolve([Dict.empty, null]);\n } else if (linearization?.pageFirst === pageIndex) {\n promise = this.#getLinearizationPage(pageIndex);\n } else {\n promise = catalog.getPageDict(pageIndex);\n }\n promise = promise.then(([pageDict, ref]) => new Page({\n pdfManager: this.pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalColorSpaceCache: catalog.globalColorSpaceCache,\n globalImageCache: catalog.globalImageCache,\n systemFontCache: catalog.systemFontCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory\n }));\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n async checkFirstPage(recoveryMode = false) {\n if (recoveryMode) {\n return;\n }\n try {\n await this.getPage(0);\n } catch (reason) {\n if (reason instanceof XRefEntryException) {\n this.#pagePromises.delete(0);\n await this.cleanup();\n throw new XRefParseException();\n }\n }\n }\n async checkLastPage(recoveryMode = false) {\n const {\n catalog,\n pdfManager\n } = this;\n catalog.setActualNumPages();\n let numPages;\n try {\n await Promise.all([pdfManager.ensureDoc(\"xfaFactory\"), pdfManager.ensureDoc(\"linearization\"), pdfManager.ensureCatalog(\"numPages\")]);\n if (this.xfaFactory) {\n return;\n } else if (this.linearization) {\n numPages = this.linearization.numPages;\n } else {\n numPages = catalog.numPages;\n }\n if (!Number.isInteger(numPages)) {\n throw new FormatError(\"Page count is not an integer.\");\n } else if (numPages <= 1) {\n return;\n }\n await this.getPage(numPages - 1);\n } catch (reason) {\n this.#pagePromises.delete(numPages - 1);\n await this.cleanup();\n if (reason instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n let pagesTree;\n try {\n pagesTree = await catalog.getAllPageDicts(recoveryMode);\n } catch (reasonAll) {\n if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n catalog.setActualNumPages(1);\n return;\n }\n for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n let promise;\n if (pageDict instanceof Error) {\n promise = Promise.reject(pageDict);\n promise.catch(() => {});\n } else {\n promise = Promise.resolve(new Page({\n pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalColorSpaceCache: this.globalColorSpaceCache,\n globalImageCache: catalog.globalImageCache,\n systemFontCache: catalog.systemFontCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory: null\n }));\n }\n this.#pagePromises.set(pageIndex, promise);\n }\n catalog.setActualNumPages(pagesTree.size);\n }\n }\n async fontFallback(id, handler) {\n const {\n catalog,\n pdfManager\n } = this;\n for (const translatedFont of await Promise.all(catalog.fontCache)) {\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler, pdfManager.evaluatorOptions);\n return;\n }\n }\n }\n async cleanup(manuallyTriggered = false) {\n return this.catalog ? this.catalog.cleanup(manuallyTriggered) : clearGlobalCaches();\n }\n async #collectFieldObjects(name, parentRef, fieldRef, promises, annotationGlobals, visitedRefs, orphanFields) {\n const {\n xref\n } = this;\n if (!(fieldRef instanceof Ref) || visitedRefs.has(fieldRef)) {\n return;\n }\n visitedRefs.put(fieldRef);\n const field = await xref.fetchAsync(fieldRef);\n if (!(field instanceof Dict)) {\n return;\n }\n let subtype = await field.getAsync(\"Subtype\");\n subtype = subtype instanceof Name ? subtype.name : null;\n switch (subtype) {\n case \"Link\":\n return;\n }\n if (field.has(\"T\")) {\n const partName = stringToPDFString(await field.getAsync(\"T\"));\n name = name === \"\" ? partName : `${name}.${partName}`;\n } else {\n let obj = field;\n const walkedRefs = new RefSet();\n while (true) {\n obj = obj.getRaw(\"Parent\") || parentRef;\n if (obj instanceof Ref) {\n if (visitedRefs.has(obj) || walkedRefs.has(obj)) {\n break;\n }\n walkedRefs.put(obj);\n obj = await xref.fetchAsync(obj);\n }\n if (!(obj instanceof Dict)) {\n break;\n }\n if (obj.has(\"T\")) {\n const partName = stringToPDFString(await obj.getAsync(\"T\"));\n name = name === \"\" ? partName : `${name}.${partName}`;\n break;\n }\n }\n }\n if (parentRef && !field.has(\"Parent\") && isName(field.get(\"Subtype\"), \"Widget\")) {\n orphanFields.put(fieldRef, parentRef);\n }\n promises.getOrInsertComputed(name, makeArr).push(AnnotationFactory.create(xref, fieldRef, annotationGlobals, null, true, orphanFields, null, null).then(annotation => annotation?.getFieldObject()).catch(function (reason) {\n warn(`#collectFieldObjects: \"${reason}\".`);\n return null;\n }));\n if (!field.has(\"Kids\")) {\n return;\n }\n const kids = await field.getAsync(\"Kids\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n await this.#collectFieldObjects(name, fieldRef, kid, promises, annotationGlobals, visitedRefs, orphanFields);\n }\n }\n }\n get fieldObjects() {\n const promise = this.pdfManager.ensureDoc(\"formInfo\").then(async formInfo => {\n if (!formInfo.hasFields) {\n return null;\n }\n const annotationGlobals = await this.annotationGlobals;\n if (!annotationGlobals) {\n return null;\n }\n const {\n acroForm\n } = annotationGlobals;\n const visitedRefs = new RefSet();\n const allFields = new Map();\n const fieldPromises = new Map();\n const orphanFields = new RefMap();\n for (const fieldRef of acroForm.get(\"Fields\")) {\n await this.#collectFieldObjects(\"\", null, fieldRef, fieldPromises, annotationGlobals, visitedRefs, orphanFields);\n }\n const allPromises = [];\n for (const [name, promises] of fieldPromises) {\n allPromises.push(Promise.all(promises).then(fields => {\n fields = fields.filter(Boolean);\n if (fields.length > 0) {\n allFields.set(name, fields);\n }\n }));\n }\n await Promise.all(allPromises);\n return {\n allFields: allFields.size ? allFields : null,\n orphanFields\n };\n });\n return shadow(this, \"fieldObjects\", promise);\n }\n async #collectSignatureFields(fields, out, visitedRefs) {\n if (!Array.isArray(fields)) {\n return;\n }\n for (const fieldRef of fields) {\n if (fieldRef instanceof Ref) {\n if (visitedRefs.has(fieldRef)) {\n continue;\n }\n visitedRefs.put(fieldRef);\n }\n const field = await this.xref.fetchIfRefAsync(fieldRef);\n if (!(field instanceof Dict)) {\n continue;\n }\n if (isName(await field.getAsync(\"FT\"), \"Sig\")) {\n const sigDict = await field.getAsync(\"V\");\n if (sigDict instanceof Dict) {\n const parsed = await this.#parseSignatureDict(field, sigDict, fieldRef);\n if (parsed) {\n out.push(parsed);\n }\n }\n }\n if (field.has(\"Kids\")) {\n await this.#collectSignatureFields(await field.getAsync(\"Kids\"), out, visitedRefs);\n }\n }\n }\n async #getByteRange(begin, end) {\n try {\n return this.stream.getByteRange(begin, end);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.pdfManager.requestRange(begin, end);\n return this.#getByteRange(begin, end);\n }\n }\n async #coversWholeDocument(signedEnd, modificationsAfterSignature) {\n if (modificationsAfterSignature > 0) {\n return false;\n }\n const fileLength = this.stream.end;\n for (let begin = signedEnd; begin < fileLength; begin += SIGNATURE_TAIL_CHUNK_SIZE) {\n const end = Math.min(begin + SIGNATURE_TAIL_CHUNK_SIZE, fileLength);\n const tail = await this.#getByteRange(begin, end);\n for (const byte of tail) {\n if (byte !== 0x00 && byte !== 0x09 && byte !== 0x0a && byte !== 0x0c && byte !== 0x0d && byte !== 0x20) {\n return false;\n }\n }\n }\n return true;\n }\n async #parseSignatureDict(field, sigDict, fieldRef) {\n const byteRange = await sigDict.getAsync(\"ByteRange\");\n if (!Array.isArray(byteRange) || byteRange.length !== 4 || byteRange.some(n => !Number.isInteger(n) || n < 0)) {\n return null;\n }\n const [a, b, c, d] = byteRange;\n const fileLength = this.stream.end || 0;\n if (a !== 0 || b <= 0 || a + b > c || c + d > fileLength || fileLength === 0) {\n return null;\n }\n const contents = await sigDict.getAsync(\"Contents\");\n if (typeof contents !== \"string\" || contents.length === 0) {\n return null;\n }\n const [filterName, subFilterName, t, name, reason, location, contactInfo, m] = await Promise.all([sigDict.getAsync(\"Filter\"), sigDict.getAsync(\"SubFilter\"), field.getAsync(\"T\"), sigDict.getAsync(\"Name\"), sigDict.getAsync(\"Reason\"), sigDict.getAsync(\"Location\"), sigDict.getAsync(\"ContactInfo\"), sigDict.getAsync(\"M\")]);\n const filter = filterName instanceof Name ? filterName.name : null,\n subFilter = subFilterName instanceof Name ? subFilterName.name : null;\n let signatureType = null;\n if (subFilter === \"adbe.pkcs7.detached\") {\n signatureType = 0;\n } else if (subFilter === \"adbe.pkcs7.sha1\") {\n signatureType = 1;\n }\n const refKey = fieldRef instanceof Ref ? fieldRef.toString() : \"inline\";\n return {\n id: `${refKey}:${a}-${b}-${c}-${d}`,\n fieldName: typeof t === \"string\" ? stringToPDFString(t) : \"\",\n signerName: typeof name === \"string\" ? stringToPDFString(name) : null,\n reason: typeof reason === \"string\" ? stringToPDFString(reason) : null,\n location: typeof location === \"string\" ? stringToPDFString(location) : null,\n contactInfo: typeof contactInfo === \"string\" ? stringToPDFString(contactInfo) : null,\n signingTime: typeof m === \"string\" ? m : null,\n filter,\n subFilter,\n signatureType,\n byteRange,\n pkcs7: stringToBytes(contents),\n revisionIndex: 0,\n parentId: null\n };\n }\n get signatures() {\n const promise = this.pdfManager.ensureDoc(\"formInfo\").then(async formInfo => {\n if (!formInfo.hasSignatures || !formInfo.hasFields) {\n return null;\n }\n const annotationGlobals = await this.annotationGlobals;\n if (!annotationGlobals) {\n return null;\n }\n const fields = annotationGlobals.acroForm.get(\"Fields\");\n const collected = [];\n await this.#collectSignatureFields(fields, collected, new RefSet());\n await Promise.all(collected.map(async signature => {\n const signedEnd = signature.byteRange[2] + signature.byteRange[3];\n signature.modificationsAfterSignature = this.xref.countUpdatesAfter(signedEnd);\n signature.coversWholeDocument = await this.#coversWholeDocument(signedEnd, signature.modificationsAfterSignature);\n }));\n collected.sort((a, b) => b.byteRange[2] + b.byteRange[3] - (a.byteRange[2] + a.byteRange[3]));\n for (let i = 0, ii = collected.length; i < ii; i++) {\n const sig = collected[i];\n sig.revisionIndex = i;\n for (let j = i - 1; j >= 0; j--) {\n const candidate = collected[j];\n if (candidate.byteRange[2] + candidate.byteRange[3] > sig.byteRange[2] + sig.byteRange[3]) {\n sig.parentId = candidate.id;\n break;\n }\n }\n }\n const signatureData = new Map();\n const metadata = collected.map(sig => {\n const {\n pkcs7,\n ...rest\n } = sig;\n signatureData.set(sig.id, {\n byteRange: sig.byteRange,\n pkcs7\n });\n return rest;\n });\n this.#signatureData = signatureData;\n return metadata.length ? metadata : null;\n });\n return shadow(this, \"signatures\", promise);\n }\n async getSignatureData(id) {\n await this.signatures;\n const signature = this.#signatureData?.get(id);\n if (!signature) {\n return null;\n }\n const {\n byteRange,\n pkcs7\n } = signature;\n const [a, b, c, d] = byteRange;\n const data = await Promise.all([this.#getByteRange(a, a + b), this.#getByteRange(c, c + d)]);\n return {\n data,\n pkcs7\n };\n }\n get hasJSActions() {\n const promise = Promise.all([this.pdfManager.ensureCatalog(\"jsActions\"), this.pdfManager.ensureDoc(\"fieldObjects\")]).then(([catalogJsActions, fieldObjects]) => {\n if (catalogJsActions) {\n return true;\n }\n if (fieldObjects?.allFields) {\n return fieldObjects.allFields.values().some(fieldObj => fieldObj.some(obj => obj.actions !== null));\n }\n return false;\n });\n return shadow(this, \"hasJSActions\", promise);\n }\n get calculationOrderIds() {\n const calculationOrder = this.catalog.acroForm?.get(\"CO\");\n if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n const ids = [];\n for (const id of calculationOrder) {\n if (id instanceof Ref) {\n ids.push(id.toString());\n }\n }\n return shadow(this, \"calculationOrderIds\", ids.length ? ids : null);\n }\n get annotationGlobals() {\n return shadow(this, \"annotationGlobals\", AnnotationFactory.createGlobals(this.pdfManager));\n }\n async toJSObject(value, firstCall = true) {\n throw new Error(\"Not implemented: toJSObject\");\n }\n}\n\n;// ./src/core/pdf_manager.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction parseDocBaseUrl(url) {\n if (url) {\n const absoluteUrl = createValidAbsoluteUrl(url);\n if (absoluteUrl) {\n return absoluteUrl.href;\n }\n warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n }\n return null;\n}\nclass BasePdfManager {\n constructor({\n docBaseUrl,\n docId,\n enableXfa,\n evaluatorOptions,\n handler,\n password\n }) {\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this._docId = docId;\n this._password = password;\n this.enableXfa = enableXfa;\n evaluatorOptions.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported;\n evaluatorOptions.isImageDecoderSupported &&= FeatureTest.isImageDecoderSupported;\n this.evaluatorOptions = Object.freeze(evaluatorOptions);\n ImageResizer.setOptions(evaluatorOptions);\n JpegStream.setOptions(evaluatorOptions);\n OperatorList.setOptions(evaluatorOptions);\n const options = {\n ...evaluatorOptions,\n handler\n };\n IccColorSpace.setOptions(options);\n CmykICCBasedCS.setOptions(options);\n PDFFunctionFactory.setOptions(options);\n Pattern.setOptions(options);\n WasmImage.setOptions(options);\n }\n get docId() {\n return this._docId;\n }\n get password() {\n return this._password;\n }\n get docBaseUrl() {\n return this._docBaseUrl;\n }\n ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n async initDocument(recoveryMode) {\n await this.ensureDoc(\"checkHeader\");\n await this.ensureDoc(\"parseStartXRef\");\n await this.ensureDoc(\"parse\", [recoveryMode]);\n await this.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n await this.ensureDoc(\"checkLastPage\", [recoveryMode]);\n }\n getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n cleanup(manuallyTriggered = false) {\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n async ensure(obj, prop, args) {\n unreachable(\"Abstract method `ensure` called\");\n }\n requestRange(begin, end) {\n unreachable(\"Abstract method `requestRange` called\");\n }\n requestLoadedStream(noFetch = false) {\n unreachable(\"Abstract method `requestLoadedStream` called\");\n }\n sendProgressiveData(chunk) {\n unreachable(\"Abstract method `sendProgressiveData` called\");\n }\n updatePassword(password) {\n this._password = password;\n this.pdfDocument.xref.encrypt?.setPassword(password);\n }\n terminate(reason) {\n unreachable(\"Abstract method `terminate` called\");\n }\n}\nclass LocalPdfManager extends BasePdfManager {\n constructor(args) {\n super(args);\n const stream = new Stream(args.source);\n this.pdfDocument = new PDFDocument(this, stream);\n this._loadedStreamPromise = Promise.resolve(stream);\n }\n async ensure(obj, prop, args) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n }\n requestLoadedStream(noFetch = false) {\n return this._loadedStreamPromise;\n }\n terminate(reason) {}\n}\nclass NetworkPdfManager extends BasePdfManager {\n constructor(args) {\n super(args);\n this.streamManager = new ChunkedStreamManager(args.source, {\n msgHandler: args.handler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize\n });\n this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n }\n async ensure(obj, prop, args) {\n try {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return await value.apply(obj, args);\n }\n return value;\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.requestRange(ex.begin, ex.end);\n return this.ensure(obj, prop, args);\n }\n }\n requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n requestLoadedStream(noFetch = false) {\n return this.streamManager.requestAllChunks(noFetch);\n }\n sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({\n chunk\n });\n }\n terminate(reason) {\n this.streamManager.abort(reason);\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/core/writer.js\n\n\n\n\n\n\n\nasync function writeObject(ref, obj, buffer, {\n encrypt = null,\n encryptRef = null\n}) {\n const transform = encrypt && encryptRef !== ref ? encrypt.createCipherTransform(ref.num, ref.gen) : null;\n buffer.push(`${ref.num} ${ref.gen} obj\\n`);\n await writeValue(obj, buffer, transform);\n buffer.push(\"\\nendobj\\n\");\n}\nasync function writeDict(dict, buffer, transform) {\n buffer.push(\"<<\");\n for (const [key, rawObj] of dict.getRawEntries()) {\n buffer.push(` /${escapePDFName(key)} `);\n await writeValue(rawObj, buffer, transform);\n }\n buffer.push(\">>\");\n}\nasync function writeStream(stream, buffer, transform) {\n stream = stream.getOriginalStream();\n stream.reset();\n let bytes = stream.getBytes();\n const {\n dict\n } = stream;\n const [filter, params] = await Promise.all([dict.getAsync(\"Filter\"), dict.getAsync(\"DecodeParms\")]);\n const filterZero = Array.isArray(filter) ? await dict.xref.fetchIfRefAsync(filter[0]) : filter;\n const isFilterZeroFlateDecode = isName(filterZero, \"FlateDecode\");\n const isFilterZeroImageDecode = isName(filterZero, \"DCTDecode\") || isName(filterZero, \"JPXDecode\") || isName(filterZero, \"JBIG2Decode\") || isName(filterZero, \"CCITTFaxDecode\") || isName(filterZero, \"LZWDecode\");\n const isFilterZeroCompressedObject = isFilterZeroFlateDecode || isFilterZeroImageDecode || isName(filterZero, \"BrotliDecode\");\n const MIN_LENGTH_FOR_COMPRESSING = 256;\n if (!isFilterZeroCompressedObject && bytes.length >= MIN_LENGTH_FOR_COMPRESSING) {\n try {\n const cs = new CompressionStream(\"deflate\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n bytes = await new Response(cs.readable).bytes();\n let newFilter, newParams;\n if (!filter) {\n newFilter = Name.get(\"FlateDecode\");\n } else if (!isFilterZeroFlateDecode) {\n newFilter = Array.isArray(filter) ? [Name.get(\"FlateDecode\"), ...filter] : [Name.get(\"FlateDecode\"), filter];\n if (params) {\n newParams = Array.isArray(params) ? [null, ...params] : [null, params];\n }\n }\n if (newFilter) {\n dict.set(\"Filter\", newFilter);\n }\n if (newParams) {\n dict.set(\"DecodeParms\", newParams);\n }\n } catch (ex) {\n info(`writeStream - cannot compress data: \"${ex}\".`);\n }\n }\n let string = bytesToString(bytes);\n if (transform) {\n string = transform.encryptString(string);\n }\n dict.set(\"Length\", string.length);\n await writeDict(dict, buffer, transform);\n buffer.push(\" stream\\n\", string, \"\\nendstream\");\n}\nasync function writeArray(array, buffer, transform) {\n buffer.push(\"[\");\n for (let i = 0, ii = array.length; i < ii; i++) {\n await writeValue(array[i], buffer, transform);\n if (i < ii - 1) {\n buffer.push(\" \");\n }\n }\n buffer.push(\"]\");\n}\nfunction numberToPDFString(value) {\n if (Number.isInteger(value) && Math.abs(value) >= 1e21) {\n return BigInt(value).toString();\n }\n const str = value.toFixed(10);\n let end = str.length;\n while (str[end - 1] === \"0\") {\n end--;\n }\n if (str[end - 1] === \".\") {\n end--;\n }\n return str.slice(0, end);\n}\nasync function writeValue(value, buffer, transform) {\n if (value instanceof Name) {\n buffer.push(`/${escapePDFName(value.name)}`);\n } else if (value instanceof Ref) {\n buffer.push(`${value.num} ${value.gen} R`);\n } else if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n await writeArray(value, buffer, transform);\n } else if (typeof value === \"string\") {\n if (transform) {\n value = transform.encryptString(value);\n }\n buffer.push(`(${escapeString(value)})`);\n } else if (typeof value === \"number\") {\n buffer.push(numberToPDFString(value));\n } else if (typeof value === \"boolean\") {\n buffer.push(value.toString());\n } else if (value instanceof Dict) {\n await writeDict(value, buffer, transform);\n } else if (value instanceof BaseStream) {\n await writeStream(value, buffer, transform);\n } else if (value === null) {\n buffer.push(\"null\");\n } else {\n warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n }\n}\nfunction writeInt(number, size, offset, buffer) {\n for (let i = size + offset - 1; i > offset - 1; i--) {\n buffer[i] = number & 0xff;\n number >>= 8;\n }\n return offset + size;\n}\nfunction writeString(string, offset, buffer) {\n const ii = string.length;\n for (let i = 0; i < ii; i++) {\n buffer[offset + i] = string.charCodeAt(i) & 0xff;\n }\n return offset + ii;\n}\nfunction computeMD5(filesize, xrefInfo) {\n const time = Math.floor(Date.now() / 1000);\n const filename = xrefInfo.filename || \"\";\n const md5Buffer = [time.toString(), filename, filesize.toString(), ...xrefInfo.infoMap.values()];\n const md5BufferLen = Math.sumPrecise(md5Buffer.map(str => str.length));\n const array = new Uint8Array(md5BufferLen);\n let offset = 0;\n for (const str of md5Buffer) {\n offset = writeString(str, offset, array);\n }\n return bytesToString(calculateMD5(array, 0, array.length));\n}\nfunction writeXFADataForAcroform(str, changes) {\n const xml = new SimpleXMLParser({\n hasAttributes: true\n }).parseFromString(str);\n for (const {\n xfa\n } of changes) {\n if (!xfa) {\n continue;\n }\n const {\n path,\n value\n } = xfa;\n if (!path || value === null) {\n continue;\n }\n const nodePath = parseXFAPath(path);\n let node = xml.documentElement.searchNode(nodePath, 0);\n if (!node && nodePath.length > 1) {\n node = xml.documentElement.searchNode([nodePath.at(-1)], 0);\n }\n if (node) {\n node.childNodes = Array.isArray(value) ? value.map(val => new SimpleDOMNode(\"value\", val)) : [new SimpleDOMNode(\"#text\", value)];\n } else {\n warn(`Node not found for path: ${path}`);\n }\n }\n const buffer = [];\n xml.documentElement.dump(buffer);\n return buffer.join(\"\");\n}\nasync function updateAcroform({\n xref,\n acroForm,\n acroFormRef,\n hasXfa,\n hasXfaDatasetsEntry,\n xfaDatasetsRef,\n needAppearances,\n changes\n}) {\n if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) {\n warn(\"XFA - Cannot save it\");\n }\n if (!needAppearances && (!hasXfa || !xfaDatasetsRef || hasXfaDatasetsEntry)) {\n return;\n }\n const dict = acroForm.clone();\n if (hasXfa && !hasXfaDatasetsEntry) {\n const newXfa = acroForm.get(\"XFA\").slice();\n newXfa.splice(2, 0, \"datasets\");\n newXfa.splice(3, 0, xfaDatasetsRef);\n dict.set(\"XFA\", newXfa);\n }\n if (needAppearances) {\n dict.set(\"NeedAppearances\", true);\n }\n changes.put(acroFormRef, {\n data: dict\n });\n}\nfunction updateXFA({\n xfaData,\n xfaDatasetsRef,\n changes,\n xref\n}) {\n if (xfaData === null) {\n const datasets = xref.fetchIfRef(xfaDatasetsRef);\n xfaData = writeXFADataForAcroform(datasets.getString(), changes);\n }\n const xfaDataStream = new StringStream(xfaData, new Dict(xref));\n xfaDataStream.dict.setIfName(\"Type\", \"EmbeddedFile\");\n changes.put(xfaDatasetsRef, {\n data: xfaDataStream\n });\n}\nasync function getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n buffer.push(\"xref\\n\");\n const indexes = getIndexes(newRefs);\n let indexesPosition = 0;\n for (const {\n ref,\n data\n } of newRefs) {\n if (ref.num === indexes[indexesPosition]) {\n buffer.push(`${indexes[indexesPosition]} ${indexes[indexesPosition + 1]}\\n`);\n indexesPosition += 2;\n }\n if (data !== null) {\n buffer.push(`${baseOffset.toString().padStart(10, \"0\")} ${Math.min(ref.gen, 0xffff).toString().padStart(5, \"0\")} n\\r\\n`);\n baseOffset += data.length;\n } else {\n buffer.push(`0000000000 ${Math.min(ref.gen + 1, 0xffff).toString().padStart(5, \"0\")} f\\r\\n`);\n }\n }\n computeIDs(baseOffset, xrefInfo, newXref);\n buffer.push(\"trailer\\n\");\n await writeDict(newXref, buffer, null);\n buffer.push(\"\\nstartxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n}\nfunction getIndexes(newRefs) {\n const indexes = [];\n for (const {\n ref\n } of newRefs) {\n if (ref.num === indexes.at(-2) + indexes.at(-1)) {\n indexes[indexes.length - 1] += 1;\n } else {\n indexes.push(ref.num, 1);\n }\n }\n return indexes;\n}\nasync function getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n const xrefTableData = [];\n let maxOffset = 0;\n let maxGen = 0;\n for (const {\n ref,\n data,\n objStreamRef,\n index\n } of newRefs) {\n let gen;\n maxOffset = Math.max(maxOffset, baseOffset);\n if (objStreamRef) {\n gen = index;\n xrefTableData.push([2, objStreamRef.num, gen]);\n } else if (data !== null) {\n gen = Math.min(ref.gen, 0xffff);\n xrefTableData.push([1, baseOffset, gen]);\n baseOffset += data.length;\n } else {\n gen = Math.min(ref.gen + 1, 0xffff);\n xrefTableData.push([0, 0, gen]);\n }\n maxGen = Math.max(maxGen, gen);\n }\n newXref.set(\"Index\", getIndexes(newRefs));\n const offsetSize = getSizeInBytes(maxOffset);\n const maxGenSize = getSizeInBytes(maxGen);\n const sizes = [1, offsetSize, maxGenSize];\n newXref.set(\"W\", sizes);\n computeIDs(baseOffset, xrefInfo, newXref);\n const structSize = Math.sumPrecise(sizes);\n const data = new Uint8Array(structSize * xrefTableData.length);\n const stream = new Stream(data);\n stream.dict = newXref;\n let offset = 0;\n for (const [type, objOffset, gen] of xrefTableData) {\n offset = writeInt(type, sizes[0], offset, data);\n offset = writeInt(objOffset, sizes[1], offset, data);\n offset = writeInt(gen, sizes[2], offset, data);\n }\n await writeObject(xrefInfo.newRef, stream, buffer, {});\n buffer.push(\"startxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n}\nfunction computeIDs(baseOffset, xrefInfo, newXref) {\n if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n const md5 = computeMD5(baseOffset, xrefInfo);\n newXref.set(\"ID\", [xrefInfo.fileIds[0] || md5, md5]);\n }\n}\nfunction getTrailerDict(xrefInfo, changes, useXrefStream) {\n const newXref = new Dict(null);\n newXref.setIfDefined(\"Prev\", xrefInfo?.startXRef);\n const refForXrefTable = xrefInfo.newRef;\n if (useXrefStream) {\n changes.put(refForXrefTable, {\n data: \"\"\n });\n newXref.set(\"Size\", refForXrefTable.num + 1);\n newXref.setIfName(\"Type\", \"XRef\");\n } else {\n newXref.set(\"Size\", refForXrefTable.num);\n }\n newXref.setIfDefined(\"Root\", xrefInfo?.rootRef);\n newXref.setIfDefined(\"Info\", xrefInfo?.infoRef);\n newXref.setIfDefined(\"Encrypt\", xrefInfo?.encryptRef);\n return newXref;\n}\nasync function writeChanges(changes, xref, buffer = []) {\n const newRefs = [];\n for (const [ref, {\n data,\n objStreamRef,\n index\n }] of changes.items()) {\n if (objStreamRef) {\n newRefs.push({\n ref,\n data,\n objStreamRef,\n index\n });\n continue;\n }\n if (data === null || typeof data === \"string\") {\n newRefs.push({\n ref,\n data\n });\n continue;\n }\n await writeObject(ref, data, buffer, xref);\n newRefs.push({\n ref,\n data: buffer.join(\"\")\n });\n buffer.length = 0;\n }\n return newRefs.sort((a, b) => a.ref.num - b.ref.num);\n}\nasync function incrementalUpdate({\n originalData,\n xrefInfo,\n changes,\n xref = null,\n hasXfa = false,\n xfaDatasetsRef = null,\n hasXfaDatasetsEntry = false,\n needAppearances,\n acroFormRef = null,\n acroForm = null,\n xfaData = null,\n useXrefStream = false\n}) {\n await updateAcroform({\n xref,\n acroForm,\n acroFormRef,\n hasXfa,\n hasXfaDatasetsEntry,\n xfaDatasetsRef,\n needAppearances,\n changes\n });\n if (hasXfa) {\n updateXFA({\n xfaData,\n xfaDatasetsRef,\n changes,\n xref\n });\n }\n const newXref = getTrailerDict(xrefInfo, changes, useXrefStream);\n const buffer = [];\n const newRefs = await writeChanges(changes, xref, buffer);\n let baseOffset = originalData.length;\n const lastByte = originalData.at(-1);\n if (lastByte !== 0x0a && lastByte !== 0x0d) {\n buffer.push(\"\\n\");\n baseOffset += 1;\n }\n for (const {\n data\n } of newRefs) {\n if (data !== null) {\n buffer.push(data);\n }\n }\n await (useXrefStream ? getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) : getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer));\n const totalLength = originalData.length + Math.sumPrecise(buffer.map(str => str.length));\n const array = new Uint8Array(totalLength);\n array.set(originalData);\n let offset = originalData.length;\n for (const str of buffer) {\n offset = writeString(str, offset, array);\n }\n return array;\n}\n\n;// ./src/core/editor/pdf_editor.js\n\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_LEAVES_PER_PAGES_NODE = 16;\nconst MAX_IN_NAME_TREE_NODE = 64;\nclass PageData {\n constructor(page, documentData) {\n this.page = page;\n this.documentData = documentData;\n this.annotations = null;\n this.pointingNamedDestinations = null;\n this.copyLevel = 0;\n documentData.pagesMap.put(page.ref, this);\n }\n}\nclass DocumentData {\n constructor(document) {\n this.document = document;\n this.destinations = null;\n this.pageLabels = null;\n this.pagesMap = new RefMap();\n this.oldRefMapping = new RefMap();\n this.dedupNamedDestinations = new Map();\n this.usedNamedDestinations = new Set();\n this.postponedRefCopies = new RefMap();\n this.resourceStreamPromises = new Map();\n this.usedStructParents = new Set();\n this.oldStructParentMapping = new Map();\n this.structTreeRoot = null;\n this.parentTree = null;\n this.idTree = null;\n this.roleMap = null;\n this.classMap = null;\n this.namespaces = null;\n this.structTreeAF = null;\n this.structTreePronunciationLexicon = [];\n this.acroForm = null;\n this.acroFormDefaultAppearance = \"\";\n this.acroFormDefaultResources = null;\n this.acroFormQ = 0;\n this.hasSignatureAnnotations = false;\n this.fieldToParent = new RefMap();\n this.outline = null;\n this.embeddedFiles = null;\n }\n}\nclass XRefWrapper {\n constructor(entries, getNewRef) {\n this.entries = entries;\n this._getNewRef = getNewRef;\n }\n getNewTemporaryRef() {\n return this._getNewRef();\n }\n countUpdatesAfter(offset) {\n return null;\n }\n fetchIfRef(obj) {\n return obj instanceof Ref ? this.fetch(obj) : obj;\n }\n fetch(ref) {\n if (!(ref instanceof Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n return this.entries[ref.num];\n }\n async fetchIfRefAsync(obj) {\n return obj instanceof Ref ? this.fetchAsync(obj) : obj;\n }\n async fetchAsync(ref) {\n return this.fetch(ref);\n }\n}\nclass PDFEditor {\n isSingleFile = false;\n #newAnnotationsParams = null;\n #primaryDocument = null;\n #resourceStreamCache = new Map();\n currentDocument = null;\n oldPages = [];\n newPages = [];\n xref = [null];\n xrefWrapper = new XRefWrapper(this.xref, () => this.newRef);\n newRefCount = 1;\n namesDict = null;\n version = \"1.7\";\n pageLabels = null;\n namedDestinations = new Map();\n parentTree = new Map();\n structTreeKids = [];\n idTree = new Map();\n classMap = new Dict();\n roleMap = new Dict();\n namespaces = new Map();\n structTreeAF = [];\n structTreePronunciationLexicon = [];\n fields = [];\n acroFormDefaultAppearance = \"\";\n acroFormDefaultResources = null;\n acroFormNeedAppearances = false;\n acroFormSigFlags = 0;\n acroFormCalculationOrder = null;\n acroFormQ = 0;\n outlineItems = null;\n embeddedFiles = new Map();\n constructor({\n useObjectStreams = true,\n title = \"\",\n author = \"\"\n } = {}) {\n [this.rootRef, this.rootDict] = this.newDict;\n [this.infoRef, this.infoDict] = this.newDict;\n [this.pagesRef, this.pagesDict] = this.newDict;\n this.useObjectStreams = useObjectStreams;\n this.objStreamRefs = useObjectStreams ? new Set() : null;\n this.title = title;\n this.author = author;\n }\n get newRef() {\n return Ref.get(this.newRefCount++, 0);\n }\n get newDict() {\n const ref = this.newRef;\n const dict = this.xref[ref.num] = new Dict();\n return [ref, dict];\n }\n async #cloneObject(obj, xref) {\n const ref = this.newRef;\n this.xref[ref.num] = await this.#collectDependencies(obj, true, xref);\n return ref;\n }\n cloneDict(dict) {\n const newDict = dict.clone();\n newDict.xref = this.xrefWrapper;\n return newDict;\n }\n async #collectDependencies(obj, mustClone, xref, resourceStreamPath = new RefSet()) {\n if (obj instanceof Ref) {\n const {\n currentDocument: {\n fieldToParent,\n oldRefMapping\n }\n } = this;\n const existingRef = oldRefMapping.get(obj);\n if (existingRef) {\n return existingRef;\n }\n const oldRef = obj;\n obj = await xref.fetchAsync(oldRef);\n const mappedRef = oldRefMapping.get(oldRef);\n if (mappedRef) {\n return mappedRef;\n }\n if (typeof obj === \"number\") {\n return obj;\n }\n if (obj instanceof BaseStream && this.#isResourceStream(obj.dict)) {\n return this.#collectResourceStream(oldRef, obj, xref, resourceStreamPath);\n }\n const newRef = this.newRef;\n oldRefMapping.put(oldRef, newRef);\n let cloneSource = true;\n if (fieldToParent.has(oldRef) && obj instanceof Dict) {\n obj = this.cloneDict(obj);\n obj.delete(\"Parent\");\n cloneSource = false;\n }\n this.xref[newRef.num] = await this.#collectDependencies(obj, cloneSource, xref, resourceStreamPath);\n return newRef;\n }\n const promises = [];\n const {\n currentDocument: {\n postponedRefCopies\n }\n } = this;\n if (Array.isArray(obj)) {\n if (mustClone) {\n obj = obj.slice();\n }\n for (let i = 0, ii = obj.length; i < ii; i++) {\n const postponedActions = obj[i] instanceof Ref && postponedRefCopies.get(obj[i]);\n if (postponedActions) {\n postponedActions.push(ref => obj[i] = ref);\n continue;\n }\n promises.push(this.#collectDependencies(obj[i], true, xref, resourceStreamPath).then(newObj => obj[i] = newObj));\n }\n await Promise.all(promises);\n return obj;\n }\n let dict;\n if (obj instanceof BaseStream) {\n ({\n dict\n } = obj = obj.getOriginalStream().clone());\n dict.xref = this.xrefWrapper;\n } else if (obj instanceof Dict) {\n if (mustClone) {\n obj = obj.clone();\n obj.xref = this.xrefWrapper;\n }\n dict = obj;\n }\n if (dict) {\n for (const [key, rawObj] of dict.getRawEntries()) {\n const postponedActions = rawObj instanceof Ref && postponedRefCopies.get(rawObj);\n if (postponedActions) {\n postponedActions.push(ref => dict.set(key, ref));\n continue;\n }\n promises.push(this.#collectDependencies(rawObj, true, xref, resourceStreamPath).then(newObj => dict.set(key, newObj)));\n }\n await Promise.all(promises);\n }\n return obj;\n }\n #isResourceStream(dict) {\n const subtype = dict.get(\"Subtype\");\n return isName(subtype, \"Image\") || dict.has(\"Length1\") || isName(subtype, \"Type1C\") || isName(subtype, \"CIDFontType0C\") || isName(subtype, \"OpenType\");\n }\n #rawStreamBytes(stream) {\n const original = stream.getOriginalStream();\n original.reset();\n return original.getBytes();\n }\n async #serializeDict(dict) {\n const buffer = [];\n await writeValue(dict, buffer, null);\n return buffer.join(\"\");\n }\n #resourceStreamKey(dictStr, bytes) {\n const SAMPLE_SIZE = 256;\n const SAMPLE_COUNT = 4;\n const {\n length\n } = bytes;\n const hash = new MurmurHash3_64();\n hash.update(dictStr);\n hash.update(`#${length}`);\n if (length <= SAMPLE_SIZE * SAMPLE_COUNT) {\n hash.update(bytes);\n } else {\n const step = Math.floor((length - SAMPLE_SIZE) / (SAMPLE_COUNT - 1));\n for (let i = 0; i < SAMPLE_COUNT; i++) {\n const start = Math.min(i * step, length - SAMPLE_SIZE);\n hash.update(bytes.subarray(start, start + SAMPLE_SIZE));\n }\n }\n return hash.hexdigest();\n }\n async #collectResourceStream(oldRef, stream, xref, resourceStreamPath) {\n const {\n currentDocument: {\n oldRefMapping,\n resourceStreamPromises\n }\n } = this;\n if (resourceStreamPath.has(oldRef)) {\n return oldRefMapping.getOrPutComputed(oldRef, () => this.newRef);\n }\n const key = oldRef.toString();\n const pending = resourceStreamPromises.get(key);\n if (pending) {\n return pending;\n }\n const childPath = new RefSet(resourceStreamPath);\n childPath.put(oldRef);\n const promise = Promise.resolve().then(async () => {\n const collected = await this.#collectDependencies(stream, true, xref, childPath);\n const cycleRef = oldRefMapping.get(oldRef);\n if (cycleRef) {\n this.xref[cycleRef.num] = collected;\n return cycleRef;\n }\n const ref = await this.#dedupResourceStream(collected);\n oldRefMapping.put(oldRef, ref);\n return ref;\n });\n resourceStreamPromises.set(key, promise);\n try {\n return await promise;\n } finally {\n if (resourceStreamPromises.get(key) === promise) {\n resourceStreamPromises.delete(key);\n }\n }\n }\n async #dedupResourceStream(stream) {\n const dictStr = await this.#serializeDict(stream.dict);\n const bytes = this.#rawStreamBytes(stream);\n const key = this.#resourceStreamKey(dictStr, bytes);\n const bucket = this.#resourceStreamCache.getOrInsertComputed(key, makeArr);\n for (const entry of bucket) {\n if (entry.dictStr === dictStr && isArrayEqual(this.#rawStreamBytes(entry.stream), bytes)) {\n return entry.ref;\n }\n }\n const ref = this.newRef;\n this.xref[ref.num] = stream;\n bucket.push({\n ref,\n dictStr,\n stream\n });\n return ref;\n }\n async #resolveStructKids(rawKids, xref) {\n if (rawKids instanceof Ref) {\n const fetched = await xref.fetchAsync(rawKids);\n return Array.isArray(fetched) ? fetched : [rawKids];\n }\n return Array.isArray(rawKids) ? rawKids : [rawKids];\n }\n async #cloneStructTreeNode(parentStructRef, node, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles, visited = new RefSet()) {\n const {\n currentDocument: {\n pagesMap,\n oldRefMapping\n }\n } = this;\n const pg = node.getRaw(\"Pg\");\n if (pg instanceof Ref && !pagesMap.has(pg)) {\n return null;\n }\n const k = node.getRaw(\"K\");\n if (k instanceof Ref && visited.has(k)) {\n return null;\n }\n const kids = await this.#resolveStructKids(k, xref);\n const newKids = [];\n const structElemIndices = [];\n for (let kid of kids) {\n const kidRef = kid instanceof Ref ? kid : null;\n if (kidRef) {\n if (visited.has(kidRef)) {\n continue;\n }\n visited.put(kidRef);\n kid = await xref.fetchAsync(kidRef);\n }\n if (typeof kid === \"number\") {\n newKids.push(kid);\n continue;\n }\n if (!(kid instanceof Dict)) {\n continue;\n }\n const pgRef = kid.getRaw(\"Pg\");\n if (pgRef instanceof Ref && !pagesMap.has(pgRef)) {\n continue;\n }\n const type = kid.get(\"Type\");\n if (!type || isName(type, \"StructElem\")) {\n let setAsSpan = false;\n if (kidRef && removedStructElements.has(kidRef)) {\n if (!isName(kid.get(\"S\"), \"Link\")) {\n continue;\n }\n setAsSpan = true;\n }\n const newKidRef = await this.#cloneStructTreeNode(kidRef, kid, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles, visited);\n if (newKidRef) {\n structElemIndices.push(newKids.length);\n newKids.push(newKidRef);\n if (kidRef) {\n oldRefMapping.put(kidRef, newKidRef);\n }\n if (setAsSpan) {\n this.xref[newKidRef.num].setIfName(\"S\", \"Span\");\n }\n }\n continue;\n }\n if (isName(type, \"OBJR\")) {\n if (!kidRef) {\n continue;\n }\n const oldObjRef = kid.getRaw(\"Obj\");\n if (oldObjRef instanceof Ref && !oldRefMapping.get(oldObjRef)) {\n continue;\n }\n const newKidRef = oldRefMapping.get(kidRef) || (await this.#collectDependencies(kidRef, true, xref));\n const newKid = this.xref[newKidRef.num];\n const objRef = newKid.getRaw(\"Obj\");\n if (objRef instanceof Ref) {\n const obj = this.xref[objRef.num];\n if (obj instanceof Dict && !obj.has(\"StructParent\") && parentStructRef) {\n const structParent = this.parentTree.size;\n this.parentTree.set(structParent, [oldRefMapping, parentStructRef]);\n obj.set(\"StructParent\", structParent);\n }\n }\n newKids.push(newKidRef);\n continue;\n }\n if (isName(type, \"MCR\")) {\n const newKid = await this.#collectDependencies(kidRef || kid, true, xref);\n newKids.push(newKid);\n continue;\n }\n if (kidRef) {\n const newKidRef = await this.#collectDependencies(kidRef, true, xref);\n newKids.push(newKidRef);\n }\n }\n if (kids.length !== 0 && newKids.length === 0) {\n return null;\n }\n const newNodeRef = this.newRef;\n const newNode = this.xref[newNodeRef.num] = this.cloneDict(node);\n newNode.delete(\"ID\");\n newNode.delete(\"C\");\n newNode.delete(\"K\");\n newNode.delete(\"P\");\n newNode.delete(\"S\");\n await this.#collectDependencies(newNode, false, xref);\n const classNames = node.get(\"C\");\n if (classNames instanceof Name) {\n const newClassName = dedupClasses.get(classNames.name);\n newNode.set(\"C\", newClassName ? Name.get(newClassName) : classNames);\n } else if (Array.isArray(classNames)) {\n const newClassNames = [];\n for (const className of classNames) {\n if (className instanceof Name) {\n const newClassName = dedupClasses.get(className.name);\n newClassNames.push(newClassName ? Name.get(newClassName) : className);\n }\n }\n newNode.set(\"C\", newClassNames);\n }\n const roleName = node.get(\"S\");\n if (roleName instanceof Name) {\n const newRoleName = dedupRoles.get(roleName.name);\n newNode.set(\"S\", newRoleName ? Name.get(newRoleName) : roleName);\n }\n const id = node.get(\"ID\");\n if (typeof id === \"string\") {\n const stringId = stringToPDFString(id, false);\n const newId = dedupIDs.get(stringId);\n newNode.set(\"ID\", newId ? stringToAsciiOrUTF16BE(newId) : id);\n }\n let attributes = newNode.get(\"A\");\n if (attributes) {\n if (!Array.isArray(attributes)) {\n attributes = [attributes];\n }\n for (let attr of attributes) {\n attr = this.xrefWrapper.fetchIfRef(attr);\n if (!(attr instanceof Dict)) {\n continue;\n }\n if (isName(attr.get(\"O\"), \"Table\") && attr.has(\"Headers\")) {\n const headers = this.xrefWrapper.fetchIfRef(attr.getRaw(\"Headers\"));\n if (Array.isArray(headers)) {\n for (let i = 0, ii = headers.length; i < ii; i++) {\n const header = this.xrefWrapper.fetchIfRef(headers[i]);\n if (typeof header !== \"string\") {\n continue;\n }\n const newId = dedupIDs.get(stringToPDFString(header, false));\n if (newId) {\n headers[i] = newId;\n }\n }\n }\n }\n }\n }\n for (const index of structElemIndices) {\n const structElemRef = newKids[index];\n const structElem = this.xref[structElemRef.num];\n structElem.set(\"P\", newNodeRef);\n }\n if (newKids.length === 1) {\n newNode.set(\"K\", newKids[0]);\n } else if (newKids.length > 1) {\n newNode.set(\"K\", newKids);\n }\n return newNodeRef;\n }\n #getFilteredPageIndices({\n document,\n includePages,\n excludePages\n }) {\n if (!document) {\n return [];\n }\n const compile = list => {\n if (!list?.length) {\n return null;\n }\n const indices = new Set();\n const ranges = [];\n for (const item of list) {\n if (Array.isArray(item)) {\n ranges.push(item);\n } else {\n indices.add(item);\n }\n }\n return {\n indices,\n ranges\n };\n };\n const matches = (index, {\n indices,\n ranges\n }) => indices.has(index) || ranges.some(([start, end]) => index >= start && index <= end);\n const inc = compile(includePages);\n const exc = compile(excludePages);\n const result = [];\n for (let i = 0, ii = document.numPages; i < ii; i++) {\n if (exc && matches(i, exc)) {\n continue;\n }\n if (!inc || matches(i, inc)) {\n result.push(i);\n }\n }\n return result;\n }\n #resolveInsertAfterIndices(pageInfos) {\n const counts = new Array(pageInfos.length);\n const sequence = [];\n const insertAfterList = [];\n for (let i = 0; i < pageInfos.length; i++) {\n const info = pageInfos[i];\n let count;\n if (info.image) {\n count = counts[i] = 1;\n } else if (!info.document) {\n counts[i] = 0;\n continue;\n } else {\n count = counts[i] = this.#getFilteredPageIndices(info).length;\n }\n if (info.pageIndices) {\n continue;\n }\n if (info.insertAfter === undefined) {\n for (let j = 0; j < count; j++) {\n sequence.push(i);\n }\n } else {\n insertAfterList.push({\n i,\n insertAfter: info.insertAfter,\n count\n });\n }\n }\n if (insertAfterList.length === 0) {\n return pageInfos;\n }\n const hasContent = info => !!(info.document || info.image);\n for (let i = 0; i < pageInfos.length; i++) {\n const info = pageInfos[i];\n if (hasContent(info) && info.pageIndices && info.pageIndices.length < counts[i]) {\n throw new Error(\"extractPages: partial pageIndices cannot be combined with insertAfter entries.\");\n }\n }\n insertAfterList.sort((a, b) => a.insertAfter - b.insertAfter || a.i - b.i);\n if (sequence.length === 0 && pageInfos.some(info => hasContent(info) && info.pageIndices)) {\n const updatedPageInfos = pageInfos.slice();\n let maxExistingPos = -1;\n for (const info of pageInfos) {\n if (!hasContent(info) || !info.pageIndices) {\n continue;\n }\n for (const idx of info.pageIndices) {\n if (idx > maxExistingPos) {\n maxExistingPos = idx;\n }\n }\n }\n let offset = 0;\n for (const {\n i,\n insertAfter,\n count\n } of insertAfterList) {\n const threshold = Math.min(Math.max(insertAfter, -1) + offset, maxExistingPos);\n for (let j = 0; j < updatedPageInfos.length; j++) {\n const existingInfo = updatedPageInfos[j];\n if (!hasContent(existingInfo) || !existingInfo.pageIndices || existingInfo.pageIndices.every(idx => idx <= threshold)) {\n continue;\n }\n updatedPageInfos[j] = {\n ...existingInfo,\n pageIndices: existingInfo.pageIndices.map(idx => idx > threshold ? idx + count : idx)\n };\n }\n const pageIndices = [];\n for (let k = 0; k < count; k++) {\n pageIndices.push(threshold + 1 + k);\n }\n const result = {\n ...updatedPageInfos[i],\n pageIndices\n };\n delete result.insertAfter;\n updatedPageInfos[i] = result;\n offset += count;\n maxExistingPos += count;\n }\n return updatedPageInfos;\n }\n let offset = 0;\n for (const {\n i,\n insertAfter,\n count\n } of insertAfterList) {\n const insertPos = Math.max(insertAfter, -1) + 1 + offset;\n sequence.splice(insertPos, 0, ...new Array(count).fill(i));\n offset += count;\n }\n const pageIndicesArr = new Array(pageInfos.length);\n for (let pos = 0; pos < sequence.length; pos++) {\n const infoIdx = sequence[pos];\n (pageIndicesArr[infoIdx] ||= []).push(pos);\n }\n return pageInfos.map((info, i) => {\n if (!hasContent(info) || info.pageIndices) {\n return info;\n }\n const result = {\n ...info,\n pageIndices: pageIndicesArr[i] || []\n };\n delete result.insertAfter;\n return result;\n });\n }\n async extractPages(pageInfos, annotationStorage, primaryDocument, handler, task) {\n this.#primaryDocument = primaryDocument;\n pageInfos = this.#resolveInsertAfterIndices(pageInfos);\n const promises = [];\n let newIndex = 0;\n const reservePageSlot = newPageIndex => {\n if (!Number.isInteger(newPageIndex) || newPageIndex < 0) {\n throw new Error(\"extractPages: invalid page index.\");\n }\n if (this.oldPages[newPageIndex] !== undefined) {\n throw new Error(\"extractPages: overlapping pageIndices.\");\n }\n this.oldPages[newPageIndex] = null;\n };\n const allDocumentData = [];\n if (annotationStorage) {\n this.#newAnnotationsParams = {\n handler,\n task,\n newAnnotationsByPage: getNewAnnotationsMap(annotationStorage),\n imagesPromises: AnnotationFactory.generateImages(annotationStorage.values(), this.xrefWrapper, true)\n };\n }\n const imageEntries = [];\n for (const pageInfo of pageInfos) {\n const {\n document,\n image,\n includePages,\n excludePages,\n pageIndices\n } = pageInfo;\n if (image) {\n if (pageIndices) {\n newIndex = -1;\n if (pageIndices.length > 1) {\n throw new Error(\"extractPages: too many pageIndices.\");\n }\n }\n let newPageIndex;\n if (pageIndices?.length) {\n newPageIndex = pageIndices[0];\n } else if (newIndex !== -1) {\n newPageIndex = newIndex++;\n } else {\n for (newPageIndex = 0; this.oldPages[newPageIndex] !== undefined; newPageIndex++) {}\n }\n reservePageSlot(newPageIndex);\n imageEntries.push({\n image,\n slot: newPageIndex\n });\n continue;\n }\n if (!document) {\n continue;\n }\n if (pageIndices) {\n newIndex = -1;\n }\n const filteredPageIndices = this.#getFilteredPageIndices({\n document,\n includePages,\n excludePages\n });\n if (pageIndices && pageIndices.length > filteredPageIndices.length) {\n throw new Error(\"extractPages: too many pageIndices.\");\n }\n const documentData = new DocumentData(document);\n allDocumentData.push(documentData);\n promises.push(this.#collectDocumentData(documentData));\n let pageIndex = 0;\n for (const i of filteredPageIndices) {\n let newPageIndex;\n if (pageIndices) {\n newPageIndex = pageIndices[pageIndex++];\n }\n if (newPageIndex === undefined) {\n if (newIndex !== -1) {\n newPageIndex = newIndex++;\n } else {\n for (newPageIndex = 0; this.oldPages[newPageIndex] !== undefined; newPageIndex++) {}\n }\n }\n reservePageSlot(newPageIndex);\n promises.push(document.getPage(i).then(page => {\n this.oldPages[newPageIndex] = new PageData(page, documentData);\n }));\n }\n }\n await Promise.all(promises);\n if (this.oldPages.length === 0) {\n throw new Error(\"extractPages: nothing to extract.\");\n }\n const copyCounts = new Map();\n const documents = new Set();\n for (let i = 0, ii = this.oldPages.length; i < ii; i++) {\n const pageData = this.oldPages[i];\n if (pageData === undefined) {\n throw new Error(\"extractPages: sparse pageIndices.\");\n }\n if (pageData) {\n const {\n page\n } = pageData;\n const copyLevel = copyCounts.get(page) ?? 0;\n copyCounts.set(page, copyLevel + 1);\n pageData.copyLevel = copyLevel;\n documents.add(pageData.documentData.document);\n }\n }\n this.isSingleFile = documents.size === 1;\n promises.length = 0;\n this.#collectValidDestinations(allDocumentData);\n this.#collectOutlineDestinations(allDocumentData);\n this.#collectPageLabels();\n for (const page of this.oldPages) {\n if (page) {\n promises.push(this.#postCollectPageData(page));\n }\n }\n await Promise.all(promises);\n this.#findDuplicateNamedDestinations();\n this.#setPostponedRefCopies(allDocumentData);\n const imageSlots = new Map();\n for (const entry of imageEntries) {\n imageSlots.set(entry.slot, entry);\n }\n const modalPageSize = imageSlots.size > 0 ? this.#modalPageSize() : null;\n for (let i = 0, ii = this.oldPages.length; i < ii; i++) {\n const imageEntry = imageSlots.get(i);\n if (imageEntry) {\n this.newPages[i] = await this.#makeImagePage(imageEntry.image, modalPageSize);\n } else {\n this.newPages[i] = await this.#makePageCopy(i, null);\n }\n }\n this.#fixPostponedRefCopies(allDocumentData);\n await this.#mergeStructTrees(allDocumentData);\n await this.#mergeAcroForms(allDocumentData);\n this.#buildOutline(allDocumentData);\n await this.#collectEmbeddedFiles(allDocumentData);\n return this.writePDF();\n }\n async #collectDocumentData(documentData) {\n const {\n document: {\n pdfManager,\n xref\n }\n } = documentData;\n await Promise.all([pdfManager.ensureCatalog(\"destinations\").then(destinations => documentData.destinations = destinations), pdfManager.ensureCatalog(\"rawPageLabels\").then(pageLabels => documentData.pageLabels = pageLabels), pdfManager.ensureCatalog(\"structTreeRoot\").then(structTreeRoot => documentData.structTreeRoot = structTreeRoot), pdfManager.ensureCatalog(\"acroForm\").then(acroForm => documentData.acroForm = acroForm), pdfManager.ensureCatalog(\"documentOutlineForEditor\").then(outline => documentData.outline = outline), pdfManager.ensureCatalog(\"rawEmbeddedFiles\").then(ef => documentData.embeddedFiles = ef)]);\n const structTreeRoot = documentData.structTreeRoot;\n if (structTreeRoot) {\n const rootDict = structTreeRoot.dict;\n const parentTree = rootDict.get(\"ParentTree\");\n if (parentTree) {\n const numberTree = new NumberTree(parentTree, xref);\n documentData.parentTree = numberTree.getAll(true);\n }\n const idTree = rootDict.get(\"IDTree\");\n if (idTree) {\n const nameTree = new NameTree(idTree, xref);\n documentData.idTree = nameTree.getAll(true);\n }\n documentData.roleMap = rootDict.get(\"RoleMap\") || null;\n documentData.classMap = rootDict.get(\"ClassMap\") || null;\n let namespaces = rootDict.get(\"Namespaces\") || null;\n if (namespaces && !Array.isArray(namespaces)) {\n namespaces = [namespaces];\n }\n documentData.namespaces = namespaces;\n documentData.structTreeAF = rootDict.get(\"AF\") || null;\n documentData.structTreePronunciationLexicon = rootDict.get(\"PronunciationLexicon\") || null;\n }\n }\n async #postCollectPageData(pageData) {\n const {\n page: {\n xref,\n annotations\n },\n documentData: {\n pagesMap,\n destinations,\n usedNamedDestinations,\n fieldToParent\n }\n } = pageData;\n if (!annotations) {\n return;\n }\n const promises = [];\n let newAnnotations = [];\n let newIndex = 0;\n let {\n hasSignatureAnnotations\n } = pageData.documentData;\n for (const annotationRef of annotations) {\n const newAnnotationIndex = newIndex++;\n promises.push(xref.fetchIfRefAsync(annotationRef).then(async annotationDict => {\n if (!isName(annotationDict.get(\"Subtype\"), \"Link\")) {\n if (isName(annotationDict.get(\"Subtype\"), \"Widget\")) {\n hasSignatureAnnotations ||= isName(getInheritableProperty({\n dict: annotationDict,\n key: \"FT\"\n }), \"Sig\");\n const parentRef = annotationDict.getRaw(\"Parent\") || null;\n fieldToParent.put(annotationRef, parentRef);\n }\n newAnnotations[newAnnotationIndex] = annotationRef;\n return;\n }\n const action = annotationDict.get(\"A\");\n if (action instanceof Dict && !isName(action.get(\"S\"), \"GoTo\")) {\n newAnnotations[newAnnotationIndex] = annotationRef;\n return;\n }\n const dest = action instanceof Dict ? action.get(\"D\") : annotationDict.get(\"Dest\");\n if (!dest || Array.isArray(dest) && (!(dest[0] instanceof Ref) || pagesMap.has(dest[0]))) {\n newAnnotations[newAnnotationIndex] = annotationRef;\n } else if (dest instanceof Name || typeof dest === \"string\") {\n const destString = stringToPDFString(dest instanceof Name ? dest.name : dest, true);\n if (destinations.has(destString)) {\n newAnnotations[newAnnotationIndex] = annotationRef;\n usedNamedDestinations.add(destString);\n }\n }\n }));\n }\n await Promise.all(promises);\n newAnnotations = newAnnotations.filter(Boolean);\n pageData.annotations = newAnnotations.length > 0 ? newAnnotations : null;\n pageData.documentData.hasSignatureAnnotations ||= hasSignatureAnnotations;\n }\n #setPostponedRefCopies(allDocumentData) {\n for (const {\n postponedRefCopies,\n pagesMap\n } of allDocumentData) {\n for (const oldPageRef of pagesMap.keys()) {\n postponedRefCopies.put(oldPageRef, []);\n }\n }\n }\n #fixPostponedRefCopies(allDocumentData) {\n for (const {\n postponedRefCopies,\n oldRefMapping\n } of allDocumentData) {\n for (const [oldRef, actions] of postponedRefCopies.items()) {\n const newRef = oldRefMapping.get(oldRef);\n for (const action of actions) {\n action(newRef);\n }\n }\n postponedRefCopies.clear();\n }\n }\n #visitObject(obj, callback, visited = new RefSet()) {\n if (obj instanceof Ref) {\n if (!visited.has(obj)) {\n visited.put(obj);\n this.#visitObject(this.xref[obj.num], callback, visited);\n }\n return;\n }\n if (Array.isArray(obj)) {\n for (const item of obj) {\n this.#visitObject(item, callback, visited);\n }\n return;\n }\n let dict;\n if (obj instanceof BaseStream) {\n ({\n dict\n } = obj);\n } else if (obj instanceof Dict) {\n dict = obj;\n }\n if (dict) {\n callback(dict);\n for (const value of dict.getRawValues()) {\n this.#visitObject(value, callback, visited);\n }\n }\n }\n async #mergeStructTrees(allDocumentData) {\n let newStructParentId = 0;\n const {\n parentTree: newParentTree\n } = this;\n for (let i = 0, ii = this.newPages.length; i < ii; i++) {\n if (!this.oldPages[i]) {\n continue;\n }\n const {\n documentData: {\n parentTree,\n oldRefMapping,\n oldStructParentMapping,\n usedStructParents,\n document: {\n xref\n }\n }\n } = this.oldPages[i];\n if (!parentTree) {\n continue;\n }\n const pageRef = this.newPages[i];\n const pageDict = this.xref[pageRef.num];\n const visited = new RefSet();\n visited.put(pageRef);\n this.#visitObject(pageDict, dict => {\n const structParent = dict.get(\"StructParent\") ?? dict.get(\"StructParents\");\n if (typeof structParent !== \"number\") {\n return;\n }\n usedStructParents.add(structParent);\n let parent = parentTree.get(structParent);\n const parentRef = parent instanceof Ref ? parent : null;\n if (parentRef) {\n const array = xref.fetch(parentRef);\n if (Array.isArray(array)) {\n parent = array;\n }\n }\n if (Array.isArray(parent) && parent.every(ref => ref === null)) {\n parent = null;\n }\n if (!parent) {\n if (dict.has(\"StructParent\")) {\n dict.delete(\"StructParent\");\n } else {\n dict.delete(\"StructParents\");\n }\n return;\n }\n let newStructParent = oldStructParentMapping.get(structParent);\n if (newStructParent === undefined) {\n newStructParent = newStructParentId++;\n oldStructParentMapping.set(structParent, newStructParent);\n newParentTree.set(newStructParent, [oldRefMapping, parent]);\n }\n if (dict.has(\"StructParent\")) {\n dict.set(\"StructParent\", newStructParent);\n } else {\n dict.set(\"StructParents\", newStructParent);\n }\n }, visited);\n }\n const {\n structTreeKids,\n idTree: newIdTree,\n classMap: newClassMap,\n roleMap: newRoleMap,\n namespaces: newNamespaces,\n structTreeAF: newStructTreeAF,\n structTreePronunciationLexicon: newStructTreePronunciationLexicon\n } = this;\n for (const documentData of allDocumentData) {\n const {\n document: {\n xref\n },\n oldRefMapping,\n parentTree,\n usedStructParents,\n structTreeRoot,\n idTree,\n classMap,\n roleMap,\n namespaces,\n structTreeAF,\n structTreePronunciationLexicon\n } = documentData;\n if (!structTreeRoot) {\n continue;\n }\n this.currentDocument = documentData;\n const removedStructElements = new RefSet();\n for (const [key, value] of parentTree || []) {\n if (!usedStructParents.has(key) && value instanceof Ref) {\n removedStructElements.put(value);\n }\n }\n const dedupIDs = new Map();\n for (const [id, nodeRef] of idTree || []) {\n let _id = id;\n if (newIdTree.has(id)) {\n for (let i = 1;; i++) {\n const newId = `${id}_${i}`;\n if (!newIdTree.has(newId)) {\n dedupIDs.set(id, newId);\n _id = newId;\n break;\n }\n }\n }\n newIdTree.set(_id, nodeRef);\n }\n const dedupClasses = new Map();\n if (classMap?.size > 0) {\n for (let [className, classDict] of classMap) {\n classDict = await this.#collectDependencies(classDict, true, xref);\n if (newClassMap.has(className)) {\n for (let i = 1;; i++) {\n const newClassName = `${className}_${i}`;\n if (!newClassMap.has(newClassName)) {\n dedupClasses.set(className, newClassName);\n className = newClassName;\n break;\n }\n }\n }\n newClassMap.set(className, classDict);\n }\n }\n const dedupRoles = new Map();\n if (roleMap?.size > 0) {\n for (const [roleName, mappedName] of roleMap) {\n const newMappedName = newRoleMap.get(roleName);\n if (!newMappedName) {\n newRoleMap.set(roleName, mappedName);\n continue;\n }\n if (newMappedName === mappedName) {\n continue;\n }\n for (let i = 1;; i++) {\n const newRoleName = `${roleName}_${i}`;\n if (!newRoleMap.has(newRoleName)) {\n dedupRoles.set(roleName, newRoleName);\n newRoleMap.set(newRoleName, mappedName);\n break;\n }\n }\n }\n }\n if (namespaces?.length > 0) {\n for (const namespaceRef of namespaces) {\n const namespace = await xref.fetchIfRefAsync(namespaceRef);\n let ns = namespace.get(\"NS\");\n if (!ns || newNamespaces.has(ns)) {\n continue;\n }\n ns = stringToPDFString(ns, false);\n const newNamespace = await this.#collectDependencies(namespace, true, xref);\n newNamespaces.set(ns, newNamespace);\n }\n }\n if (structTreeAF) {\n for (const afRef of structTreeAF) {\n newStructTreeAF.push(await this.#collectDependencies(afRef, true, xref));\n }\n }\n if (structTreePronunciationLexicon) {\n for (const lexiconRef of structTreePronunciationLexicon) {\n newStructTreePronunciationLexicon.push(await this.#collectDependencies(lexiconRef, true, xref));\n }\n }\n const rawKids = structTreeRoot.dict.getRaw(\"K\");\n if (!rawKids) {\n continue;\n }\n const kids = await this.#resolveStructKids(rawKids, xref);\n for (let kid of kids) {\n const kidRef = kid instanceof Ref ? kid : null;\n kid = await xref.fetchIfRefAsync(kid);\n if (!(kid instanceof Dict)) {\n continue;\n }\n let setAsSpan = false;\n if (kidRef && removedStructElements.has(kidRef)) {\n if (!isName(kid.get(\"S\"), \"Link\")) {\n continue;\n }\n setAsSpan = true;\n }\n const newKidRef = await this.#cloneStructTreeNode(kidRef, kid, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles);\n if (newKidRef) {\n structTreeKids.push(newKidRef);\n if (kidRef) {\n oldRefMapping.put(kidRef, newKidRef);\n }\n if (setAsSpan) {\n this.xref[newKidRef.num].setIfName(\"S\", \"Span\");\n }\n }\n }\n for (const [id, nodeRef] of idTree || []) {\n const newNodeRef = nodeRef instanceof Ref && oldRefMapping.get(nodeRef);\n const newId = dedupIDs.get(id) || id;\n if (newNodeRef) {\n newIdTree.set(newId, newNodeRef);\n } else {\n newIdTree.delete(newId);\n }\n }\n }\n for (const [key, [oldRefMapping, parent]] of newParentTree) {\n if (!parent) {\n newParentTree.delete(key);\n continue;\n }\n if (!Array.isArray(parent)) {\n const newParent = oldRefMapping.get(parent);\n if (newParent === undefined) {\n newParentTree.delete(key);\n } else {\n newParentTree.set(key, newParent);\n }\n continue;\n }\n const newParents = parent.map(ref => ref instanceof Ref && oldRefMapping.get(ref) || null);\n if (newParents.length === 0 || newParents.every(ref => ref === null)) {\n newParentTree.delete(key);\n continue;\n }\n newParentTree.set(key, newParents);\n }\n this.currentDocument = null;\n }\n #collectValidDestinations(allDocumentData) {\n for (const documentData of allDocumentData) {\n if (!documentData.destinations) {\n continue;\n }\n const {\n destinations,\n pagesMap\n } = documentData;\n const newDestinations = documentData.destinations = new Map();\n for (const [key, dest] of destinations) {\n const pageRef = dest[0];\n const pageData = pageRef instanceof Ref && pagesMap.get(pageRef);\n if (!pageData) {\n continue;\n }\n (pageData.pointingNamedDestinations ||= new Set()).add(key);\n newDestinations.set(key, dest);\n }\n }\n }\n #findDuplicateNamedDestinations() {\n const {\n namedDestinations\n } = this;\n const getUniqueDestinationName = name => {\n if (!namedDestinations.has(name)) {\n return name;\n }\n for (let i = 1;; i++) {\n const dedupedName = `${name}_${i}`;\n if (!namedDestinations.has(dedupedName)) {\n return dedupedName;\n }\n }\n };\n for (let i = 0, ii = this.oldPages.length; i < ii; i++) {\n const page = this.oldPages[i];\n if (!page) {\n continue;\n }\n const {\n documentData: {\n destinations,\n dedupNamedDestinations,\n usedNamedDestinations\n }\n } = page;\n let {\n pointingNamedDestinations\n } = page;\n if (!pointingNamedDestinations) {\n continue;\n }\n page.pointingNamedDestinations = pointingNamedDestinations = pointingNamedDestinations.intersection(usedNamedDestinations);\n for (const pointingDest of pointingNamedDestinations) {\n if (!usedNamedDestinations.has(pointingDest)) {\n continue;\n }\n const dest = destinations.get(pointingDest).slice();\n if (!namedDestinations.has(pointingDest)) {\n namedDestinations.set(pointingDest, dest);\n continue;\n }\n const newName = getUniqueDestinationName(`${pointingDest}_p${i + 1}`);\n dedupNamedDestinations.set(pointingDest, newName);\n namedDestinations.set(newName, dest);\n }\n }\n }\n #fixNamedDestinations(annotations, dedupNamedDestinations) {\n if (dedupNamedDestinations.size === 0) {\n return;\n }\n const fixDestination = (dict, key, dest) => {\n if (typeof dest === \"string\") {\n dict.set(key, dedupNamedDestinations.get(stringToPDFString(dest, true)) || dest);\n }\n };\n for (const annotRef of annotations) {\n const annotDict = this.xref[annotRef.num];\n if (!isName(annotDict.get(\"Subtype\"), \"Link\")) {\n continue;\n }\n const action = annotDict.get(\"A\");\n if (action instanceof Dict && action.has(\"D\")) {\n const dest = action.get(\"D\");\n fixDestination(action, \"D\", dest);\n continue;\n }\n const dest = annotDict.get(\"Dest\");\n fixDestination(annotDict, \"Dest\", dest);\n }\n }\n #collectOutlineDestinations(allDocumentData) {\n const collect = (items, destinations, usedNamedDestinations) => {\n for (const item of items) {\n if (typeof item.dest === \"string\" && destinations?.has(item.dest)) {\n usedNamedDestinations.add(item.dest);\n }\n if (item.items.length > 0) {\n collect(item.items, destinations, usedNamedDestinations);\n }\n }\n };\n for (const documentData of allDocumentData) {\n const {\n outline,\n destinations,\n usedNamedDestinations\n } = documentData;\n if (outline?.length) {\n collect(outline, destinations, usedNamedDestinations);\n }\n }\n }\n #isValidOutlineDest(item, documentData) {\n const {\n dest,\n action,\n url,\n unsafeUrl,\n attachment,\n setOCGState\n } = item;\n if (action || url || unsafeUrl || attachment || setOCGState) {\n return true;\n }\n if (!dest) {\n return false;\n }\n if (typeof dest === \"string\") {\n const name = documentData.dedupNamedDestinations.get(dest) || dest;\n return this.namedDestinations.has(name);\n }\n if (Array.isArray(dest) && dest[0] instanceof Ref) {\n return !!documentData.oldRefMapping.get(dest[0]);\n }\n return false;\n }\n #filterOutlineItems(items, documentData) {\n const result = [];\n for (const item of items) {\n const filteredChildren = this.#filterOutlineItems(item.items, documentData);\n const hasValidOwnDest = this.#isValidOutlineDest(item, documentData);\n if (hasValidOwnDest || filteredChildren.length > 0) {\n result.push({\n ...item,\n dest: hasValidOwnDest ? item.dest : null,\n rawDict: hasValidOwnDest ? item.rawDict : null,\n items: filteredChildren,\n _documentData: documentData\n });\n }\n }\n return result;\n }\n #buildOutline(allDocumentData) {\n const outlineItems = [];\n for (const documentData of allDocumentData) {\n const {\n outline\n } = documentData;\n if (!outline?.length) {\n continue;\n }\n outlineItems.push(...this.#filterOutlineItems(outline, documentData));\n }\n this.outlineItems = outlineItems.length > 0 ? outlineItems : null;\n }\n async #setOutlineItemDest(itemDict, item) {\n const {\n dest,\n rawDict\n } = item;\n const documentData = item._documentData;\n if (dest) {\n if (typeof dest === \"string\") {\n const name = documentData.dedupNamedDestinations.get(dest) || dest;\n itemDict.set(\"Dest\", stringToAsciiOrUTF16BE(name));\n } else if (Array.isArray(dest)) {\n const newDest = dest.slice();\n if (newDest[0] instanceof Ref) {\n newDest[0] = documentData.oldRefMapping.get(newDest[0]) || newDest[0];\n }\n itemDict.set(\"Dest\", newDest);\n }\n return;\n }\n const actionDict = rawDict?.get(\"A\");\n if (actionDict instanceof Dict) {\n this.currentDocument = documentData;\n const actionRef = await this.#cloneObject(actionDict, documentData.document.xref);\n this.currentDocument = null;\n itemDict.set(\"A\", actionRef);\n }\n }\n async #makeOutline() {\n const {\n outlineItems\n } = this;\n if (!outlineItems?.length) {\n return;\n }\n const [outlineRootRef, outlineRootDict] = this.newDict;\n outlineRootDict.setIfName(\"Type\", \"Outlines\");\n const assignRefs = items => {\n for (const item of items) {\n [item._ref] = this.newDict;\n if (item.items.length > 0) {\n assignRefs(item.items);\n }\n }\n };\n assignRefs(outlineItems);\n const fillItems = async (items, parentRef) => {\n let totalCount = 0;\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const dict = this.xref[item._ref.num];\n dict.set(\"Title\", stringToAsciiOrUTF16BE(item.title));\n dict.set(\"Parent\", parentRef);\n if (i > 0) {\n dict.set(\"Prev\", items[i - 1]._ref);\n }\n if (i < items.length - 1) {\n dict.set(\"Next\", items[i + 1]._ref);\n }\n if (item.items.length > 0) {\n dict.set(\"First\", item.items[0]._ref);\n dict.set(\"Last\", item.items.at(-1)._ref);\n const childCount = await fillItems(item.items, item._ref);\n if (item.count !== undefined) {\n dict.set(\"Count\", item.count < 0 ? -childCount : childCount);\n }\n totalCount += item.count !== undefined && item.count < 0 ? 1 : childCount + 1;\n } else {\n totalCount += 1;\n }\n await this.#setOutlineItemDest(dict, item);\n const flags = (item.bold ? 2 : 0) | (item.italic ? 1 : 0);\n if (flags !== 0) {\n dict.set(\"F\", flags);\n }\n if (item.color && (item.color[0] !== 0 || item.color[1] !== 0 || item.color[2] !== 0)) {\n dict.set(\"C\", [item.color[0] / 255, item.color[1] / 255, item.color[2] / 255]);\n }\n }\n return totalCount;\n };\n const totalCount = await fillItems(outlineItems, outlineRootRef);\n outlineRootDict.set(\"First\", outlineItems[0]._ref);\n outlineRootDict.set(\"Last\", outlineItems.at(-1)._ref);\n outlineRootDict.set(\"Count\", totalCount);\n this.rootDict.set(\"Outlines\", outlineRootRef);\n }\n async #mergeAcroForms(allDocumentData) {\n this.#setAcroFormDefaultBasicValues(allDocumentData);\n this.#setAcroFormDefaultAppearance(allDocumentData);\n this.#setAcroFormQ(allDocumentData);\n await this.#setAcroFormDefaultResources(allDocumentData);\n const newFields = this.fields;\n for (const documentData of allDocumentData) {\n let fields = documentData.acroForm?.get(\"Fields\") || null;\n if (!fields && documentData.fieldToParent.size > 0) {\n fields = this.#fixFields(documentData.fieldToParent, documentData.document.xref);\n }\n if (Array.isArray(fields) && fields.length > 0) {\n this.currentDocument = documentData;\n await this.#cloneFields(newFields, fields);\n this.currentDocument = null;\n }\n }\n this.#setAcroFormCalculationOrder(allDocumentData);\n }\n #setAcroFormQ(allDocumentData) {\n let firstQ = 0;\n let firstDocData = null;\n for (const documentData of allDocumentData) {\n const q = documentData.acroForm?.get(\"Q\");\n if (typeof q !== \"number\" || q === 0) {\n continue;\n }\n if (firstDocData?.acroFormQ > 0) {\n documentData.acroFormQ = q;\n continue;\n }\n if (firstQ === 0) {\n firstQ = q;\n firstDocData = documentData;\n continue;\n }\n if (q === firstQ) {\n continue;\n }\n firstDocData.acroFormQ ||= firstQ;\n documentData.acroFormQ = q;\n firstQ = 0;\n }\n if (firstQ > 0) {\n this.acroFormQ = firstQ;\n }\n }\n #setAcroFormDefaultBasicValues(allDocumentData) {\n let sigFlags = 0;\n let needAppearances = false;\n for (const documentData of allDocumentData) {\n if (!documentData.acroForm) {\n continue;\n }\n const sf = documentData.acroForm.get(\"SigFlags\");\n if (typeof sf === \"number\" && documentData.hasSignatureAnnotations) {\n sigFlags |= sf;\n }\n if (documentData.acroForm.get(\"NeedAppearances\") === true) {\n needAppearances = true;\n }\n }\n this.acroFormSigFlags = sigFlags;\n this.acroFormNeedAppearances = needAppearances;\n }\n #setAcroFormCalculationOrder(allDocumentData) {\n const calculationOrder = [];\n for (const documentData of allDocumentData) {\n const co = documentData.acroForm?.get(\"CO\") || null;\n if (!Array.isArray(co)) {\n continue;\n }\n const {\n oldRefMapping\n } = documentData;\n for (const coRef of co) {\n const newCoRef = coRef instanceof Ref && oldRefMapping.get(coRef);\n if (newCoRef) {\n calculationOrder.push(newCoRef);\n }\n }\n }\n this.acroFormCalculationOrder = calculationOrder.length > 0 ? calculationOrder : null;\n }\n #setAcroFormDefaultAppearance(allDocumentData) {\n let firstDA = null;\n let firstDocData = null;\n for (const documentData of allDocumentData) {\n const da = documentData.acroForm?.get(\"DA\") || null;\n if (!da || typeof da !== \"string\") {\n continue;\n }\n if (firstDocData?.acroFormDefaultAppearance) {\n documentData.acroFormDefaultAppearance = da;\n continue;\n }\n if (!firstDA) {\n firstDA = da;\n firstDocData = documentData;\n continue;\n }\n if (da === firstDA) {\n continue;\n }\n firstDocData.acroFormDefaultAppearance ||= firstDA;\n documentData.acroFormDefaultAppearance = da;\n firstDA = null;\n }\n if (firstDA) {\n this.acroFormDefaultAppearance = firstDA;\n }\n }\n async #setAcroFormDefaultResources(allDocumentData) {\n let firstDR = null;\n let firstDRRef = null;\n let firstDocData = null;\n for (const documentData of allDocumentData) {\n const dr = documentData.acroForm?.get(\"DR\") || null;\n if (!dr || !(dr instanceof Dict)) {\n continue;\n }\n if (firstDocData?.acroFormDefaultResources) {\n documentData.acroFormDefaultResources = dr;\n continue;\n }\n if (!firstDR) {\n firstDR = dr;\n firstDRRef = documentData.acroForm.getRaw(\"DR\");\n firstDocData = documentData;\n continue;\n }\n if (deepCompare(firstDR, dr)) {\n continue;\n }\n firstDocData.acroFormDefaultResources ||= firstDR;\n documentData.acroFormDefaultResources = dr;\n firstDR = null;\n firstDRRef = null;\n }\n if (firstDR) {\n this.currentDocument = firstDocData;\n this.acroFormDefaultResources = await this.#collectDependencies(firstDRRef, true, firstDocData.document.xref);\n this.currentDocument = null;\n }\n }\n #fixFields(fieldToParent, xref) {\n const newFields = [];\n const processed = new RefSet();\n for (const [fieldRef, parentRef] of fieldToParent.items()) {\n if (!parentRef) {\n newFields.push(fieldRef);\n continue;\n }\n let parent = parentRef;\n let lastNonNullParent = parentRef;\n const visited = new RefSet();\n while (true) {\n if (parent instanceof Ref) {\n if (visited.has(parent)) {\n break;\n }\n visited.put(parent);\n }\n const parentDict = xref.fetchIfRef(parent);\n if (!(parentDict instanceof Dict)) {\n break;\n }\n parent = parentDict.getRaw(\"Parent\") || null;\n if (!parent) {\n break;\n }\n lastNonNullParent = parent;\n }\n if (lastNonNullParent instanceof Ref && !processed.has(lastNonNullParent)) {\n newFields.push(lastNonNullParent);\n processed.put(lastNonNullParent);\n }\n }\n return newFields;\n }\n async #cloneFields(newFields, fields) {\n const processed = new RefSet();\n const stack = [{\n kids: fields,\n newKids: newFields,\n pos: 0,\n oldParentRef: null,\n parentRef: null,\n parent: null\n }];\n const {\n document: {\n xref\n },\n oldRefMapping,\n fieldToParent,\n acroFormDefaultAppearance,\n acroFormDefaultResources,\n acroFormQ\n } = this.currentDocument;\n const daToFix = [];\n const drToFix = [];\n while (stack.length > 0) {\n const data = stack.at(-1);\n const {\n kids,\n newKids,\n parent,\n pos\n } = data;\n if (pos === kids.length) {\n stack.pop();\n if (newKids.length === 0 || !parent) {\n continue;\n }\n const parentDict = this.xref[data.parentRef.num] = this.cloneDict(parent);\n parentDict.delete(\"Parent\");\n parentDict.delete(\"Kids\");\n await this.#collectDependencies(parentDict, false, xref);\n parentDict.set(\"Kids\", newKids);\n if (stack.length > 0) {\n const lastData = stack.at(-1);\n if (!lastData.parentRef && lastData.oldParentRef) {\n const parentRef = lastData.parentRef = this.newRef;\n parentDict.set(\"Parent\", parentRef);\n oldRefMapping.put(lastData.oldParentRef, parentRef);\n }\n lastData.newKids.push(data.parentRef);\n }\n continue;\n }\n const oldKidRef = kids[data.pos++];\n if (!(oldKidRef instanceof Ref) || processed.has(oldKidRef)) {\n continue;\n }\n processed.put(oldKidRef);\n const kid = xref.fetchIfRef(oldKidRef);\n if (!(kid instanceof Dict)) {\n continue;\n }\n if (kid.has(\"Kids\")) {\n const kidsArray = kid.get(\"Kids\");\n if (!Array.isArray(kidsArray)) {\n continue;\n }\n stack.push({\n kids: kidsArray,\n newKids: [],\n pos: 0,\n oldParentRef: oldKidRef,\n parentRef: null,\n parent: kid\n });\n continue;\n }\n if (!fieldToParent.has(oldKidRef)) {\n continue;\n }\n const newRef = oldRefMapping.get(oldKidRef);\n if (!newRef) {\n continue;\n }\n newKids.push(newRef);\n if (!data.parentRef && data.oldParentRef) {\n data.parentRef = this.newRef;\n oldRefMapping.put(data.oldParentRef, data.parentRef);\n }\n const newKid = this.xref[newRef.num];\n if (data.parentRef) {\n newKid.set(\"Parent\", data.parentRef);\n }\n if (acroFormDefaultAppearance && !newKid.has(\"DA\")) {\n daToFix.push(newKid);\n }\n if (acroFormDefaultResources && !newKid.has(\"Kids\") && newKid.get(\"AP\") instanceof Dict) {\n drToFix.push(newKid);\n }\n if (acroFormQ && !newKid.has(\"Q\")) {\n newKid.set(\"Q\", acroFormQ);\n }\n }\n for (const field of daToFix) {\n const fieldType = getInheritableProperty({\n dict: field,\n key: \"FT\"\n });\n if (!isName(fieldType, \"Tx\")) {\n continue;\n }\n const da = getInheritableProperty({\n dict: field,\n key: \"DA\"\n });\n if (!da) {\n field.set(\"DA\", acroFormDefaultAppearance);\n }\n }\n const resourcesValuesCache = new Map();\n const fixAppearanceResources = async stream => {\n let resources = stream.dict.getRaw(\"Resources\");\n resources &&= this.xrefWrapper.fetchIfRef(resources);\n if (!(resources instanceof Dict)) {\n const newResourcesRef = await resourcesValuesCache.getOrInsertComputed(acroFormDefaultResources, () => this.#cloneObject(acroFormDefaultResources, xref));\n stream.dict.set(\"Resources\", newResourcesRef);\n return;\n }\n for (const [resKey, resValue] of acroFormDefaultResources.getRawEntries()) {\n if (resources.has(resKey)) {\n continue;\n }\n let newResValue = resValue;\n if (resValue instanceof Ref) {\n newResValue = await this.#collectDependencies(resValue, true, xref);\n } else if (resValue instanceof Dict || resValue instanceof BaseStream || Array.isArray(resValue)) {\n newResValue = await resourcesValuesCache.getOrInsertComputed(resValue, () => this.#cloneObject(resValue, xref));\n }\n resources.set(resKey, newResValue);\n }\n };\n for (const field of drToFix) {\n const ap = field.get(\"AP\");\n for (const [, value] of ap) {\n if (value instanceof BaseStream) {\n await fixAppearanceResources(value);\n } else if (value instanceof Dict) {\n for (const [, stream] of value) {\n if (stream instanceof BaseStream) {\n await fixAppearanceResources(stream);\n }\n }\n }\n }\n }\n }\n async #collectPageLabels() {\n if (!this.isSingleFile) {\n return;\n }\n const firstRealPage = this.oldPages.find(p => !!p);\n if (!firstRealPage) {\n return;\n }\n const {\n documentData: {\n document,\n pageLabels\n }\n } = firstRealPage;\n if (!pageLabels) {\n return;\n }\n const numPages = document.numPages;\n const labelsByPageIndex = new Map();\n const oldPageIndices = new Set(this.oldPages.filter(Boolean).map(({\n page: {\n pageIndex\n }\n }) => pageIndex));\n let currentLabel = null;\n let stFirstIndex = -1;\n for (let i = 0; i < numPages; i++) {\n const newLabel = pageLabels.get(i);\n if (newLabel) {\n currentLabel = newLabel;\n stFirstIndex = currentLabel.has(\"St\") ? i : -1;\n }\n if (!oldPageIndices.has(i)) {\n continue;\n }\n if (stFirstIndex !== -1) {\n const st = currentLabel.get(\"St\");\n currentLabel = this.cloneDict(currentLabel);\n currentLabel.set(\"St\", st + (i - stFirstIndex));\n stFirstIndex = -1;\n }\n labelsByPageIndex.set(i, currentLabel);\n }\n const defaultLabel = index => {\n const label = new Dict();\n label.setIfName(\"S\", \"D\");\n label.set(\"St\", index + 1);\n return label;\n };\n currentLabel = null;\n const newPageLabels = this.pageLabels = [];\n for (let i = 0, ii = this.oldPages.length; i < ii; i++) {\n const pageData = this.oldPages[i];\n const label = pageData ? labelsByPageIndex.get(pageData.page.pageIndex) || defaultLabel(i) : defaultLabel(i);\n if (label === currentLabel) {\n continue;\n }\n currentLabel = label;\n newPageLabels.push([i, currentLabel]);\n }\n }\n async #makePageCopy(pageIndex) {\n const {\n page,\n documentData,\n annotations,\n pointingNamedDestinations,\n copyLevel\n } = this.oldPages[pageIndex];\n this.currentDocument = documentData;\n const {\n dedupNamedDestinations,\n oldRefMapping\n } = documentData;\n const {\n xref,\n rotate,\n mediaBox,\n resources,\n ref: oldPageRef\n } = page;\n const pageRef = this.newRef;\n const pageDict = this.xref[pageRef.num] = this.cloneDict(page.pageDict);\n oldRefMapping.put(oldPageRef, pageRef);\n if (pointingNamedDestinations) {\n for (const pointingDest of pointingNamedDestinations) {\n const name = dedupNamedDestinations.get(pointingDest) || pointingDest;\n const dest = this.namedDestinations.get(name);\n dest[0] = pageRef;\n }\n }\n for (const key of [\"Rotate\", \"MediaBox\", \"CropBox\", \"BleedBox\", \"TrimBox\", \"ArtBox\", \"Resources\", \"Annots\", \"Parent\", \"UserUnit\"]) {\n pageDict.delete(key);\n }\n const lastRef = this.newRefCount;\n await this.#collectDependencies(pageDict, false, xref);\n pageDict.set(\"Rotate\", rotate);\n pageDict.set(\"MediaBox\", mediaBox);\n for (const boxName of [\"CropBox\", \"BleedBox\", \"TrimBox\", \"ArtBox\"]) {\n const box = page.getBoundingBox(boxName);\n if (box?.some((value, index) => value !== mediaBox[index])) {\n pageDict.set(boxName, box);\n }\n }\n const userUnit = page.userUnit;\n if (userUnit !== 1) {\n pageDict.set(\"UserUnit\", userUnit);\n }\n pageDict.setIfDict(\"Resources\", await this.#collectDependencies(resources, true, xref));\n let newAnnots = null;\n if (annotations) {\n const newAnnotations = await this.#collectDependencies(annotations, true, xref);\n this.#fixNamedDestinations(newAnnotations, dedupNamedDestinations);\n if (Array.isArray(newAnnotations) && newAnnotations.length > 0) {\n newAnnots = newAnnotations;\n }\n }\n const newAnnotations = documentData.document === this.#primaryDocument ? this.#newAnnotationsParams?.newAnnotationsByPage?.get(page.pageIndex)?.filter(({\n copyLevel: level\n }) => (level ?? 0) === copyLevel) : null;\n if (newAnnotations?.length) {\n const {\n handler,\n task,\n imagesPromises\n } = this.#newAnnotationsParams;\n const changes = new RefMap();\n const newData = await AnnotationFactory.saveNewAnnotations(page._createPartialEvaluator(handler), this.xrefWrapper, task, newAnnotations, imagesPromises, changes);\n for (const [ref, {\n data\n }] of changes.items()) {\n this.xref[ref.num] = data;\n }\n newAnnots ||= [];\n for (const {\n ref\n } of newData.annotations) {\n newAnnots.push(ref);\n }\n }\n pageDict.setIfArray(\"Annots\", newAnnots);\n if (this.useObjectStreams) {\n const newLastRef = this.newRefCount;\n const pageObjectRefs = [];\n for (let i = lastRef; i < newLastRef; i++) {\n const obj = this.xref[i];\n if (obj instanceof BaseStream) {\n continue;\n }\n pageObjectRefs.push(Ref.get(i, 0));\n }\n for (let i = 0; i < pageObjectRefs.length; i += 0xffff) {\n const objStreamRef = this.newRef;\n this.objStreamRefs.add(objStreamRef.num);\n this.xref[objStreamRef.num] = pageObjectRefs.slice(i, i + 0xffff);\n }\n }\n this.currentDocument = null;\n return pageRef;\n }\n #modalPageSize() {\n const counts = new Map();\n for (const pageData of this.oldPages) {\n if (!pageData) {\n continue;\n }\n const {\n page\n } = pageData;\n const [x0, y0, x1, y1] = page.view;\n let width = x1 - x0;\n let height = y1 - y0;\n if (width <= 0 || height <= 0) {\n continue;\n }\n if (page.rotate % 180 !== 0) {\n [width, height] = [height, width];\n }\n const key = `${width}x${height}`;\n const entry = counts.get(key);\n if (entry) {\n entry.count++;\n } else {\n counts.set(key, {\n width,\n height,\n count: 1\n });\n }\n }\n if (counts.size === 0) {\n const [,, width, height] = LETTER_SIZE_MEDIABOX;\n return {\n width,\n height\n };\n }\n let best = null;\n for (const entry of counts.values()) {\n if (!best || entry.count > best.count || entry.count === best.count && entry.width * entry.height > best.width * best.height) {\n best = entry;\n }\n }\n return {\n width: best.width,\n height: best.height\n };\n }\n async #makeImagePage(bitmap, pageSize) {\n const {\n width: pageW,\n height: pageH\n } = pageSize;\n const DEFAULT_MARGIN_RATIO = 0.1;\n const margin = pageW * DEFAULT_MARGIN_RATIO;\n const availW = Math.max(1, pageW - 2 * margin);\n const availH = Math.max(1, pageH - 2 * margin);\n const lastRef = this.newRefCount;\n const {\n imageStream,\n smaskStream,\n width: imgW,\n height: imgH\n } = await createImage(bitmap, this.xrefWrapper, {\n closeBitmap: true\n });\n const scale = Math.min(availW / imgW, availH / imgH);\n const drawW = imgW * scale;\n const drawH = imgH * scale;\n const tx = (pageW - drawW) / 2;\n const ty = (pageH - drawH) / 2;\n if (smaskStream) {\n const smaskRef = this.newRef;\n this.xref[smaskRef.num] = smaskStream;\n imageStream.dict.set(\"SMask\", smaskRef);\n }\n const imageRef = this.newRef;\n this.xref[imageRef.num] = imageStream;\n const xobjectDict = new Dict(this.xrefWrapper);\n xobjectDict.set(\"Im0\", imageRef);\n const resourcesDict = new Dict(this.xrefWrapper);\n resourcesDict.set(\"XObject\", xobjectDict);\n resourcesDict.set(\"ProcSet\", [Name.get(\"PDF\"), Name.get(\"ImageC\")]);\n const content = `q ${numberToString(drawW)} 0 0 ${numberToString(drawH)} ` + `${numberToString(tx)} ${numberToString(ty)} cm /Im0 Do Q`;\n const contentsStream = new StringStream(content, new Dict(this.xrefWrapper));\n const contentsRef = this.newRef;\n this.xref[contentsRef.num] = contentsStream;\n const pageRef = this.newRef;\n const pageDict = this.xref[pageRef.num] = new Dict(this.xrefWrapper);\n pageDict.setIfName(\"Type\", \"Page\");\n pageDict.set(\"MediaBox\", [0, 0, pageW, pageH]);\n pageDict.set(\"Resources\", resourcesDict);\n pageDict.set(\"Contents\", contentsRef);\n if (this.useObjectStreams) {\n const newLastRef = this.newRefCount;\n const pageObjectRefs = [];\n for (let i = lastRef; i < newLastRef; i++) {\n const obj = this.xref[i];\n if (obj instanceof BaseStream) {\n continue;\n }\n pageObjectRefs.push(Ref.get(i, 0));\n }\n for (let i = 0; i < pageObjectRefs.length; i += 0xffff) {\n const objStreamRef = this.newRef;\n this.objStreamRefs.add(objStreamRef.num);\n this.xref[objStreamRef.num] = pageObjectRefs.slice(i, i + 0xffff);\n }\n }\n return pageRef;\n }\n #makePageTree() {\n const {\n newPages: pages,\n rootDict,\n pagesRef,\n pagesDict\n } = this;\n rootDict.set(\"Pages\", pagesRef);\n pagesDict.setIfName(\"Type\", \"Pages\");\n pagesDict.set(\"Count\", pages.length);\n const maxLeaves = false ? 0 : MAX_LEAVES_PER_PAGES_NODE;\n const stack = [{\n dict: pagesDict,\n kids: pages,\n parentRef: pagesRef\n }];\n while (stack.length > 0) {\n const {\n dict,\n kids,\n parentRef\n } = stack.pop();\n if (kids.length <= maxLeaves) {\n dict.set(\"Kids\", kids);\n for (const ref of kids) {\n this.xref[ref.num].set(\"Parent\", parentRef);\n }\n continue;\n }\n const chunkSize = Math.max(maxLeaves, Math.ceil(kids.length / maxLeaves));\n const kidsChunks = [];\n for (let i = 0; i < kids.length; i += chunkSize) {\n kidsChunks.push(kids.slice(i, i + chunkSize));\n }\n const kidsRefs = [];\n dict.set(\"Kids\", kidsRefs);\n for (const chunk of kidsChunks) {\n const [kidRef, kidDict] = this.newDict;\n kidsRefs.push(kidRef);\n kidDict.setIfName(\"Type\", \"Pages\");\n kidDict.set(\"Parent\", parentRef);\n kidDict.set(\"Count\", chunk.length);\n stack.push({\n dict: kidDict,\n kids: chunk,\n parentRef: kidRef\n });\n }\n }\n }\n #makeNameNumTree(map, areNames) {\n const allEntries = map.sort(areNames ? ([keyA], [keyB]) => {\n if (keyA < keyB) {\n return -1;\n }\n if (keyA > keyB) {\n return 1;\n }\n return 0;\n } : ([keyA], [keyB]) => keyA - keyB);\n const maxLeaves = false ? 0 : MAX_IN_NAME_TREE_NODE;\n const [treeRef, treeDict] = this.newDict;\n const stack = [{\n dict: treeDict,\n entries: allEntries,\n isRoot: true\n }];\n const valueType = areNames ? \"Names\" : \"Nums\";\n while (stack.length > 0) {\n const {\n dict,\n entries,\n isRoot\n } = stack.pop();\n if (entries.length <= maxLeaves) {\n if (!isRoot) {\n dict.set(\"Limits\", [entries[0][0], entries.at(-1)[0]]);\n }\n dict.set(valueType, entries.flat());\n continue;\n }\n const entriesChunks = [];\n const chunkSize = Math.max(maxLeaves, Math.ceil(entries.length / maxLeaves));\n for (let i = 0; i < entries.length; i += chunkSize) {\n entriesChunks.push(entries.slice(i, i + chunkSize));\n }\n const entriesRefs = [];\n dict.set(\"Kids\", entriesRefs);\n for (const chunk of entriesChunks) {\n const [entriesRef, entriesDict] = this.newDict;\n entriesRefs.push(entriesRef);\n entriesDict.set(\"Limits\", [chunk[0][0], chunk.at(-1)[0]]);\n stack.push({\n dict: entriesDict,\n entries: chunk\n });\n }\n }\n return treeRef;\n }\n #makePageLabelsTree() {\n const {\n pageLabels\n } = this;\n if (!pageLabels?.length) {\n return;\n }\n const {\n rootDict\n } = this;\n const pageLabelsRef = this.#makeNameNumTree(this.pageLabels, false);\n rootDict.set(\"PageLabels\", pageLabelsRef);\n }\n async #collectEmbeddedFiles(allDocumentData) {\n const {\n embeddedFiles\n } = this;\n for (const documentData of allDocumentData) {\n const {\n embeddedFiles: docEmbeddedFiles,\n document: {\n xref\n }\n } = documentData;\n if (!docEmbeddedFiles?.size) {\n continue;\n }\n this.currentDocument = documentData;\n for (const [key, valueRef] of docEmbeddedFiles) {\n let name = key;\n if (embeddedFiles.has(name)) {\n const displayName = stringToPDFString(key, true);\n for (let i = 1;; i++) {\n const deduped = stringToAsciiOrUTF16BE(`${displayName}_${i}`);\n if (!embeddedFiles.has(deduped)) {\n name = deduped;\n break;\n }\n }\n }\n embeddedFiles.set(name, await this.#collectDependencies(valueRef, true, xref));\n }\n this.currentDocument = null;\n }\n }\n #makeEmbeddedFilesTree() {\n const {\n embeddedFiles\n } = this;\n if (embeddedFiles.size === 0) {\n return;\n }\n if (!this.namesDict) {\n [this.namesRef, this.namesDict] = this.newDict;\n this.rootDict.set(\"Names\", this.namesRef);\n }\n this.namesDict.set(\"EmbeddedFiles\", this.#makeNameNumTree(Array.from(embeddedFiles.entries()), true));\n }\n #makeDestinationsTree() {\n const {\n namedDestinations\n } = this;\n if (namedDestinations.size === 0) {\n return;\n }\n if (!this.namesDict) {\n [this.namesRef, this.namesDict] = this.newDict;\n this.rootDict.set(\"Names\", this.namesRef);\n }\n this.namesDict.set(\"Dests\", this.#makeNameNumTree(Array.from(namedDestinations, ([name, dest]) => [stringToAsciiOrUTF16BE(name), dest]), true));\n }\n #makeStructTree() {\n const {\n structTreeKids\n } = this;\n if (!structTreeKids?.length) {\n return;\n }\n const {\n rootDict\n } = this;\n const structTreeRef = this.newRef;\n const structTree = this.xref[structTreeRef.num] = new Dict();\n structTree.setIfName(\"Type\", \"StructTreeRoot\");\n structTree.setIfArray(\"K\", structTreeKids);\n for (const kidRef of structTreeKids) {\n const kid = this.xref[kidRef.num];\n const type = kid.get(\"Type\");\n if (!type || isName(type, \"StructElem\")) {\n kid.set(\"P\", structTreeRef);\n }\n }\n if (this.parentTree.size > 0) {\n const parentTreeRef = this.#makeNameNumTree(Array.from(this.parentTree.entries()), false);\n const parentTree = this.xref[parentTreeRef.num];\n parentTree.setIfName(\"Type\", \"ParentTree\");\n structTree.set(\"ParentTree\", parentTreeRef);\n let nextKey = 0;\n for (const key of this.parentTree.keys()) {\n nextKey = Math.max(nextKey, key + 1);\n }\n structTree.set(\"ParentTreeNextKey\", nextKey);\n }\n if (this.idTree.size > 0) {\n const idTreeRef = this.#makeNameNumTree(Array.from(this.idTree.entries()), true);\n const idTree = this.xref[idTreeRef.num];\n idTree.setIfName(\"Type\", \"IDTree\");\n structTree.set(\"IDTree\", idTreeRef);\n }\n if (this.classMap.size > 0) {\n const classMapRef = this.newRef;\n this.xref[classMapRef.num] = this.classMap;\n structTree.set(\"ClassMap\", classMapRef);\n }\n if (this.roleMap.size > 0) {\n const roleMapRef = this.newRef;\n this.xref[roleMapRef.num] = this.roleMap;\n structTree.set(\"RoleMap\", roleMapRef);\n }\n if (this.namespaces.size > 0) {\n const namespacesRef = this.newRef;\n this.xref[namespacesRef.num] = Array.from(this.namespaces.values());\n structTree.set(\"Namespaces\", namespacesRef);\n }\n if (this.structTreeAF.length > 0) {\n const structTreeAFRef = this.newRef;\n this.xref[structTreeAFRef.num] = this.structTreeAF;\n structTree.set(\"AF\", structTreeAFRef);\n }\n if (this.structTreePronunciationLexicon.length > 0) {\n const structTreePronunciationLexiconRef = this.newRef;\n this.xref[structTreePronunciationLexiconRef.num] = this.structTreePronunciationLexicon;\n structTree.set(\"PronunciationLexicon\", structTreePronunciationLexiconRef);\n }\n rootDict.set(\"StructTreeRoot\", structTreeRef);\n }\n #makeAcroForm() {\n if (this.fields.length === 0) {\n return;\n }\n const {\n rootDict\n } = this;\n const acroFormRef = this.newRef;\n const acroForm = this.xref[acroFormRef.num] = new Dict();\n rootDict.set(\"AcroForm\", acroFormRef);\n acroForm.set(\"Fields\", this.fields);\n if (this.acroFormNeedAppearances) {\n acroForm.set(\"NeedAppearances\", true);\n }\n if (this.acroFormSigFlags > 0) {\n acroForm.set(\"SigFlags\", this.acroFormSigFlags);\n }\n acroForm.setIfArray(\"CO\", this.acroFormCalculationOrder);\n acroForm.setIfDefined(\"DR\", this.acroFormDefaultResources);\n if (this.acroFormDefaultAppearance) {\n acroForm.set(\"DA\", this.acroFormDefaultAppearance);\n }\n if (this.acroFormQ > 0) {\n acroForm.set(\"Q\", this.acroFormQ);\n }\n }\n async #makeRoot() {\n const {\n rootDict\n } = this;\n rootDict.setIfName(\"Type\", \"Catalog\");\n rootDict.setIfName(\"Version\", this.version);\n this.#makeAcroForm();\n this.#makePageTree();\n this.#makePageLabelsTree();\n this.#makeEmbeddedFilesTree();\n this.#makeDestinationsTree();\n this.#makeStructTree();\n await this.#makeOutline();\n }\n #makeInfo() {\n const infoMap = new Map();\n if (this.isSingleFile) {\n const firstRealPage = this.oldPages.find(p => !!p);\n const {\n xref: {\n trailer\n }\n } = firstRealPage.documentData.document;\n const oldInfoDict = trailer.get(\"Info\");\n for (const [key, value] of oldInfoDict || []) {\n if (typeof value === \"string\") {\n infoMap.set(key, stringToPDFString(value));\n }\n }\n }\n infoMap.delete(\"ModDate\");\n infoMap.set(\"CreationDate\", getModificationDate());\n infoMap.set(\"Creator\", \"PDF.js\");\n infoMap.set(\"Producer\", \"Firefox\");\n if (this.author) {\n infoMap.set(\"Author\", this.author);\n }\n if (this.title) {\n infoMap.set(\"Title\", this.title);\n }\n for (const [key, value] of infoMap) {\n this.infoDict.set(key, stringToAsciiOrUTF16BE(value));\n }\n return infoMap;\n }\n async #makeEncrypt() {\n if (!this.isSingleFile) {\n return [null, null, null];\n }\n const firstRealPage = this.oldPages.find(p => !!p);\n const {\n documentData\n } = firstRealPage;\n const {\n document: {\n xref: {\n trailer,\n encrypt\n }\n }\n } = documentData;\n if (!trailer.has(\"Encrypt\")) {\n return [null, null, null];\n }\n const encryptDict = trailer.get(\"Encrypt\");\n if (!(encryptDict instanceof Dict)) {\n return [null, null, null];\n }\n this.currentDocument = documentData;\n const result = [await this.#cloneObject(encryptDict, trailer.xref), encrypt, trailer.get(\"ID\")];\n this.currentDocument = null;\n return result;\n }\n async #createChanges() {\n const changes = new RefMap();\n changes.put(Ref.get(0, 0xffff), {\n data: null\n });\n for (let i = 1, ii = this.xref.length; i < ii; i++) {\n if (this.objStreamRefs?.has(i)) {\n await this.#createObjectStream(Ref.get(i, 0), this.xref[i], changes);\n } else {\n changes.put(Ref.get(i, 0), {\n data: this.xref[i]\n });\n }\n }\n return [changes, this.newRef];\n }\n async #createObjectStream(objStreamRef, objRefs, changes) {\n const streamBuffer = [\"\"];\n const objOffsets = [];\n let offset = 0;\n const buffer = [];\n for (let i = 0, ii = objRefs.length; i < ii; i++) {\n const objRef = objRefs[i];\n changes.put(objRef, {\n data: null,\n objStreamRef,\n index: i\n });\n objOffsets.push(`${objRef.num} ${offset}`);\n const data = this.xref[objRef.num];\n await writeValue(data, buffer, null);\n const obj = buffer.join(\"\");\n buffer.length = 0;\n streamBuffer.push(obj);\n offset += obj.length + 1;\n }\n streamBuffer[0] = objOffsets.join(\"\\n\");\n const dict = new Dict();\n dict.setIfName(\"Type\", \"ObjStm\");\n dict.set(\"N\", objRefs.length);\n dict.set(\"First\", streamBuffer[0].length + 1);\n const objStream = new StringStream(streamBuffer.join(\"\\n\"), dict);\n changes.put(objStreamRef, {\n data: objStream\n });\n }\n async writePDF() {\n await this.#makeRoot();\n const infoMap = this.#makeInfo();\n const [encryptRef, encrypt, fileIds] = await this.#makeEncrypt();\n const [changes, xrefTableRef] = await this.#createChanges();\n const header = stringToBytes(`%PDF-${this.version}\\n%\\xfa\\xde\\xfa\\xce`);\n return incrementalUpdate({\n originalData: header,\n changes,\n xrefInfo: {\n startXRef: null,\n rootRef: this.rootRef,\n infoRef: this.infoRef,\n encryptRef,\n newRef: xrefTableRef,\n fileIds: fileIds || [null, null],\n infoMap\n },\n useXrefStream: this.useObjectStreams,\n xref: {\n encrypt,\n encryptRef\n }\n });\n }\n}\n\n;// ./src/shared/base_pdf_stream.js\n\nclass BasePDFStream {\n #PDFStreamReader = null;\n #PDFStreamRangeReader = null;\n _fullReader = null;\n _rangeReaders = new Set();\n _source = null;\n constructor(source, PDFStreamReader, PDFStreamRangeReader) {\n this._source = source;\n this.#PDFStreamReader = PDFStreamReader;\n this.#PDFStreamRangeReader = PDFStreamRangeReader;\n }\n get _progressiveDataLength() {\n return this._fullReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullReader, \"BasePDFStream.getFullReader can only be called once.\");\n return this._fullReader = new this.#PDFStreamReader(this);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new this.#PDFStreamRangeReader(this, begin, end);\n this._rangeReaders.add(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullReader?.cancel(reason);\n for (const reader of new Set(this._rangeReaders)) {\n reader.cancel(reason);\n }\n }\n}\nclass BasePDFStreamReader {\n onProgress = null;\n _contentLength = 0;\n _filename = null;\n _headersCapability = Promise.withResolvers();\n _isRangeSupported = false;\n _isStreamingSupported = false;\n _loaded = 0;\n _stream = null;\n constructor(stream) {\n this._stream = stream;\n }\n _callOnProgress() {\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n unreachable(\"Abstract method `read` called\");\n }\n cancel(reason) {\n unreachable(\"Abstract method `cancel` called\");\n }\n}\nclass BasePDFStreamRangeReader {\n _stream = null;\n constructor(stream, begin, end) {\n this._stream = stream;\n }\n async read() {\n unreachable(\"Abstract method `read` called\");\n }\n cancel(reason) {\n unreachable(\"Abstract method `cancel` called\");\n }\n}\n\n;// ./src/core/worker_stream.js\n\nclass PDFWorkerStream extends BasePDFStream {\n constructor(source) {\n super(source, PDFWorkerStreamReader, PDFWorkerStreamRangeReader);\n }\n}\nclass PDFWorkerStreamReader extends BasePDFStreamReader {\n _reader = null;\n constructor(stream) {\n super(stream);\n const {\n msgHandler\n } = stream._source;\n const readableStream = msgHandler.sendWithStream(\"GetReader\");\n this._reader = readableStream.getReader();\n msgHandler.sendWithPromise(\"ReaderHeadersReady\").then(data => {\n this._contentLength = data.contentLength;\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._headersCapability.resolve();\n }, this._headersCapability.reject);\n }\n async read() {\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value: undefined,\n done: true\n };\n }\n return {\n value: value.buffer,\n done: false\n };\n }\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\nclass PDFWorkerStreamRangeReader extends BasePDFStreamRangeReader {\n _reader = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n const {\n msgHandler\n } = stream._source;\n const readableStream = msgHandler.sendWithStream(\"GetRangeReader\", {\n begin,\n end\n });\n this._reader = readableStream.getReader();\n }\n async read() {\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value: undefined,\n done: true\n };\n }\n return {\n value: value.buffer,\n done: false\n };\n }\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\n;// ./src/core/worker.js\n\n\n\n\n\n\n\n\n\n\n\n\nclass WorkerTask {\n #capability = Promise.withResolvers();\n terminated = false;\n constructor(name) {\n this.name = name;\n }\n get finished() {\n return this.#capability.promise;\n }\n finish() {\n this.#capability.resolve();\n }\n terminate() {\n this.terminated = true;\n }\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n}\nclass WorkerMessageHandler {\n static {\n if (typeof window === \"undefined\" && !isNodeJS && typeof self !== \"undefined\" && typeof self.postMessage === \"function\" && \"onmessage\" in self) {\n this.initializeFromPort(self);\n }\n }\n static setup(handler, port) {\n let testMessageProcessed = false;\n handler.on(\"test\", data => {\n if (testMessageProcessed) {\n return;\n }\n testMessageProcessed = true;\n handler.send(\"test\", data instanceof Uint8Array);\n });\n handler.on(\"configure\", data => {\n setVerbosityLevel(data.verbosity);\n });\n handler.on(\"GetDocRequest\", data => this.createDocumentHandler(data, port));\n }\n static createDocumentHandler(docParams, port) {\n let pdfManager;\n let terminated = false;\n let cancelXHRs = null;\n const WorkerTasks = new Set();\n const verbosity = getVerbosityLevel();\n const {\n docId,\n apiVersion\n } = docParams;\n const workerVersion = \"6.3.289\";\n if (apiVersion !== workerVersion) {\n throw new Error(`The API version \"${apiVersion}\" does not match ` + `the Worker version \"${workerVersion}\".`);\n }\n const buildMsg = (type, prop) => `The \\`${type}.prototype\\` contains unexpected enumerable property ` + `\"${prop}\", thus breaking e.g. \\`for...in\\` iteration of ${type}s.`;\n for (const prop in {}) {\n throw new Error(buildMsg(\"Object\", prop));\n }\n for (const prop in []) {\n throw new Error(buildMsg(\"Array\", prop));\n }\n const workerHandlerName = docId + \"_worker\";\n let handler = new MessageHandler(workerHandlerName, docId, port);\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n function startWorkerTask(task) {\n WorkerTasks.add(task);\n }\n function finishWorkerTask(task) {\n task.finish();\n WorkerTasks.delete(task);\n }\n async function loadDocument(recoveryMode) {\n await pdfManager.initDocument(recoveryMode);\n const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n const task = new WorkerTask(\"loadXfaResources\");\n startWorkerTask(task);\n await pdfManager.ensureDoc(\"loadXfaResources\", [handler, task]);\n finishWorkerTask(task);\n }\n const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc(\"numPages\"), pdfManager.ensureDoc(\"fingerprints\")]);\n const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc(\"htmlForXfa\") : null;\n return {\n numPages,\n fingerprints,\n htmlForXfa\n };\n }\n async function getPdfManager({\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n docBaseUrl,\n enableXfa,\n evaluatorOptions\n }) {\n const pdfManagerArgs = {\n source: null,\n disableAutoFetch,\n docBaseUrl,\n docId,\n enableXfa,\n evaluatorOptions,\n handler,\n length: 0,\n password,\n rangeChunkSize\n };\n if (data) {\n pdfManagerArgs.source = data;\n return new LocalPdfManager(pdfManagerArgs);\n }\n const pdfStream = new PDFWorkerStream({\n msgHandler: handler\n }),\n fullReader = pdfStream.getFullReader();\n const {\n promise,\n resolve,\n reject\n } = Promise.withResolvers();\n let newPdfManager,\n cachedChunks = [];\n cancelXHRs = reason => pdfStream.cancelAllRequests(reason);\n fullReader.headersReady.then(() => {\n if (!fullReader.isRangeSupported) {\n return;\n }\n pdfManagerArgs.source = pdfStream;\n pdfManagerArgs.length = fullReader.contentLength;\n pdfManagerArgs.disableAutoFetch ||= fullReader.isStreamingSupported;\n newPdfManager = new NetworkPdfManager(pdfManagerArgs);\n for (const chunk of cachedChunks) {\n newPdfManager.sendProgressiveData(chunk);\n }\n cachedChunks = null;\n resolve(newPdfManager);\n cancelXHRs = null;\n }).catch(reason => {\n reject(reason);\n cancelXHRs = null;\n });\n async function readData() {\n let loaded = 0;\n while (true) {\n const {\n value,\n done\n } = await fullReader.read();\n ensureNotTerminated();\n if (done) {\n break;\n }\n loaded += value.byteLength;\n if (!fullReader.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded,\n total: fullReader.contentLength\n });\n }\n if (newPdfManager) {\n newPdfManager.sendProgressiveData(value);\n } else {\n cachedChunks.push(value);\n }\n }\n if (!newPdfManager) {\n pdfManagerArgs.source = arrayBuffersToBytes(cachedChunks);\n cachedChunks = null;\n newPdfManager = new LocalPdfManager(pdfManagerArgs);\n resolve(newPdfManager);\n }\n cancelXHRs = null;\n }\n readData().catch(reason => {\n reject(reason);\n cancelXHRs = null;\n });\n return promise;\n }\n async function getPassword(ex) {\n const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n startWorkerTask(task);\n try {\n const res = await handler.sendWithPromise(\"PasswordRequest\", ex);\n return res.password;\n } finally {\n Promise.resolve().then(() => {\n finishWorkerTask(task);\n });\n }\n }\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send(\"GetDoc\", {\n pdfInfo: doc\n });\n }\n function onFailure(ex) {\n if (terminated) {\n return;\n }\n if (ex instanceof PasswordException) {\n getPassword(ex).then(password => {\n pdfManager.updatePassword(password);\n pdfManagerReady();\n }).catch(() => {\n handler.send(\"DocException\", ex);\n });\n } else {\n handler.send(\"DocException\", wrapReason(ex));\n }\n }\n function pdfManagerReady() {\n ensureNotTerminated();\n loadDocument(false).then(onSuccess, function (reason) {\n ensureNotTerminated();\n if (!(reason instanceof XRefParseException)) {\n onFailure(reason);\n return;\n }\n pdfManager.requestLoadedStream().then(function () {\n ensureNotTerminated();\n loadDocument(true).then(onSuccess, onFailure);\n }, onFailure);\n });\n }\n ensureNotTerminated();\n getPdfManager(data).then(function (newPdfManager) {\n if (terminated) {\n newPdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n throw new Error(\"Worker was terminated\");\n }\n pdfManager = newPdfManager;\n pdfManager.requestLoadedStream(true).then(stream => {\n handler.send(\"DataLoaded\", {\n length: stream.bytes.byteLength\n });\n }, () => {});\n }).then(pdfManagerReady, onFailure);\n }\n handler.on(\"GetPage\", async function ({\n pageIndex\n }) {\n const page = await pdfManager.getPage(pageIndex);\n const [rotate, ref, userUnit, view] = await Promise.all([pdfManager.ensure(page, \"rotate\"), pdfManager.ensure(page, \"ref\"), pdfManager.ensure(page, \"userUnit\"), pdfManager.ensure(page, \"view\")]);\n return {\n rotate,\n ref,\n refStr: ref?.toString() ?? null,\n userUnit,\n view\n };\n });\n handler.on(\"GetPageIndex\", function ({\n num,\n gen\n }) {\n return pdfManager.ensureCatalog(\"getPageIndex\", [Ref.get(num, gen)]);\n });\n handler.on(\"GetDestinations\", function () {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n handler.on(\"GetDestination\", function ({\n id\n }) {\n return pdfManager.ensureCatalog(\"getDestination\", [id]);\n });\n handler.on(\"GetPageLabels\", function () {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n handler.on(\"GetPageLayout\", function () {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n handler.on(\"GetPageMode\", function () {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n handler.on(\"GetViewerPreferences\", function () {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n handler.on(\"GetOpenAction\", function () {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n handler.on(\"GetAttachments\", function () {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n handler.on(\"GetAttachmentContent\", async function (id) {\n let passwordEx;\n while (true) {\n const password = passwordEx ? await getPassword(passwordEx) : null;\n try {\n if (password) {\n pdfManager.updatePassword(password);\n }\n return await pdfManager.ensureCatalog(\"attachmentContent\", [id]);\n } catch (ex) {\n if (ex instanceof PasswordException) {\n passwordEx = ex;\n continue;\n }\n throw ex;\n }\n }\n });\n handler.on(\"GetDocJSActions\", function () {\n return pdfManager.ensureCatalog(\"jsActions\");\n });\n handler.on(\"GetPageJSActions\", async function ({\n pageIndex\n }) {\n const page = await pdfManager.getPage(pageIndex);\n return pdfManager.ensure(page, \"jsActions\");\n });\n handler.on(\"GetAnnotationsByType\", async function ({\n types,\n pageIndexesToSkip\n }) {\n const [numPages, annotationGlobals] = await Promise.all([pdfManager.ensureDoc(\"numPages\"), pdfManager.ensureDoc(\"annotationGlobals\")]);\n if (!annotationGlobals) {\n return null;\n }\n const pagePromises = [];\n const annotationPromises = [];\n let task = null;\n try {\n for (let i = 0, ii = numPages; i < ii; i++) {\n if (pageIndexesToSkip?.has(i)) {\n continue;\n }\n if (!task) {\n task = new WorkerTask(\"GetAnnotationsByType\");\n startWorkerTask(task);\n }\n pagePromises.push(pdfManager.getPage(i).then(page => page.collectAnnotationsByType(handler, task, types, annotationPromises, annotationGlobals)));\n }\n await Promise.all(pagePromises);\n const annotations = await Promise.all(annotationPromises);\n return annotations.filter(Boolean);\n } finally {\n if (task) {\n finishWorkerTask(task);\n }\n }\n });\n handler.on(\"GetOutline\", function () {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n handler.on(\"GetOptionalContentConfig\", function () {\n return pdfManager.ensureCatalog(\"optionalContentConfig\");\n });\n handler.on(\"GetPermissions\", function () {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n handler.on(\"GetMetadata\", function () {\n return Promise.all([pdfManager.ensureDoc(\"documentInfo\"), pdfManager.ensureCatalog(\"metadata\"), pdfManager.ensureCatalog(\"hasStructTree\")]);\n });\n handler.on(\"GetMarkInfo\", function () {\n return pdfManager.ensureCatalog(\"markInfo\");\n });\n handler.on(\"GetData\", async function () {\n const stream = await pdfManager.requestLoadedStream();\n return stream.bytes;\n });\n handler.on(\"GetAnnotations\", async function ({\n pageIndex,\n intent\n }) {\n const page = await pdfManager.getPage(pageIndex);\n const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`);\n startWorkerTask(task);\n try {\n return await page.getAnnotationsData(handler, task, intent);\n } finally {\n finishWorkerTask(task);\n }\n });\n handler.on(\"GetFieldObjects\", async function () {\n const fieldObjects = await pdfManager.ensureDoc(\"fieldObjects\");\n return fieldObjects?.allFields || null;\n });\n handler.on(\"GetSignatures\", function () {\n return pdfManager.ensureDoc(\"signatures\");\n });\n handler.on(\"GetSignatureData\", function (id) {\n return pdfManager.ensureDoc(\"getSignatureData\", [id]);\n });\n handler.on(\"HasJSActions\", function () {\n return pdfManager.ensureDoc(\"hasJSActions\");\n });\n handler.on(\"GetCalculationOrderIds\", function () {\n return pdfManager.ensureDoc(\"calculationOrderIds\");\n });\n handler.on(\"ExtractPages\", async function ({\n pageInfos,\n annotationStorage\n }) {\n if (!pageInfos) {\n warn(\"extractPages: nothing to extract.\");\n return null;\n }\n if (!Array.isArray(pageInfos)) {\n pageInfos = [pageInfos];\n }\n let newDocumentId = 0;\n for (const pageInfo of pageInfos) {\n if (pageInfo.image) {\n continue;\n }\n if (pageInfo.document === null) {\n pageInfo.document = pdfManager.pdfDocument;\n } else if (ArrayBuffer.isView(pageInfo.document)) {\n const manager = new LocalPdfManager({\n source: pageInfo.document,\n docId: `${docId}_extractPages_${newDocumentId++}`,\n handler,\n password: pageInfo.password ?? null,\n evaluatorOptions: Object.assign({}, pdfManager.evaluatorOptions)\n });\n let recoveryMode = false;\n let isValid = true;\n while (true) {\n try {\n await manager.requestLoadedStream();\n await manager.initDocument(recoveryMode);\n break;\n } catch (e) {\n if (e instanceof XRefParseException) {\n if (recoveryMode === false) {\n recoveryMode = true;\n continue;\n } else {\n isValid = false;\n warn(\"extractPages: XRefParseException.\");\n }\n } else if (e instanceof PasswordException) {\n try {\n const password = await getPassword(e);\n manager.updatePassword(password);\n } catch {\n isValid = false;\n warn(\"extractPages: invalid password.\");\n }\n } else {\n isValid = false;\n warn(\"extractPages: invalid document.\");\n }\n if (!isValid) {\n break;\n }\n }\n }\n if (!isValid) {\n pageInfo.document = null;\n }\n const isPureXfa = await manager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n pageInfo.document = null;\n warn(\"extractPages does not support pure XFA documents.\");\n } else {\n pageInfo.document = manager.pdfDocument;\n }\n } else {\n warn(\"extractPages: invalid document.\");\n }\n }\n let task;\n try {\n const pdfEditor = new PDFEditor();\n task = new WorkerTask(`ExtractPages: ${pageInfos.length} page(s)`);\n startWorkerTask(task);\n return await pdfEditor.extractPages(pageInfos, annotationStorage, pdfManager.pdfDocument, handler, task);\n } catch (reason) {\n warn(`extractPages: \"${reason}\".`);\n return null;\n } finally {\n if (task) {\n finishWorkerTask(task);\n }\n }\n });\n handler.on(\"SaveDocument\", async function ({\n isPureXfa,\n numPages,\n annotationStorage,\n filename\n }) {\n const globalPromises = [pdfManager.requestLoadedStream(), pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureCatalog(\"acroFormRef\"), pdfManager.ensureDoc(\"startXRef\"), pdfManager.ensureDoc(\"xref\"), pdfManager.ensureCatalog(\"structTreeRoot\")];\n const changes = new RefMap();\n const promises = [];\n const newAnnotationsByPage = !isPureXfa ? getNewAnnotationsMap(annotationStorage) : null;\n const [stream, acroForm, acroFormRef, startXRef, xref, _structTreeRoot] = await Promise.all(globalPromises);\n const catalogRef = xref.trailer.getRaw(\"Root\") || null;\n let structTreeRoot;\n if (newAnnotationsByPage) {\n if (!_structTreeRoot) {\n if (await StructTreeRoot.canCreateStructureTree({\n catalogRef,\n pdfManager,\n newAnnotationsByPage\n })) {\n structTreeRoot = null;\n }\n } else if (await _structTreeRoot.canUpdateStructTree({\n pdfManager,\n newAnnotationsByPage\n })) {\n structTreeRoot = _structTreeRoot;\n }\n const imagePromises = AnnotationFactory.generateImages(annotationStorage.values(), xref, pdfManager.evaluatorOptions.isOffscreenCanvasSupported);\n const newAnnotationPromises = structTreeRoot === undefined ? promises : [];\n for (const [pageIndex, annotations] of newAnnotationsByPage) {\n newAnnotationPromises.push(pdfManager.getPage(pageIndex).then(page => {\n const task = new WorkerTask(`Save (editor): page ${pageIndex}`);\n startWorkerTask(task);\n return page.saveNewAnnotations(handler, task, annotations, imagePromises, changes).finally(() => {\n finishWorkerTask(task);\n });\n }));\n }\n if (structTreeRoot === null) {\n promises.push(Promise.all(newAnnotationPromises).then(async () => {\n await StructTreeRoot.createStructureTree({\n newAnnotationsByPage,\n xref,\n catalogRef,\n pdfManager,\n changes\n });\n }));\n } else if (structTreeRoot) {\n promises.push(Promise.all(newAnnotationPromises).then(async () => {\n await structTreeRoot.updateStructureTree({\n newAnnotationsByPage,\n pdfManager,\n changes\n });\n }));\n }\n }\n if (isPureXfa) {\n promises.push(pdfManager.ensureDoc(\"serializeXfaData\", [annotationStorage]));\n } else {\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n promises.push(pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`Save: page ${pageIndex}`);\n startWorkerTask(task);\n return page.save(handler, task, annotationStorage, changes).finally(() => {\n finishWorkerTask(task);\n });\n }));\n }\n }\n const refs = await Promise.all(promises);\n let xfaData = null;\n if (isPureXfa) {\n xfaData = refs[0];\n if (!xfaData) {\n return stream.bytes;\n }\n } else if (changes.size === 0) {\n return stream.bytes;\n }\n const needAppearances = acroFormRef && acroForm instanceof Dict && changes.values().some(ref => ref.needAppearances);\n const xfa = acroForm instanceof Dict && acroForm.get(\"XFA\") || null;\n let xfaDatasetsRef = null;\n let hasXfaDatasetsEntry = false;\n if (Array.isArray(xfa)) {\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n if (xfa[i] === \"datasets\") {\n xfaDatasetsRef = xfa[i + 1];\n hasXfaDatasetsEntry = true;\n }\n }\n if (xfaDatasetsRef === null) {\n xfaDatasetsRef = xref.getNewTemporaryRef();\n }\n } else if (xfa) {\n warn(\"Unsupported XFA type.\");\n }\n let newXrefInfo = Object.create(null);\n if (xref.trailer) {\n const infoMap = new Map();\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n if (xrefInfo instanceof Dict) {\n for (const [key, value] of xrefInfo) {\n if (typeof value === \"string\") {\n infoMap.set(key, stringToPDFString(value));\n }\n }\n }\n newXrefInfo = {\n rootRef: catalogRef,\n encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewTemporaryRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n infoMap,\n fileIds: xref.trailer.get(\"ID\") || null,\n startXRef,\n filename\n };\n }\n return incrementalUpdate({\n originalData: stream.bytes,\n xrefInfo: newXrefInfo,\n changes,\n xref,\n hasXfa: !!xfa,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n needAppearances,\n acroFormRef,\n acroForm,\n xfaData,\n useXrefStream: isDict(xref.topDict, \"XRef\")\n }).finally(() => {\n xref.resetNewTemporaryRef();\n });\n });\n handler.on(\"GetOperatorList\", function ({\n pageId,\n pageIndex,\n intent,\n cacheKey,\n annotationStorage,\n modifiedIds\n }, sink) {\n pdfManager.getPage(pageId).then(function (page) {\n const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n startWorkerTask(task);\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n page.getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n annotationStorage,\n modifiedIds,\n pageIndex\n }).then(opListInfo => {\n if (start) {\n info(`${task.name}; time=${Date.now() - start}ms, len=${opListInfo.length}`);\n }\n sink.close();\n }, reason => {\n if (task.terminated) {\n return;\n }\n sink.error(reason);\n }).finally(() => {\n finishWorkerTask(task);\n });\n });\n });\n handler.on(\"GetTextContent\", function ({\n pageId,\n pageIndex,\n includeMarkedContent,\n disableNormalization\n }, sink) {\n pdfManager.getPage(pageId).then(function (page) {\n const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n page.extractTextContent({\n handler,\n task,\n sink,\n includeMarkedContent,\n disableNormalization\n }).then(() => {\n if (start) {\n info(`${task.name}; time=${Date.now() - start}ms`);\n }\n sink.close();\n }, reason => {\n if (task.terminated) {\n return;\n }\n sink.error(reason);\n }).finally(() => {\n finishWorkerTask(task);\n });\n });\n });\n handler.on(\"GetStructTree\", async function ({\n pageIndex\n }) {\n const page = await pdfManager.getPage(pageIndex);\n return pdfManager.ensure(page, \"getStructTree\");\n });\n handler.on(\"FontFallback\", function ({\n id\n }) {\n return pdfManager.fontFallback(id, handler);\n });\n handler.on(\"Cleanup\", function () {\n return pdfManager.cleanup(true);\n });\n handler.on(\"Terminate\", async function () {\n terminated = true;\n const waitOn = [];\n if (pdfManager) {\n pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n const cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n pdfManager = null;\n } else {\n clearGlobalCaches();\n }\n cancelXHRs?.(new AbortException(\"Worker was terminated.\"));\n for (const task of WorkerTasks) {\n waitOn.push(task.finished);\n task.terminate();\n }\n await Promise.all(waitOn);\n handler.destroy();\n handler = null;\n });\n handler.on(\"Ready\", function () {\n setupDoc(docParams);\n docParams = null;\n });\n return workerHandlerName;\n }\n static initializeFromPort(port) {\n const handler = new MessageHandler(\"worker\", \"main\", port);\n this.setup(handler, port);\n handler.send(\"ready\", null);\n }\n}\n\n;// ./src/pdf.worker.js\n\nglobalThis.pdfjsWorker = {\n WorkerMessageHandler: WorkerMessageHandler\n};\n\nexport { WorkerMessageHandler };\n\n//# sourceMappingURL=pdf.worker.mjs.map"],"names":["isNodeJS","BBOX_INIT","F32_BBOX_INIT","FONT_IDENTITY_MATRIX","LINE_FACTOR","LINE_DESCENT_FACTOR","BASELINE_FACTOR","SVG_NS","RenderingIntentFlag","AnnotationPrefix","AnnotationEditorPrefix","AnnotationEditorType","PermissionFlag","MeshFigureType","TextRenderingMode","ImageKind","AnnotationType","AnnotationReplyType","AnnotationRenditionOperation","AnnotationFlag","AnnotationFieldFlag","AnnotationBorderStyleType","AnnotationActionEventType","DocumentActionEventType","PageActionEventType","VerbosityLevel","OPS","DrawOPS","PasswordResponses","verbosity","setVerbosityLevel","level","getVerbosityLevel","info","msg","warn","unreachable","assert","cond","_isValidProtocol","url","createValidAbsoluteUrl","baseUrl","options","stringToUTF8String","absoluteUrl","stripPath","str","shadow","obj","prop","value","nonSerializable","BaseException","message","name","PasswordException","code","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","length","MAX_ARGUMENT_COUNT","strBuf","i","chunkEnd","chunk","stringToBytes","FeatureTest","buffer8","view32","platform","userAgent","ctx","Util","_","r","g","b","m1","m2","m","md","p","pos","p0","p1","transform","m0","m3","m4","m5","pI","pI1","d","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","matrix","a","c","first","second","rect1","rect2","xLow","xHigh","yLow","yHigh","x","y","minMax","x0","y0","x1","y1","#getExtremumOnCurve","x2","x3","y2","y3","t","mt","tt","ttt","#getExtremum","delta","sqrtDelta","utf8StringToString","isArrayEqual","arr1","arr2","ii","NormalizeRegex","NormalizationMap","normalizeUnicode","p2","_isValidExplicitDest","validRef","validName","dest","page","zoom","args","argsLen","allowNull","arg","makeArr","makeMap","makeObj","makeSet","separator","CIRCULAR_REF","EOF","CmdCache","NameCache","RefCache","clearPrimitiveCaches","Name","Cmd","cmd","Dict","#map","xref","newXref","#getValue","isAsync","key1","key2","Ref","key","emptyDict","dictArray","mergeSubDicts","mergedDict","properties","dict","property","values","subDict","#str","num","gen","ref","RefSet","#set","parent","refStr","RefMap","aliasRef","callback","map","isName","v","isCmd","isDict","type","isRefsEqual","v1","v2","BaseStream","decoderOptions","width","height","peekedByte","begin","end","n","start","CONTROL_CHAR_REGEXP","isCSSString","quote","char","serializeFontFamily","fontFamily","isAscii","stringToAsciiOrUTF16BE","stringToUTF16String","stringToUTF16HexString","buf","bigEndian","PDFStringTranslateTable","PDFStringTextDecoders","stringToPDFString","keepEscapeSequence","encoding","decoder","buffer","decoded","ex","charCode","PDF_VERSION_REGEXP","MAX_INT_32","IDENTITY_MATRIX","RESOURCES_KEYS_OPERATOR_LIST","RESOURCES_KEYS_TEXT_CONTENT","getLookupTableFactory","initializer","useArray","lookup","MissingDataException","ParserEOFException","XRefEntryException","XRefParseException","arrayBuffersToBytes","arr","dataLength","data","item","fetchBinaryData","response","getInheritableProperty","getArray","stopWhenFound","visited","getParentToUpdate","firstDict","result","deepCompare","value1","value2","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","roman","isWhiteSpace","ch","isBooleanArray","len","isNumberArray","lookupMatrix","fallback","lookupRect","lookupNormalRect","parseXFAPath","path","positionPattern","component","escapePDFName","escapeString","match","_collectJS","entry","list","parents","element","js","collectActions","eventType","actions","additionalActionsDicts","additionalActions","rawActionDict","action","actionDict","XMLEntities","codePointIter","encodeToXmlString","entity","validateFontName","mustWarn","ident","normalizeCSSFontFamily","spaces","digit","validateCSSFont","cssFontInfo","CSS_FONT_WEIGHT_VALUES","fontWeight","italicAngle","weight","angle","recoverJsURL","URL_OPEN_METHODS","jsUrl","numberToString","roundedValue","getNewAnnotationsMap","annotationStorage","newAnnotationsByPage","getModificationDate","date","getRotationMatrix","rotation","getSizeInBytes","ALPHA_MASK","RGB_MASK","QCMS","#memoryArray","array","copy_result","ptr","_destBuffer","_destOffset","_keepAlpha","_memoryArray","count","destStart","dest32","src32","j","DataType","Intent","qcms_convert_array","transformer","src","add_alpha","ptr0","passArray8ToWasm0","wasm","len0","WASM_VECTOR_LEN","qcms_convert_four","src1","src2","src3","src4","qcms_convert_one","qcms_convert_three","qcms_drop_transformer","qcms_transformer_from_memory","mem","in_type","intent","__wbg_get_imports","arg0","arg1","getStringFromWasm0","table","offset","decodeText","cachedUint8ArrayMemory0","getUint8ArrayMemory0","malloc","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","module","initSync","imports","MathClamp","min","max","resizeRgbImage","w1","h1","w2","h2","alpha01","xRatio","yRatio","newIndex","oldIndex","xScaled","w1Scanline","py","resizeRgbaImage","rgbMask","copyRgbaImage","isDefaultDecodeHelper","decode","expectedLen","decodeLen","ColorSpace","#rgbBuf","numComps","srcOffset","destOffset","bits","bpc","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","colorMap","rgbPos","destPos","AlternateCS","base","tintFn","tmpBuf","baseNumComps","tinted","tintedOffset","scale","usesZeroToOneRange","isPassthrough","baseBuf","scaled","PatternCS","baseCS","IndexedCS","#rgbLookup","highVal","palette","rgbLookup","DeviceGrayCS","q","DeviceRgbCS","DeviceRgbaCS","DeviceCmykCS","#toRgb","srcScale","k","CalGrayCS","whitePoint","blackPoint","gamma","AG","L","val","CalRGBCS","#BRADFORD_SCALE_MATRIX","#BRADFORD_SCALE_INVERSE_MATRIX","#SRGB_D65_XYZ_TO_RGB_MATRIX","#FLAT_WHITEPOINT_MATRIX","#tempNormalizeMatrix","#tempConvertMatrix1","#tempConvertMatrix2","#DECODE_L_CONSTANT","XW","YW","ZW","XB","YB","ZB","#matrixProduct","#toFlat","sourceWhitePoint","LMS","#toD65","#sRGBTransferFunction","color","#decodeL","#compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","#normalizeWhitePointToFlat","XYZ_In","LMS_Flat","#normalizeWhitePointToD65","LMS_D65","A","B","C","AGR","BGG","CGB","X","Y","Z","XYZ","XYZ_Black","XYZ_D65","SRGB","LabCS","range","#fn_g","#decode","high1","low2","high2","maxVal","Ls","as","bs","M","N","fetchSync","xhr","IccColorSpace","#transformer","#convertPixel","#useWasm","#wasmUrl","#finalizer","iccProfile","inType","useWasm","useWorkerFetch","wasmUrl","isUsable","e","CmykICCBasedCS","#iccUrl","iccUrl","Stream","arrayBuffer","endPos","StringStream","NullStream","ChunkedStream","chunkSize","manager","chunks","beginChunk","endChunk","curChunk","position","numChunks","ChunkedStreamSubstream","missingChunks","subStream","ChunkedStreamManager","#aborted","#loadedStreamCapability","pdfStream","rangeReader","done","noFetch","requestId","chunksNeeded","capability","chunksToRequest","groupedChunksToRequest","groupedChunk","reason","ranges","groupedChunks","prevChunk","stream","isProgressive","loadedRequests","requestIds","nextEmptyChunk","lastChunk","convertToRGBA","params","convertBlackAndWhiteToRGBA","convertRGBToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","xorMask","srcLength","elem","len32","alphaMask","s1","s2","s3","jj","grayToRGBA","MIN_IMAGE_DIM","MAX_IMAGE_DIM","MAX_ERROR","ImageResizer","#goodSquareLength","#isImageDecoderSupported","imgData","isMask","MAX_DIM","area","maxArea","MAX_AREA","minFactor","componentsCount","canvasMaxAreaInBytes","isImageDecoderSupported","canvas","opacity","tolerance","defaultHeight","middle","#rescaleImageData","imagePromise","firstFactor","factor","steps","newWidth","newHeight","bitmap","step","prevWidth","prevHeight","kind","rgbaSize","K","rgbaData","maxHeight","newSize","remainder","h","bitPerPixel","colorTable","maskTable","compression","rowLen","rowSize","newData","extraLen","row","tmp","view","headerLength","fileLength","bmpData","emptyBuffer","DecodeStream","maybeMinBufferLength","requested","size","buffer2","bufEnd","readable","writable","writer","totalLength","StreamsSequenceStream","streams","onError","s","maybeLength","bufferLength","newLength","baseStreamsBuf","baseStreams","ColorSpaceUtils","cs","resources","pdfFunctionFactory","globalColorSpaceCache","localColorSpaceCache","asyncIfNotCached","csName","csRef","parsedCS","cachedCS","#parse","#subParse","colorSpaces","resourcesCS","mode","isRef","iccCS","altRaw","altCS","hiVal","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","codeLengths","getBlockBufferOffset","col","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","readBit","nextByte","maybeScanLines","blockRow","decodeHuffman","tree","node","receive","receiveAndExtend","decodeBaseline","blockOffset","diff","rs","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","sign","decodeMcu","mcu","mcuRow","mcuCol","blockCol","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","mcuToRead","findNextFileMarker","partialMsg","quantizeAndInverse","blockBufferOffset","qt","blockData","v0","v3","v4","v5","v6","v7","p3","p4","p5","p6","p7","buildComponentData","blocksPerLine","blocksPerColumn","computationBuffer","currentPos","startPos","maxPos","newPos","currentMarker","newMarker","prepareComponents","mcusPerColumn","blocksPerLineForMcu","blocksBufferSize","readDataBlock","endOffset","skipData","JpegImage","colorTransform","numComponents","markerLoop","appData","oldOffset","newOffset","dnlScanLines","maxOffset","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","l","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","sofScanLines","maxH","maxV","componentId","qId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","index","componentIndex","tableSpec","successiveApproximation","processed","nextFileMarker","quantizationTable","#getLinearizedBlockData","scaleX","scaleY","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","Cb","Cr","out","forceRGBA","forceRGB","grayColor","JpegStream","jpegOptions","#skipUselessBytes","jpegImage","useImageDecoder","frameWidth","frameHeight","reducePower","init","addState","parentState","pattern","checkFn","iterateFn","processFn","state","InitialState","context","fnArray","iFirstSave","argsArray","curr","iFirstTransform","iFirstPIIXO","maxX","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","imgRowSize","dataOffset","kk","iFirstPIMXO","isSameImage","iTransform","transformArgs","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","positions","images","maskParams","iFirstPIXO","firstPIXOArg0","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","iFirstConstructPath","op","newBBox","NullOptimizer","queue","fn","QueueOptimizer","OperatorList","streamSink","isOffscreenCanvasSupported","optionalContent","hasMask","dependency","dependencies","opList","transfers","bbox","separateAnnots","CheckedOperatorList","ShadingType","MAX_SAMPLED_COLOR_COMPONENTS","getColorConversionBatchSize","Pattern","#hasGPU","hasGPU","shading","res","FunctionBasedShading","RadialAxialShading","MeshShading","DummyShading","BaseShading","coordsLen","t0","t1","domainArr","extendStart","extendEnd","extendArr","fnObj","NUMBER_OF_SAMPLES","colorStops","ratio","batchSize","rgb","iBase","rBase","gBase","bBase","iPrev","rPrev","gPrev","bPrev","maxSlopeR","maxSlopeG","maxSlopeB","minSlopeR","minSlopeG","minSlopeB","rgbOffset","run","cssColor","background","coordsArr","shadingType","meshUpdateBounds","self","minX","minY","maxY","meshPackData","coords","coordsPacked","xy","colors","colorsPacked","figure","buildMeshVertexData","figures","vertexCount","vpr","posData","colData","pOff","cOff","addVertex","pi","ci","ps","rows","cols","bboxW","bboxH","stepsX","stepsY","verticesPerRow","totalVertices","xyBuf","rangeX","rangeY","halfStepX","halfStepY","coordOffset","compOffset","batchCount","colorOffset","yDomain","xDomain","MeshStreamReader","csNumComps","bitsPerCoordinate","xi","yi","bitsPerComponent","colorFn","colorSpace","bCache","getB","t_","clearPatternCaches","decodeContext","reader","patchMesh","verticesLeft","f","coord","tmp1","tmp2","tmp3","tmp4","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","figureCoords","figureColors","cl","cr","c0","c1","c2","c3","bRow","bCol","newColor","getTilingPatternIR","operatorList","needsIsolation","xstep","ystep","paintType","tilingType","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","last","stack","sp","bufferSize","BinaryCMapReader","cMap","extend","header","useCMap","sequence","dataSize","ucs2DataSize","subitemsCount","Ascii85Stream","#input","input","AsciiHexStream","maxDecodeLength","firstDigit","makeBrotliDecode","MAX_HUFFMAN_TABLE_SIZE","CODE_LENGTH_CODE_ORDER","DISTANCE_SHORT_CODE_INDEX_OFFSET","DISTANCE_SHORT_CODE_VALUE_OFFSET","FIXED_TABLE","BLOCK_LENGTH_OFFSET","BLOCK_LENGTH_N_BITS","INSERT_LENGTH_N_BITS","COPY_LENGTH_N_BITS","CMD_LOOKUP","unpackCommandLookupTable","log2floor","next","calculateDistanceAlphabetSize","npostfix","ndirect","maxndistbits","calculateDistanceAlphabetLimit","maxDistance","makeError","ndistbits","cmdLookup","insertLengthOffsets","copyLengthOffsets","cmdCode","rangeIdx","distanceContextOffset","insertCode","copyCode","copyLengthOffset","distanceContext","decodeWindowBits","largeWindowEnabled","readFewBits","attachDictionaryChunk","initState","maxDistanceAlphabetLimit","initBitReader","close","decodeVarLenUnsignedByte","decodeMetaBlockLength","sizeNibbles","sizeBytes","readSymbol","tableGroup","tableIdx","sym","mask","readBlockLength","readManyBits","moveToFront","inverseMoveToFrontTransform","vLen","mtf","readHuffmanCodeLengths","codeLengthCodeLengths","numSymbols","symbol","prevCodeLen","repeat","repeatCodeLen","space","readMoreInput","codeLen","extraBits","newLen","oldRepeat","repeatDelta","checkDupes","symbols","readSimpleHuffmanCode","alphabetSizeMax","alphabetSizeLimit","maxBits","histogramId","readComplexHuffmanCode","skip","numCodes","codeLenIdx","readHuffmanCode","simpleCodeOrSkip","decodeContextMap","contextMapSize","contextMap","numTrees","useRleForZeros","maxRunLengthPrefix","alphabetSize","tableSize","reps","decodeBlockTypeAndLength","treeType","numBlockTypes","ringBuffers","blockType","decodeLiteralBlockSwitch","literalBlockType","contextMode","decodeCommandBlockSwitch","decodeDistanceBlockSwitch","maybeReallocateRingBuffer","minimalNewSize","ringBufferSizeWithSlack","newBuffer","oldBuffer","readNextMetablockHeader","jumpToByteBoundary","readMetablockPartition","blockTypeAlphabetSize","blockLengthAlphabetSize","calculateDistanceLut","distExtraBits","distOffset","postfix","half","readMetablockHuffmanCodesAndContextMaps","limit","contextMapLength","numLiteralTrees","numDistTrees","huffmanTreeGroupAllocSize","decodeHuffmanTreeGroup","distanceAlphabetSizeMax","distanceAlphabetSizeLimit","copyUncompressedData","ringBuffer","reload","chunkLength","copyRawBytes","writeRingBuffer","toWrite","maxTableSize","group","calculateFence","doUseDictionary","fence","address","initializeCompoundDictionaryCopy","dictionaryData","wordLength","shift","sizeBits","offsets","wordIdx","transformIdx","transforms","RFC_TRANSFORMS","transformDictionaryWord","initializeCompoundDictionary","blockBits","cursor","copyFromCompoundDictionary","origPos","remChunkLength","decompress","windowBits","ringBufferMask","insertAndCopyExtraBits","insertLengthOffset","insertLengthExtraBits","copyLengthExtraBits","prevByte1","prevByte2","literalContext","LOOKUP","literalTreeIdx","distanceCode","distTreeIdx","dst","copyLength","srcEnd","dstEnd","numQuads","checkHealth","Transforms","numTransforms","prefixSuffixLen","prefixSuffixCount","unpackTransforms","prefixSuffix","prefixSuffixHeads","prefixSuffixSrc","transformsSrc","prefixSuffixBytes","toUtf8Runes","dstOffset","wordLen","transformIndex","triplets","prefixSuffixStorage","transformOffset","prefixIdx","transformType","suffixIdx","prefix","prefixEnd","suffix","suffixEnd","omitFirst","omitLast","dictOffset","uppercaseOffset","shiftOffset","param","scalar","getNextKey","replicateValue","nextTableBitSize","rootBits","left","codeLengthsSize","tableOffset","sorted","tableBits","totalSize","low","currentOffset","halfAvailable","readOffset","bytesInBuffer","spaceLeft","readInput","bytesToNibbles","endOfStream","byteOffset","prepare","health","padding","copyNibbles","chunkLen","byteLen","byteBuffer","halfLen","shortBuffer","unpackLookupTable","utfMap","utfRle","rep","State","InputStream","setData","newSizeBits","dictionaryOffsets","dictionarySizeBits","unpackDictionaryData","dictionary","data0","data1","skipFlip","sizeBitsData","toUsAsciiBytes","skipFlipRunes","flip","bytesRead","closeInput","customDictionary","totalOutput","BrotliDecode","BrotliStream","#isAsync","decodedData","_decoderOptions","decompressed","compressed","JBig2","moduleArg","moduleRtn","Module","quit_","toThrow","_scriptName","scriptDirectory","err","ABORT","EXITSTATUS","readyPromiseResolve","readyPromiseReject","HEAP8","HEAPU8","runtimeInitialized","updateMemoryViews","wasmMemory","preRun","addOnPreRun","callRuntimeCallbacks","onPreRuns","initRuntime","wasmExports","postRun","addOnPostRun","onPostRuns","abort","what","getWasmImports","wasmImports","createWasm","receiveInstance","assignWasmExports","resolve","reject","inst","mod","ExitStatus","callbacks","cb","noExitRuntime","__abort_js","runtimeKeepaliveCounter","__emscripten_runtime_keepalive_clear","timers","handleException","keepRuntimeAlive","_proc_exit","exitJS","implicit","_exit","maybeExit","callUserCallback","func","_emscripten_get_now","__setitimer_js","which","timeout_ms","id","__emscripten_timeout","_createImageData","getHeapMax","alignMemory","alignment","growMemory","oldHeapSize","pages","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","replacement","_setImageData","array_ptr","pitch8","pitch32","destSize","imageData","srcStart","_setLineData","line_ptr","writeArrayToMemory","doRun","jbig2","WasmImage","#handler","#instances","#useWorkerFetch","#buffer","#modulePromise","handler","trackInstance","#getJsModule","fallbackCallback","#instantiateWasm","successCallback","results","ImageDecoder","promise","promises","_params","Jbig2Error","JBig2CCITTFaxImage","globals","CCITTOptions","globalsPtr","globalsSize","CCITTFaxStream","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","FlateStream","cmf","flg","codeSize","codeBuf","codes","maxLen","codeVal","lengths","code2","#endsStreamOnError","hdr","blockLen","check","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","bitsLength","bitsOffset","repeatLength","code1","dist","Jbig2Stream","globalsStream","OpenJPEG","thisProgram","HEAP32","HEAPU32","_copy_pixels_1","compG_ptr","nb_pixels","compG","_copy_pixels_3","compR_ptr","compB_ptr","compR","compB","_copy_pixels_4","compA_ptr","compA","ENV","getExecutableName","getEnvStrings","lang","env","strings","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","endIdx","u","stringToUTF8","outPtr","_environ_get","__environ","environ_buf","bufSize","envp","string","lengthBytesUTF8","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_seek","fd","whence","printCharBuffers","UTF8Decoder","findStringEnd","heapOrArray","idx","maxBytesToRead","ignoreNul","maxIdx","UTF8ArrayToString","endPtr","u0","u1","u2","printChar","UTF8ToString","_fd_write","iov","iovcnt","pnum","_gray_to_rgba","_graya_to_rgba","_jsPrintWarning","message_ptr","_rgb_to_rgba","_storeErrorMessage","openjpeg","JpxError","JpxImage","isIndexedColormap","smaskInData","errorMessages","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","JpxStream","_length","LZWStream","earlyChange","maxLzwDictionarySize","lzwState","bitsCached","cachedData","estimatedDecodedSize","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","codeLength","prevCode","currentSequence","currentSequenceLength","decodedLength","currentBufferLength","hasPrev","PredictorStream","predictor","columns","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","pixBytes","prevRow","up","upLeft","pa","pb","pc","RunLengthStream","repeatHeader","source","MAX_LENGTH_TO_CACHE","getInlineImageCacheKey","Parser","#imageCache","#imageId","lexer","allowStreams","recoveryMode","cipherTransform","buf1","knownCommands","maybeEIPos","followingBytes","tmpLexer","Lexer","numArgs","nextObj","knownCommand","foundEOI","markerLength","tildePos","maybeEI","dictLength","filter","filterName","filterZero","#fetchIfRef","cacheKey","initialStreamPos","cacheEntry","imageStream","#hasCryptFilter","#findStreamLength","SCAN_BLOCK_LENGTH","signatureLength","END_SIGNATURE","endLength","PARTIAL_SIGNATURE","normalLength","scanBytes","scanLength","found","part","partLen","lastByte","filterArray","paramsArray","cryptName","specialChars","toHexDigit","divideBy","baseValue","currentDigit","numParen","charBuffered","previousCh","comment","nextCh","knownCommandFound","possibleCommand","Linearization","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","hint","parser","obj1","obj2","obj3","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","builtInCMap","high","dstLow","nextCharCode","codespaceRanges","nn","codespaceRange","IdentityCMap","vertical","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","fetchBuiltInCMap","previous","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","useCodespaceRanges","cMapData","isCompressed","CMapFactory","parsedCMap","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","StandardEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getEncoding","encodingName","getGlyphsUnicode","getDingbatsGlyphsUnicode","getSpecialPUASymbols","mapSpecialUnicodeValues","getUnicodeForGlyph","glyphsUnicodeMap","unicode","nameLen","hexStr","UnicodeRanges","getUnicodeRangeFor","lastPosition","SpecialCharRegExp","CategoryCache","getCharUnicodeCategory","cachedCategory","groups","category","clearUnicodeCaches","FontFlags","MacStandardGlyphOrdering","recoverGlyphName","type1FontGlyphMapping","builtInEncoding","glyphNames","charCodeToGlyphId","glyphId","baseEncoding","isSymbolicFont","differences","glyphName","standardGlyphName","normalizeFontName","getVerticalPresentationForm","MAX_SIZE_TO_COMPILE","compileType3Glyph","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","pathBuf","pp","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","DataBuilder","#buf","#bufLength","#hasExactLength","#pos","#view","exactLength","minLength","#initBuf","newBuf","MAX_SUBR_NESTING","looksLikeUnsigned16BitNegative","recoverSigned16BitBBox","onlyLowerLeft","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","DEFAULT_BLUE_SCALE","DEFAULT_BLUE_SHIFT","DEFAULT_BLUE_FUZZ","DEFAULT_EXPANSION_FACTOR","CharstringValidationData","CharstringValidationData12","CFFParser","file","seacAnalysisEnabled","cff","CFF","nameIndex","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","topDict","CFFTopDict","charStringOffset","charStringIndex","fontMatrix","fontBBox","descriptorBBox","cffBBoxHasUnsignedLowerLeft","cffBBoxHasUnsignedCoords","recoveredFontBBox","descriptorCorroborates","charset","fdArrayIndex","dictRaw","fontDict","charStringsAndSeacs","bytesLength","major","minor","hdrSize","offSize","CFFHeader","parseOperand","parseFloatOperand","operands","entries","cffIndex","CFFIndex","offsetSize","offsetStart","offsetEnd","names","CFFStrings","Type","cffDict","localSubrIndex","stackSize","validationCommand","subrsIndex","bias","subrNumber","charStrings","fdSelect","fdArray","privateDict","seacs","widths","charstring","valid","localSubrToUse","privateDictToUse","fdIndex","nominalWidth","defaultWidth","parentDict","CFFPrivateDict","privateOffset","privateDictEnd","dictData","blueScale","blueShift","blueFuzz","expansionFactor","maxZoneHeight","zones","lowerBound","minBlueScale","maxBlueScale","clamped","subrsOffset","relativeOffset","cid","CFFCharset","CFFCharsetPredefinedTypes","format","predefined","raw","readSupplement","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","dataEnd","CFFEncoding","CFFFDSelect","rawFileLength","glyphZero","CFFDict","tables","layout","CFFTopDictLayout","CFFPrivateDictLayout","glyphIndex","CFFOffsetTracker","location","offset0","offset1","offset2","offset3","offset4","CFFCompiler","compiled","topDictTracker","fontDictTrackers","epsilon","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","trackers","privateDictTracker","privateDictData","outputLength","subrs","offsetTracker","types","charStringsIndex","glyph","numGlyphs","isCIDFont","numGlyphsLessNotDef","nLeft","charsetIndex","numCharsets","warned","lastFD","currentFD","numRanges","objects","lastOffset","getStdFontMap","getFontNameToFileMap","getNonStdFontMap","getSerifFonts","getSymbolsFonts","getGlyphMapForMacOrderedFonts","glyphsUnicode","getGlyphMapForStandardFonts","getSupplementalGlyphMapForTrebuchetMS","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","getStandardFontName","fontName","isKnownFontName","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","GLYPH_HEADER_SIZE","GlyfTable","glyfTable","isGlyphLocationsLong","locaTable","loca","glyf","prev","Glyph","isLocationLong","locaIndex","factors","simple","composites","read","GlyphHeader","composite","CompositeGlyph","SimpleGlyph","spos","xMiddle","numberOfContours","xMin","yMin","xMax","yMax","Contour","flags","xCoordinates","yCoordinates","contours","instructions","endPtsOfContours","endPt","numberOfPt","instructionLength","flag","allXCoordinates","pointFlags","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","contour","abs","argument1","argument2","transf","pruneCompositeGlyphCycles","locaEntries","WHITE","GRAY","BLACK","backEdges","top","compIdx","droppedGlyphs","gIdx","removeSet","remaining","writePos","isLast","newFlags","ToUnicodeMap","cmap","IdentityToUnicodeMap","firstChar","lastChar","CFFFont","compiler","cidToGidMap","charsets","invCidToGidMap","encodings","CSS_FONT_INFO","SYSTEM_FONT_INFO","FONT_INFO","PATTERN_INFO","InfoUtils","compileCssFontInfo","encoder","encodedStrings","stringsLength","encoded","compileSystemFontInfo","encodedStyleStyle","encodedStyleWeight","lengthEstimate","compileFontInfo","font","systemFontInfoBuffer","cssFontInfoBuffer","numBools","boolByte","boolBit","point","metric","compilePatternInfo","ir","nCoord","nColor","nStop","dataView","u8data","hex","compileFontPathInfo","getFloat214","getSubroutineBias","numSubrs","parseCmap","segCount","idOffset","parseCff","parseGlyfTable","itemSize","itemDecode","dv","glyphs","lookupCmap","compileGlyf","cmds","visitedGlyphs","moveTo","firstPoint","lineTo","quadraticCurveTo","xa","ya","arg2","scale01","scale10","subglyph","numberOfPoints","startPoint","endPoint","compileCharString","charStringCode","bezierCurveTo","stems","parse","stackClean","xb","yb","subrCode","achar","bchar","Commands","currentTransform","CompiledFont","#compiledCharCodes","#compiledGlyphs","TrueTypeCompiled","Type2Compiled","cffInfo","FontRendererFactory","indexToLocFormat","unitsPerEm","numTables","tag","getMetrics","getFontBasicMetrics","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","OpenTypeFileBuilder","#tables","sfnt","entriesCount","entrySize","maxPower2","log2","searchRange","tablesNames","tableOffsets","paddedLength","searchParams","tableName","checksum","quad","COMMAND_MAP","Type1CharString","error","wx","sbx","dy","asb","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","decrypt","discardNumber","decrypted","decryptAscii","digit1","digit2","isSpecial","Type1Parser","encrypted","isBinary","token","lenIV","charstrings","privateData","program","subrsParsed","charStringsParsed","charString","charStringObject","cidCount","cidMapOffset","fdBytes","gdBytes","subrMapOffset","sdBytes","subrCount","startDataLength","startDataIsHex","foundStartData","previousTokens","rememberToken","dataType","maxLength","binary","cidEntrySize","readUint","byteCount","subrOffsets","prevOffset","nextOffset","notDef","encodingArg","findBlock","streamBytes","signature","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","actualLength","getEexecBlock","eexecBytes","isCidKeyedType1File","sample","text","Type1Font","#rawFileLength","#parseCidKeyedType1","#parseType1","type2Charstrings","headerBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","eexecBlock","fileStart","charstringsLen","seacMap","type1Charstrings","type1Charstring","type1Subrs","type2Subrs","charsetArray","fields","field","subrIndex","subr","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","adjustWidths","glyphsWidths","adjustTrueTypeToUnicode","nameRecords","isWinNameRecord","toUnicode","adjustType1ToUnicode","amendFallbackToUnicode","fonts_Glyph","originalCharCode","fontChar","accent","vmetric","operatorListId","isSpace","isInFont","int16","writeSignedInt16","signedInt16","writeUint32","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","getFontFileType","subtype","fileType","fileSubtype","applyStandardFontGlyphMap","glyphMap","getSymbolGlyphIdEncoding","firstCharCode","lastCharCode","buildToFontChar","toFontChar","isMacNameRecord","convertCidString","shouldThrow","adjustMapping","hasGlyph","newGlyphZeroId","newMap","toUnicodeExtraMap","usedGlyphIds","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","isInPrivateArea","LIGATURE_TO_UNICODE","fontCharCode","normalized","getRanges","codeIndices","createCmapTable","hasNonBmp","bmpLength","trailingRangesCount","segmentsLength","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","format4Overflow","contiguous","startCode","format314","useFormat4","useFormat12","format31012","header31012","format4Length","validateOS2Table","os2","version","selection","createOS2Table","override","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","typoAscent","typoDescent","winAscent","winDescent","createPostTable","post","createPostscriptName","createNameTable","proto","stringsBytes","stringsUnicodeBytes","strUnicode","namesBytes","platformsBytes","encodingsBytes","languagesBytes","strOffset","strs","nameRecord","namesRecordCount","nameTable","Font","#charsCache","#glyphCache","evaluatorOptions","isSerifFont","stdFontMap","nonStdFontMap","serifFonts","namePart","matches","renderer","#getExportData","props","isStandardFont","isMappedToStandardFont","metrics","isNarrow","unicodeCharCode","isCidKeyed","VALID_TABLES","readTables","readTableEntry","previousPosition","readOpenTypeHeader","ttf","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","readTrueTypeCollectionData","fontNameParts","fallbackData","potentialHeader","potentialTables","readNameTable","nameArr","nameEntry","readCmapTable","hasEncoding","segment","potentialTable","canBreak","platformId","encodingId","useTable","correctlySorted","nextBytes","hasShortCmap","mappings","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","segments","segIndex","offsetsCount","offsetIndex","rangeOffset","firstCode","entryCount","nGroups","startCharCode","endCharCode","glyphCode","finalMappings","seenCharCodes","sanitizeMetrics","headTable","dupFirstEntry","caretOffset","numOfMetrics","numMissing","sanitizeGlyph","sourceStart","sourceEnd","hintsValid","glyphProfile","contoursCount","flagsCount","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","glyphDataLength","sanitizeHead","head","locaLength","numGlyphsPlusOne","sanitizeGlyphLocations","maxSizeOfInstructions","itemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","missingGlyphs","writeOffset","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","glyphNameIndexes","customNames","strLen","records","numRecords","stringsStart","NAME_RECORD_LENGTH","record","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","newStackLength","stackDelta","content","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","ttcData","isTrueType","parsedCff","numGlyphsFromCFF","sortedTables","nextTable","previousPos","scaleFactors","advanceWidth","lsb","newMaxp","glyphsInfo","metricsOverride","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","forcePostTable","unicodeOrCharCode","mapping","glyphZeroId","newMapping","namePrototype","builder","tableTag","newCharCodeToGlyphId","getCharCodes","charCodes","createCharCode","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","dateArr","hhea","cffWidths","hmtx","maxp","possibleSpaceReplacements","glyphUnicode","charcode","widthCode","chars","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","ErrorFont","CalibriBoldFactors","CalibriBoldMetrics","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriRegularFactors","CalibriRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaRegularFactors","HelveticaRegularMetrics","LiberationSansBoldWidths","LiberationSansBoldMapping","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","LiberationSansItalicWidths","LiberationSansItalicMapping","LiberationSansRegularWidths","LiberationSansRegularMapping","MyriadProBoldFactors","MyriadProBoldMetrics","MyriadProBoldItalicFactors","MyriadProBoldItalicMetrics","MyriadProItalicFactors","MyriadProItalicMetrics","MyriadProRegularFactors","MyriadProRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","getXFAFontMap","getXfaFontName","getXfaFontWidths","baseWidths","baseMapping","rescaledBaseWidths","w","currentCode","currentArray","newWidths","charUnicode","unicode1","unicode2","getXfaFontDict","descriptor","systemInfo","TOKEN","Token","lexer_Lexer","#singletons","#operatorSingletons","#initSingletons","singletons","operatorSingletons","isOperator","lf","eol","PS_VALUE_TYPE","PS_NODE","PsNode","PsProgram","body","PsBlock","PsNumber","PsOperator","PsIf","then","PsIfElse","otherwise","PsArgNode","PsConstNode","PsUnaryNode","operand","valueType","PsBinaryNode","PsTernaryNode","ast_Parser","tok","thenBlock","elseBlock","parsePostScriptFunction","_nodesEqual","_evalBinaryConst","deg","_evalUnaryConst","MAX_STACK_SIZE","_unaryValueType","operandType","_binaryValueType","firstType","secondType","PSStackToTree","#binaryOps","#unaryOps","#idempotentUnary","#negatedComparison","#init","numInputs","#markShared","outputs","refCount","visit","instr","saved","trueStack","falseStack","zero","snapshot","thenStack","elseStack","nNode","jNode","slice","sqrtOnce","square","negated","cop","cf","OP","_DEG_TO_RAD","_RAD_TO_DEG","PsJsCompiler","#stack","#tmp","domain","cached","slot","ifPatch","jumpPatch","ip","tgt","amt","PSStackBasedInterpreter","#sp","#push","#execOp","dx","sub","#execBlock","nIn","nOut","buildPostScriptJsFunction","forceInterpreter","wasm_compiler_OP","FUNC_TYPE","F64","SECTION","EXTERN_FUNC","EXTERN_MEM","unsignedLEB128","byte","encodeASCIIString","section","vec","items","MATH_IMPORTS","_mathImportObject","PsWasmCompiler","#initialized","#comparisonToOp","#importIdx","#degToRad","#radToDeg","#importTypeEntries","#importSection","#functionSection","#memorySection","#exportSection","#wasmMagicVersion","#f64View","#f64Arr","f64Buf","local","localA","localB","localR","wasmOp","nLocals","paramTypes","resultTypes","funcType","typeSectionBytes","localDecls","funcBodyLen","codeSectionBytes","magicVersion","importSection","functionSection","memorySection","exportSection","totalLen","off","compilePostScriptToWasm","_makeWrapper","exports","outView","writeOut","inBuf","buildPostScriptWasmFunction","BaseLocalCache","LocalImageCache","LocalColorSpaceCache","LocalFunctionCache","LocalGStateCache","LocalTilingPatternCache","RegionalImageCache","GlobalColorSpaceCache","GlobalImageCache","#decodeFailedSet","#byteSize","byteSize","#cacheLimitReached","pageIndex","pageIndexSet","onlyData","FunctionType","PDFFunctionFactory","parseArray","fnRef","parsedFn","cachedFn","PDFFunction","toNumberArray","outputSize","bps","sampleMul","strBytes","strIdx","factory","typeNum","interpolate","xmin","xmax","ymin","ymax","inputSize","order","encode","samples","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","fns","bounds","dmin","dmax","rmin","rmax","psCode","wasmFn","isPDFFunction","fnDict","textSinkWrapper","sink","resolved","_parseVisibilityExpression","nestingCounter","currentResult","operator","object","nestedResult","parseMarkedContentProps","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","baseTypes","arabicTypes","isOdd","isEven","findUnequal","reverseValues","temp","createBidiText","isLTR","dir","bidi","startLevel","strLength","numBidi","charType","levels","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","NORMAL","MEDIUM","BOLD","ITALIC","BOLDITALIC","substitutionMap","fontAliases","getStyleToAppend","style","getFamilyName","keywords","generateFont","alias","ultimate","localFontPath","useFallback","usePath","append","extra","substitution","aliasAppend","fallbackInfo","fallbackUltimate","getFontSubstitution","systemFontCache","idFactory","baseFontName","standardFontName","substitutionInfo","subst","mustAddBaseFont","loadedName","bold","italic","guessFallback","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","PDFImage","image","isInline","smask","validWidth","validHeight","hasColorSpace","matteColorSpace","isIndexed","smaskData","maskData","computedLength","imgArray","isSingleOpaquePixel","haveFullData","decodeAddends","decodeCoefficients","bufferPos","rowComps","loop1End","loop2End","remainingBits","rgbaBuf","apply","maxRows","stride","imageOffset","maskOffset","#undoPreblend","matteR","matteG","matteB","alpha","matte","matteRgb","drawWidth","drawHeight","mustBeResized","#getImage","isHandled","imageLength","rgba","maybeUndoPreblend","canvasImgData","destWidth","destHeight","invertOutput","srcWidth","srcHeight","resolvedDestWidth","resolvedDestHeight","needsResampling","outputWidth","xMap","destIndex","internal","imageBytes","DefaultPartialEvaluatorOptions","PatternType","TEXT_CHUNK_BATCH_SIZE","deferred","normalizeBlendMode","parsingArray","maybeBM","addCachedImageOps","objId","TimeSlotManager","PartialEvaluator","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","newOptions","newEvaluator","nonBlendModesSet","nodes","graphicStates","graphicState","bm","xObjects","xObject","xResources","standardFontNameToFileName","filename","xobj","task","initialState","seenRefs","f32bbox","groupOptions","newOpList","localResources","groupSubtype","cacheGlobally","localImageCache","maxImageSize","ignoreErrors","imageRef","imageMask","cacheData","SMALL_IMAGE_DIMENSIONS","globalCacheData","localLength","imageObj","#createTransferMap","transferFn","stateManager","smaskContent","smaskOptions","transferObj","tr","transferArray","transferMaps","numFns","numEffectfulFns","patternDict","localTilingPatternCache","tilingOpList","patternResources","operatorListIR","tilingPatternIR","fontArgs","fontRef","fallbackFontDict","translated","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","errorFont","TranslatedFont","fontRes","preEvaluatedFont","hash","fontRefIsRef","fontID","aliasFontRef","translatedFont","pathBuffer","xw","yh","startX","startY","csPromise","localShadingPatternCache","patternIR","patterns","patternName","rawPattern","localTilingPattern","prevRefs","EvalState","xobjs","StateManager","preprocessor","EvaluatorPreprocessor","timeSlotManager","markedContentLevel","closePendingRestoreOPS","argument","closePendingMarkedContentOPS","promiseBody","operation","stop","isValidName","localImage","resolveXObject","rejectXObject","cachedImage","fontSize","combinedGlyphs","arrItem","fillCS","strokeCS","shadingRes","patternId","localGStateObj","resolveGState","rejectGState","extGState","thickness","dashPhase","dashArray","pathMinMax","includeMarkedContent","seenStyles","viewBox","disableNormalization","keepWhiteSpace","intersector","TextState","textMarkedContentLevel","textContent","textContentItem","twoLastChars","twoLastCharsPos","saveLastChar","nextPos","ret","shouldAddWhitepsace","resetLastChars","TRACKING_SPACE_FACTOR","NOT_A_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","VERTICAL_SHIFT_RATIO","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","currentTextState","pushWhitespace","getCurrentTextTransform","tsm","glyphHeight","ensureTextContentItem","trm","scaleLineX","scaleCtmX","updateAdvanceScale","scaleFactor","runBidiTransform","textChunk","bidiResult","handleSetFont","applyInverseRotation","compareWithLastPosition","glyphWidth","posX","posY","lastPosX","lastPosY","rotate","advanceY","advanceX","textOrientation","appendEOL","flushTextContentItem","addFakeSpaces","textRiseDelta","advanceYCorrected","buildTextContentItem","extraSpacing","baseCharSpacing","charSpacing","scaledDim","closePendingMarkedContentItems","enqueueChunk","batch","fontNameArg","fontSizeArg","spaceFactor","currentState","xObjStateManager","sinkWrapper","gStateFont","mcid","cidToGidBytes","toUnicodePromise","cidSystemInfo","baseEncodingName","diffEncoding","nonEmbeddedFont","isSymbolsFontName","isNonsymbolicFont","builtToUnicode","forceGlyphs","codeStr","registry","ordering","ucs2CMapName","ucs2CMap","ucs2","cmapObj","glyphsData","glyphID","glyphsVMetrics","defaultVMetrics","dw","dw2","vmetrics","missingWidth","isMonospace","firstWidth","fontNameWoStyle","monospace","Metrics","glyphWidths","widthsByGlyphName","baseDict","df","diffLength","diffBuf","diffEntry","uint8array","widthsBuf","compositeWidths","subWidthsBuf","charProcs","isType3Font","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","fontFileN","length1","length2","length3","isInternalFont","glyphScaleFactors","systemFontInfo","subtypeEntry","ascent","descent","xHeight","capHeight","cidEncoding","buildPath","#sent","#type3Loaded","fontData","evaluator","type3Dependencies","type3Evaluator","type3FontRefs","fontResources","charProcOperatorList","fontBBoxSize","#removeType3ColorOperators","#guessType3FontBBox","charBBox","charBBoxSize","gStateKey","old","clone","newPath","opSpec","argsLength","nonProcessedArgs","DefaultAppearanceEvaluator","parseDefaultAppearance","AppearanceStreamEvaluator","breakLoop","tm","parseAppearanceStream","getPdfColor","isFill","gray","createDefaultAppearance","fontColor","FakeUnicodeFont","#fontNameId","fontDescriptor","descendantFont","currentChar","currentWidths","line","lineHeight","lineDescent","bgColor","strokeAlpha","lines","maxWidth","lineWidth","hscale","vscale","fscale","newFontSize","vShift","appearance","appearanceStreamDict","DateFormats","TimeFormats","NameOrNumberTree","root","isRaw","kids","kid","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","NameTree","NumberTree","clearGlobalCaches","FileSpec","desc","description","fileSpecDict","ef","XMLParserErrorCode","isWhitespace","isWhitespaceString","XMLParserBase","all","dec","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","attrStart","ch2","q2","complexDoctype","doctypeContent","isClosed","isEmpty","SimpleDOMNode","nodeName","nodeValue","childNodes","child","paths","siblingPos","attribute","SimpleXMLParser","hasAttributes","lowerCaseName","documentElement","lastElement","childNode","MetadataParser","xmlDocument","d1","d2","d3","charBuf","seqNode","rdf","WAV_HEADER_SIZE","getSoundFormat","sampleRate","channels","bitsPerSample","soundStreamToWav","blockAlign","wav","signed","MAX_DEPTH","TABLE_SPAN_ATTRIBUTES","StructElementType","StructTreeRoot","rootDict","rootRef","roleMap","parentTree","kidRef","#addIdToPage","pageRef","catalogRef","pdfManager","nextKey","hasNothingToUpdate","elements","changes","cache","structTreeRootRef","structTreeRoot","parentTreeRef","nums","#writeKids","numberTree","pageDict","#collectParents","numsRef","newNextKey","objr","structTreePageObjs","isPageRef","accessibilityData","parentTreeId","structTreeParent","structParent","objs","StructTreePage","objRef","tagDict","#writeProperties","tagRef","#updateParentTag","objDict","title","alt","expanded","actualText","idToElements","parentArray","updateElement","pageKid","elems","parentRef","newTagRef","fallbackKids","cachedParentDict","parentKidsRaw","cachedParentKids","parentKidsRef","StructElementNode","nameObj","AFs","af","fileStream","mathml","#collectAttributes","pending","classes","classMap","className","role","summary","headers","ids","scope","short","pageObjId","StructElement","refObjId","elemId","parentNode","save","nodeToSerializable","structId","mathML","kidElement","isValidExplicitDest","fetchDest","fetchRemoteDest","Catalog","#actualNumPages","#annotationAttachmentIdByRef","#annotationAttachmentRefById","#soundAttachmentIds","#catDict","isSound","baseId","needsRendering","collection","acroForm","streamRef","metadata","markInfo","#readMarkInfo","structTree","#readStructTreeRoot","rawObj","pagesObj","#readDocumentOutline","blackColor","outlineDict","rgbColor","outlineItem","permissions","#readPermissions","encrypt","config","defaultConfig","groupsData","groupRefCache","groupRef","#readOptionalContentGroup","#readOptionalContentConfig","usage","usageObj","print","printState","viewState","parseOnOff","refs","onParsed","parseOrder","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","parseRBGroups","rbGroups","rbGroup","parsedRbGroup","dests","#readDests","rawDests","#readPageLabels","pageLabels","currentLabel","currentIndex","labelDict","st","LIMIT","letterIndex","pageLayout","pageMode","prefs","prefValue","openAction","destDict","resultObj","attachments","nameTree","#attachmentContentByName","namedContent","target","xfaImages","#collectJavaScript","javaScript","appendIfJavaScriptDict","jsDict","manuallyTriggered","nodesToVisit","visitedNodes","pagesRef","pageKidsCountCache","pageIndexCache","pageDictCache","currentPageIndex","currentNode","lastKid","addPageDict","addPageError","queueItem","posInKids","kidObj","cachedPageIndex","total","kidPromises","uri","#getDestFromStructElement","seRef","seDict","directPg","kidsArr","pg","current","depth","parentRaw","attrs","docBaseUrl","docAttachments","actionType","actionName","include","urlDict","remoteDest","newWindow","relationship","attachmentDest","namedAction","preserveRB","stateArr","jsAction","jsURL","seDest","FLATE_COLOR_COUNT_THRESHOLD","createImageDict","createRawImage","paethPredictor","above","upperLeft","applyPNGOptimumFilter","candidates","rowOffset","prevRowOffset","scores","cur","bestFilter","outOffset","deflate","writePromise","createPNGLikeImage","filtered","decodeParms","createImage","closeBitmap","buf32","isLE","colorCounter","hasAlpha","useFlate","imageStreamPromise","imageRenderStream","rgbBuffer","blob","smaskStreamPromise","smaskRenderStream","alphaBuffer","smaskRenderDict","smaskStream","mayHaveChildren","addChildren","rawValue","ObjectLoader","keys","#walk","nodesToRevisit","pendingRequests","foundMissingData","$acceptWhitespace","$addHTML","$appendChild","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$globalData","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nodeName","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$text","$toPages","$toHTML","$toString","$toStyle","$uid","$buildXFAObject","NamespaceIds","ns","dimConverters","measurementPattern","stripQuotes","getInteger","defaultValue","validate","getFloat","getKeyword","getStringOption","getMeasurement","def","valueStr","unit","conv","getRatio","den","getRelevant","getColor","getBBox","HTMLResult","success","html","breakNode","FontFinder","pdfFonts","reallyMissingFonts","pdfFont","myriad","maybe","family","selectFont","xfaFont","typeface","fonts_getMetrics","real","lineGap","WIDTH_FACTOR","FontInfo","margin","fontFinder","FontSelector","defaultXfaFont","defaultParaMargin","defaultLineHeight","lastFont","fontInfo","TextMeasure","fonts","letterSpacing","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","lastSpacePos","lastSpaceWidth","currentLineWidth","currentLineHeight","isBroken","isFirstLine","isEOL","namePattern","indexPattern","operators","shortcuts","somCache","parseIndex","parseExpression","expr","dotDotAllowed","noExpr","parsed","searchNode","container","useCache","isQualified","cacheName","children","createDataNode","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","XFAObject","nsId","hasChildren","XmlObject","XFAObjectArray","dumped","availableSpace","protoAttributes","allAttr","setAttr","ancestors","use","usehref","somExpression","protoProto","unsetAttrName","protoValue","$symbol","clonedChild","allTransparent","XFAAttribute","dataNode","tagName","utf8TagName","utf8Name","skipConsumed","hasNS","ContentObject","OptionObject","StringObject","IntegerObject","validator","Option01","Option10","measureToString","converters","colSpan","setMinMaxDimensions","layoutText","measure","layoutNode","marginH","marginV","computeBbox","fixDimensions","layoutClass","toStyle","newStyle","createWrapper","wrapper","insets","insetsH","insetsW","classNames","isPrintOnly","border","fixTextIndent","styles","indent","setAccess","getCurrentPara","setPara","nodeStyle","para","valueStyle","paraStyle","setFontFamily","fixURL","createLine","flushHTML","htmlFromFailing","addHTML","getAvailableSpace","getTransformedBBox","centerX","centerY","checkDimensions","ERROR","attempt","TEMPLATE_NS_ID","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","getBorderDims","borderExtra","hasMargin","_setValue","templateNode","Value","getContainedChildren","SubformSet","isRequired","setTabIndex","applyAssist","assist","assistTitle","ariaRole","ariaLevel","ariaLabel","valueToHtml","setFirstUnsplittable","unsetFirstUnsplittable","handleBreak","currentPageArea","currentContentArea","PageArea","ContentArea","pageArea","nextPageArea","contentAreas","indexForCurrent","indexForTarget","handleOverflow","extraNode","savedMethod","AppearanceFilter","Arc","edge","Edge","edgeStyle","arc","startAngle","sweepAngle","largeArc","svg","Area","Assist","Barcode","Bind","BindItems","Bookend","BooleanElement","Border","edges","defaultEdge","edgeStyles","cornerStyles","Break","BreakAfter","BreakBefore","Button","grandpa","htmlButton","event","href","Calculate","Caption","savedReserve","Certificate","Certificates","CheckButton","groupId","exportedValue","checked","fieldId","dataId","ExclGroup","ChoiceList","optionStyle","displayedIndex","saveIndex","displayed","selected","option","selectAttributes","Color","Comb","Connect","Corner","DateElement","DateTime","DateTimeEdit","Decimal","DefaultUi","Desc","DigestMethod","DigestMethods","Draw","savedW","savedH","Encoding","Encodings","Encrypt","EncryptData","Encryption","EncryptionMethod","EncryptionMethods","Event","ExData","ExObject","isSplittable","columnWidths","isLrTb","maxRun","Execute","Extras","Field","Ui","TextEdit","caption","borderDims","uiW","uiH","borderStyle","ui","aElement","htmlValue","captionHeight","inputHeight","Fill","ggrandpa","propName","altPropName","Rectangle","Filter","Float","template_Font","Format","Handler","Hyphenation","Image","ImageEdit","Integer","Issuers","Items","Keep","KeyUsage","Line","Linear","startColor","endColor","LockDocument","Manifest","Margin","Mdp","Medium","Message","NumericEdit","Occur","originalMin","PageSet","Template","Oid","Oids","Overflow","leader","trailer","pageNumber","parity","Para","PasswordEdit","template_Pattern","Picture","Proto","Radial","Reason","Reasons","cornerStyle","RefElement","Script","SetProperty","SignData","Signature","Signing","Solid","Speak","Stipple","Subform","breakBefore","savedNoLayoutFailure","overflowExtra","breakAfter","SubjectDN","kv","SubjectDNs","Submit","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","targetPageArea","hasSomething","hasSomethingCounter","htmlContentAreas","flush","contentArea","Text","Time","TimeStamp","ToolTip","Traversal","Traverse","Validate","valueName","Variables","TemplateNamespace","bind_NS_DATASETS","createText","Binder","formNode","picture","isValue","global","generator","connection","targetNodes","targetNode","targetParent","labels","labelRef","valueRef","labelNodes","labelNode","valueNodes","valueNode","label","baseClone","occur","currentNumber","nodeClone","uselessNodes","dataChildren","dataChild","DataHandler","storage","storageEntry","CONFIG_NS_ID","Acrobat","Acrobat7","ADBE_JSConsole","ADBE_JSDebugger","AddSilentPrint","AddViewerPreferences","AdjustData","AdobeExtensionLevel","Agent","AlwaysEmbed","Amd","config_Area","Attributes","AutoSave","Base","BatchOutput","BehaviorOverride","Cache","Change","Common","Compress","CompressLogicalStructure","CompressObjectStream","Compression","Config","Conformance","ContentCopy","Copies","Creator","CurrentPage","Data","Debug","DefaultTypeface","Destination","DocumentAssembly","Driver","DuplexOption","DynamicRender","Embed","config_Encrypt","config_Encryption","EncryptionLevel","Enforce","Equate","EquateRange","unicodeRegex","unicodeRange","Exclude","ExcludeNS","FlipLabel","config_FontInfo","FormFieldFilling","GroupParent","IfEmpty","IncludeXDPContent","IncrementalLoad","IncrementalMerge","Interactive","Jog","LabelPrinter","Layout","Level","Linearized","Locale","LocaleSet","Log","MapElement","MediumInfo","config_Message","Messaging","Mode","ModifyAnnots","MsgId","NameAttr","NeverEmbed","NumberOfCopies","OpenAction","Output","OutputBin","OutputXSL","Overprint","Packets","PageOffset","PageRange","numbers","Pagination","PaginationOverride","Part","Pcl","Pdf","Pdfa","Permissions","PickTrayByPDFSize","config_Picture","PlaintextMetadata","Presence","Present","Print","PrintHighQuality","PrintScaling","PrinterName","Producer","Ps","Range","Record","Relevant","Rename","RenderPolicy","RunScripts","config_Script","ScriptModel","Severity","SilentPrint","Staple","StartNode","StartPage","SubmitFormat","SubmitUrl","SubsetBelow","SuppressBanner","Tagged","config_Template","Threshold","To","TemplateCache","Trace","Transform","Uri","config_Validate","ValidateApprovalSignatures","ValidationMessaging","Version","VersionControl","ViewerPreferences","WebClient","Whitespace","Window","pair","Xdc","Xdp","Xsl","Zpl","ConfigNamespace","CONNECTION_SET_NS_ID","ConnectionSet","EffectiveInputPolicy","EffectiveOutputPolicy","Operation","RootElement","SoapAction","SoapAddress","connection_set_Uri","WsdlAddress","WsdlConnection","XmlConnection","XsdConnection","ConnectionSetNamespace","DATASETS_NS_ID","datasets_Data","Datasets","DatasetsNamespace","LOCALE_SET_NS_ID","CalendarSymbols","CurrencySymbol","CurrencySymbols","DatePattern","DatePatterns","DateTimeSymbols","Day","DayNames","Era","EraNames","locale_set_Locale","locale_set_LocaleSet","Meridiem","MeridiemNames","Month","MonthNames","NumberPattern","NumberPatterns","NumberSymbol","NumberSymbols","TimePattern","TimePatterns","TypeFace","TypeFaces","LocaleSetNamespace","SIGNATURE_NS_ID","signature_Signature","SignatureNamespace","STYLESHEET_NS_ID","Stylesheet","StylesheetNamespace","XDP_NS_ID","xdp_Xdp","XdpNamespace","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","mapStyle","styleStr","richText","newValue","checkStyle","NoWhites","XhtmlObject","mustPop","Body","Br","Html","I","Li","Ol","P","Span","Sub","Sup","Ul","XhtmlNamespace","NamespaceSetUp","UnknownNamespace","Root","Empty","Builder","rootNameSpace","nsPrefix","namespace","prefixes","hasNamespaceDef","dataTemplate","nsAttrs","xfaAttrs","nsName","prefixStack","hasNamespace","nsAgnostic","XFAParser","attributeObj","attributesObj","XFAFactory","binder","iterator","nextIteration","missingFonts","rc","newRoot","attr","AnnotationFactory","xfaDatasets","annotationGlobals","collectFields","orphanFields","collectByType","parameters","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","SignatureWidgetAnnotation","WidgetAnnotation","PopupAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","RichMediaAnnotation","ScreenAnnotation","SoundAnnotation","Annotation","annotDict","numPages","annotations","annotRef","imagePromises","bitmapId","baseFontRef","annotation","smaskRef","getRgbColor","defaultColor","getPdfColorArray","getQuadPoints","quadPoints","newQuadPoints","x4","y4","getTransformMatrix","writeLineToCurveToAppearance","maybeClose","curve","#setOptionalContent","MK","isLocked","isContentLocked","kidIds","it","noView","noPrint","_renderForms","isEditing","modifiedIds","defaultAppearance","contents","modificationDate","rectangle","lineEndings","mk","AnnotationBorderStyle","dictType","appearanceStates","normalAppearanceState","hasOwnCanvas","isUsingOwnCanvas","appearanceDict","firstPositionX","firstPositionY","firstPosition","fieldName","loopDict","fsDict","fsRef","forceStyle","isValid","allZeros","radius","MarkupAnnotation","rawIRT","rt","popupRef","creationDate","strokeColor","fillColor","blendMode","fillAlpha","pointsCallback","pointsArray","formDict","appearanceStream","gsDict","stateDict","annotationRef","ap","annotationDict","apRef","retRef","popup","popupDict","newAnnotation","fieldValue","defaultFieldValue","acroFormResources","appearanceResources","formValue","renderForms","borderWidth","newParentDict","needAppearances","originalDict","rawVal","xfa","maybeMK","newRef","AP","rotationMatrix","exportValue","lineCount","defaultPadding","defaultHPadding","totalWidth","totalHeight","encodedLines","encodingError","encodedString","fakeUnicodeFont","newFont","oldFont","savedDefaultAppearance","defaultVPadding","fontAscent","fontDescent","bottomPadding","prevInfo","renderedText","appearanceData","numberOfLines","roundWithTwoDigits","textWidth","cachedLines","isTooBig","fsize","hPadding","vPadding","shiftStr","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","AFDateTime","canUseHTMLDateTime","aFormat","aKeystroke","actionsToVisit","formatAction","isDate","isRTL","combWidth","cells","hShift","previousWidth","renderedComb","lastSpacePosInStringStart","lastSpacePosInStringEnd","startChunk","currentWidth","allText","regex","_m","isRadio","isPushButton","#getOperatorListForAppearance","savedAppearance","savedMatrix","setCanvasName","unchecked","xShift","yShift","normalAppearance","opt","onState","stateToIndex","fieldParent","kidDict","kidOnState","optInfo","customAppearance","asValue","yes","exportValues","otherYes","checkedAppearance","uncheckedAppearance","fieldParentValue","isOptionArray","indices","valueIndices","displayValue","numberOfVisibleLines","firstIndex","minIndex","maxIndex","vpadding","parentItem","parentFlags","oldAnnotation","user","freetext","da","helv","lineAscent","clipBox","lineCoordinates","interiorColor","borderAdjust","controlPointsDistance","xMid","yMid","xOffset","yOffset","rawVertices","vertices","rawInkLists","rawInkList","inkList","outlines","ink","appearanceBuffer","outline","highlight","xEnd","#savedHasOwnCanvas","stamp","#createNewAppearanceStreamForDrawing","areContours","xobject","MediaAnnotation","#MEDIA_MIME_TYPE_RE","assetRef","assetDict","contentType","wrapSound","asset","#findAsset","configurations","configRef","instances","instanceRef","rawAsset","#renditionActions","#findRenditionAsset","#isPlayAction","aa","rendition","seen","#findClipAsset","renditions","clip","rawData","contentTypeHint","explicitType","soundRef","sound","PARAMS","calculateMD5","h0","h3","padded","rotateArg","decodeString","DatasetXMLParser","DatasetReader","SingleIntersector","#annotation","#quadPoints","#text","#extraChars","#lastIntersectingQuadIndex","#canTakeExtraChars","#intersects","STEPS","Intersector","#intersectors","#grid","#minX","#maxX","#minY","#maxY","#invXRatio","#invYRatio","intersectors","iMin","#getGridIndex","iMax","Word64","highInteger","lowInteger","word","places","lowAdd","highAdd","calculate_sha_other_PARAMS","maj","sigma","sigmaPrime","littleSigma","littleSigmaPrime","calculateSHA512","mode384","h4","h5","h6","h7","t2","calculateSHA384","calculate_sha256_PARAMS","rotr","calculate_sha256_ch","calculate_sha256_maj","calculate_sha256_sigma","calculate_sha256_sigmaPrime","calculate_sha256_littleSigma","calculate_sha256_littleSigmaPrime","calculateSHA256","DecryptStream","#nextChunk","hasMoreData","NON_ASCII_SPACES","COMMONLY_MAPPED_TO_NOTHING","saslPrep","mapped","ARCFourCipher","keyLength","NullCipher","AESBaseCipher","cipherKey","s0","finalize","sourceLength","iv","plain","lastBlock","psLen","cipher","AES128Cipher","rcon","t3","t4","AES256Cipher","PDFBase","password","userBytes","ownerValidationSalt","ownerPassword","hashData","userValidationSalt","userPassword","ownerKeySalt","ownerEncryption","userKeySalt","userEncryption","PDF17","PDF20","combinedLength","combinedArray","CipherTransform","#cipherCache","resolveCipher","stringFilterName","streamFilterName","#getCipher","cryptFilterName","defaultFilterName","Cipher","pad","utf8PasswordToBytes","CipherTransformFactory","#fileId","#createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","#prepareKeyData","fileId","encryptMetadata","hashDataSize","keyLengthInBytes","encryptionKey","checkData","derivedKey","#decodeUserPassword","#buildObjectKey","isAes","algorithm","cfDict","streamCryptoName","stmf","strf","eff","ownerBytes","fileIdBytes","passwordBytes","rawPasswordBytes","preppedPassword","candidate","authEvent","decodedPassword","cfm","XRef","#cacheMap","#entries","#newPersistentRefNum","#newTemporaryRefNum","#parsedWithRecovery","#pendingRefs","#persistentRefsCache","#xrefSectionOffsets","#xrefSectionsComplete","#xrefStms","startXRef","trailerDict","tableState","byteWidths","streamState","typeFieldWidth","offsetFieldWidth","generationFieldWidth","entryRanges","generation","typeByte","offsetByte","generationByte","readToken","skipUntil","skipped","gEndobjRegExp","gStartxrefRegExp","objRegExp","trailerBytes","startxrefBytes","xrefBytes","bufferStr","trailers","xrefStms","contentLength","updateEntries","xrefTagOffset","xrefStm","trailerDicts","isEncrypted","trailerError","validPagesDict","pagesDict","pagesCount","startXRefParsedCache","sectionOffset","suppressEncryption","xrefEntry","LETTER_SIZE_MEDIABOX","SIGNATURE_TAIL_CHUNK_SIZE","Page","#resourcesPromise","globalIdFactory","xfaFactory","idCounters","#getInheritableProperty","box","cropBox","mediaBox","#onSubStreamError","#replaceIdByRef","deletedAnnotations","existingAnnotations","partialEvaluator","annotationsArray","deletedRef","#getMergedResources","streamDict","contentStreamPromise","resourcesPromise","newAnnots","newAnnotationsPromise","annotationGlobalsPromise","missingBitmaps","annotationWithBitmaps","pageListPromise","contentStream","pageOpList","newAnnotations","intentAny","intentDisplay","intentPrint","opListPromises","opLists","form","separateForm","separateCanvas","langPromise","annotationsData","textContentPromises","highlightedAnnotations","isVisible","annots","fieldObjects","annotationPromises","sortedAnnotations","popupAnnotations","widgetAnnotations","cachedAnnotations","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","find","backwards","signatureEnd","PDFDocument","#pagePromises","#signatureData","#version","linearization","startXRefLength","#hasOnlyDocumentSignatures","recursionDepth","isSignature","isInvisible","#loadXfaImages","#loadXfaFonts","parseFont","formInfo","hasFields","hasSignatures","hasOnlyDocumentSignatures","catalog","docInfo","infoDict","customValue","EMPTY_FINGERPRINT","hashOriginal","hashModified","#getLinearizationPage","cachedPromise","pagesTree","reasonAll","#collectFieldObjects","fieldRef","visitedRefs","partName","walkedRefs","allFields","fieldPromises","allPromises","#collectSignatureFields","sigDict","#parseSignatureDict","#getByteRange","#coversWholeDocument","signedEnd","modificationsAfterSignature","tail","byteRange","subFilterName","contactInfo","subFilter","signatureType","collected","sig","signatureData","pkcs7","rest","catalogJsActions","fieldObj","calculationOrder","firstCall","parseDocBaseUrl","BasePdfManager","docId","enableXfa","LocalPdfManager","NetworkPdfManager","CallbackKind","StreamKind","onFn","wrapReason","MessageHandler","#messageAC","sourceName","targetName","comObj","#onMessage","#processStreamMessage","callbackId","#createStreamSink","ah","queueingStrategy","streamId","controller","startCapability","pullCapability","cancelCapability","lastDesiredSize","streamController","#deleteStreamController","dataReason","writeObject","encryptRef","writeValue","writeDict","writeStream","isFilterZeroFlateDecode","isFilterZeroImageDecode","newFilter","newParams","writeArray","numberToPDFString","writeInt","writeString","computeMD5","filesize","xrefInfo","time","md5Buffer","md5BufferLen","writeXFADataForAcroform","xml","nodePath","updateAcroform","acroFormRef","hasXfa","hasXfaDatasetsEntry","xfaDatasetsRef","newXfa","updateXFA","xfaData","datasets","xfaDataStream","getXRefTable","baseOffset","newRefs","indexes","getIndexes","indexesPosition","computeIDs","getXRefStreamTable","xrefTableData","maxGen","objStreamRef","maxGenSize","sizes","structSize","objOffset","md5","getTrailerDict","useXrefStream","refForXrefTable","writeChanges","incrementalUpdate","originalData","MAX_LEAVES_PER_PAGES_NODE","MAX_IN_NAME_TREE_NODE","PageData","documentData","DocumentData","document","XRefWrapper","getNewRef","PDFEditor","#newAnnotationsParams","#primaryDocument","#resourceStreamCache","useObjectStreams","author","#cloneObject","#collectDependencies","newDict","mustClone","resourceStreamPath","fieldToParent","oldRefMapping","existingRef","oldRef","mappedRef","#isResourceStream","#collectResourceStream","cloneSource","postponedRefCopies","postponedActions","newObj","#rawStreamBytes","#serializeDict","#resourceStreamKey","dictStr","resourceStreamPromises","childPath","cycleRef","#dedupResourceStream","bucket","#resolveStructKids","rawKids","fetched","#cloneStructTreeNode","parentStructRef","removedStructElements","dedupIDs","dedupClasses","dedupRoles","pagesMap","newKids","structElemIndices","pgRef","setAsSpan","newKidRef","oldObjRef","newKid","newNodeRef","newNode","newClassName","newClassNames","roleName","newRoleName","stringId","newId","structElemRef","#getFilteredPageIndices","includePages","excludePages","compile","inc","exc","#resolveInsertAfterIndices","pageInfos","counts","insertAfterList","hasContent","updatedPageInfos","maxExistingPos","insertAfter","threshold","existingInfo","pageIndices","insertPos","pageIndicesArr","infoIdx","primaryDocument","reservePageSlot","newPageIndex","allDocumentData","imageEntries","pageInfo","filteredPageIndices","#collectDocumentData","copyCounts","documents","pageData","copyLevel","#collectValidDestinations","#collectOutlineDestinations","#collectPageLabels","#postCollectPageData","#findDuplicateNamedDestinations","#setPostponedRefCopies","imageSlots","modalPageSize","#modalPageSize","imageEntry","#makeImagePage","#makePageCopy","#fixPostponedRefCopies","#mergeStructTrees","#mergeAcroForms","#buildOutline","#collectEmbeddedFiles","destinations","idTree","namespaces","usedNamedDestinations","hasSignatureAnnotations","newAnnotationIndex","destString","oldPageRef","#visitObject","newStructParentId","newParentTree","oldStructParentMapping","usedStructParents","newStructParent","structTreeKids","newIdTree","newClassMap","newRoleMap","newNamespaces","newStructTreeAF","newStructTreePronunciationLexicon","structTreeAF","structTreePronunciationLexicon","nodeRef","_id","classDict","mappedName","newMappedName","namespaceRef","newNamespace","afRef","lexiconRef","newParent","newParents","newDestinations","namedDestinations","getUniqueDestinationName","dedupedName","dedupNamedDestinations","pointingNamedDestinations","pointingDest","newName","#fixNamedDestinations","fixDestination","collect","#isValidOutlineDest","unsafeUrl","attachment","setOCGState","#filterOutlineItems","filteredChildren","hasValidOwnDest","outlineItems","#setOutlineItemDest","itemDict","rawDict","newDest","actionRef","#makeOutline","outlineRootRef","outlineRootDict","assignRefs","fillItems","totalCount","childCount","#setAcroFormDefaultBasicValues","#setAcroFormDefaultAppearance","#setAcroFormQ","#setAcroFormDefaultResources","newFields","#fixFields","#cloneFields","#setAcroFormCalculationOrder","firstQ","firstDocData","sigFlags","sf","co","coRef","newCoRef","firstDA","firstDR","firstDRRef","dr","lastNonNullParent","acroFormDefaultAppearance","acroFormDefaultResources","acroFormQ","daToFix","drToFix","lastData","oldKidRef","kidsArray","resourcesValuesCache","fixAppearanceResources","newResourcesRef","resKey","resValue","newResValue","firstRealPage","labelsByPageIndex","oldPageIndices","stFirstIndex","newLabel","defaultLabel","newPageLabels","lastRef","boxName","userUnit","imagesPromises","newLastRef","pageObjectRefs","best","pageSize","pageW","pageH","availW","availH","imgW","imgH","drawW","drawH","tx","ty","xobjectDict","resourcesDict","contentsStream","contentsRef","#makePageTree","maxLeaves","kidsChunks","kidsRefs","#makeNameNumTree","areNames","allEntries","keyA","keyB","treeRef","treeDict","isRoot","entriesChunks","entriesRefs","entriesRef","entriesDict","#makePageLabelsTree","pageLabelsRef","embeddedFiles","docEmbeddedFiles","displayName","deduped","#makeEmbeddedFilesTree","#makeDestinationsTree","#makeStructTree","structTreeRef","idTreeRef","classMapRef","roleMapRef","namespacesRef","structTreeAFRef","structTreePronunciationLexiconRef","#makeAcroForm","#makeRoot","#makeInfo","infoMap","oldInfoDict","#makeEncrypt","encryptDict","#createChanges","#createObjectStream","objRefs","streamBuffer","objOffsets","objStream","fileIds","xrefTableRef","BasePDFStream","#PDFStreamReader","#PDFStreamRangeReader","PDFStreamReader","PDFStreamRangeReader","BasePDFStreamReader","BasePDFStreamRangeReader","PDFWorkerStream","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","msgHandler","readableStream","WorkerTask","#capability","_WorkerMessageHandler","port","testMessageProcessed","docParams","terminated","cancelXHRs","WorkerTasks","apiVersion","workerVersion","buildMsg","workerHandlerName","ensureNotTerminated","startWorkerTask","finishWorkerTask","loadDocument","isPureXfa","fingerprints","htmlForXfa","getPdfManager","disableAutoFetch","rangeChunkSize","pdfManagerArgs","fullReader","newPdfManager","cachedChunks","readData","loaded","getPassword","setupDoc","onSuccess","doc","onFailure","pdfManagerReady","passwordEx","pageIndexesToSkip","pagePromises","newDocumentId","pdfEditor","globalPromises","_structTreeRoot","newAnnotationPromises","newXrefInfo","pageId","opListInfo","waitOn","cleanupPromise","WorkerMessageHandler"],"mappings":"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S,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAA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,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,QAAS,KAAM,KAAM,OAAQ,KAAM,KAAM,KAAM,OAAQ,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,GAAI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ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EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,MACd,EAAE,UAAY,MACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,MACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,MACd,EAAE,UAAY,MACd,EAAE,UAAY,KACd,EAAE,QAAU,KACZ,EAAE,QAAU,KACZ,EAAE,QAAU,KACZ,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,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IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,KACR,EAAE,IAAM,MACR,EAAE,IAAM,KACR,EAAE,IAAM,MACR,EAAE,KAAO,MACT,EAAE,IAAM,MACR,EAAE,KAAO,MACT,EAAE,IAAM,KACR,EAAE,IAAM,KACR,EAAE,IAAM,KACR,EAAE,IAAM,MACR,EAAE,IAAM,KACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,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AAM,EAAG,CAAC,IAAQ,IAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,KAAQ,KAAQ,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAO,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,IAAM,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,EAAG,CAAC,OAAS,MAAO,EAAG,CAAC,QAAS,OAAO,EAAG,CAAC,MAAQ,MAAQ,OAAS,MAAO,EAAG,CAAC,OAAS,MAAO,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAS,MAAS,MAAS,MAAS,MAAS,KAAO,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,OAAS,MAAO,EAAG,CAAC,MAAS,MAAS,MAAS,KAAO,EAAG,CAAC,OAAS,MAAO,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAS,KAAO,EAAG,CAAC,KAAS,KAAO,EAAG,CAAC,MAAS,MAAS,MAAS,MAAS,MAAS,KAAO,EAAG,CAAC,OAAS,OAAS,OAAS,MAAO,CAAC,EAC/5F,SAASC,GAAmB3rD,EAAO4rD,EAAe,GAAI,CACpD,GAAIA,IAAiB,GAAI,CACvB,MAAMrtC,EAAQmtC,GAAcE,CAAY,EACxC,QAASxqD,EAAI,EAAGmF,EAAKgY,EAAM,OAAQnd,EAAImF,EAAInF,GAAK,EAC9C,GAAIpB,GAASue,EAAMnd,CAAC,GAAKpB,GAASue,EAAMnd,EAAI,CAAC,EAC3C,OAAOwqD,CAGb,CACA,QAASxqD,EAAI,EAAGmF,EAAKmlD,GAAc,OAAQtqD,EAAImF,EAAInF,IAAK,CACtD,MAAMmd,EAAQmtC,GAActqD,CAAC,EAC7B,QAASoS,EAAI,EAAGyQ,EAAK1F,EAAM,OAAQ/K,EAAIyQ,EAAIzQ,GAAK,EAC9C,GAAIxT,GAASue,EAAM/K,CAAC,GAAKxT,GAASue,EAAM/K,EAAI,CAAC,EAC3C,OAAOpS,CAGb,CACA,MAAO,EACT,CACA,MAAMyqD,GAAoB,WAAA,8BAAA,GAA2B,EAC/CC,GAAgB,IAAI,IAC1B,SAASC,GAAuBxgD,EAAM,CACpC,MAAMygD,EAAiBF,GAAc,IAAIvgD,CAAI,EAC7C,GAAIygD,EACF,OAAOA,EAET,MAAMC,EAAS1gD,EAAK,MAAMsgD,EAAiB,EACrCK,EAAW,CACf,aAAc,CAAC,CAACD,IAAS,CAAC,EAC1B,qBAAsB,CAAC,CAACA,IAAS,CAAC,EAClC,sBAAuB,CAAC,CAACA,IAAS,CAAC,CACvC,EACE,OAAAH,GAAc,IAAIvgD,EAAM2gD,CAAQ,EACzBA,CACT,CACA,SAASC,IAAqB,CAC5BL,GAAc,MAAK,CACrB,CASA,MAAMM,GAAY,CAChB,WAAY,EACZ,MAAO,EACP,SAAU,EAEV,YAAa,EAKf,EACMC,GAA2B,CAAC,UAAW,QAAS,mBAAoB,QAAS,SAAU,WAAY,aAAc,SAAU,UAAW,YAAa,cAAe,YAAa,aAAc,WAAY,OAAQ,QAAS,SAAU,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,cAAe,YAAa,eAAgB,cAAe,aAAc,QAAS,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAAa,MAAO,aAAc,aAAc,YAAa,QAAS,WAAY,SAAU,SAAU,YAAa,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,QAAS,WAAY,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,OAAQ,WAAY,UAAW,SAAU,YAAa,aAAc,aAAc,YAAa,YAAa,QAAS,WAAY,WAAY,KAAM,SAAU,WAAY,YAAa,YAAa,eAAgB,MAAO,KAAM,cAAe,YAAa,UAAW,KAAM,WAAY,cAAe,eAAgB,QAAS,KAAM,SAAU,eAAgB,aAAc,aAAc,UAAW,SAAU,cAAe,QAAS,gBAAiB,iBAAkB,WAAY,mBAAoB,SAAU,SAAU,SAAU,KAAM,KAAM,SAAU,SAAU,eAAgB,gBAAiB,YAAa,aAAc,SAAU,UAAW,YAAa,YAAa,WAAY,WAAY,gBAAiB,iBAAkB,KAAM,KAAM,YAAa,iBAAkB,iBAAkB,eAAgB,cAAe,cAAe,cAAe,SAAU,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,QAAS,SAAU,SAAU,cAAe,SAAU,WAAY,aAAc,QAAS,SAAU,QAAS,YAAa,OAAQ,UAAW,eAAgB,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,YAAa,MAAO,MAAO,SAAU,SAAU,QAAS,QAAS,QAAS,WAAY,cAAe,cAAe,gBAAiB,UAAW,aAAc,gBAAiB,QAAS,SAAU,SAAU,aAAc,WAAY,WAAY,SAAU,SAAU,SAAU,SAAU,QAAQ,EAChmF,SAASC,GAAiBlsD,EAAMkrD,EAAkB,CAChD,GAAIA,EAAiBlrD,CAAI,IAAM,OAC7B,OAAOA,EAET,MAAMmrD,EAAUF,GAAmBjrD,EAAMkrD,CAAgB,EACzD,GAAIC,IAAY,IACd,UAAW1iD,KAAOyiD,EAChB,GAAIA,EAAiBziD,CAAG,IAAM0iD,EAC5B,OAAO1iD,EAIb,OAAA/J,GAAK,gDAAkDsB,CAAI,EACpDA,CACT,CACA,SAASmsD,GAAsBrjD,EAAYsjD,EAAiBC,EAAY,CACtE,MAAMC,EAAoB,OAAO,OAAO,IAAI,EAC5C,IAAIC,EAASlgD,EAAUmgD,EACvB,MAAMC,EAAiB,CAAC,EAAE3jD,EAAW,MAAQkjD,GAAU,UACvD,GAAIljD,EAAW,eAEb,IADA0jD,EAAeJ,EACV//C,EAAW,EAAGA,EAAWmgD,EAAa,OAAQngD,IACjDkgD,EAAUF,EAAW,QAAQG,EAAangD,CAAQ,CAAC,EACnDigD,EAAkBjgD,CAAQ,EAAIkgD,GAAW,EAAIA,EAAU,UAEhDzjD,EAAW,iBAEpB,IADA0jD,EAAe7B,GAAY7hD,EAAW,gBAAgB,EACjDuD,EAAW,EAAGA,EAAWmgD,EAAa,OAAQngD,IACjDkgD,EAAUF,EAAW,QAAQG,EAAangD,CAAQ,CAAC,EACnDigD,EAAkBjgD,CAAQ,EAAIkgD,GAAW,EAAIA,EAAU,UAEhDE,EACT,IAAKpgD,KAAY+/C,EACfE,EAAkBjgD,CAAQ,EAAI+/C,EAAgB//C,CAAQ,MAIxD,KADAmgD,EAAejC,GACVl+C,EAAW,EAAGA,EAAWmgD,EAAa,OAAQngD,IACjDkgD,EAAUF,EAAW,QAAQG,EAAangD,CAAQ,CAAC,EACnDigD,EAAkBjgD,CAAQ,EAAIkgD,GAAW,EAAIA,EAAU,EAG3D,MAAMG,EAAc5jD,EAAW,YAC/B,IAAIoiD,EACJ,GAAIwB,EACF,IAAKrgD,KAAYqgD,EAAa,CAC5B,MAAMC,EAAYD,EAAYrgD,CAAQ,EAEtC,GADAkgD,EAAUF,EAAW,QAAQM,CAAS,EAClCJ,IAAY,GAAI,CAClBrB,IAAqBL,GAAgB,EACrC,MAAM+B,EAAoBV,GAAiBS,EAAWzB,CAAgB,EAClE0B,IAAsBD,IACxBJ,EAAUF,EAAW,QAAQO,CAAiB,EAElD,CACAN,EAAkBjgD,CAAQ,EAAIkgD,GAAW,EAAIA,EAAU,CACzD,CAEF,OAAOD,CACT,CACA,SAASO,GAAkB7sD,EAAM,CAC/B,OAAOA,EAAK,WAAW,QAAS,GAAG,EAAE,WAAW,MAAO,EAAE,CAC3D,CACA,MAAM8sD,GAA8BngD,GAAsB,GAAK,CAC7D,EAAE,IAAM,EAAI,MACZ,EAAE,IAAM,EAAI,MACZ,EAAE,IAAM,EAAI,MACZ,EAAE,IAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,MACZ,EAAE,KAAM,EAAI,KACd,CAAC,EACKogD,GAAsB,IAC5B,SAASC,GAAkB,CACzB,KAAM/3B,EACN,MAAAxqB,EACA,OAAAC,CACF,EAAG,CACD,GAAID,EAAQsiD,IAAuBriD,EAASqiD,GAC1C,OAAO,KAET,MAAME,EAAyB,IACzBC,EAAc,IAAI,WAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAC9EC,EAAS1iD,EAAQ,EACjB2iD,EAAS,IAAI,WAAWD,GAAUziD,EAAS,EAAE,EACnD,IAAI1J,EAAGoS,EAAGi6C,EACV,MAAMC,EAAW7iD,EAAQ,EAAI,GACvB6C,EAAO,IAAI,WAAWggD,EAAW5iD,CAAM,EAC7C,IAAItI,EAAM,EACV,UAAWmhB,KAAQ0R,EAAK,CACtB,IAAIkQ,EAAO,IACX,KAAOA,EAAO,GACZ73B,EAAKlL,GAAK,EAAImhB,EAAO4hB,EAAO,EAAI,IAChCA,IAAS,CAEb,CACA,IAAInyB,EAAQ,EAMZ,IALA5Q,EAAM,EACFkL,EAAKlL,CAAG,IAAM,IAChBgrD,EAAO,CAAC,EAAI,EACZ,EAAEp6C,GAECI,EAAI,EAAGA,EAAI3I,EAAO2I,IACjB9F,EAAKlL,CAAG,IAAMkL,EAAKlL,EAAM,CAAC,IAC5BgrD,EAAOh6C,CAAC,EAAI9F,EAAKlL,CAAG,EAAI,EAAI,EAC5B,EAAE4Q,GAEJ5Q,IAMF,IAJIkL,EAAKlL,CAAG,IAAM,IAChBgrD,EAAOh6C,CAAC,EAAI,EACZ,EAAEJ,GAEChS,EAAI,EAAGA,EAAI0J,EAAQ1J,IAAK,CAC3BoB,EAAMpB,EAAIssD,EACVD,EAAKrsD,EAAImsD,EACL7/C,EAAKlL,EAAMkrD,CAAQ,IAAMhgD,EAAKlL,CAAG,IACnCgrD,EAAOC,CAAE,EAAI//C,EAAKlL,CAAG,EAAI,EAAI,EAC7B,EAAE4Q,GAEJ,IAAI6vC,GAAOv1C,EAAKlL,CAAG,EAAI,EAAI,IAAMkL,EAAKlL,EAAMkrD,CAAQ,EAAI,EAAI,GAC5D,IAAKl6C,EAAI,EAAGA,EAAI3I,EAAO2I,IACrByvC,GAAOA,GAAO,IAAMv1C,EAAKlL,EAAM,CAAC,EAAI,EAAI,IAAMkL,EAAKlL,EAAMkrD,EAAW,CAAC,EAAI,EAAI,GACzEJ,EAAYrK,CAAG,IACjBuK,EAAOC,EAAKj6C,CAAC,EAAI85C,EAAYrK,CAAG,EAChC,EAAE7vC,GAEJ5Q,IAMF,GAJIkL,EAAKlL,EAAMkrD,CAAQ,IAAMhgD,EAAKlL,CAAG,IACnCgrD,EAAOC,EAAKj6C,CAAC,EAAI9F,EAAKlL,CAAG,EAAI,EAAI,EACjC,EAAE4Q,GAEAA,EAAQi6C,EACV,OAAO,IAEX,CAOA,IANA7qD,EAAMkrD,GAAY5iD,EAAS,GAC3B2iD,EAAKrsD,EAAImsD,EACL7/C,EAAKlL,CAAG,IAAM,IAChBgrD,EAAOC,CAAE,EAAI,EACb,EAAEr6C,GAECI,EAAI,EAAGA,EAAI3I,EAAO2I,IACjB9F,EAAKlL,CAAG,IAAMkL,EAAKlL,EAAM,CAAC,IAC5BgrD,EAAOC,EAAKj6C,CAAC,EAAI9F,EAAKlL,CAAG,EAAI,EAAI,EACjC,EAAE4Q,GAEJ5Q,IAMF,GAJIkL,EAAKlL,CAAG,IAAM,IAChBgrD,EAAOC,EAAKj6C,CAAC,EAAI,EACjB,EAAEJ,GAEAA,EAAQi6C,EACV,OAAO,KAET,MAAMznC,EAAQ,IAAI,WAAW,CAAC,EAAG2nC,EAAQ,GAAI,EAAG,CAACA,EAAQ,EAAG,EAAG,EAAG,CAAC,CAAC,EAC9DI,EAAU,CAAA,EACV,CACJ,EAAArpD,EACA,EAAApC,EACA,EAAAqC,EACA,EAAArB,EACA,EAAA+c,EACA,EAAA8e,CACJ,EAAM,IAAI,UAAS,EAAG,UAAU,EAAIl0B,EAAO,GAAKC,CAAM,EAAE,cAAc,EAAG,CAACA,CAAM,EAC9E,IAAK1J,EAAI,EAAGgS,GAAShS,GAAK0J,EAAQ1J,IAAK,CACrC,IAAImB,EAAInB,EAAImsD,EACZ,MAAMtiD,EAAM1I,EAAIsI,EAChB,KAAOtI,EAAI0I,GAAO,CAACuiD,EAAOjrD,CAAC,GACzBA,IAEF,GAAIA,IAAM0I,EACR,SAEF,IAAIjG,EAAIzC,EAAIgrD,EACRtoD,EAAI7D,EACRusD,EAAQ,KAAKnvD,GAAQ,OAAQ8F,EAAIU,EAAIT,EAAIU,EAAIgb,EAAG/d,EAAI8C,EAAI9B,EAAI+B,EAAI85B,CAAC,EACjE,MAAMt8B,EAAKF,EACX,IAAIgI,EAAOijD,EAAOjrD,CAAC,EACnB,EAAG,CACD,MAAMyjB,EAAOJ,EAAMrb,CAAI,EACvB,GACEhI,GAAKyjB,QACE,CAACwnC,EAAOjrD,CAAC,GAClB,MAAMqrD,EAAKJ,EAAOjrD,CAAC,EACfqrD,IAAO,GAAKA,IAAO,IACrBrjD,EAAOqjD,EACPJ,EAAOjrD,CAAC,EAAI,IAEZgI,EAAOqjD,EAAK,GAAOrjD,GAAQ,EAC3BijD,EAAOjrD,CAAC,GAAKgI,GAAQ,EAAIA,GAAQ,GAEnCvF,EAAIzC,EAAIgrD,EACRtoD,EAAI1C,EAAIgrD,EAAS,EACjBI,EAAQ,KAAKnvD,GAAQ,OAAQ8F,EAAIU,EAAIT,EAAIU,EAAIgb,EAAG/d,EAAI8C,EAAI9B,EAAI+B,EAAI85B,CAAC,EAC5DyuB,EAAOjrD,CAAC,GACX,EAAE6Q,CAEN,OAAS3Q,IAAOF,GAChB,EAAEnB,CACJ,CACA,MAAO,CAAC7C,EAAI,YAAa,CAAC,IAAI,aAAaovD,CAAO,CAAC,EAAG,IAAI,aAAa,CAAC,EAAG,EAAG9iD,EAAOC,CAAM,CAAC,CAAC,CAC/F,CAGA,MAAM+iD,GAAkB,CAAC,UAAW,QAAS,SAAU,WAAY,aAAc,SAAU,UAAW,YAAa,aAAc,YAAa,aAAc,WAAY,OAAQ,QAAS,SAAU,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,cAAe,YAAa,eAAgB,cAAe,aAAc,YAAa,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAAa,MAAO,aAAc,aAAc,aAAc,OAAQ,WAAY,WAAY,MAAO,SAAU,UAAW,WAAY,cAAe,eAAgB,gBAAiB,gBAAiB,iBAAkB,KAAM,KAAM,SAAU,SAAU,YAAa,iBAAkB,YAAa,SAAU,iBAAkB,eAAgB,gBAAiB,iBAAkB,WAAY,cAAe,eAAgB,QAAS,QAAS,aAAc,QAAS,SAAU,QAAS,YAAa,WAAY,OAAQ,UAAW,eAAgB,SAAU,QAAS,SAAU,KAAM,cAAe,SAAU,SAAU,KAAM,eAAgB,KAAM,WAAY,SAAU,SAAU,KAAM,aAAc,cAAe,aAAc,KAAM,YAAa,MAAO,UAAW,YAAa,QAAS,aAAc,SAAU,YAAa,SAAU,QAAS,gBAAiB,cAAe,aAAc,QAAS,MAAO,WAAY,gBAAiB,YAAa,SAAU,cAAe,YAAa,SAAU,QAAS,SAAU,WAAY,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,QAAS,SAAU,WAAY,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,YAAa,QAAQ,EAC7vEC,GAAgB,CAAC,UAAW,QAAS,cAAe,oBAAqB,iBAAkB,iBAAkB,iBAAkB,aAAc,oBAAqB,qBAAsB,iBAAkB,iBAAkB,QAAS,SAAU,SAAU,WAAY,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,QAAS,YAAa,gBAAiB,sBAAuB,iBAAkB,gBAAiB,YAAa,YAAa,eAAgB,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,KAAM,KAAM,KAAM,MAAO,MAAO,oBAAqB,qBAAsB,kBAAmB,iBAAkB,aAAc,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,gBAAiB,YAAa,SAAU,aAAc,kBAAmB,eAAgB,cAAe,cAAe,cAAe,gBAAiB,aAAc,aAAc,iBAAkB,cAAe,aAAc,iBAAkB,cAAe,YAAa,eAAgB,aAAc,UAAW,gBAAiB,oBAAqB,YAAa,eAAgB,cAAe,eAAgB,WAAY,YAAa,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,iBAAkB,iBAAkB,gBAAiB,cAAe,cAAe,mBAAoB,cAAe,iBAAkB,aAAc,UAAW,gBAAiB,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,cAAe,mBAAoB,iBAAkB,WAAY,cAAe,cAAe,cAAe,mBAAoB,cAAe,iBAAkB,UAAW,cAAe,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,aAAc,gBAAgB,EAC32EC,GAAsB,CAAC,UAAW,QAAS,iBAAkB,iBAAkB,oBAAqB,qBAAsB,iBAAkB,iBAAkB,QAAS,SAAU,SAAU,WAAY,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,QAAS,YAAa,gBAAiB,sBAAuB,iBAAkB,YAAa,YAAa,eAAgB,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,KAAM,KAAM,KAAM,MAAO,MAAO,oBAAqB,qBAAsB,iBAAkB,gBAAiB,YAAa,SAAU,eAAgB,aAAc,iBAAkB,aAAc,UAAW,gBAAiB,YAAa,eAAgB,cAAe,eAAgB,WAAY,YAAa,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,iBAAkB,iBAAkB,eAAe,EAKhyC,MAAMC,EAAY,CAChBC,GACAC,GAAa,KACbC,GAAkB,GAClBC,GAAO,EACPC,GACA,YAAY,CACV,YAAAC,EAAc,EACd,UAAAC,EAAY,CAChB,EAAK,CACD,KAAKJ,GAAkB,CAAC,CAACG,EACzB,KAAKE,GAASF,GAAeC,CAAS,CACxC,CACAC,GAASD,EAAW,CAClB,GAAI,KAAKJ,GACP,KAAKD,GAAaK,MAElB,MAAO,KAAKL,GAAaK,GACvB,KAAKL,IAAc,EAGvB,MAAMO,EAAS,IAAI,WAAW,KAAKP,EAAU,EACzC,KAAKD,IACPQ,EAAO,IAAI,KAAKR,GAAM,CAAC,EAEzB,KAAKA,GAAOQ,EACZ,KAAKJ,GAAQ,IAAI,SAASI,EAAO,MAAM,CACzC,CACA,IAAI,MAAO,CACT,OAAO,KAAKR,GAAK,SAAS,EAAG,KAAKG,EAAI,CACxC,CACA,IAAI,QAAS,CACX,OAAO,KAAKA,EACd,CACA,KAAKljD,EAAG,CACN,KAAKkjD,IAAQljD,CACf,CACA,SAASsC,EAAK,CACZ,MAAMmiB,EAAS,KAAKy+B,GAAO5gD,EAAI,OAC3B,CAAC,KAAK2gD,IAAmBx+B,EAAS,KAAKu+B,IACzC,KAAKM,GAAS7+B,CAAM,EAEtB,KAAKs+B,GAAK,IAAIzgD,EAAK,KAAK4gD,EAAI,EAC5B,KAAKA,GAAOz+B,CACd,CACA,SAAS/U,EAAK,CACZ,MAAM+U,EAAS,KAAKy+B,GAAO,EACvB,CAAC,KAAKD,IAAmBx+B,EAAS,KAAKu+B,IACzC,KAAKM,GAAS7+B,CAAM,EAEtB,KAAK0+B,GAAM,SAAS,KAAKD,GAAMxzC,CAAG,EAClC,KAAKwzC,GAAOz+B,CACd,CACA,aAAa/U,EAAK,CAChB,MAAM+U,EAAS,KAAKy+B,GAAO,EACvB,CAAC,KAAKD,IAAmBx+B,EAAS,KAAKu+B,IACzC,KAAKM,GAAS7+B,CAAM,EAEtB,KAAK0+B,GAAM,SAAS,KAAKD,GAAMl4C,GAAU0E,EAAK,OAAS,KAAM,CAAC,EAC9D,KAAKwzC,GAAOz+B,CACd,CACA,SAAS/U,EAAK,CACZ,MAAM+U,EAAS,KAAKy+B,GAAO,EACvB,CAAC,KAAKD,IAAmBx+B,EAAS,KAAKu+B,IACzC,KAAKM,GAAS7+B,CAAM,EAEtB,KAAK0+B,GAAM,SAAS,KAAKD,GAAMxzC,CAAG,EAClC,KAAKwzC,GAAOz+B,CACd,CACF,CAQA,MAAM++B,GAAmB,GACzB,SAASC,GAA+B3vB,EAAO,CAC7C,OAAOA,EAAQ,OAAUA,GAAS,KACpC,CACA,SAAS4vB,GAAuBz2B,EAAM02B,EAAgB,GAAO,CAC3D,OAAO/sD,GAAK,cAAcq2B,EAAK,IAAI,CAAC6G,EAAO59B,KAAO,CAACytD,GAAiBztD,EAAI,IAAMutD,GAA+B3vB,CAAK,EAAIA,EAAQ,MAAUA,CAAK,CAAC,CAChJ,CACA,MAAM8vB,GAAqB,CAAC,UAAW,QAAS,SAAU,WAAY,aAAc,SAAU,UAAW,YAAa,aAAc,YAAa,aAAc,WAAY,OAAQ,QAAS,SAAU,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,cAAe,YAAa,eAAgB,cAAe,aAAc,YAAa,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAAa,MAAO,aAAc,aAAc,aAAc,OAAQ,WAAY,WAAY,MAAO,SAAU,UAAW,WAAY,cAAe,eAAgB,gBAAiB,gBAAiB,iBAAkB,KAAM,KAAM,SAAU,SAAU,YAAa,iBAAkB,YAAa,SAAU,iBAAkB,eAAgB,gBAAiB,iBAAkB,WAAY,cAAe,eAAgB,QAAS,QAAS,aAAc,QAAS,SAAU,QAAS,YAAa,WAAY,OAAQ,UAAW,eAAgB,SAAU,QAAS,SAAU,KAAM,cAAe,SAAU,SAAU,KAAM,eAAgB,KAAM,WAAY,SAAU,SAAU,KAAM,aAAc,cAAe,aAAc,KAAM,YAAa,MAAO,UAAW,YAAa,QAAS,aAAc,SAAU,YAAa,SAAU,QAAS,gBAAiB,cAAe,aAAc,QAAS,MAAO,WAAY,gBAAiB,YAAa,SAAU,cAAe,YAAa,SAAU,QAAS,SAAU,WAAY,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,QAAS,SAAU,WAAY,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,YAAa,SAAU,cAAe,oBAAqB,iBAAkB,iBAAkB,iBAAkB,aAAc,oBAAqB,qBAAsB,iBAAkB,iBAAkB,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,gBAAiB,sBAAuB,iBAAkB,gBAAiB,YAAa,YAAa,eAAgB,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,KAAM,MAAO,MAAO,oBAAqB,qBAAsB,kBAAmB,iBAAkB,aAAc,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,gBAAiB,YAAa,SAAU,aAAc,kBAAmB,eAAgB,cAAe,cAAe,cAAe,gBAAiB,aAAc,aAAc,iBAAkB,cAAe,aAAc,iBAAkB,cAAe,YAAa,eAAgB,oBAAqB,YAAa,eAAgB,cAAe,eAAgB,WAAY,YAAa,eAAgB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,iBAAkB,iBAAkB,gBAAiB,cAAe,cAAe,mBAAoB,cAAe,iBAAkB,aAAc,UAAW,gBAAiB,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,cAAe,mBAAoB,iBAAkB,WAAY,cAAe,cAAe,cAAe,mBAAoB,cAAe,iBAAkB,UAAW,cAAe,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,aAAc,iBAAkB,UAAW,UAAW,UAAW,UAAW,QAAS,OAAQ,OAAQ,QAAS,SAAU,UAAW,QAAS,UAAU,EAC5hJC,GAA2B,IAC3BC,GAAqB,QACrBC,GAAqB,EACrBC,GAAoB,EACpBC,GAA2B,IAC3BC,GAA2B,CAAC,KAAM,CACtC,GAAI,QACJ,IAAK,EACL,cAAe,GACf,KAAM,EACR,EAAG,KAAM,CACP,GAAI,QACJ,IAAK,EACL,cAAe,GACf,KAAM,EACR,EAAG,CACD,GAAI,UACJ,IAAK,EACL,cAAe,EACjB,EAAG,CACD,GAAI,UACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,UACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,UACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,YACJ,IAAK,EACL,WAAY,EACd,EAAG,KAAM,CACP,GAAI,WACJ,IAAK,CACP,EAAG,CACD,GAAI,SACJ,IAAK,CACP,EAAG,KAAM,KAAM,CACb,GAAI,UACJ,IAAK,EACL,cAAe,EACjB,EAAG,KAAM,KAAM,KAAM,CACnB,GAAI,UACJ,IAAK,EACL,cAAe,GACf,KAAM,EACR,EAAG,CACD,GAAI,WACJ,IAAK,EACL,cAAe,EACjB,EAAG,CACD,GAAI,WACJ,IAAK,EACL,cAAe,EACjB,EAAG,CACD,GAAI,UACJ,IAAK,EACL,cAAe,EACjB,EAAG,CACD,GAAI,UACJ,IAAK,EACL,cAAe,EACjB,EAAG,CACD,GAAI,UACJ,IAAK,EACL,cAAe,GACf,KAAM,EACR,EAAG,CACD,GAAI,aACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,aACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,YACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,YACJ,IAAK,EACL,WAAY,EACd,EAAG,KAAM,CACP,GAAI,YACJ,IAAK,CACP,EAAG,CACD,GAAI,YACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,YACJ,IAAK,EACL,WAAY,EACd,CAAC,EACKC,GAA6B,CAAC,KAAM,KAAM,KAAM,CACpD,GAAI,MACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,KACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,MACJ,IAAK,EACL,WAAY,CACd,EAAG,KAAM,KAAM,KAAM,CACnB,GAAI,MACJ,IAAK,EACL,WAAY,CACd,EAAG,CACD,GAAI,MACJ,IAAK,EACL,WAAY,GACZ,QAAQhuB,EAAOlP,EAAO,CACpBkP,EAAMlP,EAAQ,CAAC,EAAIkP,EAAMlP,EAAQ,CAAC,EAAIkP,EAAMlP,EAAQ,CAAC,CACvD,CACF,EAAG,CACD,GAAI,MACJ,IAAK,EACL,WAAY,GACZ,QAAQkP,EAAOlP,EAAO,CACpBkP,EAAMlP,EAAQ,CAAC,EAAIkP,EAAMlP,EAAQ,CAAC,EAAIkP,EAAMlP,EAAQ,CAAC,CACvD,CACF,EAAG,CACD,GAAI,MACJ,IAAK,EACL,WAAY,GACZ,QAAQkP,EAAOlP,EAAO,CACpBkP,EAAMlP,EAAQ,CAAC,EAAIkP,EAAMlP,EAAQ,CAAC,EAAIkP,EAAMlP,EAAQ,CAAC,CACvD,CACF,EAAG,KAAM,CACP,GAAI,MACJ,IAAK,EACL,WAAY,EACZ,QAAQkP,EAAOlP,EAAO,CACpBkP,EAAMlP,EAAQ,CAAC,EAAI,CAACkP,EAAMlP,EAAQ,CAAC,CACrC,CACF,EAAG,CACD,GAAI,KACJ,IAAK,EACL,WAAY,EACd,EAAG,KAAM,KAAM,CACb,GAAI,OACJ,IAAK,EACL,WAAY,EACd,EAAG,KAAM,CACP,GAAI,MACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,MACJ,IAAK,EACL,WAAY,CACd,EAAG,CACD,GAAI,SACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,SACJ,IAAK,EACL,WAAY,CACd,EAAG,CACD,GAAI,MACJ,IAAK,EACL,WAAY,GACZ,QAAQkP,EAAOlP,EAAO,CACpBkP,EAAMlP,EAAQ,CAAC,EAAIkP,EAAMlP,EAAQ,CAAC,EAAIkP,EAAMlP,EAAQ,CAAC,CACvD,CACF,EAAG,KAAM,CACP,GAAI,OACJ,IAAK,EACL,WAAY,CACd,EAAG,CACD,GAAI,MACJ,IAAK,EACL,WAAY,CACd,EAAG,CACD,GAAI,OACJ,IAAK,EACL,WAAY,CACd,EAAG,CACD,GAAI,QACJ,IAAK,EACL,WAAY,CACd,EAAG,CACD,GAAI,OACJ,IAAK,EACL,WAAY,EACd,EAAG,KAAM,KAAM,KAAM,CACnB,GAAI,QACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,OACJ,IAAK,GACL,WAAY,EACd,EAAG,CACD,GAAI,SACJ,IAAK,EACL,WAAY,EACd,EAAG,CACD,GAAI,QACJ,IAAK,GACL,WAAY,EACd,CAAC,EACD,MAAMm9B,EAAU,CACd,YAAYC,EAAMrmD,EAAYsmD,EAAqB,CACjD,KAAK,MAAQD,EAAK,SAAQ,EAC1B,KAAK,WAAarmD,EAClB,KAAK,oBAAsB,CAAC,CAACsmD,CAC/B,CACA,OAAQ,CACN,MAAMtmD,EAAa,KAAK,WAClBumD,EAAM,IAAIC,GAAI,KAAK,MAAM,MAAM,EACrC,KAAK,IAAMD,EACX,MAAM9tB,EAAS,KAAK,YAAW,EACzBguB,EAAY,KAAK,WAAWhuB,EAAO,MAAM,EACzCiuB,EAAe,KAAK,WAAWD,EAAU,MAAM,EAC/CE,EAAc,KAAK,WAAWD,EAAa,MAAM,EACjDE,EAAkB,KAAK,WAAWD,EAAY,MAAM,EACpDE,EAAgB,KAAK,UAAUH,EAAa,IAAI,IAAI,CAAC,CAAC,EACtDI,EAAU,KAAK,WAAWC,GAAYF,EAAeN,EAAI,OAAO,EACtEA,EAAI,OAAS9tB,EAAO,IACpB8tB,EAAI,MAAQ,KAAK,eAAeE,EAAU,GAAG,EAC7CF,EAAI,QAAU,KAAK,iBAAiBI,EAAY,GAAG,EACnDJ,EAAI,QAAUO,EACdP,EAAI,gBAAkBK,EAAgB,IACtC,KAAK,iBAAiBL,EAAI,OAAO,EACjCA,EAAI,UAAYO,EAAQ,QAAQ,KAAK,EACrC,MAAME,EAAmBF,EAAQ,UAAU,aAAa,EAClDG,EAAkB,KAAK,WAAWD,CAAgB,EAAE,IAC1DT,EAAI,gBAAkBU,EAAgB,MACtC,MAAMC,EAAaJ,EAAQ,UAAU,YAAY,EAC7CI,IACFlnD,EAAW,WAAaknD,GAE1B,IAAIC,EAAWL,EAAQ,UAAU,UAAU,EAC3C,MAAMM,EAAiBpnD,EAAW,MAAM,KAAK81B,GAASA,IAAU,CAAC,EAAI4vB,GAAuB1lD,EAAW,IAAI,EAAI,KACzGqnD,EAA8BF,GAAU,MAAM,EAAG,CAAC,EAAE,KAAK1B,EAA8B,EACvF6B,EAA2BH,GAAU,KAAK1B,EAA8B,EAC9E,GAAI0B,GAAU,MAAMrxB,GAASA,IAAU,CAAC,GAAKsxB,EAC3CD,EAAWC,EACXN,EAAQ,UAAU,WAAYK,CAAQ,UAC7BG,EAA0B,CACnC,MAAMC,EAAoB7B,GAAuByB,CAAQ,EACnDK,EAAyBJ,GAAkBpnD,EAAW,KAAK,KAAK81B,GAASA,EAAQ,CAAC,GAAK,CAAC91B,EAAW,KAAK,KAAKylD,EAA8B,GAAKvoD,GAAaqqD,EAAmBH,CAAc,GAChMI,GAA0BH,KAC5BF,EAAWK,EAAyBD,EAAoB7B,GAAuByB,EAAU,EAAI,EAC7FL,EAAQ,UAAU,WAAYK,CAAQ,EAE1C,CACIA,GAAU,KAAKrxB,GAASA,IAAU,CAAC,IACrC91B,EAAW,OAAS,KAAK,IAAImnD,EAAS,CAAC,EAAGA,EAAS,CAAC,CAAC,EACrDnnD,EAAW,QAAU,KAAK,IAAImnD,EAAS,CAAC,EAAGA,EAAS,CAAC,CAAC,EACtDnnD,EAAW,aAAe,IAE5B,IAAIynD,EAASvkD,EACb,GAAIqjD,EAAI,UAAW,CACjB,MAAMmB,EAAe,KAAK,WAAWZ,EAAQ,UAAU,SAAS,CAAC,EAAE,IACnE,QAAS5uD,EAAI,EAAGmF,EAAKqqD,EAAa,MAAOxvD,EAAImF,EAAI,EAAEnF,EAAG,CACpD,MAAMyvD,EAAUD,EAAa,IAAIxvD,CAAC,EAC5B0vD,EAAW,KAAK,WAAWb,GAAY,KAAK,UAAUY,CAAO,EAAGpB,EAAI,OAAO,EACjF,KAAK,iBAAiBqB,CAAQ,EAC9BrB,EAAI,QAAQ,KAAKqB,CAAQ,CAC3B,CACA1kD,EAAW,KACXukD,EAAU,KAAK,cAAcX,EAAQ,UAAU,SAAS,EAAGG,EAAgB,MAAOV,EAAI,QAAS,EAAI,EACnGA,EAAI,SAAW,KAAK,cAAcO,EAAQ,UAAU,UAAU,EAAGG,EAAgB,KAAK,CACxF,MACEQ,EAAU,KAAK,cAAcX,EAAQ,UAAU,SAAS,EAAGG,EAAgB,MAAOV,EAAI,QAAS,EAAK,EACpGrjD,EAAW,KAAK,cAAc4jD,EAAQ,UAAU,UAAU,EAAG9mD,EAAYumD,EAAI,QAASkB,EAAQ,OAAO,EAEvGlB,EAAI,QAAUkB,EACdlB,EAAI,SAAWrjD,EACf,MAAM2kD,EAAsB,KAAK,iBAAiB,CAChD,YAAaZ,EACb,eAAgBH,EAAQ,YAAY,WACpC,gBAAiBF,EAAgB,IACjC,SAAUL,EAAI,SACd,QAASA,EAAI,QACb,YAAaO,EAAQ,WAC3B,CAAK,EACD,OAAAP,EAAI,YAAcsB,EAAoB,YACtCtB,EAAI,MAAQsB,EAAoB,MAChCtB,EAAI,OAASsB,EAAoB,OAC1BtB,CACT,CACA,aAAc,CACZ,IAAIzuD,EAAQ,KAAK,MACjB,MAAMgwD,EAAchwD,EAAM,OAC1B,IAAIqU,EAAS,EACb,KAAOA,EAAS27C,GAAehwD,EAAMqU,CAAM,IAAM,GAC/C,EAAEA,EAEJ,GAAIA,GAAU27C,EACZ,MAAM,IAAInwD,EAAY,oBAAoB,EAExCwU,IAAW,IACbvW,GAAK,qBAAqB,EAC1BkC,EAAQA,EAAM,SAASqU,CAAM,EAC7B,KAAK,MAAQrU,GAEf,MAAMiwD,EAAQjwD,EAAM,CAAC,EACfkwD,EAAQlwD,EAAM,CAAC,EACfmwD,EAAUnwD,EAAM,CAAC,EACjBowD,EAAUpwD,EAAM,CAAC,EAEvB,MAAO,CACL,IAFa,IAAIqwD,GAAUJ,EAAOC,EAAOC,EAASC,CAAO,EAGzD,OAAQD,CACd,CACE,CACA,UAAUhoD,EAAM,CACd,MAAMke,EAAO,IAAI,SAASle,EAAK,OAAQA,EAAK,WAAYA,EAAK,WAAW,EACxE,IAAI3G,EAAM,EACV,SAAS8uD,GAAe,CACtB,IAAItxD,EAAQmJ,EAAK3G,GAAK,EACtB,OAAIxC,IAAU,GACLuxD,EAAiB,EACfvxD,IAAU,IACnBA,EAAQqnB,EAAK,SAAS7kB,CAAG,EACzBA,GAAO,EACAxC,GACEA,IAAU,IACnBA,EAAQqnB,EAAK,SAAS7kB,CAAG,EACzBA,GAAO,EACAxC,GACEA,GAAS,IAAMA,GAAS,IAC1BA,EAAQ,IACNA,GAAS,KAAOA,GAAS,KAC1BA,EAAQ,KAAO,IAAMmJ,EAAK3G,GAAK,EAAI,IAClCxC,GAAS,KAAOA,GAAS,IAC3B,GAAGA,EAAQ,KAAO,KAAOmJ,EAAK3G,GAAK,EAAI,KAEhDxD,EAAK,yBAAyBgB,CAAK,0BAA0B,EACtD,IACT,CACA,SAASuxD,GAAoB,CAC3B,IAAI3xD,EAAM,GAEV,MAAMsN,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,GAAG,EACrFjM,EAASkI,EAAK,OACpB,KAAO3G,EAAMvB,GAAQ,CACnB,MAAMiB,EAAIiH,EAAK3G,GAAK,EACduB,EAAK7B,GAAK,EACV4B,EAAK5B,EAAI,GAKf,GAJI6B,IAAO,KAGXnE,GAAOsN,EAAOnJ,CAAE,EACZD,IAAO,IACT,MAEFlE,GAAOsN,EAAOpJ,CAAE,CAClB,CACA,OAAO,WAAWlE,CAAG,CACvB,CACA,IAAI4xD,EAAW,CAAA,EACf,MAAMC,EAAU,CAAA,EAChBjvD,EAAM,EACN,MAAMyI,EAAM9B,EAAK,OACjB,KAAO3G,EAAMyI,GAAK,CAChB,IAAI/I,EAAIiH,EAAK3G,CAAG,EACZN,GAAK,IACHA,IAAM,KACRA,EAAIA,GAAK,EAAIiH,EAAK,EAAE3G,CAAG,GAEzBivD,EAAQ,KAAK,CAACvvD,EAAGsvD,CAAQ,CAAC,EAC1BA,EAAW,CAAA,EACX,EAAEhvD,GAEFgvD,EAAS,KAAKF,GAAc,CAEhC,CACA,OAAOG,CACT,CACA,WAAWjvD,EAAK,CACd,MAAMkvD,EAAW,IAAIC,GACf3wD,EAAQ,KAAK,MACboS,EAAQpS,EAAMwB,GAAK,GAAK,EAAIxB,EAAMwB,GAAK,EACvC8oC,EAAU,CAAA,EAChB,IAAIrgC,EAAMzI,EACNpB,EAAGmF,EACP,GAAI6M,IAAU,EAAG,CACf,MAAMw+C,EAAa5wD,EAAMwB,GAAK,EACxBitB,EAAWjtB,GAAO4Q,EAAQ,GAAKw+C,EAAa,EAClD,IAAKxwD,EAAI,EAAGmF,EAAK6M,EAAQ,EAAGhS,EAAImF,EAAI,EAAEnF,EAAG,CACvC,IAAIiU,EAAS,EACb,QAAS7B,EAAI,EAAGA,EAAIo+C,EAAY,EAAEp+C,EAChC6B,IAAW,EACXA,GAAUrU,EAAMwB,GAAK,EAEvB8oC,EAAQ,KAAK7b,EAAWpa,CAAM,CAChC,CACApK,EAAMqgC,EAAQl4B,CAAK,CACrB,CACA,IAAKhS,EAAI,EAAGmF,EAAK+kC,EAAQ,OAAS,EAAGlqC,EAAImF,EAAI,EAAEnF,EAAG,CAChD,MAAMywD,EAAcvmB,EAAQlqC,CAAC,EACvB0wD,EAAYxmB,EAAQlqC,EAAI,CAAC,EAC/BswD,EAAS,IAAI1wD,EAAM,SAAS6wD,EAAaC,CAAS,CAAC,CACrD,CACA,MAAO,CACL,IAAKJ,EACL,OAAQzmD,CACd,CACE,CACA,eAAeknB,EAAO,CACpB,MAAM4/B,EAAQ,CAAA,EACd,QAAS3wD,EAAI,EAAGmF,EAAK4rB,EAAM,MAAO/wB,EAAImF,EAAI,EAAEnF,EAAG,CAC7C,MAAMhB,EAAO+xB,EAAM,IAAI/wB,CAAC,EACxB2wD,EAAM,KAAKhxD,GAAcX,CAAI,CAAC,CAChC,CACA,OAAO2xD,CACT,CACA,iBAAiB5/B,EAAO,CACtB,MAAMmrB,EAAU,IAAI0U,GACpB,QAAS5wD,EAAI,EAAGmF,EAAK4rB,EAAM,MAAO/wB,EAAImF,EAAI,EAAEnF,EAAG,CAC7C,MAAMsM,EAAOykB,EAAM,IAAI/wB,CAAC,EACxBk8C,EAAQ,IAAIv8C,GAAc2M,CAAI,CAAC,CACjC,CACA,OAAO4vC,CACT,CACA,WAAW2U,EAAM9oD,EAAMm0C,EAAS,CAC9B,MAAM4U,EAAU,IAAID,EAAK3U,CAAO,EAChC,SAAW,CAACz0C,EAAK7I,CAAK,IAAKmJ,EACzB+oD,EAAQ,SAASrpD,EAAK7I,CAAK,EAE7B,OAAOkyD,CACT,CACA,gBAAgB19B,EAAO9mB,EAAMykD,EAAgBrC,EAAiB,CAC5D,GAAI,CAACpiD,GAAQ8mB,EAAM,UAAYk6B,GAC7B,MAAO,GAET,MAAMrnC,EAAO,IAAI,SAAS3Z,EAAK,OAAQA,EAAK,WAAYA,EAAK,WAAW,EACxE,IAAI0kD,EAAY59B,EAAM,UACtB,MAAM6M,EAAQ7M,EAAM,MACpB,IAAIvzB,EAASyM,EAAK,OAClB,QAAS8F,EAAI,EAAGA,EAAIvS,GAAS,CAC3B,MAAMjB,EAAQ0N,EAAK8F,GAAG,EACtB,IAAI6+C,EAAoB,KACxB,GAAIryD,IAAU,GAAI,CAChB,MAAM+Z,EAAIrM,EAAK8F,GAAG,EACduG,IAAM,GACRrM,EAAK8F,EAAI,CAAC,EAAI,IACd9F,EAAK8F,EAAI,CAAC,EAAI,GACd4+C,EAAY,GAEZC,EAAoBhD,GAA2Bt1C,CAAC,CAEpD,SAAW/Z,IAAU,GACnBqhC,EAAM+wB,CAAS,EAAI/qC,EAAK,SAAS7T,CAAC,EAClCA,GAAK,EACL4+C,YACSpyD,IAAU,GAAI,CACvB,GAAIoyD,GAAa,IACfA,GAAa,EACT,KAAK,qBACP,OAAA59B,EAAM,KAAO6M,EAAM,MAAM+wB,EAAWA,EAAY,CAAC,EAC1C,GAGXC,EAAoBjD,GAAyBpvD,CAAK,CACpD,SAAWA,GAAS,IAAMA,GAAS,IACjCqhC,EAAM+wB,CAAS,EAAIpyD,EAAQ,IAC3BoyD,YACSpyD,GAAS,KAAOA,GAAS,IAClCqhC,EAAM+wB,CAAS,EAAIpyD,EAAQ,KAAOA,EAAQ,KAAO,GAAK0N,EAAK8F,CAAC,EAAI,IAAM,EAAExT,EAAQ,KAAO,GAAK0N,EAAK8F,CAAC,EAAI,IACtGA,IACA4+C,YACSpyD,IAAU,IACnBqhC,EAAM+wB,CAAS,EAAI/qC,EAAK,SAAS7T,CAAC,EAAI,MACtCA,GAAK,EACL4+C,YACSpyD,IAAU,IAAMA,IAAU,GAAI,CAEvC,GADAw0B,EAAM,OAAS49B,GAAa,EACxB59B,EAAM,QAAU,EAAG,CACrB9mB,EAAK,WAAW8F,EAAI,EAAGA,EAAG,EAAE,EAC5BA,GAAK,EACLvS,GAAU,EACV,QACF,CACAuS,GAAKghB,EAAM,MAAQ,GAAK,EACxB49B,GAAa,EACbC,EAAoBjD,GAAyBpvD,CAAK,CACpD,SAAWA,IAAU,IAAMA,IAAU,GAAI,CACvC,MAAMsyD,EAAatyD,IAAU,GAAKmyD,EAAiBrC,EACnD,GAAI,CAACwC,EACH,OAAAD,EAAoBjD,GAAyBpvD,CAAK,EAClDhB,EAAK,0BAA4BqzD,EAAkB,EAAE,EAC9C,GAET,IAAIE,EAAO,MACPD,EAAW,MAAQ,KACrBC,EAAO,IACED,EAAW,MAAQ,QAC5BC,EAAO,MAET,MAAMC,EAAanxB,EAAM,EAAE+wB,CAAS,EAAIG,EACxC,GAAIC,EAAa,GAAKA,GAAcF,EAAW,OAAS,MAAME,CAAU,EACtE,OAAAH,EAAoBjD,GAAyBpvD,CAAK,EAClDhB,EAAK,+BAAiCqzD,EAAkB,EAAE,EACnD,GAKT,GAHA79B,EAAM,UAAY49B,EAClB59B,EAAM,YAEF,CADU,KAAK,gBAAgBA,EAAO89B,EAAW,IAAIE,CAAU,EAAGL,EAAgBrC,CAAe,EAEnG,MAAO,GAETt7B,EAAM,YACN49B,EAAY59B,EAAM,UAClB,QACF,KAAO,IAAIx0B,IAAU,GACnB,OAAAw0B,EAAM,UAAY49B,EACX,GACF,GAAIpyD,IAAU,GAAKwT,IAAM9F,EAAK,OACnCA,EAAK8F,EAAI,CAAC,EAAI,GACd6+C,EAAoBjD,GAAyB,EAAE,UACtCpvD,IAAU,EAAG,CACtB0N,EAAK,WAAW8F,EAAI,EAAGA,EAAG,EAAE,EAC5BA,GAAK,EACLvS,GAAU,EACV,QACF,MACEoxD,EAAoBjD,GAAyBpvD,CAAK,EAEpD,GAAIqyD,EAAmB,CAUrB,GATIA,EAAkB,OACpB79B,EAAM,OAAS49B,GAAa,EACxBpyD,IAAU,GAAKA,IAAU,GAC3Bw0B,EAAM,UAAY,GACTA,EAAM,YAAcx0B,IAAU,GAAKA,IAAU,MACtDhB,EAAK,mCAAmC,EACxC0O,EAAK8F,EAAI,CAAC,EAAIxT,IAAU,EAAI,EAAI,KAGhCoyD,EAAYC,EAAkB,IAEhC,OADArzD,EAAK,6BAA+BqzD,EAAkB,GAAK,aAAeD,EAAY,eAAiBC,EAAkB,GAAG,EACxHD,IAAc,GAChB1kD,EAAK8F,EAAI,CAAC,EAAI,GACP,IAEF,GAELghB,EAAM,oBAAsB69B,EAAkB,gBAChD79B,EAAM,mBAAqB,GAC3B49B,GAAaC,EAAkB,IAC3BD,GAAa,GAAKC,EAAkB,KACtCD,GAAa,EACJA,EAAY,GACrBpzD,EAAK,sDAAsD,EAEzDozD,EAAY,IACd59B,EAAM,MAAQ6M,EAAM+wB,EAAY,CAAC,IAGjC,eAAgBC,GACd,YAAaA,GACfA,EAAkB,QAAQhxB,EAAO+wB,CAAS,EAE5CA,GAAaC,EAAkB,aACtBA,EAAkB,eAAiBA,EAAkB,cAC9DD,EAAY,EAEhB,CACF,CACA,OAAInxD,EAASyM,EAAK,QAChBA,EAAK,KAAK,GAAIzM,CAAM,EAEtBuzB,EAAM,UAAY49B,EACX,EACT,CACA,iBAAiB,CACf,YAAAK,EACA,eAAAN,EACA,gBAAArC,EACA,SAAA4C,EACA,QAAAC,EACA,YAAAC,CACJ,EAAK,CACD,MAAMC,EAAQ,CAAA,EACRC,EAAS,CAAA,EACT1/C,EAAQq/C,EAAY,MAC1B,QAASrxD,EAAI,EAAGA,EAAIgS,EAAOhS,IAAK,CAC9B,MAAM2xD,EAAaN,EAAY,IAAIrxD,CAAC,EAC9BozB,EAAQ,CACZ,UAAW,EACX,UAAW,EACX,MAAO,CAAA,EACP,MAAO,EACP,mBAAoB,GACpB,KAAM,KACN,MAAO,KACP,UAAW,EACnB,EACM,IAAIw+B,EAAQ,GACRC,EAAiB,KACjBC,EAAmBN,EACvB,GAAIF,GAAYC,EAAQ,OAAQ,CAC9B,MAAMQ,EAAUT,EAAS,WAAWtxD,CAAC,EACjC+xD,IAAY,KACdn0D,EAAK,kCAAkC,EACvCg0D,EAAQ,IAENG,GAAWR,EAAQ,SACrB3zD,EAAK,mCAAmC,EACxCg0D,EAAQ,IAENA,IACFE,EAAmBP,EAAQQ,CAAO,EAAE,YACpCF,EAAiBC,EAAiB,WAEtC,MAAWf,IACTc,EAAiBd,GAGnB,GADAa,IAAU,KAAK,gBAAgBx+B,EAAOu+B,EAAYE,EAAgBnD,CAAe,EAC7Et7B,EAAM,QAAU,KAAM,CACxB,MAAM4+B,EAAeF,EAAiB,UAAU,eAAe,EAC/DJ,EAAO1xD,CAAC,EAAIgyD,EAAe5+B,EAAM,KACnC,KAAO,CACL,MAAM6+B,EAAeH,EAAiB,UAAU,eAAe,EAC/DJ,EAAO1xD,CAAC,EAAIiyD,CACd,CACI7+B,EAAM,OAAS,OACjBq+B,EAAMzxD,CAAC,EAAIozB,EAAM,MAEdw+B,GACHP,EAAY,IAAIrxD,EAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAE3C,CACA,MAAO,CACL,YAAAqxD,EACA,MAAAI,EACA,OAAAC,CACN,CACE,CACA,uBAAuBQ,EAAY,CACjC,MAAMV,EAAc,KAAK,WAAWW,GAAgB,CAAA,EAAID,EAAW,OAAO,EAC1EA,EAAW,SAAS,GAAI,CAAC,EAAG,CAAC,CAAC,EAC9BA,EAAW,YAAcV,CAC3B,CACA,iBAAiBU,EAAY,CAC3B,GAAI,CAACA,EAAW,QAAQ,SAAS,EAAG,CAClC,KAAK,uBAAuBA,CAAU,EACtC,MACF,CACA,MAAME,EAAgBF,EAAW,UAAU,SAAS,EACpD,GAAI,CAAC,MAAM,QAAQE,CAAa,GAAKA,EAAc,SAAW,EAAG,CAC/DF,EAAW,aAAa,SAAS,EACjC,MACF,CACA,MAAMzrC,EAAO2rC,EAAc,CAAC,EACtBn+C,EAASm+C,EAAc,CAAC,EAC9B,GAAI3rC,IAAS,GAAKxS,GAAU,KAAK,MAAM,OAAQ,CAC7C,KAAK,uBAAuBi+C,CAAU,EACtC,MACF,CACA,GAAIj+C,EAASwS,EAAO,KAAK,MAAM,OAC7B,MAAM,IAAIhnB,EAAY,2CAA2C,EAEnE,MAAM4yD,EAAiBp+C,EAASwS,EAC1B6rC,EAAW,KAAK,MAAM,SAASr+C,EAAQo+C,CAAc,EACrDtqD,EAAO,KAAK,UAAUuqD,CAAQ,EAC9Bd,EAAc,KAAK,WAAWW,GAAgBpqD,EAAMmqD,EAAW,OAAO,EAC5EA,EAAW,YAAcV,EACzB,MAAMe,EAAYf,EAAY,UAAU,WAAW,EAC7CgB,EAAYhB,EAAY,UAAU,WAAW,EAC7CiB,EAAWjB,EAAY,UAAU,UAAU,EAC3CkB,EAAkBlB,EAAY,UAAU,iBAAiB,EAS/D,GARIe,IAAc,GAAKC,IAAc,GAAKC,IAAa,GAAKC,IAAoB,IAC9ElB,EAAY,UAAU,YAAa5D,EAAkB,EACrD4D,EAAY,UAAU,YAAa3D,EAAkB,EACrD2D,EAAY,UAAU,WAAY1D,EAAiB,GAEjD4E,IAAoB,GACtBlB,EAAY,UAAU,kBAAmBzD,EAAwB,EAE/DwE,EAAY,EAAG,CACjB,IAAII,EAAgB,EACpB,UAAWC,IAAS,CAACpB,EAAY,UAAU,YAAY,EAAGA,EAAY,UAAU,YAAY,CAAC,EAC3F,GAAKoB,EAGL,QAAS5yD,EAAI,EAAGA,EAAI4yD,EAAM,OAAQ5yD,GAAK,EACjC4yD,EAAM5yD,CAAC,EAAI2yD,IACbA,EAAgBC,EAAM5yD,CAAC,GAI7B,GAAI2yD,EAAgB,EAAG,CAErB,MAAME,EAAa,GAAMF,EACnBG,EAAeD,GAAcjF,GAAqB,KAAK,KAAKiF,EAAa,GAAS,EAAI,IAAY,KAClGE,EAAe,KAAK,MAAM,IAAYJ,CAAa,EAAI,IACvDK,EAAUl+C,GAAUy9C,EAAWO,EAAcC,CAAY,EAC3DC,IAAYT,GACdf,EAAY,UAAU,YAAawB,CAAO,CAE9C,CACF,CACA,GAAI,CAACxB,EAAY,UAAU,OAAO,EAChC,OAEF,MAAMyB,EAAczB,EAAY,UAAU,OAAO,EAC3C0B,EAAiBj/C,EAASg/C,EAChC,GAAIA,IAAgB,GAAKC,GAAkB,KAAK,MAAM,OAAQ,CAC5D,KAAK,uBAAuBhB,CAAU,EACtC,MACF,CACA,MAAMhB,EAAa,KAAK,WAAWgC,CAAc,EACjD1B,EAAY,WAAaN,EAAW,GACtC,CACA,cAAc9vD,EAAKvB,EAAQq8C,EAASiX,EAAK,CACvC,GAAI/xD,IAAQ,EACV,OAAO,IAAIgyD,GAAW,GAAMC,GAA0B,UAAW5G,EAAe,EAC3E,GAAIrrD,IAAQ,EACjB,OAAO,IAAIgyD,GAAW,GAAMC,GAA0B,OAAQ3G,EAAa,EACtE,GAAItrD,IAAQ,EACjB,OAAO,IAAIgyD,GAAW,GAAMC,GAA0B,cAAe1G,EAAmB,EAE1F,KAAM,CACJ,MAAA/sD,CACN,EAAQ,KACE0zD,EAAS1zD,EAAMwB,GAAK,EACpBmuD,EAAU,CAAC4D,EAAM,EAAI,SAAS,EACpC,IAAI5d,EAAIvjC,EAAOhS,EAEf,OADAH,GAAU,EACFyzD,EAAM,CACZ,IAAK,GACH,IAAKtzD,EAAI,EAAGA,EAAIH,EAAQG,IACtBu1C,EAAK31C,EAAMwB,GAAK,GAAK,EAAIxB,EAAMwB,GAAK,EACpCmuD,EAAQ,KAAK4D,EAAM5d,EAAK2G,EAAQ,IAAI3G,CAAE,CAAC,EAEzC,MACF,IAAK,GACH,KAAOga,EAAQ,QAAU1vD,GAGvB,IAFA01C,EAAK31C,EAAMwB,GAAK,GAAK,EAAIxB,EAAMwB,GAAK,EACpC4Q,EAAQpS,EAAMwB,GAAK,EACdpB,EAAI,EAAGA,GAAKgS,EAAOhS,IACtBuvD,EAAQ,KAAK4D,EAAM5d,IAAO2G,EAAQ,IAAI3G,GAAI,CAAC,EAG/C,MACF,IAAK,GACH,KAAOga,EAAQ,QAAU1vD,GAGvB,IAFA01C,EAAK31C,EAAMwB,GAAK,GAAK,EAAIxB,EAAMwB,GAAK,EACpC4Q,EAAQpS,EAAMwB,GAAK,GAAK,EAAIxB,EAAMwB,GAAK,EAClCpB,EAAI,EAAGA,GAAKgS,EAAOhS,IACtBuvD,EAAQ,KAAK4D,EAAM5d,IAAO2G,EAAQ,IAAI3G,GAAI,CAAC,EAG/C,MACF,QACE,MAAM,IAAI91C,EAAY,wBAAwB,CACtD,CACI,OAAO,IAAI2zD,GAAW,GAAOE,EAAQ/D,CAAO,CAC9C,CACA,cAAcnuD,EAAK0G,EAAYo0C,EAASqT,EAAS,CAC/C,MAAMvkD,EAAW,OAAO,OAAO,IAAI,EAC7BpL,EAAQ,KAAK,MACnB,IAAI2zD,EAAa,GACbD,EAAQtzD,EAAGmF,EACXquD,EAAM,KACV,SAASC,GAAiB,CACxB,MAAMC,EAAmB9zD,EAAMwB,GAAK,EACpC,IAAKpB,EAAI,EAAGA,EAAI0zD,EAAkB1zD,IAAK,CACrC,MAAMd,EAAOU,EAAMwB,GAAK,EAClBuyD,GAAO/zD,EAAMwB,GAAK,GAAK,IAAMxB,EAAMwB,GAAK,EAAI,KAClD4J,EAAS9L,CAAI,EAAIqwD,EAAQ,QAAQrT,EAAQ,IAAIyX,CAAG,CAAC,CACnD,CACF,CACA,GAAIvyD,IAAQ,GAAKA,IAAQ,EAAG,CAC1BmyD,EAAa,GACbD,EAASlyD,EACT,MAAMoqD,EAAepqD,EAAMgoD,GAAiBG,GAC5C,IAAKvpD,EAAI,EAAGmF,EAAKoqD,EAAQ,OAAQvvD,EAAImF,EAAInF,IAAK,CAC5C,MAAM+wB,EAAQy6B,EAAa,QAAQ+D,EAAQvvD,CAAC,CAAC,EACzC+wB,IAAU,KACZ/lB,EAAS+lB,CAAK,EAAI/wB,EAEtB,CACF,KAAO,CACL,MAAM4zD,EAAYxyD,EAElB,OADAkyD,EAAS1zD,EAAMwB,GAAK,EACZkyD,EAAS,IAAI,CACnB,IAAK,GACH,MAAMO,EAAcj0D,EAAMwB,GAAK,EAC/B,IAAKpB,EAAI,EAAGA,GAAK6zD,EAAa7zD,IAC5BgL,EAASpL,EAAMwB,GAAK,CAAC,EAAIpB,EAE3B,MACF,IAAK,GACH,MAAM8zD,EAAcl0D,EAAMwB,GAAK,EAC/B,IAAI2yD,EAAM,EACV,IAAK/zD,EAAI,EAAGA,EAAI8zD,EAAa9zD,IAAK,CAChC,MAAM+J,EAAQnK,EAAMwB,GAAK,EACnBitC,EAAOzuC,EAAMwB,GAAK,EACxB,QAASgR,EAAIrI,EAAOqI,GAAKrI,EAAQskC,EAAMj8B,IACrCpH,EAASoH,CAAC,EAAI2hD,GAElB,CACA,MACF,QACE,MAAM,IAAIt0D,EAAY,4BAA4B6zD,CAAM,SAAS,CAC3E,CACM,MAAMU,EAAU5yD,EACZkyD,EAAS,MACX1zD,EAAMg0D,CAAS,GAAK,IACpBH,EAAc,GAEhBD,EAAM5zD,EAAM,SAASg0D,EAAWI,CAAO,CACzC,CACA,OAAAV,GAAU,IACH,IAAIW,GAAYV,EAAYD,EAAQtoD,EAAUwoD,CAAG,CAC1D,CACA,cAAcpyD,EAAKvB,EAAQ,CACzB,MAAMD,EAAQ,KAAK,MACb0zD,EAAS1zD,EAAMwB,GAAK,EACpBkwD,EAAW,CAAA,EACjB,IAAItxD,EACJ,OAAQszD,EAAM,CACZ,IAAK,GACH,IAAKtzD,EAAI,EAAGA,EAAIH,EAAQ,EAAEG,EAAG,CAC3B,MAAMu1C,EAAK31C,EAAMwB,GAAK,EACtBkwD,EAAS,KAAK/b,CAAE,CAClB,CACA,MACF,IAAK,GACH,MAAMue,EAAcl0D,EAAMwB,GAAK,GAAK,EAAIxB,EAAMwB,GAAK,EACnD,IAAKpB,EAAI,EAAGA,EAAI8zD,EAAa,EAAE9zD,EAAG,CAChC,IAAIoD,EAAQxD,EAAMwB,GAAK,GAAK,EAAIxB,EAAMwB,GAAK,EACvCpB,IAAM,GAAKoD,IAAU,IACvBxF,EAAK,iFAAsF,EAC3FwF,EAAQ,GAEV,MAAM2uD,EAAUnyD,EAAMwB,GAAK,EACrB4gC,EAAOpiC,EAAMwB,CAAG,GAAK,EAAIxB,EAAMwB,EAAM,CAAC,EAC5C,QAASgR,EAAIhP,EAAOgP,EAAI4vB,EAAM,EAAE5vB,EAC9Bk/C,EAAS,KAAKS,CAAO,CAEzB,CACA3wD,GAAO,EACP,MACF,QACE,MAAM,IAAI3B,EAAY,kCAAkC6zD,CAAM,IAAI,CAC1E,CACI,GAAIhC,EAAS,SAAWzxD,EACtB,MAAM,IAAIJ,EAAY,mCAAmC,EAE3D,OAAO,IAAIy0D,GAAYZ,EAAQhC,CAAQ,CACzC,CACF,CACA,MAAMhD,EAAI,CACR,OAAS,KACT,MAAQ,CAAA,EACR,QAAU,KACV,QAAU,IAAIsC,GACd,gBAAkB,KAClB,SAAW,KACX,QAAU,KACV,YAAc,KACd,QAAU,CAAA,EACV,SAAW,KACX,UAAY,GACZ,gBAAkB,EAClB,YAAYuD,EAAgB,EAAG,CAC7B,KAAK,cAAgBA,CACvB,CACA,qBAAsB,CACpB,GAAI,KAAK,YAAY,OAAS,MAAO,CACnCv2D,EAAK,2DAA2D,EAChE,MACF,CACA,MAAMw2D,EAAY,KAAK,YAAY,IAAI,CAAC,EACxC,KAAK,YAAY,IAAIA,CAAS,EAC1B,KAAK,WACP,KAAK,SAAS,SAAS,KAAK,KAAK,SAAS,SAAS,CAAC,CAAC,CAEzD,CACA,WAAW7e,EAAI,CACb,OAAIA,EAAK,GAAKA,GAAM,KAAK,YAAY,MAC5B,GAEK,KAAK,YAAY,IAAIA,CAAE,EACxB,OAAS,CACxB,CACF,CACA,MAAM0a,EAAU,CACd,YAAYJ,EAAOC,EAAOC,EAASC,EAAS,CAC1C,KAAK,MAAQH,EACb,KAAK,MAAQC,EACb,KAAK,QAAUC,EACf,KAAK,QAAUC,CACjB,CACF,CACA,MAAMY,EAAW,CACf,QAAU,CAAA,EACV,IAAI7/B,EAAO,CACT,OAAIA,GAAS,GAAKA,GAAS48B,GAA2B,EAC7CD,GAAmB38B,CAAK,EAE7BA,EAAQ48B,IAA4B,KAAK,QAAQ,OAC5C,KAAK,QAAQ58B,EAAQ48B,EAAwB,EAE/CD,GAAmB,CAAC,CAC7B,CACA,OAAOlvD,EAAK,CACV,IAAIuyB,EAAQ28B,GAAmB,QAAQlvD,CAAG,EAC1C,OAAIuyB,IAAU,GACLA,GAETA,EAAQ,KAAK,QAAQ,QAAQvyB,CAAG,EAC5BuyB,IAAU,GACLA,EAAQ48B,GAEV,GACT,CACA,IAAI/uD,EAAO,CACT,KAAK,QAAQ,KAAKA,CAAK,CACzB,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,QAAQ,MACtB,CACF,CACA,MAAM2xD,EAAS,CACb,QAAU,CAAA,EACV,OAAS,EACT,IAAIjkD,EAAM,CACR,KAAK,QAAUA,EAAK,OACpB,KAAK,QAAQ,KAAKA,CAAI,CACxB,CACA,IAAIykB,EAAOzkB,EAAM,CACf,KAAK,QAAUA,EAAK,OAAS,KAAK,QAAQykB,CAAK,EAAE,OACjD,KAAK,QAAQA,CAAK,EAAIzkB,CACxB,CACA,IAAIykB,EAAO,CACT,OAAO,KAAK,QAAQA,CAAK,CAC3B,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,QAAQ,MACtB,CACF,CACA,MAAMsjC,EAAQ,CACZ,YAAYC,EAAQpY,EAAS,CAC3B,KAAK,aAAeoY,EAAO,aAC3B,KAAK,aAAeA,EAAO,aAC3B,KAAK,SAAWA,EAAO,SACvB,KAAK,MAAQA,EAAO,MACpB,KAAK,QAAUA,EAAO,QACtB,KAAK,MAAQA,EAAO,MACpB,KAAK,QAAUpY,EACf,KAAK,OAAS,OAAO,OAAO,IAAI,CAClC,CACA,SAASz0C,EAAK7I,EAAO,CACnB,GAAI,EAAE6I,KAAO,KAAK,cAChB,MAAO,GAET,GAAI7I,EAAM,SAAW,EACnB,MAAO,GAET,UAAW4a,KAAO5a,EAChB,GAAI,MAAM4a,CAAG,EACX,OAAA5b,EAAK,2BAA2BgB,CAAK,cAAc6I,CAAG,IAAI,EACnD,GAGX,MAAM0B,EAAO,KAAK,MAAM1B,CAAG,EAC3B,OAAI0B,IAAS,OAASA,IAAS,OAASA,IAAS,YAC/CvK,EAAQA,EAAM,CAAC,GAEjB,KAAK,OAAO6I,CAAG,EAAI7I,EACZ,EACT,CACA,UAAUI,EAAMJ,EAAO,CACrB,GAAI,EAAEI,KAAQ,KAAK,cACjB,MAAM,IAAIS,EAAY,4BAA4BT,CAAI,GAAG,EAE3D,KAAK,OAAO,KAAK,aAAaA,CAAI,CAAC,EAAIJ,CACzC,CACA,QAAQI,EAAM,CACZ,OAAO,KAAK,aAAaA,CAAI,IAAK,KAAK,MACzC,CACA,UAAUA,EAAM,CACd,GAAI,EAAEA,KAAQ,KAAK,cACjB,MAAM,IAAIS,EAAY,2BAA2BT,CAAI,GAAG,EAE1D,MAAMyI,EAAM,KAAK,aAAazI,CAAI,EAClC,OAAMyI,KAAO,KAAK,OAGX,KAAK,OAAOA,CAAG,EAFb,KAAK,SAASA,CAAG,CAG5B,CACA,aAAazI,EAAM,CACjB,OAAO,KAAK,OAAO,KAAK,aAAaA,CAAI,CAAC,CAC5C,CACA,OAAO,aAAau1D,EAAQ,CAC1B,MAAMD,EAAS,CACb,aAAc,CAAA,EACd,aAAc,CAAA,EACd,SAAU,CAAA,EACV,MAAO,CAAA,EACP,QAAS,CAAA,EACT,MAAO,CAAA,CACb,EACI,UAAW5lD,KAAS6lD,EAAQ,CAC1B,MAAM9sD,EAAM,MAAM,QAAQiH,EAAM,CAAC,CAAC,GAAKA,EAAM,CAAC,EAAE,CAAC,GAAK,GAAKA,EAAM,CAAC,EAAE,CAAC,EAAIA,EAAM,CAAC,EAChF4lD,EAAO,aAAa7sD,CAAG,EAAIiH,EAAM,CAAC,EAClC4lD,EAAO,aAAa5lD,EAAM,CAAC,CAAC,EAAIjH,EAChC6sD,EAAO,MAAM7sD,CAAG,EAAIiH,EAAM,CAAC,EAC3B4lD,EAAO,SAAS7sD,CAAG,EAAIiH,EAAM,CAAC,EAC9B4lD,EAAO,QAAQ7sD,CAAG,EAAI,MAAM,QAAQiH,EAAM,CAAC,CAAC,EAAIA,EAAM,CAAC,EAAI,CAACA,EAAM,CAAC,CAAC,EACpE4lD,EAAO,MAAM,KAAK7sD,CAAG,CACvB,CACA,OAAO6sD,CACT,CACF,CACA,MAAME,GAAmB,CAAC,CAAC,CAAC,GAAI,EAAE,EAAG,MAAO,CAAC,MAAO,MAAO,KAAK,EAAG,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,gBAAiB,MAAO,IAAI,EAAG,CAAC,EAAG,UAAW,MAAO,IAAI,EAAG,CAAC,EAAG,SAAU,MAAO,IAAI,EAAG,CAAC,CAAC,GAAI,CAAC,EAAG,YAAa,MAAO,IAAI,EAAG,CAAC,EAAG,WAAY,MAAO,IAAI,EAAG,CAAC,EAAG,aAAc,MAAO,IAAI,EAAG,CAAC,EAAG,SAAU,MAAO,IAAI,EAAG,CAAC,CAAC,GAAI,CAAC,EAAG,eAAgB,MAAO,CAAC,EAAG,CAAC,CAAC,GAAI,CAAC,EAAG,cAAe,MAAO,CAAC,EAAG,CAAC,CAAC,GAAI,CAAC,EAAG,oBAAqB,MAAO,IAAI,EAAG,CAAC,CAAC,GAAI,CAAC,EAAG,qBAAsB,MAAO,EAAE,EAAG,CAAC,CAAC,GAAI,CAAC,EAAG,YAAa,MAAO,CAAC,EAAG,CAAC,CAAC,GAAI,CAAC,EAAG,iBAAkB,MAAO,CAAC,EAAG,CAAC,CAAC,GAAI,CAAC,EAAG,aAAc,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAAG,CAAC,KAAO,EAAG,EAAG,KAAO,EAAG,CAAC,CAAC,EAAG,CAAC,GAAI,WAAY,MAAO,IAAI,EAAG,CAAC,EAAG,WAAY,CAAC,MAAO,MAAO,MAAO,KAAK,EAAG,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,GAAI,CAAC,EAAG,cAAe,MAAO,CAAC,EAAG,CAAC,GAAI,OAAQ,QAAS,IAAI,EAAG,CAAC,GAAI,UAAW,SAAU,CAAC,EAAG,CAAC,GAAI,WAAY,SAAU,CAAC,EAAG,CAAC,GAAI,cAAe,SAAU,CAAC,EAAG,CAAC,GAAI,UAAW,CAAC,SAAU,QAAQ,EAAG,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,aAAc,MAAO,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,eAAgB,MAAO,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,gBAAiB,QAAS,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,iBAAkB,MAAO,CAAC,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,kBAAmB,MAAO,CAAC,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,cAAe,MAAO,CAAC,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,WAAY,MAAO,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,UAAW,MAAO,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,WAAY,SAAU,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,UAAW,SAAU,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,WAAY,MAAO,IAAI,CAAC,EAC90C,MAAM3F,WAAmBwF,EAAQ,CAC/B,WAAW,QAAS,CAClB,OAAO51D,GAAO,KAAM,SAAU,KAAK,aAAa+1D,EAAgB,CAAC,CACnE,CACA,YAAYtY,EAAS,CACnB,MAAM2S,GAAW,OAAQ3S,CAAO,EAChC,KAAK,YAAc,IACrB,CACF,CACA,MAAMuY,GAAuB,CAAC,CAAC,EAAG,aAAc,QAAS,IAAI,EAAG,CAAC,EAAG,aAAc,QAAS,IAAI,EAAG,CAAC,EAAG,cAAe,QAAS,IAAI,EAAG,CAAC,EAAG,mBAAoB,QAAS,IAAI,EAAG,CAAC,CAAC,GAAI,CAAC,EAAG,YAAa,MAAO7G,EAAkB,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,YAAa,MAAOC,EAAkB,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,WAAY,MAAOC,EAAiB,EAAG,CAAC,GAAI,QAAS,MAAO,IAAI,EAAG,CAAC,GAAI,QAAS,MAAO,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,YAAa,QAAS,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,YAAa,QAAS,IAAI,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,YAAa,MAAO,CAAC,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,gBAAiB,MAAO,CAAC,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,kBAAmB,MAAOC,EAAwB,EAAG,CAAC,CAAC,GAAI,EAAE,EAAG,oBAAqB,MAAO,CAAC,EAAG,CAAC,GAAI,gBAAiB,MAAO,CAAC,EAAG,CAAC,GAAI,gBAAiB,MAAO,CAAC,EAAG,CAAC,GAAI,QAAS,SAAU,IAAI,CAAC,EACluB,MAAMoE,WAAuBkC,EAAQ,CACnC,WAAW,QAAS,CAClB,OAAO51D,GAAO,KAAM,SAAU,KAAK,aAAag2D,EAAoB,CAAC,CACvE,CACA,YAAYvY,EAAS,CACnB,MAAMiW,GAAe,OAAQjW,CAAO,EACpC,KAAK,WAAa,IACpB,CACF,CACA,MAAMmX,GAA4B,CAChC,UAAW,EACX,OAAQ,EACR,cAAe,CACjB,EACA,MAAMD,EAAW,CACf,YAAYG,EAAYD,EAAQ/D,EAAS,CACvC,KAAK,WAAagE,EAClB,KAAK,OAASD,EACd,KAAK,QAAU/D,CACjB,CACF,CACA,MAAM0E,EAAY,CAChB,YAAYV,EAAYD,EAAQtoD,EAAUwoD,EAAK,CAC7C,KAAK,WAAaD,EAClB,KAAK,OAASD,EACd,KAAK,SAAWtoD,EAChB,KAAK,IAAMwoD,CACb,CACF,CACA,MAAMU,EAAY,CAChB,YAAYZ,EAAQhC,EAAU,CAC5B,KAAK,OAASgC,EACd,KAAK,SAAWhC,CAClB,CACA,WAAWoD,EAAY,CACrB,OAAOA,EAAa,GAAKA,GAAc,KAAK,SAAS,OAAS,GAAK,KAAK,SAASA,CAAU,CAC7F,CACF,CACA,MAAMC,EAAiB,CACrB,QAAU,OAAO,OAAO,IAAI,EAC5B,WAAWltD,EAAK,CACd,OAAOA,KAAO,KAAK,OACrB,CACA,MAAMA,EAAKmtD,EAAU,CACnB,GAAIntD,KAAO,KAAK,QACd,MAAM,IAAIhI,EAAY,gCAAgCgI,CAAG,EAAE,EAE7D,KAAK,QAAQA,CAAG,EAAImtD,CACtB,CACA,OAAOh2D,EAAO,CACZ,UAAW6I,KAAO,KAAK,QACrB,KAAK,QAAQA,CAAG,GAAK7I,CAEzB,CACA,iBAAiB6I,EAAKQ,EAAQjG,EAAQ,CACpC,GAAI,EAAEyF,KAAO,KAAK,SAChB,MAAM,IAAIhI,EAAY,4BAA4BgI,CAAG,EAAE,EAEzD,MAAM6E,EAAOtK,EAAO,KACdqyB,EAAa,KAAK,QAAQ5sB,CAAG,EAC7Bgf,EAAO,EACb,QAASzmB,EAAI,EAAGmF,EAAK8C,EAAO,OAAQjI,EAAImF,EAAI,EAAEnF,EAAG,CAC/C,MAAM60D,EAAU70D,EAAIymB,EAAO4N,EACrBygC,EAAUD,EAAU,EACpBE,EAAUF,EAAU,EACpBG,EAAUH,EAAU,EACpBI,EAAUJ,EAAU,EAC1B,GAAIvoD,EAAKuoD,CAAO,IAAM,IAAQvoD,EAAKwoD,CAAO,IAAM,GAAKxoD,EAAKyoD,CAAO,IAAM,GAAKzoD,EAAK0oD,CAAO,IAAM,GAAK1oD,EAAK2oD,CAAO,IAAM,EACnH,MAAM,IAAIx1D,EAAY,wCAAwC,EAEhE,MAAMb,EAAQqJ,EAAOjI,CAAC,EACtBsM,EAAKuoD,CAAO,EAAI,GAChBvoD,EAAKwoD,CAAO,EAAIl2D,GAAS,GAAK,IAC9B0N,EAAKyoD,CAAO,EAAIn2D,GAAS,GAAK,IAC9B0N,EAAK0oD,CAAO,EAAIp2D,GAAS,EAAI,IAC7B0N,EAAK2oD,CAAO,EAAIr2D,EAAQ,GAC1B,CACF,CACF,CACA,MAAMs2D,EAAY,CAChB,YAAY7G,EAAK,CACf,KAAK,IAAMA,CACb,CACA,SAAU,CACR,MAAMA,EAAM,KAAK,IACXrsD,EAAS,IAAI4qD,GAAY,CAC7B,UAAWyB,EAAI,aACrB,CAAK,EACK9tB,EAAS,KAAK,cAAc8tB,EAAI,MAAM,EAC5CrsD,EAAO,SAASu+B,CAAM,EACtB,MAAMguB,EAAY,KAAK,iBAAiBF,EAAI,KAAK,EAEjD,GADArsD,EAAO,SAASusD,CAAS,EACrBF,EAAI,WACFA,EAAI,QAAQ,QAAQ,YAAY,EAAG,CACrC,MAAM72C,EAAO62C,EAAI,QAAQ,UAAU,YAAY,EAC/CA,EAAI,QAAQ,aAAa,YAAY,EACrC,UAAWnmD,KAAWmmD,EAAI,QAAS,CACjC,IAAIprD,EAASuU,EAAK,MAAM,CAAC,EACrBtP,EAAQ,QAAQ,YAAY,IAC9BjF,EAASvC,GAAK,UAAUuC,EAAQiF,EAAQ,UAAU,YAAY,CAAC,GAEjEA,EAAQ,UAAU,aAAcjF,CAAM,CACxC,CACF,CAEWorD,EAAI,QAAQ,UAAU,MAAM,GAC/B,OAAS,IACjBA,EAAI,QAAQ,aAAa,MAAM,EAEjCA,EAAI,QAAQ,UAAU,UAAW,CAAC,EAClC,IAAI8G,EAAW,KAAK,gBAAgB,CAAC9G,EAAI,OAAO,EAAGrsD,EAAO,OAAQqsD,EAAI,SAAS,EAC/ErsD,EAAO,SAASmzD,EAAS,MAAM,EAC/B,MAAMC,EAAiBD,EAAS,SAAS,CAAC,EACpC1G,EAAc,KAAK,mBAAmBJ,EAAI,QAAQ,OAAO,EAC/DrsD,EAAO,SAASysD,CAAW,EAC3B,MAAMC,EAAkB,KAAK,aAAaL,EAAI,eAAe,EAE7D,GADArsD,EAAO,SAAS0sD,CAAe,EAC3BL,EAAI,UAAYA,EAAI,QAAQ,QAAQ,UAAU,EAChD,GAAIA,EAAI,SAAS,WACf+G,EAAe,iBAAiB,WAAY,CAAC/G,EAAI,SAAS,MAAM,EAAGrsD,CAAM,MACpE,CACL,MAAMgJ,EAAW,KAAK,gBAAgBqjD,EAAI,QAAQ,EAClD+G,EAAe,iBAAiB,WAAY,CAACpzD,EAAO,MAAM,EAAGA,CAAM,EACnEA,EAAO,SAASgJ,CAAQ,CAC1B,CAEF,MAAMukD,EAAU,KAAK,eAAelB,EAAI,QAASA,EAAI,YAAY,MAAOA,EAAI,QAASA,EAAI,SAAS,EAClG+G,EAAe,iBAAiB,UAAW,CAACpzD,EAAO,MAAM,EAAGA,CAAM,EAClEA,EAAO,SAASutD,CAAO,EACvB,MAAM8B,EAAc,KAAK,mBAAmBhD,EAAI,WAAW,EAG3D,GAFA+G,EAAe,iBAAiB,cAAe,CAACpzD,EAAO,MAAM,EAAGA,CAAM,EACtEA,EAAO,SAASqvD,CAAW,EACvBhD,EAAI,UAAW,CACjB+G,EAAe,iBAAiB,WAAY,CAACpzD,EAAO,MAAM,EAAGA,CAAM,EACnE,MAAMsvD,EAAW,KAAK,gBAAgBjD,EAAI,QAAQ,EAClDrsD,EAAO,SAASsvD,CAAQ,EACxB6D,EAAW,KAAK,gBAAgB9G,EAAI,QAASrsD,EAAO,OAAQ,EAAI,EAChEozD,EAAe,iBAAiB,UAAW,CAACpzD,EAAO,MAAM,EAAGA,CAAM,EAClEA,EAAO,SAASmzD,EAAS,MAAM,EAC/B,MAAME,EAAmBF,EAAS,SAClC,KAAK,oBAAoB9G,EAAI,QAASgH,EAAkBrzD,CAAM,CAChE,CACA,YAAK,oBAAoB,CAACqsD,EAAI,OAAO,EAAG,CAAC+G,CAAc,EAAGpzD,CAAM,EAChEA,EAAO,SAAS,CAAC,CAAC,CAAC,EACZA,EAAO,IAChB,CACA,aAAapD,EAAO,CAClB,OAAI,OAAO,UAAUA,CAAK,EACjB,KAAK,cAAcA,CAAK,EAE1B,KAAK,YAAYA,CAAK,CAC/B,CACA,WAAW,mBAAoB,CAC7B,OAAOH,GAAO,KAAM,oBAAqB,+CAA+C,CAC1F,CACA,YAAY2J,EAAK,CACf,IAAIxJ,EAAQwJ,EAAI,SAAQ,EACxB,MAAMnH,EAAIi0D,GAAY,kBAAkB,KAAKt2D,CAAK,EAClD,GAAIqC,EAAG,CACL,MAAMq0D,EAAU,WAAW,OAASr0D,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAI,GAAKA,EAAE,CAAC,EAAE,OAAO,EACpErC,GAAS,KAAK,MAAMwJ,EAAMktD,CAAO,EAAIA,GAAS,SAAQ,CACxD,CACA,IAAIC,EAAU,GACV,EAAGpwD,EACP,IAAK,EAAI,EAAGA,EAAKvG,EAAM,OAAQ,EAAIuG,EAAI,EAAE,EAAG,CAC1C,MAAMjC,EAAItE,EAAM,CAAC,EACbsE,IAAM,IACRqyD,GAAW32D,EAAM,EAAE,CAAC,IAAM,IAAM,IAAM,IAC7BsE,IAAM,IACfqyD,GAAW,IACFryD,IAAM,IACfqyD,GAAW,IAEXA,GAAWryD,CAEf,CACAqyD,GAAWA,EAAQ,OAAS,EAAI,IAAM,KACtC,MAAMtjC,EAAM,CAAC,EAAE,EACf,IAAK,EAAI,EAAG9sB,EAAKowD,EAAQ,OAAQ,EAAIpwD,EAAI,GAAK,EAC5C8sB,EAAI,KAAK,SAASsjC,EAAQ,UAAU,EAAG,EAAI,CAAC,EAAG,EAAE,CAAC,EAEpD,OAAOtjC,CACT,CACA,cAAcrzB,EAAO,CACnB,IAAIM,EACJ,OAAIN,GAAS,MAAQA,GAAS,IAC5BM,EAAO,CAACN,EAAQ,GAAG,EACVA,GAAS,KAAOA,GAAS,MAClCA,GAAS,IACTM,EAAO,EAAEN,GAAS,GAAK,IAAKA,EAAQ,GAAI,GAC/BA,GAAS,OAASA,GAAS,MACpCA,EAAQ,CAACA,EAAQ,IACjBM,EAAO,EAAEN,GAAS,GAAK,IAAKA,EAAQ,GAAI,GAC/BA,GAAS,QAAUA,GAAS,MACrCM,EAAO,CAAC,GAAMN,GAAS,EAAI,IAAMA,EAAQ,GAAI,EAE7CM,EAAO,CAAC,GAAMN,GAAS,GAAK,IAAMA,GAAS,GAAK,IAAMA,GAAS,EAAI,IAAMA,EAAQ,GAAI,EAEhFM,CACT,CACA,cAAcqhC,EAAQ,CACpB,MAAO,CAACA,EAAO,MAAOA,EAAO,MAAO,EAAGA,EAAO,OAAO,CACvD,CACA,iBAAiBowB,EAAO,CACtB,MAAMpC,EAAY,IAAIgC,GACtB,UAAWvxD,KAAQ2xD,EAAO,CACxB,MAAM9wD,EAAS,KAAK,IAAIb,EAAK,OAAQ,GAAG,EACxC,IAAIw2D,EAAgB,IAAI,MAAM31D,CAAM,EACpC,QAASuS,EAAI,EAAGA,EAAIvS,EAAQuS,IAAK,CAC/B,IAAIjI,EAAOnL,EAAKoT,CAAC,GACbjI,EAAO,KAAOA,EAAO,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,OACvLA,EAAO,KAETqrD,EAAcpjD,CAAC,EAAIjI,CACrB,CACAqrD,EAAgBA,EAAc,KAAK,EAAE,EACjCA,IAAkB,KACpBA,EAAgB,iBAElBjH,EAAU,IAAIpuD,GAAcq1D,CAAa,CAAC,CAC5C,CACA,OAAO,KAAK,aAAajH,CAAS,CACpC,CACA,gBAAgBkH,EAAO51D,EAAQ61D,EAAe,CAC5C,MAAML,EAAmB,CAAA,EACzB,IAAI7F,EAAe,IAAIe,GACvB,UAAWb,KAAY+F,EAAO,CACxBC,IACFhG,EAAS,aAAa,gBAAgB,EACtCA,EAAS,aAAa,iBAAiB,EACvCA,EAAS,aAAa,aAAa,EACnCA,EAAS,aAAa,UAAU,EAChCA,EAAS,aAAa,SAAS,GAEjC,MAAMiG,EAAkB,IAAIhB,GACtBiB,EAAe,KAAK,YAAYlG,EAAUiG,CAAe,EAC/DN,EAAiB,KAAKM,CAAe,EACrCnG,EAAa,IAAIoG,CAAY,EAC7BD,EAAgB,OAAO91D,CAAM,CAC/B,CACA,OAAA2vD,EAAe,KAAK,aAAaA,EAAc6F,CAAgB,EACxD,CACL,SAAUA,EACV,OAAQ7F,CACd,CACE,CACA,oBAAoBiG,EAAOI,EAAU7zD,EAAQ,CAC3C,QAAShC,EAAI,EAAGmF,EAAKswD,EAAM,OAAQz1D,EAAImF,EAAI,EAAEnF,EAAG,CAC9C,MAAM0vD,EAAW+F,EAAMz1D,CAAC,EAClBwxD,EAAc9B,EAAS,YAC7B,GAAI,CAAC8B,GAAe,CAAC9B,EAAS,QAAQ,SAAS,EAC7C,MAAM,IAAIjwD,EAAY,qCAAqC,EAE7D,MAAMq2D,EAAqB,IAAInB,GACzBoB,EAAkB,KAAK,YAAYvE,EAAasE,CAAkB,EACxE,IAAIE,EAAeh0D,EAAO,OAO1B,GANA8zD,EAAmB,OAAOE,CAAY,EACjCD,EAAgB,SACnBC,EAAe,GAEjBH,EAAS71D,CAAC,EAAE,iBAAiB,UAAW,CAAC+1D,EAAgB,OAAQC,CAAY,EAAGh0D,CAAM,EACtFA,EAAO,SAAS+zD,CAAe,EAC3BvE,EAAY,YAAcA,EAAY,QAAQ,OAAO,EAAG,CAC1D,MAAMyE,EAAQ,KAAK,aAAazE,EAAY,UAAU,EACtDsE,EAAmB,iBAAiB,QAAS,CAACC,EAAgB,MAAM,EAAG/zD,CAAM,EAC7EA,EAAO,SAASi0D,CAAK,CACvB,CACF,CACF,CACA,YAAYluD,EAAMmuD,EAAe,CAC/B,MAAMjkC,EAAM,CAAA,EACZ,UAAWxqB,KAAOM,EAAK,MAAO,CAC5B,GAAI,EAAEN,KAAOM,EAAK,QAChB,SAEF,IAAIE,EAASF,EAAK,OAAON,CAAG,EACxB0uD,EAAQpuD,EAAK,MAAMN,CAAG,EAO1B,GANK,MAAM,QAAQ0uD,CAAK,IACtBA,EAAQ,CAACA,CAAK,GAEX,MAAM,QAAQluD,CAAM,IACvBA,EAAS,CAACA,CAAM,GAEdA,EAAO,SAAW,EAGtB,SAASmK,EAAI,EAAGyQ,EAAKszC,EAAM,OAAQ/jD,EAAIyQ,EAAI,EAAEzQ,EAAG,CAC9C,MAAMjJ,EAAOgtD,EAAM/jD,CAAC,EACdxT,EAAQqJ,EAAOmK,CAAC,EACtB,OAAQjJ,EAAI,CACV,IAAK,MACL,IAAK,MACH8oB,EAAI,KAAK,GAAG,KAAK,aAAarzB,CAAK,CAAC,EACpC,MACF,IAAK,SACH,MAAMI,EAAO+I,EAAK,aAAaN,CAAG,EAC7ByuD,EAAc,WAAWl3D,CAAI,GAChCk3D,EAAc,MAAMl3D,EAAMizB,EAAI,MAAM,EAEtCA,EAAI,KAAK,GAAM,EAAG,EAAG,EAAG,CAAC,EACzB,MACF,IAAK,QACL,IAAK,QACHA,EAAI,KAAK,GAAG,KAAK,aAAarzB,CAAK,CAAC,EACpC,QAASqa,EAAI,EAAGqb,EAAKrsB,EAAO,OAAQgR,EAAIqb,EAAI,EAAErb,EAC5CgZ,EAAI,KAAK,GAAG,KAAK,aAAahqB,EAAOgR,CAAC,CAAC,CAAC,EAE1C,MACF,QACE,MAAM,IAAIxZ,EAAY,wBAAwB0J,CAAI,EAAE,CAChE,CACM,CACA8oB,EAAI,KAAK,GAAGlqB,EAAK,QAAQN,CAAG,CAAC,EAC/B,CACA,OAAOwqB,CACT,CACA,mBAAmBiqB,EAAS,CAC1B,MAAMuS,EAAc,IAAI8B,GACxB,UAAWtT,KAAUf,EACnBuS,EAAY,IAAItuD,GAAc88C,CAAM,CAAC,EAEvC,OAAO,KAAK,aAAawR,CAAW,CACtC,CACA,mBAAmB4C,EAAa,CAC9B,MAAM+E,EAAmB,IAAI7F,GAC7B,QAASvwD,EAAI,EAAGA,EAAIqxD,EAAY,MAAOrxD,IAAK,CAC1C,MAAMq2D,EAAQhF,EAAY,IAAIrxD,CAAC,EAC/B,GAAIq2D,EAAM,SAAW,EAAG,CACtBD,EAAiB,IAAI,IAAI,WAAW,CAAC,IAAM,EAAI,CAAC,CAAC,EACjD,QACF,CACAA,EAAiB,IAAIC,CAAK,CAC5B,CACA,OAAO,KAAK,aAAaD,CAAgB,CAC3C,CACA,eAAe7G,EAAS+G,EAAWpa,EAASqa,EAAW,CACrD,IAAItkC,EACJ,MAAMukC,EAAsBF,EAAY,EACxC,GAAIC,EAAW,CACb,MAAME,EAAQD,EAAsB,EACpCvkC,EAAM,IAAI,WAAW,CAAC,EAAG,EAAG,EAAGwkC,GAAS,EAAI,IAAMA,EAAQ,GAAI,CAAC,CACjE,KAAO,CACL,MAAM52D,EAAS,EAAI22D,EAAsB,EACzCvkC,EAAM,IAAI,WAAWpyB,CAAM,EAC3B,IAAI62D,EAAe,EACnB,MAAMC,EAAcpH,EAAQ,QAAQ,OACpC,IAAIqH,EAAS,GACb,QAAS52D,EAAI,EAAGA,EAAIiyB,EAAI,OAAQjyB,GAAK,EAAG,CACtC,IAAI2zD,EAAM,EACV,GAAI+C,EAAeC,EAAa,CAC9B,MAAM33D,EAAOuwD,EAAQ,QAAQmH,GAAc,EAC3C/C,EAAMzX,EAAQ,OAAOl9C,CAAI,EACrB20D,IAAQ,KACVA,EAAM,EACDiD,IACHA,EAAS,GACTh5D,EAAK,iBAAiBoB,CAAI,iBAAiB,GAGjD,CACAizB,EAAIjyB,CAAC,EAAI2zD,GAAO,EAAI,IACpB1hC,EAAIjyB,EAAI,CAAC,EAAI2zD,EAAM,GACrB,CACF,CACA,OAAO1hC,CACT,CACA,gBAAgBjnB,EAAU,CACxB,OAAOA,EAAS,GAClB,CACA,gBAAgBsmD,EAAU,CACxB,MAAMgC,EAAShC,EAAS,OACxB,IAAIr/B,EAAKjyB,EACT,OAAQszD,EAAM,CACZ,IAAK,GACHrhC,EAAM,IAAI,WAAW,EAAIq/B,EAAS,SAAS,MAAM,EACjDr/B,EAAI,CAAC,EAAIqhC,EACTrhC,EAAI,IAAIq/B,EAAS,SAAU,CAAC,EAC5B,MACF,IAAK,GACH,MAAMvnD,EAAQ,EACd,IAAI8sD,EAASvF,EAAS,SAAS,CAAC,EAChC,MAAMtwC,EAAS,CAACsyC,EAAQ,EAAG,EAAGvpD,GAAS,EAAI,IAAMA,EAAQ,IAAM8sD,CAAM,EACrE,IAAK72D,EAAI,EAAGA,EAAIsxD,EAAS,SAAS,OAAQtxD,IAAK,CAC7C,MAAM82D,EAAYxF,EAAS,SAAStxD,CAAC,EACjC82D,IAAcD,IAChB71C,EAAO,KAAKhhB,GAAK,EAAI,IAAMA,EAAI,IAAM82D,CAAS,EAC9CD,EAASC,EAEb,CACA,MAAMC,GAAa/1C,EAAO,OAAS,GAAK,EACxCA,EAAO,CAAC,EAAI+1C,GAAa,EAAI,IAC7B/1C,EAAO,CAAC,EAAI+1C,EAAY,IACxB/1C,EAAO,KAAKhhB,GAAK,EAAI,IAAMA,EAAI,GAAI,EACnCiyB,EAAM,IAAI,WAAWjR,CAAM,EAC3B,KACR,CACI,OAAOiR,CACT,CACA,aAAalB,EAAO8kC,EAAW,GAAI,CACjC,MAAMmB,EAAUjmC,EAAM,QAChB/e,EAAQglD,EAAQ,OACtB,GAAIhlD,IAAU,EACZ,OAAO,IAAI,WAAW,CAAC,EAEzB,IAAIilD,EAAa,EACfj3D,EACF,IAAKA,EAAI,EAAGA,EAAIgS,EAAO,EAAEhS,EACvBi3D,GAAcD,EAAQh3D,CAAC,EAAE,OAE3B,IAAIwwD,EACAyG,EAAa,IACfzG,EAAa,EACJyG,EAAa,MACtBzG,EAAa,EACJyG,EAAa,SACtBzG,EAAa,EAEbA,EAAa,EAEf,MAAMlkD,EAAO,IAAI,WAAW,EAAIkkD,GAAcx+C,EAAQ,GAAKilD,CAAU,EACrE,IAAI71D,EAAM,EACVkL,EAAKlL,GAAK,EAAI4Q,GAAS,EAAI,IAC3B1F,EAAKlL,GAAK,EAAI4Q,EAAQ,IACtB1F,EAAKlL,GAAK,EAAIovD,EACd,IAAI0C,EAAiB,EACrB,IAAKlzD,EAAI,EAAGA,EAAIgS,EAAQ,EAAGhS,IACrBwwD,IAAe,EACjBlkD,EAAKlL,GAAK,EAAI8xD,EAAiB,IACtB1C,IAAe,GACxBlkD,EAAKlL,GAAK,EAAI8xD,GAAkB,EAAI,IACpC5mD,EAAKlL,GAAK,EAAI8xD,EAAiB,KACtB1C,IAAe,GACxBlkD,EAAKlL,GAAK,EAAI8xD,GAAkB,GAAK,IACrC5mD,EAAKlL,GAAK,EAAI8xD,GAAkB,EAAI,IACpC5mD,EAAKlL,GAAK,EAAI8xD,EAAiB,MAE/B5mD,EAAKlL,GAAK,EAAI8xD,IAAmB,GAAK,IACtC5mD,EAAKlL,GAAK,EAAI8xD,GAAkB,GAAK,IACrC5mD,EAAKlL,GAAK,EAAI8xD,GAAkB,EAAI,IACpC5mD,EAAKlL,GAAK,EAAI8xD,EAAiB,KAE7B8D,EAAQh3D,CAAC,IACXkzD,GAAkB8D,EAAQh3D,CAAC,EAAE,QAGjC,IAAKA,EAAI,EAAGA,EAAIgS,EAAOhS,IACrB61D,EAAS71D,CAAC,GAAG,OAAOoB,CAAG,EACvBkL,EAAK,IAAI0qD,EAAQh3D,CAAC,EAAGoB,CAAG,EACxBA,GAAO41D,EAAQh3D,CAAC,EAAE,OAEpB,OAAOsM,CACT,CACF,CAMA,MAAM4qD,GAAgBvrD,GAAsB,SAAU,EAAG,CACvD,EAAE,aAAa,EAAI,cACnB,EAAE,UAAY,YACd,EAAE,QAAU,UACZ,EAAE,OAAS,SACX,EAAE,YAAY,EAAI,aAClB,EAAE,gBAAgB,EAAI,iBACtB,EAAE,cAAc,EAAI,eACpB,EAAE,aAAe,eACjB,EAAE,cAAc,EAAI,eACpB,EAAE,mBAAmB,EAAI,oBACzB,EAAE,iBAAiB,EAAI,kBACvB,EAAE,kBAAkB,EAAI,mBACxB,EAAE,uBAAuB,EAAI,wBAC7B,EAAE,qBAAqB,EAAI,sBAC3B,EAAE,YAAc,YAChB,EAAE,kBAAkB,EAAI,iBACxB,EAAE,wBAAwB,EAAI,wBAC9B,EAAE,oBAAoB,EAAI,oBAC1B,EAAE,WAAa,YACf,EAAE,iBAAiB,EAAI,iBACvB,EAAE,uBAAuB,EAAI,wBAC7B,EAAE,mBAAmB,EAAI,oBACzB,EAAE,aAAa,EAAI,YACnB,EAAE,kBAAkB,EAAI,iBACxB,EAAE,wBAAwB,EAAI,wBAC9B,EAAE,oBAAoB,EAAI,oBAC1B,EAAE,MAAQ,YACV,EAAE,YAAY,EAAI,iBAClB,EAAE,kBAAkB,EAAI,wBACxB,EAAE,cAAc,EAAI,oBACpB,EAAE,QAAU,YACZ,EAAE,oBAAoB,EAAI,wBAC1B,EAAE,cAAc,EAAI,iBACpB,EAAE,gBAAgB,EAAI,oBACtB,EAAE,+BAA+B,EAAI,wBACrC,EAAE,mBAAmB,EAAI,iBACzB,EAAE,uBAAuB,EAAI,oBAC7B,EAAE,eAAiB,YACnB,EAAE,qBAAqB,EAAI,iBAC3B,EAAE,2BAA2B,EAAI,wBACjC,EAAE,uBAAuB,EAAI,oBAC7B,EAAE,oBAAoB,EAAI,sBAC1B,EAAE,gBAAgB,EAAI,kBACtB,EAAE,WAAa,UACf,EAAE,iBAAiB,EAAI,eACvB,EAAE,uBAAuB,EAAI,sBAC7B,EAAE,mBAAmB,EAAI,kBACzB,EAAE,2BAA2B,EAAI,sBACjC,EAAE,qBAAqB,EAAI,eAC3B,EAAE,uBAAuB,EAAI,kBAC7B,EAAE,eAAiB,UACnB,EAAE,sBAAsB,EAAI,wBAC5B,EAAE,kBAAkB,EAAI,oBACxB,EAAE,qBAAqB,EAAI,iBAC3B,EAAE,aAAa,EAAI,SACnB,EAAE,mBAAmB,EAAI,SACzB,EAAE,eAAe,EAAI,SACrB,EAAE,cAAgB,cAClB,EAAE,oBAAoB,EAAI,aAC1B,EAAE,0BAA0B,EAAI,mBAChC,EAAE,sBAAsB,EAAI,eAC5B,EAAE,gBAAkB,cACpB,EAAE,sBAAsB,EAAI,aAC5B,EAAE,4BAA4B,EAAI,mBAClC,EAAE,8BAA8B,EAAI,mBACpC,EAAE,wBAAwB,EAAI,aAC9B,EAAE,wBAAwB,EAAI,eAC9B,EAAE,0BAA0B,EAAI,eAChC,EAAE,kBAAoB,cACtB,EAAE,wBAAwB,EAAI,aAC9B,EAAE,8BAA8B,EAAI,mBACpC,EAAE,0BAA0B,EAAI,cAClC,CAAC,EACKwrD,GAAuBxrD,GAAsB,SAAU,EAAG,CAC9D,EAAE,QAAU,iBACZ,EAAE,cAAc,EAAI,qBACpB,EAAE,qBAAqB,EAAI,2BAC3B,EAAE,iBAAiB,EAAI,uBACvB,EAAE,UAAY,6BACd,EAAE,gBAAgB,EAAI,0BACtB,EAAE,uBAAuB,EAAI,gCAC7B,EAAE,mBAAmB,EAAI,4BACzB,EAAE,aAAa,EAAI,iBACnB,EAAE,YAAY,EAAI,qBAClB,EAAE,kBAAkB,EAAI,2BACxB,EAAE,cAAc,EAAI,uBACpB,EAAE,OAAS,kBACX,EAAE,aAAe,oBACjB,EAAE,wBAAwB,EAAI,6BAC9B,EAAE,qBAAqB,EAAI,0BAC3B,EAAE,uBAAuB,EAAI,4BAC7B,EAAE,2BAA2B,EAAI,+BACnC,CAAC,EACKyrD,GAAmBzrD,GAAsB,SAAU,EAAG,CAC1D,EAAE,QAAU,YACZ,EAAE,cAAc,EAAI,iBACpB,EAAE,oBAAoB,EAAI,wBAC1B,EAAE,gBAAgB,EAAI,oBACtB,EAAE,cAAgB,YAClB,EAAE,oBAAoB,EAAI,iBAC1B,EAAE,0BAA0B,EAAI,wBAChC,EAAE,sBAAsB,EAAI,oBAC5B,EAAE,YAAc,gBAChB,EAAE,kBAAkB,EAAI,qBACxB,EAAE,wBAAwB,EAAI,2BAC9B,EAAE,oBAAoB,EAAI,uBAC1B,EAAE,WAAa,YACf,EAAE,iBAAiB,EAAI,iBACvB,EAAE,uBAAuB,EAAI,wBAC7B,EAAE,mBAAmB,EAAI,oBACzB,EAAE,OAAS,YACX,EAAE,gBAAgB,EAAI,iBACtB,EAAE,sBAAsB,EAAI,wBAC5B,EAAE,gBAAgB,EAAI,YACtB,EAAE,sBAAsB,EAAI,oBAC5B,EAAE,kBAAkB,EAAI,YACxB,EAAE,wBAAwB,EAAI,oBAC9B,EAAE,cAAgB,UAClB,EAAE,oBAAoB,EAAI,eAC1B,EAAE,0BAA0B,EAAI,sBAChC,EAAE,sBAAsB,EAAI,kBAC5B,EAAE,iBAAiB,EAAI,iBACvB,EAAE,WAAW,EAAI,YACjB,EAAE,gBAAgB,EAAI,iBACtB,EAAE,sBAAsB,EAAI,uBAC5B,EAAE,kBAAkB,EAAI,mBACxB,EAAE,WAAW,EAAI,YACjB,EAAE,gBAAgB,EAAI,iBACtB,EAAE,sBAAsB,EAAI,uBAC5B,EAAE,kBAAkB,EAAI,mBACxB,EAAE,YAAY,EAAI,aAClB,EAAE,iBAAiB,EAAI,kBACvB,EAAE,uBAAuB,EAAI,wBAC7B,EAAE,mBAAmB,EAAI,oBACzB,EAAE,YAAY,EAAI,aAClB,EAAE,iBAAiB,EAAI,kBACvB,EAAE,uBAAuB,EAAI,wBAC7B,EAAE,mBAAmB,EAAI,oBACzB,EAAE,cAAgB,eAClB,EAAE,cAAgB,YAClB,EAAE,YAAc,YAChB,EAAE,kBAAkB,EAAI,iBACxB,EAAE,wBAAwB,EAAI,wBAC9B,EAAE,oBAAoB,EAAI,mBAC5B,CAAC,EACK0rD,GAAgB1rD,GAAsB,SAAU,EAAG,CACvD,EAAE,cAAc,EAAI,GACpB,EAAE,YAAY,EAAI,GAClB,EAAE,SAAW,GACb,EAAE,MAAQ,GACV,EAAE,WAAa,GACf,EAAE,SAAW,GACb,EAAE,qBAAqB,EAAI,GAC3B,EAAE,QAAU,GACZ,EAAE,KAAO,GACT,EAAE,KAAO,GACT,EAAE,MAAQ,GACV,EAAE,OAAS,GACX,EAAE,YAAc,GAChB,EAAE,KAAO,GACT,EAAE,MAAQ,GACV,EAAE,kBAAkB,EAAI,GACxB,EAAE,SAAW,GACb,EAAE,oBAAoB,EAAI,GAC1B,EAAE,iBAAiB,EAAI,GACvB,EAAE,eAAe,EAAI,GACrB,EAAE,OAAS,GACX,EAAE,cAAc,EAAI,GACpB,EAAE,cAAc,EAAI,GACpB,EAAE,QAAU,GACZ,EAAE,gBAAgB,EAAI,GACtB,EAAE,gBAAgB,EAAI,GACtB,EAAE,QAAU,GACZ,EAAE,QAAU,GACZ,EAAE,SAAW,GACb,EAAE,QAAU,GACZ,EAAE,QAAU,GACZ,EAAE,OAAS,GACX,EAAE,OAAS,GACX,EAAE,QAAU,GACZ,EAAE,mBAAmB,EAAI,GACzB,EAAE,oBAAoB,EAAI,GAC1B,EAAE,UAAY,GACd,EAAE,YAAY,EAAI,GAClB,EAAE,WAAa,GACf,EAAE,aAAa,EAAI,GACnB,EAAE,UAAY,GACd,EAAE,UAAY,GACd,EAAE,OAAS,GACX,EAAE,QAAU,GACZ,EAAE,iBAAiB,EAAI,GACvB,EAAE,gBAAgB,EAAI,GACtB,EAAE,WAAa,GACf,EAAE,cAAc,EAAI,GACpB,EAAE,OAAS,GACX,EAAE,QAAU,GACZ,EAAE,WAAa,GACf,EAAE,SAAW,GACb,EAAE,UAAY,GACd,EAAE,UAAY,GACd,EAAE,UAAU,EAAI,GAChB,EAAE,QAAU,GACZ,EAAE,UAAY,GACd,EAAE,UAAY,GACd,EAAE,eAAe,EAAI,GACrB,EAAE,SAAW,GACb,EAAE,QAAU,GACZ,EAAE,QAAU,GACZ,EAAE,WAAa,GACf,EAAE,iBAAiB,EAAI,GACvB,EAAE,kBAAkB,EAAI,GACxB,EAAE,gBAAgB,EAAI,GACtB,EAAE,QAAU,GACZ,EAAE,mBAAmB,EAAI,GACzB,EAAE,QAAU,GACZ,EAAE,SAAW,GACb,EAAE,iBAAiB,EAAI,GACvB,EAAE,UAAY,GACd,EAAE,cAAc,EAAI,GACpB,EAAE,cAAc,EAAI,GACpB,EAAE,QAAU,GACZ,EAAE,aAAa,EAAI,GACnB,EAAE,OAAS,GACX,EAAE,OAAS,GACX,EAAE,QAAU,GACZ,EAAE,QAAU,GACZ,EAAE,gBAAkB,GACpB,EAAE,kBAAkB,EAAI,GACxB,EAAE,iBAAiB,EAAI,GACvB,EAAE,cAAgB,GAClB,EAAE,OAAS,GACX,EAAE,eAAe,EAAI,GACrB,EAAE,OAAS,GACX,EAAE,QAAU,GACZ,EAAE,OAAS,GACX,EAAE,OAAS,GACX,EAAE,OAAS,GACX,EAAE,WAAW,EAAI,GACjB,EAAE,WAAW,EAAI,GACjB,EAAE,UAAU,EAAI,GAChB,EAAE,YAAY,EAAI,GAClB,EAAE,UAAU,EAAI,GAChB,EAAE,cAAc,EAAI,GACpB,EAAE,uBAAuB,EAAI,GAC7B,EAAE,cAAgB,GAClB,EAAE,SAAW,GACb,EAAE,SAAW,GACb,EAAE,QAAU,GACZ,EAAE,oBAAoB,EAAI,GAC1B,EAAE,SAAW,GACb,EAAE,cAAc,EAAI,GACpB,EAAE,mBAAmB,EAAI,GACzB,EAAE,QAAU,GACZ,EAAE,QAAU,GACZ,EAAE,SAAW,GACb,EAAE,MAAQ,GACV,EAAE,aAAa,EAAI,GACnB,EAAE,MAAQ,GACV,EAAE,MAAQ,GACV,EAAE,QAAU,GACZ,EAAE,QAAU,GACZ,EAAE,SAAW,GACb,EAAE,KAAO,GACT,EAAE,gBAAgB,EAAI,GACtB,EAAE,aAAa,EAAI,GACnB,EAAE,QAAU,GACZ,EAAE,MAAQ,GACV,EAAE,OAAS,GACX,EAAE,QAAa,GACf,EAAE,iBAAiB,EAAI,GACvB,EAAE,OAAS,GACX,EAAE,WAAW,EAAI,GACjB,EAAE,gBAAgB,EAAI,GACtB,EAAE,YAAY,EAAI,GAClB,EAAE,WAAa,GACf,EAAE,OAAS,GACX,EAAE,MAAQ,GACV,EAAE,YAAY,EAAI,GAClB,EAAE,QAAU,GACZ,EAAE,KAAO,EACX,CAAC,EACK2rD,GAAkB3rD,GAAsB,SAAU,EAAG,CACzD,EAAE,SAAW,GACb,EAAE,OAAS,GACX,EAAE,aAAe,GACjB,EAAE,UAAY,GACd,EAAE,gBAAgB,EAAI,GACtB,EAAE,mBAAmB,EAAI,EAC3B,CAAC,EACK4rD,GAAgC5rD,GAAsB,SAAU,EAAG,CACvE,MAAM6rD,EAAgB3N,GAAgB,EACtC,EAAE,CAAC,EAAI,GACP,QAASkK,EAAM,EAAGA,EAAM9I,GAAyB,OAAQ8I,IAAO,CAC9D,MAAM5J,EAAUqN,EAAcvM,GAAyB8I,CAAG,CAAC,EACvD5J,IAAY,SACd,EAAE4J,CAAG,EAAI5J,EAEb,CACF,CAAC,EACKsN,GAA8B9rD,GAAsB,SAAU,EAAG,CACrE,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,GACP,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,IACZ,CAAC,EACK+rD,GAAwC/rD,GAAsB,SAAU,EAAG,CAC/E,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACX,CAAC,EACKgsD,GAAuChsD,GAAsB,SAAU,EAAG,CAC9E,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACX,CAAC,EACKisD,GAAoCjsD,GAAsB,SAAU,EAAG,CAC3E,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,IACP,EAAE,CAAC,EAAI,IACP,EAAE,CAAC,EAAI,IACP,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,GACV,EAAE,IAAI,EAAI,EACZ,CAAC,EACD,SAASksD,GAAoB74D,EAAM,CACjC,MAAM84D,EAAWjM,GAAkB7sD,CAAI,EAEvC,OADmBk4D,GAAa,EACdY,CAAQ,CAC5B,CACA,SAASC,GAAgB/4D,EAAM,CAC7B,MAAM84D,EAAWjM,GAAkB7sD,CAAI,EACvC,MAAO,CAAC,EAAEk4D,GAAa,EAAGY,CAAQ,GAAKV,GAAgB,EAAGU,CAAQ,GAAKT,GAAa,EAAGS,CAAQ,GAAKR,GAAe,EAAGQ,CAAQ,EAChI,CAIA,MAAME,GAAiB,EACjBC,GAAiB,EACjBC,GAAiB,EACjBC,GAAc,EACdC,GAAuC,GACvCC,GAAuC,GACvCC,GAAiB,GACjBC,GAAwB,EACxBC,GAAqB,EACrBC,GAAkB,EAClBC,GAAkB,GAClBC,GAA2B,GAC3BC,GAAuB,IACvBC,GAAuB,IACvBC,GAAoB,GAC1B,MAAMC,EAAU,CACd,YAAY,CACV,UAAAC,EACA,qBAAAC,EACA,UAAAC,EACA,UAAA5C,CACJ,EAAK,CACD,KAAK,OAAS,CAAA,EACd,MAAM6C,EAAO,IAAI,SAASD,EAAU,OAAQA,EAAU,WAAYA,EAAU,UAAU,EAChFE,EAAO,IAAI,SAASJ,EAAU,OAAQA,EAAU,WAAYA,EAAU,UAAU,EAChFxI,EAAayI,EAAuB,EAAI,EAC9C,IAAII,EAAOJ,EAAuBE,EAAK,UAAU,CAAC,EAAI,EAAIA,EAAK,UAAU,CAAC,EACtE/3D,EAAM,EACV,QAASpB,EAAI,EAAGA,EAAIs2D,EAAWt2D,IAAK,CAClCoB,GAAOovD,EACP,MAAMxuB,EAAOi3B,EAAuBE,EAAK,UAAU/3D,CAAG,EAAI,EAAI+3D,EAAK,UAAU/3D,CAAG,EAChF,GAAI4gC,IAASq3B,EAAM,CACjB,KAAK,OAAO,KAAK,IAAIC,GAAM,CAAA,CAAE,CAAC,EAC9B,QACF,CACA,MAAMjD,EAAQiD,GAAM,MAAMD,EAAMD,CAAI,EACpC,KAAK,OAAO,KAAK/C,CAAK,EACtBgD,EAAOr3B,CACT,CACF,CACA,SAAU,CACR,OAAO,KAAK,WAAW,KAAK,OAAO,IAAInhC,GAAKA,EAAE,QAAO,EAAK,EAAI,EAAE,CAAC,CACnE,CACA,OAAQ,CACN,MAAM6tC,EAAY,KAAK,QAAO,EACxBsqB,EAAY,IAAI,SAAS,IAAI,YAAYtqB,CAAS,CAAC,EACnD6qB,EAAiB7qB,EAAY,OAC7B8hB,EAAa+I,EAAiB,EAAI,EAClCL,EAAY,IAAI,SAAS,IAAI,aAAa,KAAK,OAAO,OAAS,GAAK1I,CAAU,CAAC,EACjF+I,EACFL,EAAU,UAAU,EAAG,CAAC,EAExBA,EAAU,UAAU,EAAG,CAAC,EAE1B,IAAI93D,EAAM,EACNo4D,EAAY,EAChB,UAAWnD,KAAS,KAAK,OACvBj1D,GAAOi1D,EAAM,MAAMj1D,EAAK43D,CAAS,EACjC53D,EAAMA,EAAM,EAAI,GAChBo4D,GAAahJ,EACT+I,EACFL,EAAU,UAAUM,EAAWp4D,CAAG,EAElC83D,EAAU,UAAUM,EAAWp4D,GAAO,CAAC,EAG3C,MAAO,CACL,eAAAm4D,EACA,KAAM,IAAI,WAAWL,EAAU,MAAM,EACrC,KAAM,IAAI,WAAWF,EAAU,MAAM,CAC3C,CACE,CACA,MAAMS,EAAS,CACb,QAASz5D,EAAI,EAAGmF,EAAK,KAAK,OAAO,OAAQnF,EAAImF,EAAInF,IAC/C,KAAK,OAAOA,CAAC,EAAE,MAAMy5D,EAAQz5D,CAAC,CAAC,CAEnC,CACF,CACA,MAAMs5D,EAAM,CACV,YAAY,CACV,OAAA/4B,EAAS,KACT,OAAAm5B,EAAS,KACT,WAAAC,EAAa,IACjB,EAAK,CACD,KAAK,OAASp5B,EACd,KAAK,OAASm5B,EACd,KAAK,WAAaC,CACpB,CACA,OAAO,MAAMv4D,EAAKg4D,EAAM,CACtB,KAAM,CAACQ,EAAMr5B,CAAM,EAAIs5B,GAAY,MAAMz4D,EAAKg4D,CAAI,EAElD,GADAh4D,GAAOw4D,EACHr5B,EAAO,iBAAmB,EAAG,CAC/B,MAAMo5B,EAAa,CAAA,EACnB,OAAa,CACX,KAAM,CAAC7vD,EAAGgwD,CAAS,EAAIC,GAAe,MAAM34D,EAAKg4D,CAAI,EAGrD,GAFAh4D,GAAO0I,EACP6vD,EAAW,KAAKG,CAAS,EACrB,EAAEA,EAAU,MAAQpB,IACtB,KAEJ,CACA,OAAO,IAAIY,GAAM,CACf,OAAA/4B,EACA,WAAAo5B,CACR,CAAO,CACH,CACA,MAAMD,EAASM,GAAY,MAAM54D,EAAKg4D,EAAM74B,EAAO,gBAAgB,EACnE,OAAO,IAAI+4B,GAAM,CACf,OAAA/4B,EACA,OAAAm5B,CACN,CAAK,CACH,CACA,SAAU,CACR,GAAI,CAAC,KAAK,OACR,MAAO,GAET,MAAMjzC,EAAO,KAAK,OAAS,KAAK,OAAO,UAAY,KAAK,WAAW,KAAK,WAAW,IAAItjB,GAAKA,EAAE,QAAO,CAAE,CAAC,EACxG,OAAO,KAAK,OAAO,QAAO,EAAKsjB,CACjC,CACA,MAAMrlB,EAAKsJ,EAAK,CACd,GAAI,CAAC,KAAK,OACR,MAAO,GAET,MAAMuvD,EAAO74D,EAEb,GADAA,GAAO,KAAK,OAAO,MAAMA,EAAKsJ,CAAG,EAC7B,KAAK,OACPtJ,GAAO,KAAK,OAAO,MAAMA,EAAKsJ,CAAG,MAEjC,WAAWovD,KAAa,KAAK,WAC3B14D,GAAO04D,EAAU,MAAM14D,EAAKsJ,CAAG,EAGnC,OAAOtJ,EAAM64D,CACf,CACA,MAAM11C,EAAQ,CACZ,GAAI,CAAC,KAAK,OACR,OAEF,MAAM21C,GAAW,KAAK,OAAO,KAAO,KAAK,OAAO,MAAQ,EAExD,GADA,KAAK,OAAO,MAAMA,EAAS31C,CAAM,EAC7B,KAAK,OACP,KAAK,OAAO,MAAM21C,EAAS31C,CAAM,MAEjC,WAAWu1C,KAAa,KAAK,WAC3BA,EAAU,MAAMI,EAAS31C,CAAM,CAGrC,CACF,CACA,MAAMs1C,EAAY,CAChB,YAAY,CACV,iBAAAM,EACA,KAAAC,EACA,KAAAC,EACA,KAAAC,EACA,KAAAC,CACJ,EAAK,CACD,KAAK,iBAAmBJ,EACxB,KAAK,KAAOC,EACZ,KAAK,KAAOC,EACZ,KAAK,KAAOC,EACZ,KAAK,KAAOC,CACd,CACA,OAAO,MAAMn5D,EAAKg4D,EAAM,CACtB,MAAO,CAACN,GAAmB,IAAIe,GAAY,CACzC,iBAAkBT,EAAK,SAASh4D,CAAG,EACnC,KAAMg4D,EAAK,SAASh4D,EAAM,CAAC,EAC3B,KAAMg4D,EAAK,SAASh4D,EAAM,CAAC,EAC3B,KAAMg4D,EAAK,SAASh4D,EAAM,CAAC,EAC3B,KAAMg4D,EAAK,SAASh4D,EAAM,CAAC,CACjC,CAAK,CAAC,CACJ,CACA,SAAU,CACR,OAAO03D,EACT,CACA,MAAM13D,EAAKsJ,EAAK,CACd,OAAAA,EAAI,SAAStJ,EAAK,KAAK,gBAAgB,EACvCsJ,EAAI,SAAStJ,EAAM,EAAG,KAAK,IAAI,EAC/BsJ,EAAI,SAAStJ,EAAM,EAAG,KAAK,IAAI,EAC/BsJ,EAAI,SAAStJ,EAAM,EAAG,KAAK,IAAI,EAC/BsJ,EAAI,SAAStJ,EAAM,EAAG,KAAK,IAAI,EACxB03D,EACT,CACA,MAAMl1D,EAAG2gB,EAAQ,CACf,KAAK,KAAO,KAAK,MAAM3gB,GAAK,KAAK,KAAOA,GAAK2gB,CAAM,EACnD,KAAK,KAAO,KAAK,MAAM3gB,GAAK,KAAK,KAAOA,GAAK2gB,CAAM,CACrD,CACF,CACA,MAAMi2C,EAAQ,CACZ,YAAY,CACV,MAAAC,EACA,aAAAC,EACA,aAAAC,CACJ,EAAK,CACD,KAAK,aAAeD,EACpB,KAAK,aAAeC,EACpB,KAAK,MAAQF,CACf,CACF,CACA,MAAMT,EAAY,CAChB,YAAY,CACV,SAAAY,EACA,aAAAC,CACJ,EAAK,CACD,KAAK,SAAWD,EAChB,KAAK,aAAeC,CACtB,CACA,OAAO,MAAMz5D,EAAKg4D,EAAMe,EAAkB,CACxC,MAAMW,EAAmB,CAAA,EACzB,QAAS96D,EAAI,EAAGA,EAAIm6D,EAAkBn6D,IAAK,CACzC,MAAM+6D,EAAQ3B,EAAK,UAAUh4D,CAAG,EAChCA,GAAO,EACP05D,EAAiB,KAAKC,CAAK,CAC7B,CACA,MAAMC,EAAaF,EAAiBX,EAAmB,CAAC,EAAI,EACtDc,EAAoB7B,EAAK,UAAUh4D,CAAG,EAC5CA,GAAO,EACP,MAAMy5D,EAAe,IAAI,WAAWzB,CAAI,EAAE,MAAMh4D,EAAKA,EAAM65D,CAAiB,EAC5E75D,GAAO65D,EACP,MAAMR,EAAQ,CAAA,EACd,QAASz6D,EAAI,EAAGA,EAAIg7D,EAAY55D,IAAOpB,IAAK,CAC1C,IAAIk7D,EAAO9B,EAAK,SAASh4D,CAAG,EAE5B,GADAq5D,EAAM,KAAKS,CAAI,EACXA,EAAO/C,GAAa,CACtB,MAAMnmD,EAAQonD,EAAK,SAAS,EAAEh4D,CAAG,EACjC85D,GAAQ/C,GACR,QAASl3D,EAAI,EAAGA,EAAI+Q,EAAO/Q,IACzBw5D,EAAM,KAAKS,CAAI,EAEjBl7D,GAAKgS,CACP,CACF,CACA,MAAMmpD,EAAkB,CAAA,EACxB,IAAIT,EAAe,CAAA,EACfC,EAAe,CAAA,EACfS,EAAa,CAAA,EACjB,MAAMR,EAAW,CAAA,EACjB,IAAIS,EAAwB,EACxBC,EAAiB,EACrB,QAASt7D,EAAI,EAAGA,EAAIg7D,EAAYh7D,IAAK,CACnC,MAAMk7D,EAAOT,EAAMz6D,CAAC,EACpB,GAAIk7D,EAAOjD,GAAgB,CACzB,MAAM,EAAImB,EAAK,SAASh4D,GAAK,EAC7Bk6D,GAAkBJ,EAAO9C,GAAuC,EAAI,CAAC,EACrEsC,EAAa,KAAKY,CAAc,CAClC,MAAWJ,EAAO9C,KAGhBkD,GAAkBlC,EAAK,SAASh4D,CAAG,EACnCA,GAAO,GACPs5D,EAAa,KAAKY,CAAc,EAE9BR,EAAiBO,CAAqB,IAAMr7D,IAC9Cq7D,IACAF,EAAgB,KAAKT,CAAY,EACjCA,EAAe,CAAA,EAEnB,CACAY,EAAiB,EACjBD,EAAwB,EACxB,QAASr7D,EAAI,EAAGA,EAAIg7D,EAAYh7D,IAAK,CACnC,MAAMk7D,EAAOT,EAAMz6D,CAAC,EACpB,GAAIk7D,EAAOhD,GAAgB,CACzB,MAAMr0D,EAAIu1D,EAAK,SAASh4D,GAAK,EAC7Bk6D,GAAkBJ,EAAO7C,GAAuCx0D,EAAI,CAACA,EACrE82D,EAAa,KAAKW,CAAc,CAClC,MAAWJ,EAAO7C,KAGhBiD,GAAkBlC,EAAK,SAASh4D,CAAG,EACnCA,GAAO,GACPu5D,EAAa,KAAKW,CAAc,EAElCF,EAAW,KAAKF,EAAOlD,GAAiBkD,EAAO5C,EAAc,EACzDwC,EAAiBO,CAAqB,IAAMr7D,IAC9C06D,EAAeS,EAAgBE,CAAqB,EACpDA,IACAT,EAAS,KAAK,IAAIJ,GAAQ,CACxB,MAAOY,EACP,aAAAV,EACA,aAAAC,CACV,CAAS,CAAC,EACFA,EAAe,CAAA,EACfS,EAAa,CAAA,EAEjB,CACA,OAAO,IAAIpB,GAAY,CACrB,SAAAY,EACA,aAAAC,CACN,CAAK,CACH,CACA,SAAU,CACR,IAAIp0C,EAAO,KAAK,SAAS,OAAS,EAAI,EAAI,KAAK,aAAa,OACxD80C,EAAQ,EACRC,EAAQ,EACZ,UAAWC,KAAW,KAAK,SAAU,CACnCh1C,GAAQg1C,EAAQ,MAAM,OACtB,QAAS,EAAI,EAAGt2D,EAAKs2D,EAAQ,aAAa,OAAQ,EAAIt2D,EAAI,IAAK,CAC7D,MAAMvB,EAAI63D,EAAQ,aAAa,CAAC,EAC1B53D,EAAI43D,EAAQ,aAAa,CAAC,EAChC,IAAIC,EAAM,KAAK,IAAI93D,EAAI23D,CAAK,EACxBG,EAAM,IACRj1C,GAAQ,EACCi1C,EAAM,IACfj1C,GAAQ,GAEV80C,EAAQ33D,EACR83D,EAAM,KAAK,IAAI73D,EAAI23D,CAAK,EACpBE,EAAM,IACRj1C,GAAQ,EACCi1C,EAAM,IACfj1C,GAAQ,GAEV+0C,EAAQ33D,CACV,CACF,CACA,OAAO4iB,CACT,CACA,MAAMrlB,EAAKsJ,EAAK,CACd,MAAMuvD,EAAO74D,EACPs5D,EAAe,CAAA,EACfC,EAAe,CAAA,EACfF,EAAQ,CAAA,EACd,IAAIc,EAAQ,EACRC,EAAQ,EACZ,UAAWC,KAAW,KAAK,SAAU,CACnC,QAASz7D,EAAI,EAAGmF,EAAKs2D,EAAQ,aAAa,OAAQz7D,EAAImF,EAAInF,IAAK,CAC7D,IAAIk7D,EAAOO,EAAQ,MAAMz7D,CAAC,EAC1B,MAAM4D,EAAI63D,EAAQ,aAAaz7D,CAAC,EAChC,IAAI6E,EAAQjB,EAAI23D,EAChB,GAAI12D,IAAU,EACZq2D,GAAQ9C,GACRsC,EAAa,KAAK,CAAC,MACd,CACL,MAAMgB,EAAM,KAAK,IAAI72D,CAAK,EACtB62D,GAAO,KACTR,GAAQr2D,GAAS,EAAIozD,GAAiBG,GAAuCH,GAC7EyC,EAAa,KAAKgB,CAAG,GAErBhB,EAAa,KAAK71D,CAAK,CAE3B,CACA02D,EAAQ33D,EACR,MAAMC,EAAI43D,EAAQ,aAAaz7D,CAAC,EAEhC,GADA6E,EAAQhB,EAAI23D,EACR32D,IAAU,EACZq2D,GAAQ7C,GACRsC,EAAa,KAAK,CAAC,MACd,CACL,MAAMe,EAAM,KAAK,IAAI72D,CAAK,EACtB62D,GAAO,KACTR,GAAQr2D,GAAS,EAAIqzD,GAAiBG,GAAuCH,GAC7EyC,EAAa,KAAKe,CAAG,GAErBf,EAAa,KAAK91D,CAAK,CAE3B,CACA22D,EAAQ33D,EACR42D,EAAM,KAAKS,CAAI,CACjB,CACAxwD,EAAI,UAAUtJ,EAAKs5D,EAAa,OAAS,CAAC,EAC1Ct5D,GAAO,CACT,CACAsJ,EAAI,UAAUtJ,EAAK,KAAK,aAAa,MAAM,EAC3CA,GAAO,EACH,KAAK,aAAa,SACpB,IAAI,WAAWsJ,EAAI,OAAQ,EAAGA,EAAI,OAAO,UAAU,EAAE,IAAI,KAAK,aAActJ,CAAG,EAC/EA,GAAO,KAAK,aAAa,QAE3B,UAAW85D,KAAQT,EACjB/vD,EAAI,SAAStJ,IAAO85D,CAAI,EAE1B,QAASl7D,EAAI,EAAGmF,EAAKu1D,EAAa,OAAQ16D,EAAImF,EAAInF,IAAK,CACrD,MAAM4D,EAAI82D,EAAa16D,CAAC,EAClBk7D,EAAOT,EAAMz6D,CAAC,EAChBk7D,EAAOjD,GACTvtD,EAAI,SAAStJ,IAAOwC,CAAC,EACVs3D,EAAO9C,KAClB1tD,EAAI,SAAStJ,EAAKwC,CAAC,EACnBxC,GAAO,EAEX,CACA,QAASpB,EAAI,EAAGmF,EAAKw1D,EAAa,OAAQ36D,EAAImF,EAAInF,IAAK,CACrD,MAAM6D,EAAI82D,EAAa36D,CAAC,EAClBk7D,EAAOT,EAAMz6D,CAAC,EAChBk7D,EAAOhD,GACTxtD,EAAI,SAAStJ,IAAOyC,CAAC,EACVq3D,EAAO7C,KAClB3tD,EAAI,SAAStJ,EAAKyC,CAAC,EACnBzC,GAAO,EAEX,CACA,OAAOA,EAAM64D,CACf,CACA,MAAMr2D,EAAG2gB,EAAQ,CACf,UAAWk3C,KAAW,KAAK,SACzB,GAAIA,EAAQ,aAAa,SAAW,EAGpC,QAASz7D,EAAI,EAAGmF,EAAKs2D,EAAQ,aAAa,OAAQz7D,EAAImF,EAAInF,IACxDy7D,EAAQ,aAAaz7D,CAAC,EAAI,KAAK,MAAM4D,GAAK63D,EAAQ,aAAaz7D,CAAC,EAAI4D,GAAK2gB,CAAM,CAGrF,CACF,CACA,MAAMw1C,EAAe,CACnB,YAAY,CACV,MAAAU,EACA,WAAA/F,EACA,UAAAiH,EACA,UAAAC,EACA,OAAAC,EACA,aAAAhB,CACJ,EAAK,CACD,KAAK,MAAQJ,EACb,KAAK,WAAa/F,EAClB,KAAK,UAAYiH,EACjB,KAAK,UAAYC,EACjB,KAAK,OAASC,EACd,KAAK,aAAehB,CACtB,CACA,OAAO,MAAMz5D,EAAKg4D,EAAM,CACtB,MAAMa,EAAO74D,EACPy6D,EAAS,CAAA,EACf,IAAIpB,EAAQrB,EAAK,UAAUh4D,CAAG,EAC9B,MAAMszD,EAAa0E,EAAK,UAAUh4D,EAAM,CAAC,EACzCA,GAAO,EACP,IAAIu6D,EAAWC,EACXnB,EAAQlC,IACNkC,EAAQjC,IACVmD,EAAYvC,EAAK,SAASh4D,CAAG,EAC7Bw6D,EAAYxC,EAAK,SAASh4D,EAAM,CAAC,IAEjCu6D,EAAYvC,EAAK,UAAUh4D,CAAG,EAC9Bw6D,EAAYxC,EAAK,UAAUh4D,EAAM,CAAC,GAEpCA,GAAO,EACPq5D,GAASlC,KAELkC,EAAQjC,IACVmD,EAAYvC,EAAK,QAAQh4D,CAAG,EAC5Bw6D,EAAYxC,EAAK,QAAQh4D,EAAM,CAAC,IAEhCu6D,EAAYvC,EAAK,SAASh4D,CAAG,EAC7Bw6D,EAAYxC,EAAK,SAASh4D,EAAM,CAAC,GAEnCA,GAAO,GAELq5D,EAAQhC,IACVoD,EAAO,KAAKzC,EAAK,UAAUh4D,CAAG,CAAC,EAC/BA,GAAO,GACEq5D,EAAQ9B,IACjBkD,EAAO,KAAKzC,EAAK,UAAUh4D,CAAG,EAAGg4D,EAAK,UAAUh4D,EAAM,CAAC,CAAC,EACxDA,GAAO,GACEq5D,EAAQ7B,KACjBiD,EAAO,KAAKzC,EAAK,UAAUh4D,CAAG,EAAGg4D,EAAK,UAAUh4D,EAAM,CAAC,EAAGg4D,EAAK,UAAUh4D,EAAM,CAAC,EAAGg4D,EAAK,UAAUh4D,EAAM,CAAC,CAAC,EAC1GA,GAAO,GAET,IAAIy5D,EAAe,KACnB,GAAIJ,EAAQ5B,GAAsB,CAChC,MAAMoC,EAAoB7B,EAAK,UAAUh4D,CAAG,EAC5CA,GAAO,EACPy5D,EAAe,IAAI,WAAWzB,CAAI,EAAE,MAAMh4D,EAAKA,EAAM65D,CAAiB,EACtE75D,GAAO65D,CACT,CACA,MAAO,CAAC75D,EAAM64D,EAAM,IAAIF,GAAe,CACrC,MAAAU,EACA,WAAA/F,EACA,UAAAiH,EACA,UAAAC,EACA,OAAAC,EACA,aAAAhB,CACN,CAAK,CAAC,CACJ,CACA,SAAU,CACR,IAAIp0C,EAAO,EAAQ,KAAK,OAAO,OAAS,EACxC,OAAI,KAAK,MAAQoyC,KACfpyC,GAAQ,EAAI,KAAK,aAAa,QAEhCA,GAAQ,EACJ,KAAK,MAAQ,EACT,KAAK,WAAa,MAAQ,KAAK,WAAa,KAAO,KAAK,WAAa,MAAQ,KAAK,WAAa,MACnGA,GAAQ,GAEC,KAAK,WAAa,GAAK,KAAK,WAAa,KAAO,KAAK,WAAa,GAAK,KAAK,WAAa,MACpGA,GAAQ,GAEHA,CACT,CACA,MAAMrlB,EAAKsJ,EAAK,CACd,MAAMuvD,EAAO74D,EACb,OAAI,KAAK,MAAQo3D,GACT,KAAK,WAAa,MAAQ,KAAK,WAAa,KAAO,KAAK,WAAa,MAAQ,KAAK,WAAa,MACnG,KAAK,OAASD,IAEL,KAAK,WAAa,GAAK,KAAK,WAAa,KAAO,KAAK,WAAa,GAAK,KAAK,WAAa,MACpG,KAAK,OAASA,IAEhB7tD,EAAI,UAAUtJ,EAAK,KAAK,KAAK,EAC7BsJ,EAAI,UAAUtJ,EAAM,EAAG,KAAK,UAAU,EACtCA,GAAO,EACH,KAAK,MAAQm3D,IACX,KAAK,MAAQC,IACf9tD,EAAI,SAAStJ,EAAK,KAAK,SAAS,EAChCsJ,EAAI,SAAStJ,EAAM,EAAG,KAAK,SAAS,IAEpCsJ,EAAI,UAAUtJ,EAAK,KAAK,SAAS,EACjCsJ,EAAI,UAAUtJ,EAAM,EAAG,KAAK,SAAS,GAEvCA,GAAO,IAEPsJ,EAAI,SAAStJ,EAAK,KAAK,SAAS,EAChCsJ,EAAI,SAAStJ,EAAM,EAAG,KAAK,SAAS,EACpCA,GAAO,GAEL,KAAK,MAAQy3D,KACfnuD,EAAI,UAAUtJ,EAAK,KAAK,aAAa,MAAM,EAC3CA,GAAO,EACH,KAAK,aAAa,SACpB,IAAI,WAAWsJ,EAAI,OAAQ,EAAGA,EAAI,OAAO,UAAU,EAAE,IAAI,KAAK,aAActJ,CAAG,EAC/EA,GAAO,KAAK,aAAa,SAGtBA,EAAM64D,CACf,CACA,MAAMr2D,EAAG2gB,EAAQ,CAAC,CACpB,CACA,SAASu3C,GAA0B9C,EAAW+C,EAAazF,EAAW,CACpE,MAAM8C,EAAO,IAAI,SAASJ,EAAU,OAAQA,EAAU,WAAYA,EAAU,UAAU,EAChF/uC,EAAa,IAAI,MAAMqsC,CAAS,EACtC,QAASt2D,EAAI,EAAGA,EAAIs2D,EAAWt2D,IAAK,CAClC,MAAMiU,EAAS8nD,EAAY/7D,CAAC,EAAE,OACxB+uB,EAAY,KAAK,IAAIgtC,EAAY/7D,CAAC,EAAE,UAAWo5D,EAAK,UAAU,EACpE,GAAIrqC,EAAY9a,GAAU6kD,IAAqBM,EAAK,SAASnlD,CAAM,GAAK,EACtE,SAEF,MAAM8C,EAAQ,CAAA,EACd,IAAI5V,EAAI8S,EAAS6kD,GACjB,KAAO33D,EAAI,GAAK4tB,GAAW,CACzB,MAAM0rC,EAAQrB,EAAK,UAAUj4D,CAAC,EACxB4yD,EAAMqF,EAAK,UAAUj4D,EAAI,CAAC,EAChC,IAAIslB,EAAO,GAAKg0C,EAAQlC,GAAwB,EAAI,GAepD,GAdIkC,EAAQhC,GACVhyC,GAAQ,EACCg0C,EAAQ9B,GACjBlyC,GAAQ,EACCg0C,EAAQ7B,KACjBnyC,GAAQ,GAEV1P,EAAM,KAAK,CACT,IAAAg9C,EACA,OAAQ5yD,EACR,KAAAslB,EACA,MAAAg0C,CACR,CAAO,EACDt5D,GAAKslB,EACD,EAAEg0C,EAAQ/B,IACZ,KAEJ,CACI3hD,EAAM,SACRkT,EAAWjqB,CAAC,EAAI+W,EAEpB,CACA,MAAMilD,EAAQ,EACZC,EAAO,EACPC,EAAQ,EACJ9oC,EAAQ,IAAI,WAAWkjC,CAAS,EAChC6F,EAAY,IAAI,IACtB,QAASpyD,EAAQ,EAAGA,EAAQusD,EAAWvsD,IAAS,CAC9C,GAAIqpB,EAAMrpB,CAAK,IAAMiyD,GAAS,CAAC/xC,EAAWlgB,CAAK,EAC7C,SAEF,MAAMk2B,EAAQ,CAAC,CACb,KAAMl2B,EACN,IAAK,CACX,CAAK,EAED,IADAqpB,EAAMrpB,CAAK,EAAIkyD,EACRh8B,EAAM,OAAS,GAAG,CACvB,MAAMm8B,EAAMn8B,EAAM,GAAG,EAAE,EACjBlpB,EAAQkT,EAAWmyC,EAAI,IAAI,EACjC,GAAI,CAACrlD,GAASqlD,EAAI,KAAOrlD,EAAM,OAAQ,CACrCqc,EAAMgpC,EAAI,IAAI,EAAIF,EAClBj8B,EAAM,IAAG,EACT,QACF,CACA,MAAMo8B,EAAUD,EAAI,MACdp6B,EAAOjrB,EAAMslD,CAAO,EAAE,IAC5B,GAAI,EAAAr6B,GAAQs0B,GAAaljC,EAAM4O,CAAI,IAAMk6B,GAGzC,IAAI9oC,EAAM4O,CAAI,IAAMg6B,EAAO,CACzB5oC,EAAM4O,CAAI,EAAIi6B,EACdh8B,EAAM,KAAK,CACT,KAAM+B,EACN,IAAK,CACf,CAAS,EACD,QACF,CACAm6B,EAAU,oBAAoBC,EAAI,KAAM/1D,EAAO,EAAE,IAAIg2D,CAAO,EAC9D,CACF,CACA,MAAMC,EAAgB,IAAI,IAC1B,SAAW,CAACC,EAAMC,CAAS,IAAKL,EAAW,CACzC,MAAMplD,EAAQkT,EAAWsyC,CAAI,EACvBE,EAAY,CAAA,EAClB,QAASnhC,EAAK,EAAGA,EAAKvkB,EAAM,OAAQukB,IAC7BkhC,EAAU,IAAIlhC,CAAE,GACnBmhC,EAAU,KAAK1lD,EAAMukB,CAAE,CAAC,EAG5B,GAAImhC,EAAU,SAAW,EAAG,CAC1BH,EAAc,IAAIC,CAAI,EACtB,QACF,CACA,MAAMxyD,EAAQgyD,EAAYQ,CAAI,EAAE,OAC1BxtC,EAAY,KAAK,IAAIgtC,EAAYQ,CAAI,EAAE,UAAWnD,EAAK,UAAU,EACvE,IAAIsD,EAAW3yD,EAAQ+uD,GACvB,QAASx9B,EAAK,EAAGA,EAAKmhC,EAAU,OAAQnhC,IAAM,CAC5C,MAAMn4B,EAAIs5D,EAAUnhC,CAAE,EAChBqhC,EAASrhC,IAAOmhC,EAAU,OAAS,EACzC,IAAIG,EAAWz5D,EAAE,MAAQ,CAAC01D,GAC1B+D,EAAWD,EAASC,EAAW,CAAClE,GAAkBkE,EAAWlE,GACzDgE,IAAav5D,EAAE,QACjB61D,EAAU,WAAW0D,EAAUv5D,EAAE,OAAQA,EAAE,OAASA,EAAE,IAAI,EAE5Di2D,EAAK,UAAUsD,EAAUE,CAAQ,EACjCF,GAAYv5D,EAAE,IAChB,CACIu5D,EAAW3tC,GACbiqC,EAAU,KAAK,EAAG0D,EAAU3tC,CAAS,CAEzC,CACA,OAAOutC,CACT,CAIA,MAAMO,EAAa,CACjB,YAAYC,EAAO,GAAI,CACrB,KAAK,KAAOA,CACd,CACA,IAAI,QAAS,CACX,OAAO,KAAK,KAAK,MACnB,CACA,QAAQj0D,EAAU,CAChB,UAAWwC,KAAY,KAAK,KAC1BxC,EAASwC,EAAU,KAAK,KAAKA,CAAQ,EAAE,YAAY,CAAC,CAAC,CAEzD,CACA,IAAIrL,EAAG,CACL,OAAO,KAAK,KAAKA,CAAC,IAAM,MAC1B,CACA,IAAIA,EAAG,CACL,OAAO,KAAK,KAAKA,CAAC,CACpB,CACA,WAAWpB,EAAO,CAChB,MAAMkK,EAAM,KAAK,KACjB,GAAIA,EAAI,QAAU,MAChB,OAAOA,EAAI,QAAQlK,CAAK,EAE1B,UAAWyM,KAAYvC,EACrB,GAAIA,EAAIuC,CAAQ,IAAMzM,EACpB,OAAOyM,EAAW,EAGtB,MAAO,EACT,CACA,MAAMvC,EAAK,CACT,UAAWuC,KAAYvC,EACrB,KAAK,KAAKuC,CAAQ,EAAIvC,EAAIuC,CAAQ,CAEtC,CACF,CACA,MAAM0xD,EAAqB,CACzB,YAAYC,EAAWC,EAAU,CAC/B,KAAK,UAAYD,EACjB,KAAK,SAAWC,CAClB,CACA,IAAI,QAAS,CACX,OAAO,KAAK,SAAW,EAAI,KAAK,SAClC,CACA,QAAQp0D,EAAU,CAChB,QAAS7I,EAAI,KAAK,UAAWmF,EAAK,KAAK,SAAUnF,GAAKmF,EAAInF,IACxD6I,EAAS7I,EAAGA,CAAC,CAEjB,CACA,IAAIA,EAAG,CACL,OAAO,KAAK,WAAaA,GAAKA,GAAK,KAAK,QAC1C,CACA,IAAIA,EAAG,CACL,OAAO,KAAK,WAAaA,GAAKA,GAAK,KAAK,SAAW,OAAO,aAAaA,CAAC,EAAI,MAC9E,CACA,WAAWgJ,EAAG,CACZ,OAAO,OAAO,UAAUA,CAAC,GAAKA,GAAK,KAAK,WAAaA,GAAK,KAAK,SAAWA,EAAI,EAChF,CACA,MAAMF,EAAK,CACTjL,GAAY,yBAAyB,CACvC,CACF,CAMA,MAAMq/D,EAAQ,CACZ,YAAY/O,EAAMrmD,EAAY,CAC5B,KAAK,WAAaA,EAClB,MAAMg/C,EAAS,IAAIoH,GAAUC,EAAMrmD,EAAwD,EAAI,EAC/F,KAAK,IAAMg/C,EAAO,MAAK,EACvB,KAAK,IAAI,oBAAmB,EAC5B,MAAMqW,EAAW,IAAIjI,GAAY,KAAK,GAAG,EACzC,KAAK,MAAQ,KAAK,IAAI,MACtB,GAAI,CACF,KAAK,KAAOiI,EAAS,QAAO,CAC9B,OAAS/xD,EAAI,CACXxN,EAAK,2BAA2BkK,EAAW,UAAU,OAAOsD,CAAE,IAAI,EAClE+iD,EAAK,MAAK,EACV,KAAK,KAAOA,EAAK,SAAQ,CAC3B,CACA,KAAK,uBAAsB,CAC7B,CACA,IAAI,WAAY,CACd,OAAO,KAAK,IAAI,YAAY,KAC9B,CACA,YAAa,CACX,OAAO,KAAK,IAAI,QAAQ,OAC1B,CACA,iBAAkB,CAChB,MAAME,EAAM,KAAK,IACXvmD,EAAa,KAAK,WAClB,CACJ,YAAAs1D,EACA,KAAA/8B,CACN,EAAQv4B,EACEu1D,EAAWhP,EAAI,QAAQ,QAC7B,IAAI/C,EACAC,EACJ,GAAIzjD,EAAW,UAAW,CACxB,IAAIw1D,EACJ,GAAIF,GAAa,OAAS,EAAG,CAC3BE,EAAiB,OAAO,OAAO,IAAI,EACnC,QAASt9D,EAAI,EAAGmF,EAAKi4D,EAAY,OAAQp9D,EAAImF,EAAInF,IAAK,CACpD,MAAM+zD,EAAMqJ,EAAYp9D,CAAC,EACrB+zD,IAAQ,SACVuJ,EAAevJ,CAAG,EAAI/zD,EAE1B,CACF,CACAsrD,EAAoB,OAAO,OAAO,IAAI,EACtC,IAAIjgD,EACJ,GAAIgjD,EAAI,UACN,IAAK9C,EAAU,EAAGA,EAAU8R,EAAS,OAAQ9R,IAAW,CACtD,MAAM4H,EAAMkK,EAAS9R,CAAO,EAC5BlgD,EAAWg1B,EAAK,WAAW8yB,CAAG,EAC1BmK,IAAiBjyD,CAAQ,IAAM,SACjCA,EAAWiyD,EAAejyD,CAAQ,GAEpCigD,EAAkBjgD,CAAQ,EAAIkgD,CAChC,KAEA,KAAKA,EAAU,EAAGA,EAAU8C,EAAI,YAAY,MAAO9C,IACjDlgD,EAAWg1B,EAAK,WAAWkrB,CAAO,EAClCD,EAAkBjgD,CAAQ,EAAIkgD,EAGlC,OAAOD,CACT,CACA,IAAItgD,EAAWqjD,EAAI,SAAWA,EAAI,SAAS,SAAW,KACtD,OAAIvmD,EAAW,iBACbkD,EAAWlD,EAAW,iBAExBwjD,EAAoBH,GAAsBrjD,EAAYkD,EAAUqyD,CAAQ,EACjE/R,CACT,CACA,WAAW/V,EAAI,CACb,OAAO,KAAK,IAAI,WAAWA,CAAE,CAC/B,CACA,wBAAyB,CACvB,KAAM,CACJ,QAAAga,EACA,SAAAvkD,CACN,EAAQ,KAAK,IACT,GAAI,CAACukD,GAAW,CAACvkD,EACf,OAEF,MAAMqyD,EAAW9N,EAAQ,QACvBgO,EAAYvyD,EAAS,SACjBlC,EAAM,CAAA,EACZ,UAAWuC,KAAYkyD,EAAW,CAChC,MAAMhS,EAAUgS,EAAUlyD,CAAQ,EAClC,GAAIkgD,GAAW,EAAG,CAChB,MAAMI,EAAY0R,EAAS9R,CAAO,EAC9BI,IACF7iD,EAAIuC,CAAQ,EAAIsgD,EAEpB,CACF,CACI7iD,EAAI,OAAS,IACf,KAAK,WAAW,gBAAkBA,EAEtC,CACF,CAIA,MAAM00D,EAAc,CAClB,OAAO,QAAU,CAAC,aAAc,aAAc,aAAa,CAC7D,CACA,MAAMC,EAAiB,CACrB,OAAO,QAAU,CAAC,MAAO,aAAc,eAAgB,KAAK,CAC9D,CACA,MAAMC,EAAU,CACd,OAAO,MAAQ,CAAC,QAAS,OAAQ,kBAAmB,sBAAuB,qBAAsB,cAAe,SAAU,cAAe,YAAa,UAAU,EAChK,OAAO,QAAU,CAAC,SAAU,eAAgB,SAAS,EACrD,OAAO,QAAU,CAAC,eAAgB,aAAc,WAAY,MAAM,EAClE,OAAO,eAAiB,KAAK,KAAK,KAAK,MAAM,OAAS,EAAI,CAAC,EAC3D,OAAO,YAAc,KAAK,eAAiB,KAAK,QAAQ,OAAS,EACjE,OAAO,mBAAqB,KAAK,YAAc,EAAI,EACnD,OAAO,wBAA0B,KAAK,mBAAqB,EAAI,GAC/D,OAAO,eAAiB,KAAK,wBAA0B,EAAI,CAC7D,CACA,MAAMC,EAAa,CACjB,OAAO,KAAO,EACd,OAAO,SAAW,EAClB,OAAO,eAAiB,EACxB,OAAO,aAAe,EACtB,OAAO,QAAU,EACjB,OAAO,QAAU,EACjB,OAAO,OAAS,GAChB,OAAO,UAAY,EACrB,CACA,MAAMC,EAAU,CACd,WAAW,SAAU,CACnB,OAAOn/D,GAAO,KAAM,UAAW,IAAI,WAAa,CAClD,CACA,WAAW,SAAU,CACnB,OAAOA,GAAO,KAAM,UAAW,IAAI,WAAa,CAClD,CACF,CAKA,SAASo/D,GAAmBngE,EAAM,CAChC,KAAM,CACJ,QAAAogE,CACJ,EAAMF,GACEG,EAAiB,CAAA,EACvB,IAAIC,EAAgB,EACpB,UAAWr/D,KAAQ6+D,GAAc,QAAS,CACxC,MAAMS,EAAUH,EAAQ,OAAOpgE,EAAKiB,CAAI,CAAC,EACzCo/D,EAAep/D,CAAI,EAAIs/D,EACvBD,GAAiB,EAAIC,EAAQ,MAC/B,CACA,MAAM/yD,EAAS,IAAI,YAAY8yD,CAAa,EACtC1xD,EAAO,IAAI,WAAWpB,CAAM,EAC5B+a,EAAO,IAAI,SAAS/a,CAAM,EAChC,IAAI+I,EAAS,EACb,UAAWtV,KAAQ6+D,GAAc,QAAS,CACxC,MAAMS,EAAUF,EAAep/D,CAAI,EAC7BkB,EAASo+D,EAAQ,OACvBh4C,EAAK,UAAUhS,EAAQpU,CAAM,EAC7ByM,EAAK,IAAI2xD,EAAShqD,EAAS,CAAC,EAC5BA,GAAU,EAAIpU,CAChB,CACA,OAAA/B,GAAOmW,IAAW/I,EAAO,WAAY,qCAAqC,EACnEA,CACT,CACA,SAASgzD,GAAsBxgE,EAAM,CACnC,KAAM,CACJ,QAAAogE,CACJ,EAAMF,GACEG,EAAiB,CAAA,EACvB,IAAIC,EAAgB,EACpB,UAAWr/D,KAAQ8+D,GAAiB,QAAS,CAC3C,MAAMQ,EAAUH,EAAQ,OAAOpgE,EAAKiB,CAAI,CAAC,EACzCo/D,EAAep/D,CAAI,EAAIs/D,EACvBD,GAAiB,EAAIC,EAAQ,MAC/B,CACAD,GAAiB,EACjB,IAAIG,EACFC,EACAC,EAAiB,EAAIL,EACnBtgE,EAAK,QACPygE,EAAoBL,EAAQ,OAAOpgE,EAAK,MAAM,KAAK,EACnD0gE,EAAqBN,EAAQ,OAAOpgE,EAAK,MAAM,MAAM,EACrD2gE,GAAkB,EAAIF,EAAkB,OAAS,EAAIC,EAAmB,QAE1E,MAAMlzD,EAAS,IAAI,YAAYmzD,CAAc,EACvC/xD,EAAO,IAAI,WAAWpB,CAAM,EAC5B+a,EAAO,IAAI,SAAS/a,CAAM,EAChC,IAAI+I,EAAS,EACbgS,EAAK,SAAShS,IAAUvW,EAAK,cAAgB,EAAI,CAAC,EAClDuoB,EAAK,UAAUhS,EAAQ,CAAC,EACxBA,GAAU,EACV+pD,EAAgB,EAChB,UAAWr/D,KAAQ8+D,GAAiB,QAAS,CAC3C,MAAMQ,EAAUF,EAAep/D,CAAI,EAC7BkB,EAASo+D,EAAQ,OACvBD,GAAiB,EAAIn+D,EACrBomB,EAAK,UAAUhS,EAAQpU,CAAM,EAC7ByM,EAAK,IAAI2xD,EAAShqD,EAAS,CAAC,EAC5BA,GAAU,EAAIpU,CAChB,CACA,OAAAomB,EAAK,UAAUhS,EAAS+pD,EAAgB,EAAGA,CAAa,EACpDtgE,EAAK,QACPuoB,EAAK,UAAUhS,EAAQkqD,EAAkB,MAAM,EAC/C7xD,EAAK,IAAI6xD,EAAmBlqD,EAAS,CAAC,EACtCA,GAAU,EAAIkqD,EAAkB,OAChCl4C,EAAK,UAAUhS,EAAQmqD,EAAmB,MAAM,EAChD9xD,EAAK,IAAI8xD,EAAoBnqD,EAAS,CAAC,EACvCA,GAAU,EAAImqD,EAAmB,QAEnCtgE,GAAOmW,GAAU/I,EAAO,WAAY,wCAAwC,EACrEA,EAAO,sBAAsB+I,CAAM,CAC5C,CACA,SAASqqD,GAAgBC,EAAM,CAC7B,MAAMC,EAAuBD,EAAK,eAAiBL,GAAsBK,EAAK,cAAc,EAAI,KAC1FE,EAAoBF,EAAK,YAAcV,GAAmBU,EAAK,WAAW,EAAI,KAC9E,CACJ,QAAAT,CACJ,EAAMF,GACEG,EAAiB,CAAA,EACvB,IAAIC,EAAgB,EACpB,UAAWr/D,KAAQ++D,GAAU,QAC3BK,EAAep/D,CAAI,EAAIm/D,EAAQ,OAAOS,EAAK5/D,CAAI,CAAC,EAChDq/D,GAAiB,EAAID,EAAep/D,CAAI,EAAE,OAE5C,MAAM0/D,EAAiBX,GAAU,eAAiB,EAAIM,EAAgB,GAAKQ,GAAsB,YAAc,GAAK,GAAKC,GAAmB,YAAc,GAAK,GAAKF,EAAK,MAAM,QAAU,GACnLrzD,EAAS,IAAI,YAAYmzD,CAAc,EACvC/xD,EAAO,IAAI,WAAWpB,CAAM,EAC5B+a,EAAO,IAAI,SAAS/a,CAAM,EAChC,IAAI+I,EAAS,EACb,MAAMyqD,EAAWhB,GAAU,MAAM,OACjC,IAAIiB,EAAW,EACbC,EAAU,EACZ,QAAS5+D,EAAI,EAAGA,EAAI0+D,EAAU1+D,IAAK,CACjC,MAAMpB,EAAQ2/D,EAAKb,GAAU,MAAM19D,CAAC,CAAC,EAErC2+D,IADa//D,IAAU,OAAY,EAAOA,EAAQ,EAAO,IACrCggE,EACpBA,GAAW,GACPA,IAAY,GAAK5+D,IAAM0+D,EAAW,KACpCz4C,EAAK,SAAShS,IAAU0qD,CAAQ,EAChCA,EAAW,EACXC,EAAU,EAEd,CACA9gE,GAAOmW,IAAWypD,GAAU,eAAgB,qDAAqD,EACjG,UAAW/+D,KAAQ++D,GAAU,QAC3Bz3C,EAAK,WAAWhS,EAAQsqD,EAAK5/D,CAAI,CAAC,EAClCsV,GAAU,EAGZ,GADAnW,GAAOmW,IAAWypD,GAAU,YAAa,oDAAoD,EACzFa,EAAK,KAAM,CACbt4C,EAAK,SAAShS,IAAU,CAAC,EACzB,UAAW2pB,KAAS2gC,EAAK,KACvBt4C,EAAK,SAAShS,EAAQ2pB,EAAO,EAAI,EACjC3pB,GAAU,CAEd,MACEgS,EAAK,SAAShS,IAAU,CAAC,EACzBA,GAAU,EAGZ,GADAnW,GAAOmW,IAAWypD,GAAU,mBAAoB,kDAAkD,EAC9Fa,EAAK,WAAY,CACnBt4C,EAAK,SAAShS,IAAU,CAAC,EACzB,UAAW4qD,KAASN,EAAK,WACvBt4C,EAAK,WAAWhS,EAAQ4qD,EAAO,EAAI,EACnC5qD,GAAU,CAEd,MACEgS,EAAK,SAAShS,IAAU,CAAC,EACzBA,GAAU,GAGZ,GADAnW,GAAOmW,IAAWypD,GAAU,wBAAyB,wDAAwD,EACzGa,EAAK,gBAAiB,CACxBt4C,EAAK,SAAShS,IAAU,CAAC,EACzB,UAAW6qD,KAAUP,EAAK,gBACxBt4C,EAAK,SAAShS,EAAQ6qD,EAAQ,EAAI,EAClC7qD,GAAU,CAEd,MACEgS,EAAK,SAAShS,IAAU,CAAC,EACzBA,GAAU,EAEZnW,GAAOmW,IAAWypD,GAAU,eAAgB,6DAA6D,EACzGz3C,EAAK,UAAUy3C,GAAU,eAAgB,CAAC,EAC1CzpD,GAAU,EACV,UAAWtV,KAAQ++D,GAAU,QAAS,CACpC,MAAMO,EAAUF,EAAep/D,CAAI,EAC7BkB,EAASo+D,EAAQ,OACvBh4C,EAAK,UAAUhS,EAAQpU,CAAM,EAC7ByM,EAAK,IAAI2xD,EAAShqD,EAAS,CAAC,EAC5BA,GAAU,EAAIpU,CAChB,CAEA,GADAomB,EAAK,UAAUy3C,GAAU,eAAgBzpD,EAASypD,GAAU,eAAiB,CAAC,EAC1E,CAACc,EACHv4C,EAAK,UAAUhS,EAAQ,CAAC,EACxBA,GAAU,MACL,CACL,MAAMpU,EAAS2+D,EAAqB,WACpCv4C,EAAK,UAAUhS,EAAQpU,CAAM,EAC7B/B,GAAOmW,EAAS,EAAIpU,GAAUqL,EAAO,WAAY,oDAAoD,EACrGoB,EAAK,IAAI,IAAI,WAAWkyD,CAAoB,EAAGvqD,EAAS,CAAC,EACzDA,GAAU,EAAIpU,CAChB,CACA,GAAI,CAAC4+D,EACHx4C,EAAK,UAAUhS,EAAQ,CAAC,EACxBA,GAAU,MACL,CACL,MAAMpU,EAAS4+D,EAAkB,WACjCx4C,EAAK,UAAUhS,EAAQpU,CAAM,EAC7B/B,GAAOmW,EAAS,EAAIpU,GAAUqL,EAAO,WAAY,iDAAiD,EAClGoB,EAAK,IAAI,IAAI,WAAWmyD,CAAiB,EAAGxqD,EAAS,CAAC,EACtDA,GAAU,EAAIpU,CAChB,CACA,OAAI0+D,EAAK,OAAS,QAChBt4C,EAAK,UAAUhS,EAAQ,CAAC,EACxBA,GAAU,IAEVgS,EAAK,UAAUhS,EAAQsqD,EAAK,KAAK,MAAM,EACvCjyD,EAAK,IAAIiyD,EAAK,KAAMtqD,EAAS,CAAC,EAC9BA,GAAU,EAAIsqD,EAAK,KAAK,QAE1BzgE,GAAOmW,GAAU/I,EAAO,WAAY,kCAAkC,EAC/DA,EAAO,sBAAsB+I,CAAM,CAC5C,CACA,SAAS8qD,GAAmBC,EAAI,CAC9B,IAAIj6C,EACFgS,EAAO,KACPuD,EAAS,CAAA,EACTG,EAAS,CAAA,EACTjC,EAAa,CAAA,EACbuB,EAAc,KACdF,EAAa,KACf,OAAQmlC,EAAG,CAAC,EAAC,CACX,IAAK,cACHj6C,EAAOi6C,EAAG,CAAC,IAAM,QAAU,EAAI,EAC/BjoC,EAAOioC,EAAG,CAAC,EACXxmC,EAAawmC,EAAG,CAAC,EACbj6C,IAAS,EACXuV,EAAO,KAAK,GAAG0kC,EAAG,CAAC,EAAG,GAAGA,EAAG,CAAC,CAAC,EAE9B1kC,EAAO,KAAK0kC,EAAG,CAAC,EAAE,CAAC,EAAGA,EAAG,CAAC,EAAE,CAAC,EAAGA,EAAG,CAAC,EAAGA,EAAG,CAAC,EAAE,CAAC,EAAGA,EAAG,CAAC,EAAE,CAAC,EAAGA,EAAG,CAAC,CAAC,EAElE,MACF,IAAK,OACHj6C,EAAO,EACPgV,EAAcilC,EAAG,CAAC,EAClB1kC,EAAS0kC,EAAG,CAAC,EACbvkC,EAASukC,EAAG,CAAC,EACbjoC,EAAOioC,EAAG,CAAC,EACXnlC,EAAamlC,EAAG,CAAC,EACjB,MACF,QACE,MAAM,IAAI,MAAM,6BAA6BA,EAAG,CAAC,CAAC,EAAE,CAC1D,CACE,MAAMC,EAAS,KAAK,MAAM3kC,EAAO,OAAS,CAAC,EACrC4kC,EAAS,KAAK,MAAMzkC,EAAO,OAAS,CAAC,EACrC0kC,EAAQ3mC,EAAW,OACnBkX,EAAU,GAAKuvB,EAAS,EAAIC,EAAS,EAAIC,EAAQ,GAAKpoC,EAAO,GAAK,IAAM8C,EAAa,EAAI,GACzF3uB,EAAS,IAAI,YAAYwkC,CAAO,EAChC0vB,EAAW,IAAI,SAASl0D,CAAM,EAC9Bm0D,EAAS,IAAI,WAAWn0D,CAAM,EACpCk0D,EAAS,SAASzB,GAAa,KAAM54C,CAAI,EACzCq6C,EAAS,SAASzB,GAAa,SAAU5mC,EAAO,EAAI,CAAC,EACrDqoC,EAAS,SAASzB,GAAa,eAAgB9jC,EAAa,EAAI,CAAC,EACjEulC,EAAS,SAASzB,GAAa,aAAc5jC,CAAW,EACxDqlC,EAAS,UAAUzB,GAAa,QAASsB,EAAQ,EAAI,EACrDG,EAAS,UAAUzB,GAAa,QAASuB,EAAQ,EAAI,EACrDE,EAAS,UAAUzB,GAAa,OAAQwB,EAAO,EAAI,EACnDC,EAAS,UAAUzB,GAAa,UAAW,EAAG,EAAI,EAClD,IAAI1pD,EAAS,GACM,IAAI,aAAa/I,EAAQ+I,EAAQgrD,EAAS,CAAC,EACnD,IAAI3kC,CAAM,EACrBrmB,GAAUgrD,EAAS,EACnBI,EAAO,IAAI5kC,EAAQxmB,CAAM,EACzBA,GAAUirD,EAAS,EACnB,SAAW,CAAC99D,EAAKk+D,CAAG,IAAK9mC,EACvB4mC,EAAS,WAAWnrD,EAAQ7S,EAAK,EAAI,EACrC6S,GAAU,EACVmrD,EAAS,UAAUnrD,EAAQ,SAASqrD,EAAI,MAAM,CAAC,EAAG,EAAE,EAAG,EAAI,EAC3DrrD,GAAU,EAEZ,GAAI8iB,EACF,UAAW/tB,KAAK+tB,EACdqoC,EAAS,WAAWnrD,EAAQjL,EAAG,EAAI,EACnCiL,GAAU,EAGd,OAAI4lB,GACFwlC,EAAO,IAAIxlC,EAAY5lB,CAAM,EAExB/I,CACT,CACA,SAASq0D,GAAoBpxD,EAAM,CACjC,OAAOA,EAAK,MAAK,EAAG,MACtB,CAUA,SAASqxD,GAAYv5C,EAAMhS,EAAQ,CACjC,OAAOgS,EAAK,SAAShS,CAAM,EAAI,KACjC,CACA,SAASwrD,GAAkBxJ,EAAO,CAChC,MAAMyJ,EAAWzJ,EAAM,OACvB,OAAIyJ,GAAY,MACP,MAEFA,EAAW,KAAO,IAAM,IACjC,CACA,SAASC,GAAUrzD,EAAMvC,EAAOF,EAAK,CACnC,MAAMoc,EAAO,IAAI,SAAS3Z,EAAK,OAAQA,EAAK,WAAYA,EAAK,UAAU,EACjE2H,EAASgS,EAAK,UAAUlc,EAAQ,CAAC,IAAM,EAAIkc,EAAK,UAAUlc,EAAQ,CAAC,EAAIkc,EAAK,UAAUlc,EAAQ,EAAE,EAChGupD,EAASrtC,EAAK,UAAUlc,EAAQkK,CAAM,EAC5C,IAAI+M,EAAQ7f,EAAGnB,EACf,GAAIszD,IAAW,EAAG,CAChB,MAAMsM,EAAW35C,EAAK,UAAUlc,EAAQkK,EAAS,CAAC,GAAK,EAGvD,IAFA9S,EAAI4I,EAAQkK,EAAS,GACrB+M,EAAS,CAAA,EACJhhB,EAAI,EAAGA,EAAI4/D,EAAU5/D,IAAKmB,GAAK,EAClC6f,EAAOhhB,CAAC,EAAI,CACV,IAAKimB,EAAK,UAAU9kB,CAAC,CAC7B,EAGI,IADAA,GAAK,EACAnB,EAAI,EAAGA,EAAI4/D,EAAU5/D,IAAKmB,GAAK,EAClC6f,EAAOhhB,CAAC,EAAE,MAAQimB,EAAK,UAAU9kB,CAAC,EAEpC,IAAKnB,EAAI,EAAGA,EAAI4/D,EAAU5/D,IAAKmB,GAAK,EAClC6f,EAAOhhB,CAAC,EAAE,QAAUimB,EAAK,UAAU9kB,CAAC,EAEtC,IAAKnB,EAAI,EAAGA,EAAI4/D,EAAU5/D,IAAKmB,GAAK,EAAG,CACrC,IAAI0+D,EAAW55C,EAAK,UAAU9kB,CAAC,EAC/B,GAAI0+D,IAAa,EAGjB,CAAA7+C,EAAOhhB,CAAC,EAAE,IAAM,CAAA,EAChB,QAASoS,EAAI,EAAGyQ,EAAK7B,EAAOhhB,CAAC,EAAE,IAAMghB,EAAOhhB,CAAC,EAAE,MAAQ,EAAGoS,EAAIyQ,EAAIzQ,IAChE4O,EAAOhhB,CAAC,EAAE,IAAIoS,CAAC,EAAI6T,EAAK,UAAU9kB,EAAI0+D,CAAQ,EAC9CA,GAAY,EAEhB,CACA,OAAO7+C,CACT,SAAWsyC,IAAW,GAAI,CACxB,MAAMzI,EAAS5kC,EAAK,UAAUlc,EAAQkK,EAAS,EAAE,EAGjD,IAFA9S,EAAI4I,EAAQkK,EAAS,GACrB+M,EAAS,CAAA,EACJhhB,EAAI,EAAGA,EAAI6qD,EAAQ7qD,IACtB+J,EAAQkc,EAAK,UAAU9kB,CAAC,EACxB6f,EAAO,KAAK,CACV,MAAAjX,EACA,IAAKkc,EAAK,UAAU9kB,EAAI,CAAC,EACzB,QAAS8kB,EAAK,UAAU9kB,EAAI,CAAC,EAAI4I,CACzC,CAAO,EACD5I,GAAK,GAEP,OAAO6f,CACT,CACA,MAAM,IAAIvhB,EAAY,qBAAqB6zD,CAAM,EAAE,CACrD,CACA,SAASwM,GAASxzD,EAAMvC,EAAOF,EAAKukD,EAAqB,CACvD,MAAMtmD,EAAa,CAAA,EAEbumD,EADS,IAAIH,GAAU,IAAIjvC,GAAO3S,EAAMvC,EAAOF,EAAME,CAAK,EAAGjC,EAAYsmD,CAAmB,EAC/E,MAAK,EACxB,MAAO,CACL,OAAQC,EAAI,YAAY,QACxB,MAAOA,EAAI,QAAQ,aAAa,YAAY,QAC5C,OAAQA,EAAI,iBAAiB,QAC7B,aAAcA,EAAI,UAClB,SAAUA,EAAI,SACd,QAASA,EAAI,OACjB,CACA,CACA,SAAS0R,GAAe3G,EAAMD,EAAMF,EAAsB,CACxD,MAAMhzC,EAAO,IAAI,SAASkzC,EAAK,OAAQA,EAAK,WAAYA,EAAK,UAAU,EACvE,IAAI6G,EAAUC,EACVhH,GACF+G,EAAW,EACXC,EAAa,CAACC,EAAIjsD,IAAWisD,EAAG,UAAUjsD,CAAM,IAEhD+rD,EAAW,EACXC,EAAa,CAACC,EAAIjsD,IAAW,EAAIisD,EAAG,UAAUjsD,CAAM,GAEtD,MAAMksD,EAAS,CAAA,EACf,IAAIz1C,EAAcu1C,EAAWh6C,EAAM,CAAC,EACpC,QAAS7T,EAAI4tD,EAAU5tD,EAAI+mD,EAAK,OAAQ/mD,GAAK4tD,EAAU,CACrD,MAAMjxC,EAAYkxC,EAAWh6C,EAAM7T,CAAC,EACpC+tD,EAAO,KAAK/G,EAAK,SAAS1uC,EAAaqE,CAAS,CAAC,EACjDrE,EAAcqE,CAChB,CACA,OAAOoxC,CACT,CACA,SAASC,GAAWp/C,EAAQmpC,EAAS,CACnC,MAAMjrD,EAAOirD,EAAQ,YAAY,CAAC,EAClC,IAAI4J,EAAM,EACR/jC,EAAI,EACJpvB,EAAIogB,EAAO,OAAS,EACtB,KAAOgP,EAAIpvB,GAAG,CACZ,MAAMuC,EAAI6sB,EAAIpvB,EAAI,GAAK,EACnB1B,EAAO8hB,EAAO7d,CAAC,EAAE,MACnBvC,EAAIuC,EAAI,EAER6sB,EAAI7sB,CAER,CACA,OAAI6d,EAAOgP,CAAC,EAAE,OAAS9wB,GAAQA,GAAQ8hB,EAAOgP,CAAC,EAAE,MAC/C+jC,EAAM/yC,EAAOgP,CAAC,EAAE,SAAWhP,EAAOgP,CAAC,EAAE,IAAMhP,EAAOgP,CAAC,EAAE,IAAI9wB,EAAO8hB,EAAOgP,CAAC,EAAE,KAAK,EAAI9wB,GAAQ,OAEtF,CACL,SAAUA,EACV,QAAS60D,CACb,CACA,CACA,SAASsM,GAAYnhE,EAAMohE,EAAM/B,EAAMgC,EAAgB,IAAI,IAAO,CAChE,GAAI,CAACrhE,GAAM,OACT,OAEF,GAAIqhE,EAAc,IAAIrhE,CAAI,EAAG,CAC3BtB,EAAK,4DAA4D,EACjE,MACF,CACA2iE,EAAc,IAAIrhE,CAAI,EACtB,SAASshE,EAAO58D,EAAGC,EAAG,CAChB48D,GACFH,EAAK,IAAIljE,GAAQ,OAAQqjE,CAAU,EAErCA,EAAa,CAAC78D,EAAGC,CAAC,EAClBy8D,EAAK,IAAIljE,GAAQ,OAAQ,CAACwG,EAAGC,CAAC,CAAC,CACjC,CACA,SAAS68D,EAAO98D,EAAGC,EAAG,CACpBy8D,EAAK,IAAIljE,GAAQ,OAAQ,CAACwG,EAAGC,CAAC,CAAC,CACjC,CACA,SAAS88D,EAAiBC,EAAIC,EAAIj9D,EAAGC,EAAG,CACtCy8D,EAAK,IAAIljE,GAAQ,iBAAkB,CAACwjE,EAAIC,EAAIj9D,EAAGC,CAAC,CAAC,CACnD,CACA,MAAMoiB,EAAO,IAAI,SAAS/mB,EAAK,OAAQA,EAAK,WAAYA,EAAK,UAAU,EACvE,IAAIc,EAAI,EACR,MAAMm6D,EAAmBl0C,EAAK,SAASjmB,CAAC,EACxC,IAAIy6D,EACAgG,EAAa,KACb78D,EAAI,EACNC,EAAI,EAEN,GADA7D,GAAK,GACDm6D,EAAmB,EACrB,EAAG,CACDM,EAAQx0C,EAAK,UAAUjmB,CAAC,EACxB,MAAM00D,EAAazuC,EAAK,UAAUjmB,EAAI,CAAC,EACvCA,GAAK,EACL,IAAI8T,EAAMgtD,EACNrG,EAAQ,GACNA,EAAQ,GACV3mD,EAAOmS,EAAK,SAASjmB,CAAC,EACtB8gE,EAAO76C,EAAK,SAASjmB,EAAI,CAAC,IAE1B8T,EAAOmS,EAAK,UAAUjmB,CAAC,EACvB8gE,EAAO76C,EAAK,UAAUjmB,EAAI,CAAC,GAE7BA,GAAK,GACIy6D,EAAQ,GACjB3mD,EAAOmS,EAAK,QAAQjmB,GAAG,EACvB8gE,EAAO76C,EAAK,QAAQjmB,GAAG,IAEvB8T,EAAO5U,EAAKc,GAAG,EACf8gE,EAAO5hE,EAAKc,GAAG,GAEby6D,EAAQ,GACV72D,EAAIkQ,EACJjQ,EAAIi9D,IAEJl9D,EAAI,EACJC,EAAI,GAEN,IAAI0tB,EAAS,EACXC,EAAS,EACTuvC,EAAU,EACVC,EAAU,EACRvG,EAAQ,GACVlpC,EAASC,EAASguC,GAAYv5C,EAAMjmB,CAAC,EACrCA,GAAK,GACIy6D,EAAQ,IACjBlpC,EAASiuC,GAAYv5C,EAAMjmB,CAAC,EAC5BwxB,EAASguC,GAAYv5C,EAAMjmB,EAAI,CAAC,EAChCA,GAAK,GACIy6D,EAAQ,MACjBlpC,EAASiuC,GAAYv5C,EAAMjmB,CAAC,EAC5B+gE,EAAUvB,GAAYv5C,EAAMjmB,EAAI,CAAC,EACjCghE,EAAUxB,GAAYv5C,EAAMjmB,EAAI,CAAC,EACjCwxB,EAASguC,GAAYv5C,EAAMjmB,EAAI,CAAC,EAChCA,GAAK,GAEP,MAAMihE,EAAW1C,EAAK,OAAO7J,CAAU,EACnCuM,IACFX,EAAK,KAAI,EACTA,EAAK,UAAU,CAAC/uC,EAAQwvC,EAASC,EAASxvC,EAAQ5tB,EAAGC,CAAC,CAAC,EAEvDw8D,GAAYY,EAAUX,EAAM/B,EAAMgC,CAAa,EAC/CD,EAAK,QAAO,EAEhB,OAAS7F,EAAQ,QACZ,CACL,MAAMK,EAAmB,CAAA,EACzB,IAAI1oD,EAAGyQ,EACP,IAAKzQ,EAAI,EAAGA,EAAI+nD,EAAkB/nD,IAChC0oD,EAAiB,KAAK70C,EAAK,UAAUjmB,CAAC,CAAC,EACvCA,GAAK,EAEP,MAAMi7D,EAAoBh1C,EAAK,UAAUjmB,CAAC,EAC1CA,GAAK,EAAIi7D,EACT,MAAMiG,EAAiBpG,EAAiB,GAAG,EAAE,EAAI,EAC3C1O,EAAS,CAAA,EACf,KAAOA,EAAO,OAAS8U,GAAgB,CACrCzG,EAAQv7D,EAAKc,GAAG,EAChB,IAAI+kC,EAAS,EAIb,IAHI01B,EAAQ,IACV11B,GAAU7lC,EAAKc,GAAG,GAEb+kC,KAAW,GAChBqnB,EAAO,KAAK,CACV,MAAAqO,CACV,CAAS,CAEL,CACA,IAAKroD,EAAI,EAAGA,EAAI8uD,EAAgB9uD,IAAK,CACnC,OAAQg6C,EAAOh6C,CAAC,EAAE,MAAQ,GAAI,CAC5B,IAAK,GACHxO,GAAKqiB,EAAK,SAASjmB,CAAC,EACpBA,GAAK,EACL,MACF,IAAK,GACH4D,GAAK1E,EAAKc,GAAG,EACb,MACF,IAAK,IACH4D,GAAK1E,EAAKc,GAAG,EACb,KACV,CACMosD,EAAOh6C,CAAC,EAAE,EAAIxO,CAChB,CACA,IAAKwO,EAAI,EAAGA,EAAI8uD,EAAgB9uD,IAAK,CACnC,OAAQg6C,EAAOh6C,CAAC,EAAE,MAAQ,GAAI,CAC5B,IAAK,GACHvO,GAAKoiB,EAAK,SAASjmB,CAAC,EACpBA,GAAK,EACL,MACF,IAAK,GACH6D,GAAK3E,EAAKc,GAAG,EACb,MACF,IAAK,IACH6D,GAAK3E,EAAKc,GAAG,EACb,KACV,CACMosD,EAAOh6C,CAAC,EAAE,EAAIvO,CAChB,CACA,IAAIs9D,EAAa,EACjB,IAAKnhE,EAAI,EAAGA,EAAIm6D,EAAkBn6D,IAAK,CACrC,MAAMohE,EAAWtG,EAAiB96D,CAAC,EAC7By7D,EAAUrP,EAAO,MAAM+U,EAAYC,EAAW,CAAC,EACrD,GAAI3F,EAAQ,CAAC,EAAE,MAAQ,EACrBA,EAAQ,KAAKA,EAAQ,CAAC,CAAC,UACdA,EAAQ,GAAG,EAAE,EAAE,MAAQ,EAChCA,EAAQ,QAAQA,EAAQ,GAAG,EAAE,CAAC,MACzB,CACL,MAAMt6D,EAAI,CACR,MAAO,EACP,GAAIs6D,EAAQ,CAAC,EAAE,EAAIA,EAAQ,GAAG,EAAE,EAAE,GAAK,EACvC,GAAIA,EAAQ,CAAC,EAAE,EAAIA,EAAQ,GAAG,EAAE,EAAE,GAAK,CACjD,EACQA,EAAQ,QAAQt6D,CAAC,EACjBs6D,EAAQ,KAAKt6D,CAAC,CAChB,CAEA,IADAq/D,EAAO/E,EAAQ,CAAC,EAAE,EAAGA,EAAQ,CAAC,EAAE,CAAC,EAC5BrpD,EAAI,EAAGyQ,EAAK44C,EAAQ,OAAQrpD,EAAIyQ,EAAIzQ,IACnCqpD,EAAQrpD,CAAC,EAAE,MAAQ,EACrBsuD,EAAOjF,EAAQrpD,CAAC,EAAE,EAAGqpD,EAAQrpD,CAAC,EAAE,CAAC,EACxBqpD,EAAQrpD,EAAI,CAAC,EAAE,MAAQ,GAChCuuD,EAAiBlF,EAAQrpD,CAAC,EAAE,EAAGqpD,EAAQrpD,CAAC,EAAE,EAAGqpD,EAAQrpD,EAAI,CAAC,EAAE,EAAGqpD,EAAQrpD,EAAI,CAAC,EAAE,CAAC,EAC/EA,KAEAuuD,EAAiBlF,EAAQrpD,CAAC,EAAE,EAAGqpD,EAAQrpD,CAAC,EAAE,GAAIqpD,EAAQrpD,CAAC,EAAE,EAAIqpD,EAAQrpD,EAAI,CAAC,EAAE,GAAK,GAAIqpD,EAAQrpD,CAAC,EAAE,EAAIqpD,EAAQrpD,EAAI,CAAC,EAAE,GAAK,CAAC,EAG7H+uD,EAAaC,EAAW,CAC1B,CACF,CACAb,EAAc,OAAOrhE,CAAI,CAC3B,CACA,SAASmiE,GAAkBC,EAAgBhB,EAAM/B,EAAMhT,EAAS,CAC9D,SAASiV,EAAO58D,EAAGC,EAAG,CAChB48D,GACFH,EAAK,IAAIljE,GAAQ,OAAQqjE,CAAU,EAErCA,EAAa,CAAC78D,EAAGC,CAAC,EAClBy8D,EAAK,IAAIljE,GAAQ,OAAQ,CAACwG,EAAGC,CAAC,CAAC,CACjC,CACA,SAAS68D,EAAO98D,EAAGC,EAAG,CACpBy8D,EAAK,IAAIljE,GAAQ,OAAQ,CAACwG,EAAGC,CAAC,CAAC,CACjC,CACA,SAAS09D,EAAct9D,EAAIC,EAAIE,EAAIE,EAAIV,EAAGC,EAAG,CAC3Cy8D,EAAK,IAAIljE,GAAQ,QAAS,CAAC6G,EAAIC,EAAIE,EAAIE,EAAIV,EAAGC,CAAC,CAAC,CAClD,CACA,MAAMo8B,EAAQ,CAAA,EACd,IAAIr8B,EAAI,EACNC,EAAI,EACF29D,EAAQ,EACRf,EAAa,KACjB,SAASgB,EAAMviE,EAAM,CACnB,MAAM+mB,EAAO,IAAI,SAAS/mB,EAAK,OAAQA,EAAK,WAAYA,EAAK,UAAU,EACvE,IAAIc,EAAI,EACR,KAAOA,EAAId,EAAK,QAAQ,CACtB,IAAIwiE,EAAa,GACb14D,EAAI9J,EAAKc,GAAG,EACZ4gE,EAAIe,EAAId,EAAIe,EAAI19D,EAAII,EAAIC,EAAIuF,EAAG+3D,EACnC,OAAQ74D,EAAC,CACP,IAAK,GACHw4D,GAASvhC,EAAM,QAAU,EACzByhC,EAAa,GACb,MACF,IAAK,GACHF,GAASvhC,EAAM,QAAU,EACzByhC,EAAa,GACb,MACF,IAAK,GACH79D,GAAKo8B,EAAM,IAAG,EACdugC,EAAO58D,EAAGC,CAAC,EACX69D,EAAa,GACb,MACF,IAAK,GACH,KAAOzhC,EAAM,OAAS,GACpBr8B,GAAKq8B,EAAM,MAAK,EAChBp8B,GAAKo8B,EAAM,MAAK,EAChBygC,EAAO98D,EAAGC,CAAC,EAEb,MACF,IAAK,GACH,KAAOo8B,EAAM,OAAS,IACpBr8B,GAAKq8B,EAAM,MAAK,EAChBygC,EAAO98D,EAAGC,CAAC,EACPo8B,EAAM,SAAW,IAGrBp8B,GAAKo8B,EAAM,MAAK,EAChBygC,EAAO98D,EAAGC,CAAC,EAEb,MACF,IAAK,GACH,KAAOo8B,EAAM,OAAS,IACpBp8B,GAAKo8B,EAAM,MAAK,EAChBygC,EAAO98D,EAAGC,CAAC,EACPo8B,EAAM,SAAW,IAGrBr8B,GAAKq8B,EAAM,MAAK,EAChBygC,EAAO98D,EAAGC,CAAC,EAEb,MACF,IAAK,GACH,KAAOo8B,EAAM,OAAS,GACpB2gC,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB4gC,EAAKh9D,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBp8B,EAAI+9D,EAAK3hC,EAAM,MAAK,EACpBshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAEpC,MACF,IAAK,IAGH,GAFAiG,EAAIm2B,EAAM,IAAG,EACb4hC,EAAW,KACPtD,EAAK,aAAc,CACrB,MAAMxM,EAAUwM,EAAK,SAAS,WAAWhT,CAAO,EAChD,GAAIwG,GAAW,GAAKA,EAAUwM,EAAK,QAAQ,OAAQ,CACjD,MAAM7O,EAAW6O,EAAK,QAAQxM,CAAO,EACrC,IAAIkE,EACAvG,EAAS,aAAa,aACxBuG,EAAQvG,EAAS,YAAY,WAAW,SAEtCuG,IACFnsD,GAAK21D,GAAkBxJ,CAAK,EAC5B4L,EAAW5L,EAAMnsD,CAAC,EAEtB,MACElM,EAAK,mCAAmC,CAE5C,MACEikE,EAAWtD,EAAK,MAAMz0D,EAAIy0D,EAAK,SAAS,EAEtCsD,GACFJ,EAAMI,CAAQ,EAEhB,MACF,IAAK,IACH,OACF,IAAK,IAEH,OADA74D,EAAI9J,EAAKc,GAAG,EACJgJ,EAAC,CACP,IAAK,IACH43D,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB/7B,EAAKL,EAAIo8B,EAAM,MAAK,EACpBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBshC,EAAcX,EAAI/8D,EAAG89D,EAAIz9D,EAAIN,EAAGM,CAAE,EAClC08D,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBshC,EAAcX,EAAI18D,EAAIy9D,EAAI99D,EAAGD,EAAGC,CAAC,EACjC,MACF,IAAK,IACH+8D,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB4gC,EAAKh9D,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBp8B,EAAI+9D,EAAK3hC,EAAM,MAAK,EACpBshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAClC+8D,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB4gC,EAAKh9D,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBp8B,EAAI+9D,EAAK3hC,EAAM,MAAK,EACpBshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAClCo8B,EAAM,IAAG,EACT,MACF,IAAK,IACH2gC,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB/7B,EAAKL,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB37B,EAAKJ,EAAK+7B,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBshC,EAAcX,EAAI18D,EAAIy9D,EAAIr9D,EAAIV,EAAGU,CAAE,EACnCs8D,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB17B,EAAKD,EAAK27B,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBshC,EAAcX,EAAIt8D,EAAIq9D,EAAIp9D,EAAIX,EAAGC,CAAC,EAClC,MACF,IAAK,IACH,MAAME,EAAKH,EACTI,EAAKH,EACP+8D,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB4gC,EAAKh9D,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBp8B,EAAI+9D,EAAK3hC,EAAM,MAAK,EACpBshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAClC+8D,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB4gC,EAAKh9D,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EACJ99D,EAAI+9D,EACA,KAAK,IAAIh+D,EAAIG,CAAE,EAAI,KAAK,IAAIF,EAAIG,CAAE,EACpCJ,GAAKq8B,EAAM,MAAK,EAEhBp8B,GAAKo8B,EAAM,MAAK,EAElBshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAClC,MACF,QACE,MAAM,IAAIpE,EAAY,wBAAwBuJ,CAAC,EAAE,CAC/D,CACU,MACF,IAAK,IACH,GAAIi3B,EAAM,QAAU,EAAG,CACrB,MAAM6hC,EAAQ7hC,EAAM,IAAG,EACjB8hC,EAAQ9hC,EAAM,IAAG,EACvBp8B,EAAIo8B,EAAM,IAAG,EACbr8B,EAAIq8B,EAAM,IAAG,EACbqgC,EAAK,KAAI,EACTA,EAAK,UAAU18D,EAAGC,CAAC,EACnB,IAAIi5D,EAAOsD,GAAW7B,EAAK,KAAM,OAAO,aAAaA,EAAK,aAAahV,GAAiBuY,CAAK,CAAC,CAAC,CAAC,EAChGT,GAAkB9C,EAAK,OAAOzB,EAAK,OAAO,EAAGwD,EAAM/B,EAAMzB,EAAK,OAAO,EACrEwD,EAAK,QAAO,EACZxD,EAAOsD,GAAW7B,EAAK,KAAM,OAAO,aAAaA,EAAK,aAAahV,GAAiBwY,CAAK,CAAC,CAAC,CAAC,EAC5FV,GAAkB9C,EAAK,OAAOzB,EAAK,OAAO,EAAGwD,EAAM/B,EAAMzB,EAAK,OAAO,CACvE,CACA,OACF,IAAK,IACH0E,GAASvhC,EAAM,QAAU,EACzByhC,EAAa,GACb,MACF,IAAK,IACHF,GAASvhC,EAAM,QAAU,EACzBjgC,GAAKwhE,EAAQ,GAAK,EAClBE,EAAa,GACb,MACF,IAAK,IACHF,GAASvhC,EAAM,QAAU,EACzBjgC,GAAKwhE,EAAQ,GAAK,EAClBE,EAAa,GACb,MACF,IAAK,IACH79D,GAAKo8B,EAAM,IAAG,EACdr8B,GAAKq8B,EAAM,IAAG,EACdugC,EAAO58D,EAAGC,CAAC,EACX69D,EAAa,GACb,MACF,IAAK,IACH99D,GAAKq8B,EAAM,IAAG,EACdugC,EAAO58D,EAAGC,CAAC,EACX69D,EAAa,GACb,MACF,IAAK,IACHF,GAASvhC,EAAM,QAAU,EACzByhC,EAAa,GACb,MACF,IAAK,IACH,KAAOzhC,EAAM,OAAS,GACpB2gC,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB4gC,EAAKh9D,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBp8B,EAAI+9D,EAAK3hC,EAAM,MAAK,EACpBshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAEpCD,GAAKq8B,EAAM,MAAK,EAChBp8B,GAAKo8B,EAAM,MAAK,EAChBygC,EAAO98D,EAAGC,CAAC,EACX,MACF,IAAK,IACH,KAAOo8B,EAAM,OAAS,GACpBr8B,GAAKq8B,EAAM,MAAK,EAChBp8B,GAAKo8B,EAAM,MAAK,EAChBygC,EAAO98D,EAAGC,CAAC,EAEb+8D,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB4gC,EAAKh9D,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBp8B,EAAI+9D,EAAK3hC,EAAM,MAAK,EACpBshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAClC,MACF,IAAK,IAIH,IAHIo8B,EAAM,OAAS,IACjBr8B,GAAKq8B,EAAM,MAAK,GAEXA,EAAM,OAAS,GACpB2gC,EAAKh9D,EACLi9D,EAAKh9D,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EACJ99D,EAAI+9D,EAAK3hC,EAAM,MAAK,EACpBshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAEpC,MACF,IAAK,IAIH,IAHIo8B,EAAM,OAAS,IACjBp8B,GAAKo8B,EAAM,MAAK,GAEXA,EAAM,OAAS,GACpB2gC,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB4gC,EAAKh9D,EACL89D,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBp8B,EAAI+9D,EACJL,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAEpC,MACF,IAAK,IACHo8B,EAAM,KAAKha,EAAK,SAASjmB,CAAC,CAAC,EAC3BA,GAAK,EACL,MACF,IAAK,IACH8J,EAAIm2B,EAAM,IAAG,EAAKs+B,EAAK,WACvBsD,EAAWtD,EAAK,OAAOz0D,CAAC,EACpB+3D,GACFJ,EAAMI,CAAQ,EAEhB,MACF,IAAK,IACH,KAAO5hC,EAAM,OAAS,IACpB2gC,EAAKh9D,EACLi9D,EAAKh9D,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBp8B,EAAI+9D,GAAM3hC,EAAM,SAAW,EAAIA,EAAM,MAAK,EAAK,GAC/CshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAC9Bo8B,EAAM,SAAW,IAGrB2gC,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB4gC,EAAKh9D,EACL89D,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBp8B,EAAI+9D,EAAK3hC,EAAM,MAAK,EACpBr8B,EAAI+9D,GAAM1hC,EAAM,SAAW,EAAIA,EAAM,MAAK,EAAK,GAC/CshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAEpC,MACF,IAAK,IACH,KAAOo8B,EAAM,OAAS,IACpB2gC,EAAKh9D,EAAIq8B,EAAM,MAAK,EACpB4gC,EAAKh9D,EACL89D,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBp8B,EAAI+9D,EAAK3hC,EAAM,MAAK,EACpBr8B,EAAI+9D,GAAM1hC,EAAM,SAAW,EAAIA,EAAM,MAAK,EAAK,GAC/CshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAC9Bo8B,EAAM,SAAW,IAGrB2gC,EAAKh9D,EACLi9D,EAAKh9D,EAAIo8B,EAAM,MAAK,EACpB0hC,EAAKf,EAAK3gC,EAAM,MAAK,EACrB2hC,EAAKf,EAAK5gC,EAAM,MAAK,EACrBr8B,EAAI+9D,EAAK1hC,EAAM,MAAK,EACpBp8B,EAAI+9D,GAAM3hC,EAAM,SAAW,EAAIA,EAAM,MAAK,EAAK,GAC/CshC,EAAcX,EAAIC,EAAIc,EAAIC,EAAIh+D,EAAGC,CAAC,EAEpC,MACF,QACE,GAAImF,EAAI,GACN,MAAM,IAAIvJ,EAAY,qBAAqBuJ,CAAC,EAAE,EAE5CA,EAAI,IACNi3B,EAAM,KAAKj3B,EAAI,GAAG,EACTA,EAAI,IACbi3B,EAAM,MAAMj3B,EAAI,KAAO,IAAM9J,EAAKc,GAAG,EAAI,GAAG,EACnCgJ,EAAI,IACbi3B,EAAM,KAAK,EAAEj3B,EAAI,KAAO,IAAM9J,EAAKc,GAAG,EAAI,GAAG,GAE7CigC,EAAM,KAAKha,EAAK,SAASjmB,CAAC,EAAI,KAAK,EACnCA,GAAK,GAEP,KACV,CACU0hE,IACFzhC,EAAM,OAAS,EAEnB,CACF,CACAwhC,EAAMH,CAAc,CACtB,CACA,MAAMU,EAAS,CACb,KAAO,CAAA,EACP,eAAiB,CAAA,EACjB,iBAAmB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACpC,IAAIj7D,EAAKjB,EAAM,CACb,GAAIA,EAAM,CACR,KAAM,CACJ,iBAAAm8D,CACR,EAAU,KACJ,QAASjiE,EAAI,EAAGmF,EAAKW,EAAK,OAAQ9F,EAAImF,EAAInF,GAAK,EAC7CU,GAAK,eAAeoF,EAAMm8D,EAAkBjiE,CAAC,EAE/C,KAAK,KAAK,KAAK+G,EAAK,GAAGjB,CAAI,CAC7B,MACE,KAAK,KAAK,KAAKiB,CAAG,CAEtB,CACA,UAAU80D,EAAQ,CAChB,KAAK,iBAAmBn7D,GAAK,UAAU,KAAK,iBAAkBm7D,CAAM,CACtE,CACA,UAAUj4D,EAAGC,EAAG,CACd,KAAK,UAAU,CAAC,EAAG,EAAG,EAAG,EAAGD,EAAGC,CAAC,CAAC,CACnC,CACA,MAAO,CACL,KAAK,eAAe,KAAK,KAAK,iBAAiB,MAAK,CAAE,CACxD,CACA,SAAU,CACR,KAAK,iBAAmB,KAAK,eAAe,IAAG,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CACxE,CACA,SAAU,CACR,OAAIzD,GAAY,wBACP,IAAI,aAAa,KAAK,IAAI,EAE5B,IAAI,aAAa,KAAK,IAAI,CACnC,CACF,CACA,MAAM8hE,EAAa,CACjBC,GAAqB,IAAI,IACzBC,GAAkB,IAAI,IACtB,YAAYpT,EAAY,CACtB,KAAK,WAAaA,CACpB,CACA,WAAW,MAAO,CAChB,OAAOvwD,GAAO,KAAM,OAAQ2B,GAAY,wBAA0B,IAAI,aAAa,CAAC,EAAI,IAAI,aAAa,CAAC,CAAC,CAC7G,CACA,QAAQ+pD,EAAS,CACf,KAAM,CACJ,SAAA9+C,EACA,QAAAkgD,CACN,EAAQ6U,GAAW,KAAK,KAAMjW,CAAO,EACjC,GAAI,KAAKiY,GAAgB,IAAI7W,CAAO,GAAK,KAAK4W,GAAmB,IAAI92D,CAAQ,EAC3E,OAAO,KAET,MAAM8C,EAAO,KAAKi0D,GAAgB,oBAAoB7W,EAAS,IAAM,CACnE,GAAI,CACF,OAAO,KAAK,aAAa,KAAK,OAAOA,CAAO,EAAGA,CAAO,CACxD,OAASngD,EAAI,CACX,OAAOA,CACT,CACF,CAAC,EAED,GADA,KAAK+2D,GAAmB,IAAI92D,CAAQ,EAChC8C,aAAgB,MAClB,MAAMA,EAER,OAAOoxD,GAAoBpxD,CAAI,CACjC,CACA,aAAajP,EAAMqsD,EAAS,CAC1B,GAAI,CAACrsD,GAAM,QAAUA,EAAK,CAAC,IAAM,GAC/B,OAAOgjE,GAAa,KAEtB,IAAIlT,EAAa,KAAK,WACtB,GAAI,KAAK,aAAc,CACrB,MAAM+C,EAAU,KAAK,SAAS,WAAWxG,CAAO,EAC5CwG,GAAW,GAAKA,EAAU,KAAK,QAAQ,OAEzC/C,EADiB,KAAK,QAAQ+C,CAAO,EACf,UAAU,YAAY,GAAKn2D,GAEjDgC,EAAK,mCAAmC,CAE5C,CACAE,GAAO+P,GAAcmhD,EAAY,CAAC,EAAG,8BAA8B,EACnE,MAAMsR,EAAO,IAAI0B,GACjB,OAAA1B,EAAK,UAAUtR,EAAW,OAAO,EACjC,KAAK,iBAAiB9vD,EAAMohE,EAAM/U,CAAO,EACzC+U,EAAK,IAAIljE,GAAQ,SAAS,EACnBkjE,EAAK,QAAO,CACrB,CACA,kBAAmB,CACjBziE,GAAY,yCAAyC,CACvD,CACF,CACA,MAAMwkE,WAAyBH,EAAa,CAC1C,YAAY/B,EAAQrD,EAAM9N,EAAY,CACpC,MAAMA,GAAc,CAAC,OAAU,EAAG,EAAG,OAAU,EAAG,CAAC,CAAC,EACpD,KAAK,OAASmR,EACd,KAAK,KAAOrD,CACd,CACA,iBAAiB59D,EAAMohE,EAAM,CAC3BD,GAAYnhE,EAAMohE,EAAM,IAAI,CAC9B,CACF,CACA,MAAMgC,WAAsBJ,EAAa,CACvC,YAAYK,EAASzF,EAAM9N,EAAY,CACrC,MAAMA,GAAc,CAAC,KAAO,EAAG,EAAG,KAAO,EAAG,CAAC,CAAC,EAC9C,KAAK,OAASuT,EAAQ,OACtB,KAAK,OAASA,EAAQ,QAAU,CAAA,EAChC,KAAK,MAAQA,EAAQ,OAAS,CAAA,EAC9B,KAAK,KAAOzF,EACZ,KAAK,aAAejT,GAAgB,EACpC,KAAK,WAAa4V,GAAkB,KAAK,MAAM,EAC/C,KAAK,UAAYA,GAAkB,KAAK,KAAK,EAC7C,KAAK,aAAe8C,EAAQ,aAC5B,KAAK,SAAWA,EAAQ,SACxB,KAAK,QAAUA,EAAQ,OACzB,CACA,iBAAiBrjE,EAAMohE,EAAM/U,EAAS,CACpC8V,GAAkBniE,EAAMohE,EAAM,KAAM/U,CAAO,CAC7C,CACF,CACA,MAAMiX,EAAoB,CACxB,OAAO,OAAOjE,EAAMnQ,EAAqB,CACvC,MAAM9hD,EAAO,IAAI,WAAWiyD,EAAK,IAAI,EACnCt4C,EAAO,IAAI,SAAS3Z,EAAK,MAAM,EACjC,IAAIwwD,EAAM1D,EAAMD,EAAM9K,EAAKoU,EAAkBC,EAC7C,MAAMC,EAAY18C,EAAK,UAAU,CAAC,EAClC,QAASjmB,EAAI,EAAGmB,EAAI,GAAInB,EAAI2iE,EAAW3iE,IAAKmB,GAAK,GAAI,CACnD,MAAMyhE,EAAMjjE,GAAc2M,EAAK,SAASnL,EAAGA,EAAI,CAAC,CAAC,EAC3C8S,EAASgS,EAAK,UAAU9kB,EAAI,CAAC,EAC7BtB,EAASomB,EAAK,UAAU9kB,EAAI,EAAE,EACpC,OAAQyhE,EAAG,CACT,IAAK,OACH9F,EAAO6C,GAAUrzD,EAAM2H,CAAuB,EAC9C,MACF,IAAK,OACHmlD,EAAO9sD,EAAK,SAAS2H,EAAQA,EAASpU,CAAM,EAC5C,MACF,IAAK,OACHs5D,EAAO7sD,EAAK,SAAS2H,EAAQA,EAASpU,CAAM,EAC5C,MACF,IAAK,OACH6iE,EAAaz8C,EAAK,UAAUhS,EAAS,EAAE,EACvCwuD,EAAmBx8C,EAAK,UAAUhS,EAAS,EAAE,EAC7C,MACF,IAAK,OACHo6C,EAAMyR,GAASxzD,EAAM2H,EAAQA,EAASpU,EAAQuuD,CAAmB,EACjE,KACV,CACI,CACA,GAAIgL,EAAM,CACR,MAAMpK,EAAc0T,EAA+B,CAAC,EAAIA,EAAY,EAAG,EAAG,EAAIA,EAAY,EAAG,CAAC,EAA7DnE,EAAK,WACtC,OAAO,IAAI8D,GAAiBtC,GAAe3G,EAAMD,EAAMsJ,CAAgB,EAAG3F,EAAM9N,CAAU,CAC5F,CACA,OAAO,IAAIsT,GAAcjU,EAAKyO,EAAMyB,EAAK,UAAU,CACrD,CACF,CAIA,MAAMsE,GAAal3D,GAAsB,SAAU,EAAG,CACpD,EAAE,QAAU,IACZ,EAAE,cAAc,EAAI,IACpB,EAAE,qBAAqB,EAAI,IAC3B,EAAE,iBAAiB,EAAI,IACvB,EAAE,UAAYA,GAAsB,SAAUnH,EAAG,CAC/CA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,GAAK,KACPA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,UAAY,IACdA,EAAE,IAAM,IACRA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,KAAO,IACTA,EAAE,SAAW,IACbA,EAAE,SAAW,IACbA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,eAAiB,IACnBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,eAAiB,IACnBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,aAAe,IACjBA,EAAE,GAAK,IACPA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,KAAO,GACX,CAAC,EACD,EAAE,gBAAgB,EAAImH,GAAsB,SAAUnH,EAAG,CACvDA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,GAAK,IACPA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,UAAY,IACdA,EAAE,IAAM,IACRA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,KAAO,IACTA,EAAE,SAAW,IACbA,EAAE,SAAW,IACbA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,eAAiB,IACnBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,eAAiB,IACnBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,aAAe,IACjBA,EAAE,GAAK,IACPA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,KAAO,GACX,CAAC,EACD,EAAE,uBAAuB,EAAImH,GAAsB,SAAUnH,EAAG,CAC9DA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,GAAK,IACPA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,UAAY,IACdA,EAAE,IAAM,IACRA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,KAAO,IACTA,EAAE,SAAW,IACbA,EAAE,SAAW,IACbA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,eAAiB,IACnBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,eAAiB,IACnBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,aAAe,IACjBA,EAAE,GAAK,IACPA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,KAAO,GACX,CAAC,EACD,EAAE,mBAAmB,EAAImH,GAAsB,SAAUnH,EAAG,CAC1DA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,GAAK,KACPA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,UAAY,IACdA,EAAE,IAAM,IACRA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,KAAO,IACTA,EAAE,SAAW,IACbA,EAAE,SAAW,IACbA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,eAAiB,IACnBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,eAAiB,IACnBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,aAAe,IACjBA,EAAE,GAAK,IACPA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,KAAO,GACX,CAAC,EACD,EAAE,OAASmH,GAAsB,SAAUnH,EAAG,CAC5CA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,aAAe,IACjBA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,UAAY,IACdA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,QAAU,IACZA,EAAE,GAAK,IACPA,EAAE,MAAQ,IACVA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,IAAM,IACRA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,GAAK,IACPA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,QAAU,IACZA,EAAE,GAAK,IACPA,EAAE,MAAQ,IACVA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,IAAM,IACRA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,GAAK,IACPA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,UAAY,IACdA,EAAE,IAAM,IACRA,EAAE,WAAa,IACfA,EAAE,QAAU,IACZA,EAAE,KAAO,IACTA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,KAAO,IACTA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,UAAY,KACdA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,eAAiB,IACnBA,EAAE,MAAQ,IACVA,EAAE,SAAW,IACbA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,eAAiB,IACnBA,EAAE,WAAa,IACfA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,eAAiB,IACnBA,EAAE,eAAiB,IACnBA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,QAAU,IACZA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,SAAW,IACbA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,eAAiB,IACnBA,EAAE,QAAU,IACZA,EAAE,QAAU,IACZA,EAAE,QAAU,IACZA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,aAAe,KACjBA,EAAE,aAAe,IACjBA,EAAE,WAAa,IACfA,EAAE,cAAgB,IAClBA,EAAE,aAAe,IACjBA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,WAAa,IACfA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,eAAiB,IACnBA,EAAE,eAAiB,IACnBA,EAAE,eAAiB,IACnBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,aAAe,IACjBA,EAAE,MAAQ,GACZ,CAAC,EACD,EAAE,aAAa,EAAImH,GAAsB,SAAUnH,EAAG,CACpDA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,GAAK,IACPA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,UAAY,IACdA,EAAE,IAAM,IACRA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,KAAO,IACTA,EAAE,SAAW,IACbA,EAAE,SAAW,IACbA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,eAAiB,IACnBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,eAAiB,IACnBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,aAAe,IACjBA,EAAE,GAAK,IACPA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,KAAO,GACX,CAAC,EACD,EAAE,YAAY,EAAImH,GAAsB,SAAUnH,EAAG,CACnDA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,GAAK,IACPA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,UAAY,IACdA,EAAE,IAAM,IACRA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,KAAO,IACTA,EAAE,SAAW,IACbA,EAAE,SAAW,IACbA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,eAAiB,IACnBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,eAAiB,IACnBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,aAAe,IACjBA,EAAE,GAAK,IACPA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,KAAO,GACX,CAAC,EACD,EAAE,kBAAkB,EAAImH,GAAsB,SAAUnH,EAAG,CACzDA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,GAAK,IACPA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,UAAY,IACdA,EAAE,IAAM,IACRA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,KAAO,IACTA,EAAE,SAAW,IACbA,EAAE,SAAW,IACbA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,eAAiB,IACnBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,eAAiB,IACnBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,aAAe,IACjBA,EAAE,GAAK,IACPA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,KAAO,GACX,CAAC,EACD,EAAE,cAAc,EAAImH,GAAsB,SAAUnH,EAAG,CACrDA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,KAAO,IACTA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,GAAK,IACPA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,EAAI,IACNA,EAAE,UAAY,IACdA,EAAE,IAAM,IACRA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,WAAa,IACfA,EAAE,KAAO,IACTA,EAAE,SAAW,IACbA,EAAE,SAAW,IACbA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,eAAiB,IACnBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,eAAiB,IACnBA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,eAAiB,IACnBA,EAAE,SAAW,IACbA,EAAE,YAAc,IAChBA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,KAAO,IACTA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,aAAe,IACjBA,EAAE,GAAK,IACPA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,GAAK,IACPA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,MAAQ,IACVA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,WAAa,IACfA,EAAE,MAAQ,IACVA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,YAAc,IAChBA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,UAAY,IACdA,EAAE,GAAK,IACPA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,SAAW,IACbA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,UAAY,IACdA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,UAAY,IACdA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,cAAgB,IAClBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,aAAe,IACjBA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,MAAQ,IACVA,EAAE,OAAS,IACXA,EAAE,WAAa,IACfA,EAAE,OAAS,IACXA,EAAE,QAAU,IACZA,EAAE,aAAe,IACjBA,EAAE,MAAQ,IACVA,EAAE,YAAc,IAChBA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,WAAa,IACfA,EAAE,UAAY,IACdA,EAAE,UAAY,IACdA,EAAE,SAAW,IACbA,EAAE,aAAe,IACjBA,EAAE,IAAM,IACRA,EAAE,OAAS,IACXA,EAAE,aAAe,IACjBA,EAAE,YAAc,IAChBA,EAAE,QAAU,IACZA,EAAE,KAAO,GACX,CAAC,EACD,EAAE,aAAemH,GAAsB,SAAUnH,EAAG,CAClDA,EAAE,MAAQ,IACVA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,KAAO,IACTA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,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S,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,EAAG,EAAG,MAAQ,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC3tJC,GAAqB,CACzB,WAAY,OACZ,QAAS,KACX,EACMC,GAA2B,CAAC,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,OAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACzwJC,GAA2B,CAC/B,WAAY,OACZ,QAAS,KACX,EACMC,GAAuB,CAAC,OAAQ,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,MAAQ,QAAS,OAAS,QAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,KAAO,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,MAAQ,KAAO,QAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC1rJC,GAAuB,CAC3B,WAAY,OACZ,QAAS,KACX,EACMC,GAAwB,CAAC,OAAQ,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,MAAQ,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,OAAS,OAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACpvJC,GAAwB,CAC5B,WAAY,OACZ,QAAS,KACX,EAGMC,GAAuB,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,MAAQ,EAAG,OAAQ,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,MAAQ,OAAQ,OAAS,EAAG,QAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAChjLC,GAAuB,CAC3B,WAAY,IACZ,QAAS,EACX,EACMC,GAA6B,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,OAAQ,QAAS,OAAS,QAAS,QAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACzjLC,GAA6B,CACjC,WAAY,KACZ,QAAS,EACX,EACMC,GAAyB,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,MAAQ,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAQ,OAAQ,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,EAAG,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAQ,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,EAAG,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,MAAQ,QAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACv6KC,GAAyB,CAC7B,WAAY,KACZ,QAAS,EACX,EACMC,GAA0B,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,MAAQ,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAQ,OAAQ,QAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,QAAS,EAAG,MAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,EAAG,OAAS,OAAS,EAAG,QAAS,OAAS,MAAQ,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,EAAG,OAAQ,EAAG,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,MAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,OAAQ,MAAQ,EAAG,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,EAAG,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,MAAQ,QAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC52KC,GAA0B,CAC9B,WAAY,IACZ,QAAS,EACX,EAGMC,GAA2B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC13GC,GAA4B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAC/gHC,GAAiC,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC93GC,GAAkC,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACrhHC,GAA6B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACz3GC,GAA8B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACjhHC,GAA8B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC53GC,GAA+B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGlhHC,GAAuB,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,MAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,MAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,KAAO,QAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,EAAG,EAAG,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,KAAO,MAAQ,KAAO,MAAQ,KAAO,EAAG,OAAS,OAAS,OAAS,KAAO,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,MAAQ,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,KAAO,KAAO,KAAO,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,IAAM,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAQ,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC36IC,GAAuB,CAC3B,WAAY,IACZ,QAAS,EACX,EACMC,GAA6B,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,GAAK,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,GAAK,OAAS,GAAK,OAAS,GAAK,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAA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AAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,KAAO,QAAS,EAAG,EAAG,KAAO,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,MAAQ,IAAM,MAAQ,IAAM,MAAQ,IAAM,EAAG,OAAS,OAAS,OAAS,KAAO,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,KAAO,OAAS,OAAS,IAAM,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,MAAQ,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,MAAO,MAAO,MAAO,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACj5IC,GAAyB,CAC7B,WAAY,IACZ,QAAS,EACX,EACMC,GAA0B,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,IAAM,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAQ,KAAO,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,KAAO,QAAS,QAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,KAAO,QAAS,OAAS,KAAO,QAAS,KAAO,KAAO,KAAO,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAQ,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,IAAM,QAAS,EAAG,EAAG,KAAO,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,KAAO,MAAQ,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,KAAO,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,KAAO,MAAQ,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,MAAO,QAAS,EAAG,EAAG,OAAQ,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACp6IC,GAA0B,CAC9B,WAAY,IACZ,QAAS,EACX,EAGMC,GAAqB,CAAC,QAAS,EAAG,EAAG,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,QAAS,OAAQ,MAAQ,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,KAAO,QAAS,OAAQ,MAAQ,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,MAAQ,QAAS,QAAS,EAAG,QAAS,QAAS,MAAQ,OAAQ,QAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,KAAO,QAAS,KAAO,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAQ,OAAQ,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,KAAO,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC7rJC,GAAqB,CACzB,WAAY,QACZ,QAAS,CACX,EACMC,GAA2B,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,MAAO,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,MAAQ,QAAS,MAAQ,QAAS,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,MAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,MAAO,MAAO,EAAG,MAAO,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,MAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAO,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAQ,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAO,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,MAAO,EAAG,EAAG,EAAG,KAAO,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC7tJC,GAA2B,CAC/B,WAAY,QACZ,QAAS,CACX,EACMC,GAAuB,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,MAAQ,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,MAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,IAAK,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAQ,KAAM,QAAS,IAAK,OAAQ,OAAQ,OAAS,QAAS,QAAS,KAAM,OAAS,QAAS,QAAS,IAAK,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAS,OAAQ,OAAQ,IAAK,OAAQ,OAAS,OAAQ,OAAQ,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,MAAO,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC/uJC,GAAuB,CAC3B,WAAY,QACZ,QAAS,CACX,EACMC,GAAwB,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,MAAQ,QAAS,MAAQ,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,IAAK,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAQ,OAAS,MAAQ,OAAQ,OAAS,QAAS,IAAK,QAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,IAAK,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,MAAO,EAAG,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,E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,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC74CC,GAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,K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aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,UACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,OACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,YACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,KACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,KACR,QAAS,EACT,aAAc,EACtB,EACM,KAAM,CACJ,GAAIA,EAAI,OACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,WACR,QAAS,EACT,aAAc,EACtB,EACM,KAAM,CACJ,GAAIA,EAAI,aACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,gBACR,QAAS,EACT,aAAc,EACtB,EACM,KAAM,CACJ,GAAIA,EAAI,kBACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,QACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,KACR,QAAS,EACT,aAAc,EACtB,EACM,KAAM,CACJ,GAAIA,EAAI,OACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,UACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,QACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,UACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,WACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,QACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,qBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,YACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,SACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,mBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,cACR,QAAS,EACT,aAAc,EACtB,EACM,KAAM,CACJ,GAAIA,EAAI,SACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,SACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,iBACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,2BACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,aACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,sBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,oBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,kBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,gBACR,QAAS,GACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,aACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,cACR,QAAS,GACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,cACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,YACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,kBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,gBACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,mBACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,iBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,YACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,iBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,aACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,UACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,mBACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,wBACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,iBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,YACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,UACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,KACJ,GAAI,KACJ,KAAM,KACN,GAAI,KACJ,IAAK,KACL,KAAM,KACN,MAAO,KACP,GAAI,KACJ,IAAK,KACL,KAAM,IACZ,CAAK,CAAC,CACJ,CACA,OAAO,qBAAuB,GAC9B,YAAYgkB,EAAQja,EAAMizF,EAAe,IAAIgD,GAAgB,CAC3D,KAAK,OAAS,IAAIv6C,GAAO,CACvB,MAAO,IAAIY,GAAMriC,EAAQk8E,GAAsB,KAAK,EACpD,KAAAn2F,CACN,CAAK,EACD,KAAK,aAAeizF,EACpB,KAAK,iBAAmB,CAAA,EACxB,KAAK,UAAY,GACjB,KAAK,mBAAqB,CAC5B,CACA,IAAI,kBAAmB,CACrB,OAAO,KAAK,aAAa,WAAW,MACtC,CACA,KAAKyD,EAAW,CACd,IAAI93F,EAAO83F,EAAU,KACrB,OAAa,CACX,MAAMl/F,EAAM,KAAK,OAAO,OAAM,EAC9B,GAAIA,aAAeoI,GAAK,CACtB,MAAMC,EAAMrI,EAAI,IACVkqG,EAASvL,GAAsB,MAAMt2F,CAAG,EAC9C,GAAI,CAAC6hG,EAAQ,CACXhrG,EAAK,oBAAoBmJ,CAAG,IAAI,EAChC,QACF,CACA,MAAMqvB,EAAKwyE,EAAO,GACZnlD,EAAUmlD,EAAO,QACvB,IAAIC,EAAa/iG,IAAS,KAAOA,EAAK,OAAS,EAK/C,GAJK,KAAK,YACR,KAAK,mBAAqB,GAE5B,KAAK,UAAYswB,GAAMj5B,EAAI,QAAUi5B,GAAMj5B,EAAI,QAC1CyrG,EAAO,aA0BDC,EAAaplD,GACtB/lD,GAAK,WAAWqJ,CAAG,kBAAkB08C,CAAO,wBAA6BolD,CAAU,QAAQ,MA3BnE,CACxB,GAAIA,IAAeplD,EAAS,CAC1B,MAAMqlD,EAAmB,KAAK,iBAC9B,KAAOD,EAAaplD,GAClBqlD,EAAiB,KAAKhjG,EAAK,OAAO,EAClC+iG,IAEF,KAAOA,EAAaplD,GAAWqlD,EAAiB,SAAW,GACrDhjG,IAAS,OACXA,EAAO,CAAA,GAETA,EAAK,QAAQgjG,EAAiB,KAAK,EACnCD,GAEJ,CACA,GAAIA,EAAaplD,EAAS,CACxB,MAAMz2B,EAAa,WAAWjmB,CAAG,cAAc08C,CAAO,uBAA4BolD,CAAU,SAC5F,GAAI,KAAK,WAAa,EAAE,KAAK,mBAAqBxL,GAAsB,qBACtE,MAAM,IAAI59F,EAAY,WAAWutB,CAAU,EAAE,EAE/CpvB,EAAK,YAAYovB,CAAU,EAAE,EACzBlnB,IAAS,OACXA,EAAK,OAAS,GAEhB,QACF,CACF,CAGA,YAAK,kBAAkBswB,EAAItwB,CAAI,EAC/B83F,EAAU,GAAKxnE,EACfwnE,EAAU,KAAO93F,EACV,EACT,CACA,GAAIpH,IAAQ8H,GACV,MAAO,GAET,GAAI9H,IAAQ,OACNoH,IAAS,OACXA,EAAO,CAAA,GAETA,EAAK,KAAKpH,CAAG,EACToH,EAAK,OAAS,IAChB,MAAM,IAAIrG,EAAY,oBAAoB,CAGhD,CACF,CACA,kBAAkB22B,EAAItwB,EAAM,CAC1B,OAAQswB,EAAK,EAAC,CACZ,KAAKj5B,EAAI,KACP,KAAK,aAAa,KAAI,EACtB,MACF,KAAKA,EAAI,QACP,KAAK,aAAa,QAAO,EACzB,MACF,KAAKA,EAAI,UACP,KAAK,aAAa,UAAU2I,CAAI,EAChC,KACR,CACE,CACF,CAYA,MAAMijG,WAAmC1L,EAAsB,CAC7D,YAAY7+F,EAAK,CACf,MAAM,IAAI4gB,GAAa5gB,CAAG,CAAC,CAC7B,CACA,OAAQ,CACN,MAAMo/F,EAAY,CAChB,GAAI,EACJ,KAAM,CAAA,CACZ,EACU5wF,EAAS,CACb,SAAU,EACV,SAAU,GACV,UAAW,IAAI,kBAAkB,CAAC,CACxC,EACI,GAAI,CACF,KACE4wF,EAAU,KAAK,OAAS,EACpB,EAAC,KAAK,KAAKA,CAAS,GAFb,CAKX,GAAI,KAAK,mBAAqB,EAC5B,SAEF,KAAM,CACJ,GAAAxnE,EACA,KAAAtwB,CACV,EAAY83F,EACJ,OAAQxnE,EAAK,EAAC,CACZ,KAAKj5B,EAAI,QACP,KAAM,CAAC26D,EAAUqmC,CAAQ,EAAIr4F,EACzBgyD,aAAoBjxD,IACtBmG,EAAO,SAAW8qD,EAAS,MAEzB,OAAOqmC,GAAa,UAAYA,EAAW,IAC7CnxF,EAAO,SAAWmxF,GAEpB,MACF,KAAKhhG,EAAI,gBACPsqB,GAAgB,IAAI,WAAW3hB,EAAM,EAAGkH,EAAO,UAAW,CAAC,EAC3D,MACF,KAAK7P,EAAI,YACPsqB,GAAgB,KAAK,WAAW3hB,EAAM,EAAGkH,EAAO,UAAW,CAAC,EAC5D,MACF,KAAK7P,EAAI,iBACPsqB,GAAgB,KAAK,WAAW3hB,EAAM,EAAGkH,EAAO,UAAW,CAAC,EAC5D,KACZ,CACM,CACF,OAAS+T,EAAQ,CACfnjB,EAAK,8CAA8CmjB,CAAM,IAAI,CAC/D,CACA,OAAO/T,CACT,CACF,CACA,SAASg8F,GAAuBxqG,EAAK,CACnC,OAAO,IAAIuqG,GAA2BvqG,CAAG,EAAE,MAAK,CAClD,CACA,MAAMyqG,WAAkC5L,EAAsB,CAC5D,YAAYl8E,EAAQja,EAAM2gB,EAAuB,CAC/C,MAAM1G,CAAM,EACZ,KAAK,OAASA,EACd,KAAK,KAAOja,EACZ,KAAK,sBAAwB2gB,EAC7B,KAAK,UAAY1G,EAAO,MAAM,IAAI,WAAW,CAC/C,CACA,OAAQ,CACN,MAAMy8E,EAAY,CAChB,GAAI,EACJ,KAAM,CAAA,CACZ,EACI,IAAI5wF,EAAS,CACX,YAAa,EACb,SAAU,EACV,SAAU,GACV,UAAW,IAAI,kBAAkB,CAAC,EAClC,eAAgBya,GAAgB,IACtC,EACQyhF,EAAY,GAChB,MAAMjpE,EAAQ,CAAA,EACd,GAAI,CACF,KACE29D,EAAU,KAAK,OAAS,EACpB,EAAAsL,GAAa,CAAC,KAAK,KAAKtL,CAAS,IAF1B,CAKX,KAAM,CACJ,GAAAxnE,EACA,KAAAtwB,CACV,EAAY83F,EACJ,OAAQxnE,EAAK,EAAC,CACZ,KAAKj5B,EAAI,KACP8iC,EAAM,KAAK,CACT,YAAajzB,EAAO,YACpB,SAAUA,EAAO,SACjB,SAAUA,EAAO,SACjB,UAAWA,EAAO,UAAU,MAAK,EACjC,eAAgBA,EAAO,cACrC,CAAa,EACD,MACF,KAAK7P,EAAI,QACP6P,EAASizB,EAAM,IAAG,GAAMjzB,EACxB,MACF,KAAK7P,EAAI,cACP,MAAMgsG,EAAKzoG,GAAK,UAAU,KAAK,aAAa,MAAM,IAAKoF,CAAI,EAC3DkH,EAAO,aAAe,KAAK,MAAMm8F,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,EAC7C,MACF,KAAKhsG,EAAI,QACP,KAAM,CAAC26D,EAAUqmC,CAAQ,EAAIr4F,EACzBgyD,aAAoBjxD,IACtBmG,EAAO,SAAW8qD,EAAS,MAEzB,OAAOqmC,GAAa,UAAYA,EAAW,IAC7CnxF,EAAO,SAAWmxF,GAEpB,MACF,KAAKhhG,EAAI,kBACP6P,EAAO,eAAiBya,GAAgB,MAAM,CAC5C,GAAI3hB,EAAK,CAAC,EACV,KAAM,KAAK,KACX,UAAW,KAAK,UAChB,mBAAoB,KAAK,oBACzB,sBAAuB,KAAK,sBAC5B,qBAAsB,KAAK,qBACzC,CAAa,EACD,MACF,KAAK3I,EAAI,aACI6P,EAAO,eACf,WAAWlH,EAAM,EAAGkH,EAAO,UAAW,CAAC,EAC1C,MACF,KAAK7P,EAAI,gBACPsqB,GAAgB,IAAI,WAAW3hB,EAAM,EAAGkH,EAAO,UAAW,CAAC,EAC3D,MACF,KAAK7P,EAAI,YACPsqB,GAAgB,KAAK,WAAW3hB,EAAM,EAAGkH,EAAO,UAAW,CAAC,EAC5D,MACF,KAAK7P,EAAI,iBACPsqB,GAAgB,KAAK,WAAW3hB,EAAM,EAAGkH,EAAO,UAAW,CAAC,EAC5D,MACF,KAAK7P,EAAI,SACT,KAAKA,EAAI,eACT,KAAKA,EAAI,iBACT,KAAKA,EAAI,2BACP6P,EAAO,UAAYA,EAAO,YAC1Bk8F,EAAY,GACZ,KACZ,CACM,CACF,OAASnoF,EAAQ,CACfnjB,EAAK,6CAA6CmjB,CAAM,IAAI,CAC9D,CACA,YAAK,OAAO,MAAK,EACjB,OAAO/T,EAAO,YACd,OAAOA,EAAO,eACPA,CACT,CACA,IAAI,uBAAwB,CAC1B,OAAOvO,GAAO,KAAM,wBAAyB,IAAI8rF,EAAsB,CACzE,CACA,IAAI,qBAAsB,CACxB,OAAO9rF,GAAO,KAAM,sBAAuB,IAAI6sF,GAAmB,CAChE,KAAM,KAAK,IACjB,CAAK,CAAC,CACJ,CACF,CACA,SAAS8d,GAAsBjoF,EAAQja,EAAM2gB,EAAuB,CAClE,OAAO,IAAIohF,GAA0B9nF,EAAQja,EAAM2gB,CAAqB,EAAE,MAAK,CACjF,CACA,SAASwhF,GAAYvuF,EAAOwuF,EAAQ,CAClC,GAAIxuF,EAAM,CAAC,IAAMA,EAAM,CAAC,GAAKA,EAAM,CAAC,IAAMA,EAAM,CAAC,EAAG,CAClD,MAAMyuF,EAAOzuF,EAAM,CAAC,EAAI,IACxB,MAAO,GAAGnK,GAAe44F,CAAI,CAAC,IAAID,EAAS,IAAM,GAAG,EACtD,CACA,OAAO,MAAM,KAAKxuF,EAAO3X,GAAKwN,GAAexN,EAAI,GAAG,CAAC,EAAE,KAAK,GAAG,EAAI,IAAImmG,EAAS,KAAO,IAAI,EAC7F,CACA,SAASE,GAAwB,CAC/B,SAAArL,EACA,SAAArmC,EACA,UAAA2xC,CACF,EAAG,CACD,MAAO,IAAIn7F,GAAcwpD,CAAQ,CAAC,IAAIqmC,CAAQ,OAAOkL,GAAYI,EAAW,EAAI,CAAC,EACnF,CACA,MAAMC,EAAgB,CACpB,MAAOC,GAAc,EACrB,YAAYziG,EAAMmD,EAAY,CAC5B,KAAK,KAAOnD,EACZ,KAAK,OAAS,KACd,KAAK,UAAY,IACjB,KAAK,SAAW,KAChB,KAAK,WAAamD,EAClB,MAAM0Z,EAAS,IAAI,gBAAgB,EAAG,CAAC,EACvC,KAAK,WAAaA,EAAO,WAAW,KAAM,CACxC,mBAAoB,EAC1B,CAAK,EACD,KAAK,SAAWld,EAAK,IAAI,oBAAoBwD,CAAU,IAAIq/F,GAAgBC,IAAa,EAAE,CAC5F,CACA,IAAI,mBAAoB,CACtB,GAAI,CAACD,GAAgB,mBAAoB,CACvC,MAAME,EAAiB,IAAI5iG,EAAK,KAAK,IAAI,EACzC4iG,EAAe,UAAU,OAAQ,gBAAgB,EACjDA,EAAe,IAAI,WAAY,KAAK,QAAQ,EAC5CA,EAAe,IAAI,aAAc,mBAAmB,EACpDA,EAAe,IAAI,WAAY,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC3CA,EAAe,UAAU,cAAe,QAAQ,EAChDA,EAAe,IAAI,aAAc,GAAG,EACpCA,EAAe,IAAI,cAAe,CAAC,EACnCF,GAAgB,mBAAqB,KAAK,KAAK,oBAAoBE,CAAc,CACnF,CACA,OAAOF,GAAgB,kBACzB,CACA,IAAI,mBAAoB,CACtB,MAAMG,EAAiB,IAAI7iG,EAAK,KAAK,IAAI,EACzC6iG,EAAe,IAAI,WAAY,KAAK,QAAQ,EAC5CA,EAAe,UAAU,OAAQ,MAAM,EACvCA,EAAe,UAAU,UAAW,cAAc,EAClDA,EAAe,UAAU,cAAe,UAAU,EAClDA,EAAe,IAAI,YAAa,KAAK,SAAS,EAC9CA,EAAe,IAAI,WAAY,KAAK,QAAQ,EAC5CA,EAAe,IAAI,iBAAkB,KAAK,iBAAiB,EAC3DA,EAAe,IAAI,KAAM,GAAI,EAC7B,MAAMn4C,EAAS,CAAA,EACTmrB,EAAQ,CAAC,GAAG,KAAK,MAAM,EAAE,KAAI,EACnC,IAAIitB,EAAc,KACdC,EAAgB,KACpB,SAAW,CAAC5/F,EAAMV,CAAK,IAAKozE,EAAO,CACjC,GAAI,CAACitB,EAAa,CAChBA,EAAc3/F,EACd4/F,EAAgB,CAACtgG,CAAK,EACtB,QACF,CACIU,IAAS2/F,EAAcC,EAAc,OACvCA,EAAc,KAAKtgG,CAAK,GAExBioD,EAAO,KAAKo4C,EAAaC,CAAa,EACtCD,EAAc3/F,EACd4/F,EAAgB,CAACtgG,CAAK,EAE1B,CACIqgG,GACFp4C,EAAO,KAAKo4C,EAAaC,CAAa,EAExCF,EAAe,IAAI,IAAKn4C,CAAM,EAC9B,MAAMoyC,EAAgB,IAAI98F,EAAK,KAAK,IAAI,EACxC,OAAA88F,EAAc,IAAI,WAAY,UAAU,EACxCA,EAAc,IAAI,WAAY,OAAO,EACrCA,EAAc,IAAI,aAAc,CAAC,EACjC+F,EAAe,IAAI,gBAAiB/F,CAAa,EAC1C,KAAK,KAAK,oBAAoB+F,CAAc,CACrD,CACA,IAAI,aAAc,CAChB,MAAMrD,EAAW,IAAIx/F,EAAK,KAAK,IAAI,EACnC,OAAAw/F,EAAS,IAAI,WAAY,KAAK,QAAQ,EACtCA,EAAS,UAAU,OAAQ,MAAM,EACjCA,EAAS,UAAU,UAAW,OAAO,EACrCA,EAAS,UAAU,WAAY,YAAY,EAC3CA,EAAS,IAAI,kBAAmB,CAAC,KAAK,iBAAiB,CAAC,EACxDA,EAAS,UAAU,YAAa,YAAY,EACrC,KAAK,KAAK,oBAAoBA,CAAQ,CAC/C,CACA,IAAI,WAAY,CACd,MAAM7+E,EAAY,IAAI3gB,EAAK,KAAK,IAAI,EAC9Bu3D,EAAO,IAAIv3D,EAAK,KAAK,IAAI,EAC/B,OAAAu3D,EAAK,IAAI,KAAK,SAAS,KAAM,KAAK,WAAW,EAC7C52C,EAAU,IAAI,OAAQ42C,CAAI,EACnB52C,CACT,CACA,gBAAiB,CACf,YAAK,OAAS,IAAI,IAClB,KAAK,WAAW,KAAO,UAAU,KAAK,UAAU,GACzC,KAAK,UACd,CACA,oBAAoBihD,EAAM,CACxB,MAAMnoE,EAAM,KAAK,eAAc,EAC/B,UAAWupG,KAAQphC,EAAK,MAAM,UAAU,EACtC,UAAWz+D,KAAQ6/F,EAAK,MAAM,EAAE,EAAG,CACjC,MAAM9qG,EAAOiL,EAAK,WAAW,CAAC,EAC9B,GAAI,KAAK,OAAO,IAAIjL,CAAI,EACtB,SAEF,MAAM8yE,EAAUvxE,EAAI,YAAY0J,CAAI,EAC9BV,EAAQ,KAAK,KAAKuoE,EAAQ,KAAK,EACrC,KAAK,OAAO,IAAI9yE,EAAMuK,CAAK,EAC3B,KAAK,UAAY,KAAK,IAAIvK,EAAM,KAAK,SAAS,EAC9C,KAAK,SAAW,KAAK,IAAIA,EAAM,KAAK,QAAQ,CAC9C,CAEF,OAAO,KAAK,SACd,CACA,OAAO,qBAAqB6C,EAAMoP,EAAUgtF,EAAU,CACpD,KAAM,CAACl6F,EAAIC,EAAIE,EAAIE,CAAE,EAAIvC,EACzB,IAAIm+E,EAAI97E,EAAKH,EACTqhB,EAAIhhB,EAAKJ,EACTiN,EAAW,MAAQ,IACrB,CAAC+uE,EAAG56D,CAAC,EAAI,CAACA,EAAG46D,CAAC,GAEhB,MAAM+pB,EAA+C,KAAQ9L,EACvD+L,EAAwD,IAAQ/L,EACtE,MAAO,CACL,OAAQ,CAAC,EAAG74E,EAAI4kF,EAAcD,CAAU,EACxC,KAAM,CAAC,EAAG,EAAG/pB,EAAG56D,CAAC,EACjB,OAAQnU,IAAa,EAAID,GAAkBC,EAAUmU,EAAG2kF,CAAU,EAAI,MAC5E,CACE,CACA,iBAAiBrhC,EAAM7mE,EAAMoP,EAAUgtF,EAAUgM,EAASC,EAAa,CACrE,MAAM3pG,EAAM,KAAK,eAAc,EACzB4pG,EAAQ,CAAA,EACd,IAAIC,EAAW,KACf,UAAWN,KAAQphC,EAAK,MAAM,UAAU,EAAG,CACzCyhC,EAAM,KAAKL,CAAI,EACf,MAAMO,EAAY9pG,EAAI,YAAYupG,CAAI,EAAE,MACxCM,EAAW,KAAK,IAAIA,EAAUC,CAAS,EACvC,UAAWrrG,KAAQsQ,GAAcw6F,CAAI,EAAG,CACtC,MAAM7/F,EAAO,OAAO,cAAcjL,CAAI,EACtC,IAAIuK,GAAQ,KAAK,OAAO,IAAIvK,CAAI,EAChC,GAAIuK,KAAU,OAAW,CACvB,MAAMuoE,GAAUvxE,EAAI,YAAY0J,CAAI,EACpCV,GAAQ,KAAK,KAAKuoE,GAAQ,KAAK,EAC/B,KAAK,OAAO,IAAI9yE,EAAMuK,EAAK,EAC3B,KAAK,UAAY,KAAK,IAAIvK,EAAM,KAAK,SAAS,EAC9C,KAAK,SAAW,KAAK,IAAIA,EAAM,KAAK,QAAQ,CAC9C,CACF,CACF,CACAorG,GAAYnM,EAAW,IACvB,KAAM,CAACl6F,EAAIC,EAAIE,EAAIE,CAAE,EAAIvC,EACzB,IAAIm+E,EAAI97E,EAAKH,EACTqhB,EAAIhhB,EAAKJ,EACTiN,EAAW,MAAQ,IACrB,CAAC+uE,EAAG56D,CAAC,EAAI,CAACA,EAAG46D,CAAC,GAEhB,MAAMsqB,EAASF,EAAWpqB,EAAIA,EAAIoqB,EAAW,EAC7C,IAAIG,EAAS,EACb,MAAMR,EAA+C,KAAQ9L,EACvD+L,EAAwD,IAAQ/L,EAChEh5E,EAAY8kF,EAAaI,EAAM,OACjCllF,EAAYG,IACdmlF,EAASnlF,EAAIH,GAEf,MAAMulF,EAAS,KAAK,IAAIF,EAAQC,CAAM,EAChCE,EAAcxM,EAAWuM,EACzBx/F,EAAS,CAAC,IAAK,OAAOyF,GAAeuvE,CAAC,CAAC,IAAIvvE,GAAe2U,CAAC,CAAC,UAAW,KAAM,aAAa3U,GAAe2U,EAAI4kF,CAAW,CAAC,YAAYb,GAAYc,EAAS,EAAI,CAAC,GAAI,IAAI,KAAK,SAAS,IAAI,IAAIx5F,GAAeg6F,CAAW,CAAC,KAAK,EAC7N,CACJ,UAAAhjF,CACN,EAAQ,KAEJ,GADAyiF,EAAc,OAAOA,GAAgB,UAAYA,GAAe,GAAKA,GAAe,EAAIA,EAAc,EAClGA,IAAgB,EAAG,CACrBl/F,EAAO,KAAK,QAAQ,EACpB,MAAM2zF,EAAY,IAAI73F,EAAK,KAAK,IAAI,EAC9B/E,EAAK,IAAI+E,EAAK,KAAK,IAAI,EAC7B/E,EAAG,IAAI,KAAMmoG,CAAW,EACxBnoG,EAAG,IAAI,KAAMmoG,CAAW,EACxBnoG,EAAG,UAAU,OAAQ,WAAW,EAChC48F,EAAU,IAAI,KAAM58F,CAAE,EACtB0lB,EAAU,IAAI,YAAak3E,CAAS,CACtC,CACA,MAAM+L,EAASj6F,GAAes5F,CAAU,EACxC,UAAWD,KAAQK,EACjBn/F,EAAO,KAAK,MAAM0/F,CAAM,QAAQngG,GAAuBu/F,CAAI,CAAC,MAAM,EAEpE9+F,EAAO,KAAK,KAAM,GAAG,EACrB,MAAM2/F,EAAa3/F,EAAO,KAAK;AAAA,CAAI,EAC7B4/F,EAAuB,IAAI9jG,EAAK,KAAK,IAAI,EAM/C,GALA8jG,EAAqB,UAAU,UAAW,MAAM,EAChDA,EAAqB,UAAU,OAAQ,SAAS,EAChDA,EAAqB,IAAI,OAAQ,CAAC,EAAG,EAAG5qB,EAAG56D,CAAC,CAAC,EAC7CwlF,EAAqB,IAAI,SAAUD,EAAW,MAAM,EACpDC,EAAqB,IAAI,YAAanjF,CAAS,EAC3CxW,EAAU,CACZ,MAAMlO,EAASiO,GAAkBC,EAAU+uE,EAAG56D,CAAC,EAC/CwlF,EAAqB,IAAI,SAAU7nG,CAAM,CAC3C,CACA,OAAO,IAAImc,GAAayrF,EAAYC,CAAoB,CAC1D,CACF,CA8DA,MAAMC,GAAc,CAAC,MAAO,SAAU,WAAY,QAAS,QAAS,WAAY,YAAa,WAAY,SAAU,UAAW,cAAe,eAAgB,iBAAkB,cAAc,EACvLC,GAAc,CAAC,QAAS,UAAW,WAAY,YAAY,EAKjE,MAAMC,EAAiB,CACrB,YAAYC,EAAMhkG,EAAMiC,EAAM,CAC5B,KAAK,KAAO+hG,EACZ,KAAK,KAAOhkG,EACZ,KAAK,MAAQiC,CACf,CACA,OAAOgiG,EAAQ,GAAO,CACpB,MAAMriG,EAAM,IAAI,IAChB,GAAI,CAAC,KAAK,KACR,OAAOA,EAET,MAAM5B,EAAO,KAAK,KACZiqB,EAAY,IAAI5oB,GAClB,KAAK,gBAAgBf,GACvB2pB,EAAU,IAAI,KAAK,IAAI,EAEzB,MAAMgF,EAAQ,CAAC,KAAK,IAAI,EACxB,UAAWhL,KAAQgL,EAAO,CACxB,MAAMz3B,EAAMwI,EAAK,WAAWikB,CAAI,EAChC,GAAI,EAAEzsB,aAAesI,GACnB,SAEF,GAAItI,EAAI,IAAI,MAAM,EAAG,CACnB,MAAM0sG,EAAO1sG,EAAI,IAAI,MAAM,EAC3B,GAAI,CAAC,MAAM,QAAQ0sG,CAAI,EACrB,SAEF,UAAWC,KAAOD,EAAM,CACtB,GAAIC,aAAe7jG,EAAK,CACtB,GAAI2pB,EAAU,IAAIk6E,CAAG,EACnB,MAAM,IAAI5rG,EAAY,uBAAuB,KAAK,KAAK,SAAS,EAElE0xB,EAAU,IAAIk6E,CAAG,CACnB,CACAl1E,EAAM,KAAKk1E,CAAG,CAChB,CACA,QACF,CACA,MAAMh7C,EAAU3xD,EAAI,IAAI,KAAK,KAAK,EAClC,GAAK,MAAM,QAAQ2xD,CAAO,EAG1B,QAASrwD,EAAI,EAAGmF,EAAKkrD,EAAQ,OAAQrwD,EAAImF,EAAInF,GAAK,EAChD8I,EAAI,IAAIqiG,EAAQ96C,EAAQrwD,CAAC,EAAIkH,EAAK,WAAWmpD,EAAQrwD,CAAC,CAAC,EAAGmrG,EAAQ96C,EAAQrwD,EAAI,CAAC,EAAIkH,EAAK,WAAWmpD,EAAQrwD,EAAI,CAAC,CAAC,CAAC,CAEtH,CACA,OAAO8I,CACT,CACA,OAAOrB,EAAK,CACV,GAAI,CAAC,KAAK,KACR,OAAO,KAET,MAAMP,EAAO,KAAK,KAClB,IAAIokG,EAAgBpkG,EAAK,WAAW,KAAK,IAAI,EACzCqkG,EAAY,EAChB,MAAMC,EAAa,GACnB,KAAOF,EAAc,IAAI,MAAM,GAAG,CAChC,GAAI,EAAEC,EAAYC,EAChB,OAAA5tG,EAAK,mCAAmC,KAAK,KAAK,SAAS,EACpD,KAET,MAAMwtG,EAAOE,EAAc,IAAI,MAAM,EACrC,GAAI,CAAC,MAAM,QAAQF,CAAI,EACrB,OAAO,KAET,IAAIp7E,EAAI,EACNpvB,EAAIwqG,EAAK,OAAS,EACpB,KAAOp7E,GAAKpvB,GAAG,CACb,MAAMK,EAAI+uB,EAAIpvB,GAAK,EACbyqG,EAAMnkG,EAAK,WAAWkkG,EAAKnqG,CAAC,CAAC,EAC7BwqG,EAASJ,EAAI,IAAI,QAAQ,EAC/B,GAAI5jG,EAAMP,EAAK,WAAWukG,EAAO,CAAC,CAAC,EACjC7qG,EAAIK,EAAI,UACCwG,EAAMP,EAAK,WAAWukG,EAAO,CAAC,CAAC,EACxCz7E,EAAI/uB,EAAI,MACH,CACLqqG,EAAgBD,EAChB,KACF,CACF,CACA,GAAIr7E,EAAIpvB,EACN,OAAO,IAEX,CACA,MAAMyvD,EAAUi7C,EAAc,IAAI,KAAK,KAAK,EAC5C,GAAI,MAAM,QAAQj7C,CAAO,EAAG,CAC1B,IAAIrgC,EAAI,EACNpvB,EAAIyvD,EAAQ,OAAS,EACvB,KAAOrgC,GAAKpvB,GAAG,CACb,MAAMolB,EAAMgK,EAAIpvB,GAAK,EACnBK,EAAI+kB,GAAOA,EAAM,GACb0lF,EAAaxkG,EAAK,WAAWmpD,EAAQpvD,CAAC,CAAC,EAC7C,GAAIwG,EAAMikG,EACR9qG,EAAIK,EAAI,UACCwG,EAAMikG,EACf17E,EAAI/uB,EAAI,MAER,QAAOovD,EAAQpvD,EAAI,CAAC,CAExB,CACF,CACA,OAAO,IACT,CACA,IAAIwG,EAAK,CACP,OAAO,KAAK,KAAK,WAAW,KAAK,OAAOA,CAAG,CAAC,CAC9C,CACF,CACA,MAAMkkG,WAAiBV,EAAiB,CACtC,YAAYC,EAAMhkG,EAAM,CACtB,MAAMgkG,EAAMhkG,EAAM,OAAO,CAC3B,CACF,CACA,MAAM0kG,WAAmBX,EAAiB,CACxC,YAAYC,EAAMhkG,EAAM,CACtB,MAAMgkG,EAAMhkG,EAAM,MAAM,CAC1B,CACF,CAOA,SAAS2kG,IAAoB,CAC3BvuE,GAAkB,EAClB12B,GAAoB,EACpBmkD,GAAkB,EAClB5T,GAAU,QAAO,CACnB,CAOA,MAAM20D,EAAS,CACb,YAAYZ,EAAM,CACVA,aAAgBlkG,IAGtB,KAAK,KAAOkkG,EACRA,EAAK,IAAI,IAAI,GACfttG,EAAK,+CAA+C,EAExD,CACA,IAAI,UAAW,CACb,MAAM2O,EAAOu/F,GAAS,iBAAiB,KAAK,IAAI,EAChD,OAAIv/F,GAAQ,OAAOA,GAAS,SACnBzB,GAAkByB,EAAM,EAAI,EAAE,WAAW,OAAQ,IAAI,EAAE,WAAW,MAAO,GAAG,EAAE,WAAW,KAAM,GAAG,EAEpG,EACT,CACA,IAAI,aAAc,CAChB,MAAMw/F,EAAO,KAAK,MAAM,IAAI,MAAM,EAClC,OAAIA,GAAQ,OAAOA,GAAS,SACnBjhG,GAAkBihG,CAAI,EAExB,EACT,CACA,IAAI,cAAe,CACjB,KAAM,CACJ,SAAAnT,EACA,YAAAoT,CACN,EAAQ,KACJ,MAAO,CACL,YAAapT,EACb,SAAUr6F,GAAUq6F,CAAQ,GAAK,UACjC,YAAAoT,CACN,CACE,CACA,OAAO,iBAAiBjkG,EAAMyrD,EAAM,GAAO,CACzC,GAAIzrD,aAAgBf,GAClB,UAAWS,IAAO,CAAC,KAAM,IAAK,OAAQ,MAAO,KAAK,EAChD,GAAIM,EAAK,IAAIN,CAAG,EACd,OAAO+rD,EAAMzrD,EAAK,OAAON,CAAG,EAAIM,EAAK,IAAIN,CAAG,EAIlD,OAAO,IACT,CACA,OAAO,gBAAgBwkG,EAAc,CACnC,OAAO,KAAK,iBAAiBA,EAAa,IAAI,IAAI,CAAC,YAAa1iG,EAClE,CACA,OAAO,YAAYxB,EAAM,CACvB,GAAI,EAAEA,aAAgBf,GACpB,OAAO,KAET,MAAMklG,EAAK,KAAK,iBAAiBnkG,EAAK,IAAI,IAAI,CAAC,EAC/C,OAAMmkG,aAAc3iG,GAIb,KAAK,kBAAkB2iG,CAAE,GAH9BtuG,EAAK,oEAAoE,EAClE,KAGX,CACA,OAAO,kBAAkBujB,EAAQ,CAE/B,GADgBA,EAAO,MAAM,MAAM,SACtB,gBAAkB,KAC7B,MAAM,IAAIliB,GAAkB,oBAAqB5B,GAAkB,aAAa,EAElF,OAAO8jB,EAAO,SAAQ,CACxB,CACF,CAKA,MAAMgrF,GAAqB,CACzB,QAAS,EAET,iBAAkB,GAClB,2BAA4B,GAC5B,+BAAgC,GAChC,oBAAqB,GACrB,iBAAkB,GAGlB,oBAAqB,EAEvB,EACA,SAASC,GAAajlF,EAAG4J,EAAO,CAC9B,MAAMrjB,EAAKyZ,EAAE4J,CAAK,EAClB,OAAOrjB,IAAO,KAAOA,IAAO;AAAA,GAAQA,IAAO,MAAQA,IAAO,GAC5D,CACA,SAAS2+F,GAAmBllF,EAAG,CAC7B,QAASnnB,EAAI,EAAGmF,EAAKgiB,EAAE,OAAQnnB,EAAImF,EAAInF,IACrC,GAAI,CAACosG,GAAajlF,EAAGnnB,CAAC,EACpB,MAAO,GAGX,MAAO,EACT,CACA,MAAMssG,EAAc,CAClB,WAAW,cAAe,CACxB,OAAO7tG,GAAO,KAAM,eAAgB,sCAAsC,CAC5E,CACA,iBAAiB0oB,EAAG,CAClB,OAAOA,EAAE,WAAWmlF,GAAc,aAAc,CAACC,EAAKjtC,EAAKktC,EAAK98F,IAAW,CACzE,GAAI4vD,GAAOktC,EAAK,CACd,MAAMttG,EAAOogE,EAAM,SAASA,EAAK,EAAE,EAAI,SAASktC,EAAK,EAAE,EACvD,OAAOttG,GAAQ,GAAKA,GAAQ,QAAW,OAAO,cAAcA,CAAI,EAAIqtG,CACtE,CACA,OAAQ78F,EAAM,CACZ,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,MACH,MAAO,IACT,IAAK,OACH,MAAO,IACT,IAAK,OACH,MAAO,GACjB,CACM,OAAO,KAAK,gBAAgBA,CAAM,CACpC,CAAC,CACH,CACA,cAAcyX,EAAGpd,EAAO,CACtB,MAAM0iG,EAAa,CAAA,EACnB,IAAIrrG,EAAM2I,EACV,SAAS2iG,GAAS,CAChB,KAAOtrG,EAAM+lB,EAAE,QAAUilF,GAAajlF,EAAG/lB,CAAG,GAC1C,EAAEA,CAEN,CACA,KAAOA,EAAM+lB,EAAE,QAAU,CAACilF,GAAajlF,EAAG/lB,CAAG,GAAK+lB,EAAE/lB,CAAG,IAAM,KAAO+lB,EAAE/lB,CAAG,IAAM,KAC7E,EAAEA,EAEJ,MAAMpC,EAAOmoB,EAAE,UAAUpd,EAAO3I,CAAG,EAEnC,IADAsrG,EAAM,EACCtrG,EAAM+lB,EAAE,QAAUA,EAAE/lB,CAAG,IAAM,KAAO+lB,EAAE/lB,CAAG,IAAM,KAAO+lB,EAAE/lB,CAAG,IAAM,KAAK,CAC3EsrG,EAAM,EACN,IAAIC,EAAW,GACbC,EAAY,GACd,KAAOxrG,EAAM+lB,EAAE,QAAU,CAACilF,GAAajlF,EAAG/lB,CAAG,GAAK+lB,EAAE/lB,CAAG,IAAM,KAC3DurG,GAAYxlF,EAAE/lB,CAAG,EACjB,EAAEA,EAGJ,GADAsrG,EAAM,EACFvlF,EAAE/lB,CAAG,IAAM,IACb,OAAO,KAET,EAAEA,EACFsrG,EAAM,EACN,MAAMG,EAAc1lF,EAAE/lB,CAAG,EACzB,GAAIyrG,IAAgB,KAAOA,IAAgB,IACzC,OAAO,KAET,MAAMC,EAAe3lF,EAAE,QAAQ0lF,EAAa,EAAEzrG,CAAG,EACjD,GAAI0rG,EAAe,EACjB,OAAO,KAETF,EAAYzlF,EAAE,UAAU/lB,EAAK0rG,CAAY,EACzCL,EAAW,KAAK,CACd,KAAME,EACN,MAAO,KAAK,iBAAiBC,CAAS,CAC9C,CAAO,EACDxrG,EAAM0rG,EAAe,EACrBJ,EAAM,CACR,CACA,MAAO,CACL,KAAA1tG,EACA,WAAAytG,EACA,OAAQrrG,EAAM2I,CACpB,CACE,CACA,4BAA4Bod,EAAGpd,EAAO,CACpC,IAAI3I,EAAM2I,EACV,SAAS2iG,GAAS,CAChB,KAAOtrG,EAAM+lB,EAAE,QAAUilF,GAAajlF,EAAG/lB,CAAG,GAC1C,EAAEA,CAEN,CACA,KAAOA,EAAM+lB,EAAE,QAAU,CAACilF,GAAajlF,EAAG/lB,CAAG,GAAK+lB,EAAE/lB,CAAG,IAAM,KAAO+lB,EAAE/lB,CAAG,IAAM,KAAO+lB,EAAE/lB,CAAG,IAAM,KAC/F,EAAEA,EAEJ,MAAMpC,EAAOmoB,EAAE,UAAUpd,EAAO3I,CAAG,EACnCsrG,EAAM,EACN,MAAMK,EAAY3rG,EAClB,KAAOA,EAAM+lB,EAAE,SAAWA,EAAE/lB,CAAG,IAAM,KAAO+lB,EAAE/lB,EAAM,CAAC,IAAM,MACzD,EAAEA,EAEJ,MAAMxC,EAAQuoB,EAAE,UAAU4lF,EAAW3rG,CAAG,EACxC,MAAO,CACL,KAAApC,EACA,MAAAJ,EACA,OAAQwC,EAAM2I,CACpB,CACE,CACA,SAASod,EAAG,CACV,IAAInnB,EAAI,EACR,KAAOA,EAAImnB,EAAE,QAAQ,CACnB,MAAMzZ,EAAKyZ,EAAEnnB,CAAC,EACd,IAAIoS,EAAIpS,EACR,GAAI0N,IAAO,IAAK,CACd,EAAE0E,EACF,MAAM46F,EAAM7lF,EAAE/U,CAAC,EACf,IAAIuG,EACJ,OAAQq0F,EAAG,CACT,IAAK,IAGH,GAFA,EAAE56F,EACFuG,EAAIwO,EAAE,QAAQ,IAAK/U,CAAC,EAChBuG,EAAI,EAAG,CACT,KAAK,QAAQwzF,GAAmB,mBAAmB,EACnD,MACF,CACA,KAAK,aAAahlF,EAAE,UAAU/U,EAAGuG,CAAC,CAAC,EACnCvG,EAAIuG,EAAI,EACR,MACF,IAAK,IACH,EAAEvG,EACF,MAAMipB,EAAK,KAAK,4BAA4BlU,EAAG/U,CAAC,EAChD,GAAI+U,EAAE,UAAU/U,EAAIipB,EAAG,OAAQjpB,EAAIipB,EAAG,OAAS,CAAC,IAAM,KAAM,CAC1D,KAAK,QAAQ8wE,GAAmB,0BAA0B,EAC1D,MACF,CACA,KAAK,KAAK9wE,EAAG,KAAMA,EAAG,KAAK,EAC3BjpB,GAAKipB,EAAG,OAAS,EACjB,MACF,IAAK,IACH,GAAIlU,EAAE,UAAU/U,EAAI,EAAGA,EAAI,CAAC,IAAM,KAAM,CAEtC,GADAuG,EAAIwO,EAAE,QAAQ,MAAO/U,EAAI,CAAC,EACtBuG,EAAI,EAAG,CACT,KAAK,QAAQwzF,GAAmB,mBAAmB,EACnD,MACF,CACA,KAAK,UAAUhlF,EAAE,UAAU/U,EAAI,EAAGuG,CAAC,CAAC,EACpCvG,EAAIuG,EAAI,CACV,SAAWwO,EAAE,UAAU/U,EAAI,EAAGA,EAAI,CAAC,IAAM,UAAW,CAElD,GADAuG,EAAIwO,EAAE,QAAQ,MAAO/U,EAAI,CAAC,EACtBuG,EAAI,EAAG,CACT,KAAK,QAAQwzF,GAAmB,gBAAgB,EAChD,MACF,CACA,KAAK,QAAQhlF,EAAE,UAAU/U,EAAI,EAAGuG,CAAC,CAAC,EAClCvG,EAAIuG,EAAI,CACV,SAAWwO,EAAE,UAAU/U,EAAI,EAAGA,EAAI,CAAC,IAAM,UAAW,CAClD,MAAM66F,EAAK9lF,EAAE,QAAQ,IAAK/U,EAAI,CAAC,EAC/B,IAAI86F,EAAiB,GAErB,GADAv0F,EAAIwO,EAAE,QAAQ,IAAK/U,EAAI,CAAC,EACpBuG,EAAI,EAAG,CACT,KAAK,QAAQwzF,GAAmB,8BAA8B,EAC9D,MACF,CACA,GAAIc,EAAK,GAAKt0F,EAAIs0F,EAAI,CAEpB,GADAt0F,EAAIwO,EAAE,QAAQ,KAAM/U,EAAI,CAAC,EACrBuG,EAAI,EAAG,CACT,KAAK,QAAQwzF,GAAmB,8BAA8B,EAC9D,MACF,CACAe,EAAiB,EACnB,CACA,MAAMC,EAAiBhmF,EAAE,UAAU/U,EAAI,EAAGuG,GAAKu0F,EAAiB,EAAI,EAAE,EACtE,KAAK,UAAUC,CAAc,EAC7B/6F,EAAIuG,GAAKu0F,EAAiB,EAAI,EAChC,KAAO,CACL,KAAK,QAAQf,GAAmB,gBAAgB,EAChD,MACF,CACA,MACF,QACE,MAAM9yB,EAAU,KAAK,cAAclyD,EAAG/U,CAAC,EACvC,GAAIinE,IAAY,KAAM,CACpB,KAAK,QAAQ8yB,GAAmB,gBAAgB,EAChD,MACF,CACA,IAAIiB,EAAW,GACf,GAAIjmF,EAAE,UAAU/U,EAAIinE,EAAQ,OAAQjnE,EAAIinE,EAAQ,OAAS,CAAC,IAAM,KAC9D+zB,EAAW,WACFjmF,EAAE,UAAU/U,EAAIinE,EAAQ,OAAQjnE,EAAIinE,EAAQ,OAAS,CAAC,IAAM,IAAK,CAC1E,KAAK,QAAQ8yB,GAAmB,mBAAmB,EACnD,MACF,CACA,KAAK,eAAe9yB,EAAQ,KAAMA,EAAQ,WAAY+zB,CAAQ,EAC9Dh7F,GAAKinE,EAAQ,QAAU+zB,EAAW,EAAI,GACtC,KACZ,CACM,KAAO,CACL,KAAOh7F,EAAI+U,EAAE,QAAUA,EAAE/U,CAAC,IAAM,KAC9BA,IAEF,MAAMw2D,EAAOzhD,EAAE,UAAUnnB,EAAGoS,CAAC,EAC7B,KAAK,OAAO,KAAK,iBAAiBw2D,CAAI,CAAC,CACzC,CACA5oE,EAAIoS,CACN,CACF,CACA,gBAAgBpT,EAAM,CACpB,MAAO,IAAIA,CAAI,GACjB,CACA,KAAKA,EAAMJ,EAAO,CAAC,CACnB,UAAUgqE,EAAM,CAAC,CACjB,QAAQA,EAAM,CAAC,CACf,UAAUukC,EAAgB,CAAC,CAC3B,OAAOvkC,EAAM,CAAC,CACd,eAAe5pE,EAAMytG,EAAYY,EAAS,CAAC,CAC3C,aAAaruG,EAAM,CAAC,CACpB,QAAQE,EAAM,CAAC,CACjB,CACA,MAAMouG,EAAc,CAClB,YAAYC,EAAUC,EAAW,CAC/B,KAAK,SAAWD,EAChB,KAAK,UAAYC,EACjB,OAAO,eAAe,KAAM,aAAc,CACxC,MAAO,KACP,SAAU,EAChB,CAAK,CACH,CACA,IAAI,YAAa,CACf,OAAO,KAAK,aAAa,CAAC,CAC5B,CACA,IAAI,aAAc,CAChB,MAAMC,EAAa,KAAK,WAAW,WACnC,GAAI,CAACA,EACH,OAEF,MAAM18E,EAAQ08E,EAAW,QAAQ,IAAI,EACrC,GAAI18E,IAAU,GAGd,OAAO08E,EAAW18E,EAAQ,CAAC,CAC7B,CACA,IAAI,aAAc,CAChB,OAAQ,KAAK,WAAoC,KAAK,WAAW,IAAI28E,GAASA,EAAM,WAAW,EAAE,KAAK,EAAE,EAA9E,KAAK,WAAa,EAC9C,CACA,IAAI,UAAW,CACb,OAAO,KAAK,YAAc,CAAA,CAC5B,CACA,eAAgB,CACd,OAAO,KAAK,YAAY,OAAS,CACnC,CACA,WAAWC,EAAOvsG,EAAK,CACrB,GAAIA,GAAOusG,EAAM,OACf,OAAO,KAET,MAAMt/F,EAAYs/F,EAAMvsG,CAAG,EAC3B,GAAIiN,EAAU,KAAK,WAAW,GAAG,GAAKjN,EAAMusG,EAAM,OAAS,EACzD,OAAO,KAAK,WAAWA,EAAOvsG,EAAM,CAAC,EAEvC,MAAM6+B,EAAQ,CAAA,EACd,IAAI9U,EAAO,KACX,OAAa,CACX,GAAI9c,EAAU,OAAS8c,EAAK,SAC1B,GAAI9c,EAAU,MAAQ,EAAG,CACvB,MAAMopB,EAAMtM,EAAK,WAAWwiF,EAAOvsG,EAAM,CAAC,EAC1C,GAAIq2B,IAAQ,KACV,OAAOA,CAEX,KAAO,IAAIwI,EAAM,SAAW,EAC1B,OAAO,KACF,CACL,KAAM,CAACx3B,CAAM,EAAIw3B,EAAM,IAAG,EAC1B,IAAI2tE,EAAa,EACjB,UAAWF,KAASjlG,EAAO,WACzB,GAAI4F,EAAU,OAASq/F,EAAM,SAAU,CACrC,GAAIE,IAAev/F,EAAU,IAC3B,OAAOq/F,EAAM,WAAWC,EAAOvsG,EAAM,CAAC,EAExCwsG,GACF,CAEF,OAAOziF,EAAK,WAAWwiF,EAAOvsG,EAAM,CAAC,CACvC,EAEF,GAAI+pB,EAAK,YAAY,OAAS,EAC5B8U,EAAM,KAAK,CAAC9U,EAAM,CAAC,CAAC,EACpBA,EAAOA,EAAK,WAAW,CAAC,MACnB,IAAI8U,EAAM,SAAW,EAC1B,OAAO,KAEP,KAAOA,EAAM,SAAW,GAAG,CACzB,KAAM,CAACx3B,EAAQ2lB,CAAU,EAAI6R,EAAM,IAAG,EAChC1R,EAASH,EAAa,EAC5B,GAAIG,EAAS9lB,EAAO,WAAW,OAAQ,CACrCw3B,EAAM,KAAK,CAACx3B,EAAQ8lB,CAAM,CAAC,EAC3BpD,EAAO1iB,EAAO,WAAW8lB,CAAM,EAC/B,KACF,CACF,CACA,GAAI0R,EAAM,SAAW,EACnB,OAAO,KAGb,CACF,CACA,KAAK/0B,EAAQ,CACX,GAAI,KAAK,WAAa,QAAS,CAC7BA,EAAO,KAAKuE,GAAkB,KAAK,SAAS,CAAC,EAC7C,MACF,CAEA,GADAvE,EAAO,KAAK,IAAI,KAAK,QAAQ,EAAE,EAC3B,KAAK,WACP,UAAW2iG,KAAa,KAAK,WAC3B3iG,EAAO,KAAK,IAAI2iG,EAAU,IAAI,KAAKp+F,GAAkBo+F,EAAU,KAAK,CAAC,GAAG,EAG5E,GAAI,KAAK,gBAAiB,CACxB3iG,EAAO,KAAK,GAAG,EACf,UAAWwiG,KAAS,KAAK,WACvBA,EAAM,KAAKxiG,CAAM,EAEnBA,EAAO,KAAK,KAAK,KAAK,QAAQ,GAAG,CACnC,MAAW,KAAK,UACdA,EAAO,KAAK,IAAIuE,GAAkB,KAAK,SAAS,CAAC,KAAK,KAAK,QAAQ,GAAG,EAEtEvE,EAAO,KAAK,IAAI,CAEpB,CACF,CACA,MAAM4iG,WAAwBxB,EAAc,CAC1C,YAAY,CACV,cAAAyB,EAAgB,GAChB,cAAAC,EAAgB,EACpB,EAAK,CACD,MAAK,EACL,KAAK,iBAAmB,KACxB,KAAK,OAAS,KACd,KAAK,WAAa7B,GAAmB,QACrC,KAAK,eAAiB4B,EACtB,KAAK,eAAiBC,CACxB,CACA,gBAAgB1hG,EAAM,CAKpB,GAJA,KAAK,iBAAmB,CAAA,EACxB,KAAK,OAAS,CAAA,EACd,KAAK,WAAa6/F,GAAmB,QACrC,KAAK,SAAS7/F,CAAI,EACd,KAAK,aAAe6/F,GAAmB,QACzC,OAEF,KAAM,CAAC8B,CAAe,EAAI,KAAK,iBAC/B,GAAKA,EAGL,MAAO,CACL,gBAAAA,CACN,CACE,CACA,OAAOrlC,EAAM,CACX,GAAIyjC,GAAmBzjC,CAAI,EACzB,OAEF,MAAMz9C,EAAO,IAAImiF,GAAc,QAAS1kC,CAAI,EAC5C,KAAK,iBAAiB,KAAKz9C,CAAI,CACjC,CACA,QAAQy9C,EAAM,CACZ,MAAMz9C,EAAO,IAAImiF,GAAc,QAAS1kC,CAAI,EAC5C,KAAK,iBAAiB,KAAKz9C,CAAI,CACjC,CACA,eAAensB,EAAMytG,EAAYY,EAAS,CACpC,KAAK,iBACPruG,EAAOA,EAAK,YAAW,GAEzB,MAAMmsB,EAAO,IAAImiF,GAActuG,CAAI,EACnCmsB,EAAK,WAAa,CAAA,EACd,KAAK,iBACPA,EAAK,WAAashF,GAEpB,KAAK,iBAAiB,KAAKthF,CAAI,EAC3B,CAAAkiF,IAGJ,KAAK,OAAO,KAAK,KAAK,gBAAgB,EACtC,KAAK,iBAAmBliF,EAAK,WAC/B,CACA,aAAansB,EAAM,CACjB,KAAK,iBAAmB,KAAK,OAAO,IAAG,GAAM,CAAA,EAC7C,MAAMkvG,EAAc,KAAK,iBAAiB,GAAG,EAAE,EAC/C,GAAI,CAACA,EACH,OAAO,KAET,UAAWC,KAAaD,EAAY,WAClCC,EAAU,WAAaD,EAEzB,OAAOA,CACT,CACA,QAAQhvG,EAAM,CACZ,KAAK,WAAaA,CACpB,CACF,CAIA,MAAMkvG,EAAe,CACnB,YAAY9hG,EAAM,CAChBA,EAAO,KAAK,QAAQA,CAAI,EAIxB,MAAM+hG,EAHS,IAAIP,GAAgB,CACjC,cAAe,EACrB,CAAK,EAC0B,gBAAgBxhG,CAAI,EAC/C,KAAK,aAAe,IAAI,IACxB,KAAK,MAAQA,EACT+hG,GACF,KAAK,OAAOA,CAAW,CAE3B,CACA,QAAQ/hG,EAAM,CACZ,OAAOA,EAAK,QAAQ,SAAU,EAAE,EAAE,WAAW,sBAAuB,SAAUigG,EAAKlzD,EAAO,CACxF,MAAMz5C,EAAQy5C,EAAM,WAAW,2BAA4B,SAAUn6C,EAAMovG,EAAIC,EAAIC,EAAI,CACrF,OAAO,OAAO,aAAaF,EAAK,GAAKC,EAAK,EAAIC,EAAK,CAAC,CACtD,CAAC,EAAE,WAAW,2BAA4B,SAAUhwG,EAAKQ,EAAM,CAC7D,OAAQA,EAAI,CACV,IAAK,MACH,MAAO,IACT,IAAK,OACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,OACH,MAAO,GACnB,CACQ,MAAM,IAAI,MAAM,YAAYA,CAAI,iBAAiB,CACnD,CAAC,EACKyvG,EAAU,CAAC,GAAG,EACpB,QAASzuG,EAAI,EAAGmF,EAAKvF,EAAM,OAAQI,EAAImF,EAAInF,GAAK,EAAG,CACjD,MAAMd,EAAOU,EAAM,WAAWI,CAAC,EAAI,IAAMJ,EAAM,WAAWI,EAAI,CAAC,EAC3Dd,GAAQ,IAAMA,EAAO,KAAOA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GACrEuvG,EAAQ,KAAK,OAAO,aAAavvG,CAAI,CAAC,EAEtCuvG,EAAQ,KAAK,OAAS,MAAUvvG,GAAM,SAAS,EAAE,EAAE,UAAU,CAAC,EAAI,GAAG,CAEzE,CACA,OAAOuvG,EAAQ,KAAK,EAAE,CACxB,CAAC,CACH,CACA,aAAa//F,EAAO,CAClB,MAAM1P,EAAO0P,EAAM,SACnB,OAAI1P,IAAS,WAAaA,IAAS,WAAaA,IAAS,UAChD,KAEF0P,EAAM,WAAW,OAAOyc,GAAQA,EAAK,WAAa,QAAQ,CACnE,CACA,YAAYzc,EAAO,CACjB,GAAI,CAACA,EAAM,gBACT,OAEF,KAAM,CAACggG,CAAO,EAAIhgG,EAAM,WAClB+xB,EAAW,KAAK,aAAaiuE,CAAO,GAAK,CAAA,EAC/C,KAAK,aAAa,IAAIhgG,EAAM,SAAU+xB,EAAS,IAAItV,GAAQA,EAAK,YAAY,KAAI,CAAE,CAAC,CACrF,CACA,OAAOkjF,EAAa,CAClB,IAAIM,EAAMN,EAAY,gBACtB,GAAIM,EAAI,WAAa,UAEnB,IADAA,EAAMA,EAAI,WACHA,GAAOA,EAAI,WAAa,WAC7BA,EAAMA,EAAI,YAGd,GAAI,GAACA,GAAOA,EAAI,WAAa,WAAa,CAACA,EAAI,kBAG/C,UAAW5C,KAAQ4C,EAAI,WACrB,GAAI5C,EAAK,WAAa,kBAGtB,UAAWr9F,KAASq9F,EAAK,WAAY,CACnC,MAAM/sG,EAAO0P,EAAM,SACnB,OAAQ1P,EAAI,CACV,IAAK,QACH,SACF,IAAK,aACL,IAAK,aACH,KAAK,YAAY0P,CAAK,EACtB,QACZ,CACQ,KAAK,aAAa,IAAI1P,EAAM0P,EAAM,YAAY,MAAM,CACtD,EAEJ,CACA,IAAI,cAAe,CACjB,MAAO,CACL,WAAY,KAAK,aACjB,QAAS,KAAK,KACpB,CACE,CACF,CAKA,MAAMkgG,GAAkB,GACxB,SAASC,GAAe9mG,EAAM,CAC5B,GAAI,CAACA,GAAQA,EAAK,IAAI,IAAI,EACxB,OAAO,KAET,MAAM+mG,EAAa/mG,EAAK,IAAI,GAAG,EAC/B,GAAI,CAAC,OAAO,UAAU+mG,CAAU,GAAKA,GAAc,EACjD,OAAO,KAET,MAAMC,EAAWhnG,EAAK,IAAI,GAAG,GAAK,EAClC,GAAI,CAAC,OAAO,UAAUgnG,CAAQ,GAAKA,EAAW,GAAKA,EAAW,EAC5D,OAAO,KAET,MAAMC,EAAgBjnG,EAAK,IAAI,GAAG,GAAK,EACvC,GAAIinG,IAAkB,GAAKA,IAAkB,GAC3C,OAAO,KAET,MAAMnwF,EAAI9W,EAAK,IAAI,GAAG,EACtB,IAAIiD,EAAW,MAIf,OAHI6T,IAAM,SACR7T,EAAW6T,aAAahY,EAAOgY,EAAE,KAAO,MAEtC7T,IAAa,OAASA,IAAa,SAC9B,KAEF,CACL,SAAA+jG,EACA,WAAAD,EACA,cAAAE,EACA,SAAAhkG,CACJ,CACA,CACA,SAASikG,GAAiB9tF,EAAQyrE,EAAS,CACzC,MAAMt5B,EAASu7C,GAAe1tF,EAAO,IAAI,EACzC,GAAI,CAACmyC,EACH,OAAO,KAET,KAAM,CACJ,SAAAy7C,EACA,WAAAD,EACA,cAAAE,EACA,SAAAhkG,CACJ,EAAMsoD,EACE47C,EAAaH,GAAYC,GAAiB,GAC1C3iG,EAAaugF,EAAQ,OAASA,EAAQ,OAASsiB,EACrD,GAAI7iG,IAAe,EACjB,OAAO,KAET,MAAM8iG,EAAM,IAAI,WAAWP,GAAkBviG,CAAU,EACjD4Z,EAAO,IAAI,SAASkpF,EAAI,MAAM,EAcpC,GAbAA,EAAI,IAAIhvG,GAAc,MAAM,EAAG,CAAC,EAChC8lB,EAAK,UAAU,EAAG2oF,GAAkB,EAAIviG,EAAY,EAAI,EACxD8iG,EAAI,IAAIhvG,GAAc,MAAM,EAAG,CAAC,EAChCgvG,EAAI,IAAIhvG,GAAc,MAAM,EAAG,EAAE,EACjC8lB,EAAK,UAAU,GAAI,GAAI,EAAI,EAC3BA,EAAK,UAAU,GAAI,EAAG,EAAI,EAC1BA,EAAK,UAAU,GAAI8oF,EAAU,EAAI,EACjC9oF,EAAK,UAAU,GAAI6oF,EAAY,EAAI,EACnC7oF,EAAK,UAAU,GAAI6oF,EAAaI,EAAY,EAAI,EAChDjpF,EAAK,UAAU,GAAIipF,EAAY,EAAI,EACnCjpF,EAAK,UAAU,GAAI+oF,EAAe,EAAI,EACtCG,EAAI,IAAIhvG,GAAc,MAAM,EAAG,EAAE,EACjC8lB,EAAK,UAAU,GAAI5Z,EAAY,EAAI,EAC/B2iG,IAAkB,GAAI,CACxB,MAAMI,EAASpkG,IAAa,SAC5B,QAAShL,EAAI,EAAGA,EAAIqM,EAAYrM,GAAK,EAAG,CACtC,IAAIpB,EAAQguF,EAAQ5sF,CAAC,GAAK,EAAI4sF,EAAQ5sF,EAAI,CAAC,EACvCovG,EACExwG,GAAS,QACXA,GAAS,OAGXA,GAAS,MAEXqnB,EAAK,SAAS2oF,GAAkB5uG,EAAGpB,EAAO,EAAI,CAChD,CACF,SAAWoM,IAAa,SACtB,QAAShL,EAAI,EAAGA,EAAIqM,EAAYrM,IAC9BmvG,EAAIP,GAAkB5uG,CAAC,EAAI4sF,EAAQ5sF,CAAC,EAAI,IAAM,SAGhDmvG,EAAI,IAAIviB,EAAQ,SAAS,EAAGvgF,CAAU,EAAGuiG,EAAe,EAE1D,OAAOO,CACT,CAUA,MAAME,GAAY,GACZC,GAAwB,CAAC,CAAC,UAAW,SAAS,EAAG,CAAC,UAAW,SAAS,CAAC,EACvEC,GAAoB,CACxB,aAAc,EACd,eAAgB,EAChB,OAAQ,EACR,WAAY,EACZ,QAAS,CACX,EACA,MAAMC,EAAe,CACnB,iBAAmB,OACnB,WAAa,KACb,QAAU,IAAI,IACd,gBAAkB,KAClB,YAAYtoG,EAAMuoG,EAAUC,EAAS,CACnC,KAAK,KAAOxoG,EACZ,KAAK,KAAOuoG,EACZ,KAAK,IAAMC,aAAmBloG,EAAMkoG,EAAU,KAC9C,MAAMC,EAAUF,EAAS,IAAI,SAAS,EACtC,GAAIE,aAAmB3oG,EACrB,SAAW,CAACS,EAAK7I,CAAK,IAAK+wG,EACrB/wG,aAAiBiI,GACnB,KAAK,QAAQ,IAAIY,EAAK7I,EAAM,IAAI,EAItC,MAAMgxG,EAAaH,EAAS,OAAO,YAAY,EAC3CG,IACF,KAAK,WAAa,IAAIhE,GAAWgE,EAAY1oG,CAAI,EAErD,CACA,eAAe2oG,EAAQ,CACrB,GAAI,KAAK,mBAAqB,OAAW,CACvC,MAAMnxG,EAAM,KAAK,KAAK,IAAI,GAAG,EAC7B,GAAI,MAAM,QAAQA,CAAG,EAAG,CACtB,MAAMoK,EAAM,KAAK,iBAAmB,IAAI,IACxC,QAAS9I,EAAI,EAAGmF,EAAKzG,EAAI,OAAQsB,EAAImF,EAAInF,IAAK,CAC5C,MAAMsI,EAAM5J,EAAIsB,CAAC,EACbsI,GACFQ,EAAI,IAAIR,EAAI,SAAQ,EAAItI,CAAC,CAE7B,CACF,MAAWtB,aAAesI,EACxB,KAAK,iBAAmB,IAAI,IAAI,CAAC,CAACtI,EAAI,MAAO,CAAC,CAAC,CAAC,EACtCA,EAGV,KAAK,iBAAmB,KAFxB,KAAK,iBAAmB,IAAI,GAIhC,CACA,OAAO,KAAK,iBAAmB,KAAK,iBAAiB,IAAImxG,CAAM,GAAK,IAAM,EAC5E,CACAC,GAAaC,EAASx6D,EAAIpsC,EAAMuuF,EAAO,CACjC,EAAEqY,aAAmBvoG,IAAQ+tC,EAAK,IAGrC,KAAK,kBAAoB,IAAI5sC,IAAU,iBAAiBonG,EAAS7pG,EAAO,EAAE,KAAK,CAACqvC,EAAIpsC,EAAMuuF,CAAK,CAAC,CACnG,CACA,sBAAsBqY,EAASx6D,EAAIjtC,EAAK,CACtC,KAAKwnG,GAAaC,EAASx6D,EAAIg6D,GAAkB,WAAYjnG,aAAed,EAAMc,EAAI,SAAQ,EAAK,IAAI,CACzG,CACA,aAAa,uBAAuB,CAClC,WAAA0nG,EACA,WAAAC,EACA,qBAAAl/F,CACJ,EAAK,CACD,GAAI,EAAEi/F,aAAsBxoG,GAC1B,OAAA5J,EAAK,oDAAoD,EAClD,GAET,IAAIsyG,EAAU,EACVC,EAAqB,GACzB,SAAW,CAACjlB,EAAWklB,CAAQ,IAAKr/F,EAAsB,CACxD,KAAM,CACJ,IAAKg/F,CACb,EAAU,MAAME,EAAW,QAAQ/kB,CAAS,EACtC,GAAI,EAAE6kB,aAAmBvoG,GAAM,CAC7B5J,EAAK,qCAAqCstF,CAAS,cAAc,EACjEilB,EAAqB,GACrB,KACF,CACA,UAAWthG,KAAWuhG,EAChBvhG,EAAQ,mBAAmB,OAC7BA,EAAQ,aAAeqhG,IACvBC,EAAqB,GAG3B,CACA,GAAIA,EAAoB,CACtB,UAAWC,KAAYr/F,EAAqB,SAC1C,UAAWlC,KAAWuhG,EACpB,OAAOvhG,EAAQ,aAGnB,MAAO,EACT,CACA,MAAO,EACT,CACA,aAAa,oBAAoB,CAC/B,qBAAAkC,EACA,KAAA7J,EACA,WAAA8oG,EACA,WAAAC,EACA,QAAAI,CACJ,EAAK,CACD,MAAMnF,EAAO,MAAM+E,EAAW,cAAc,WAAW,EACjDK,EAAQ,IAAI3nG,GAClB2nG,EAAM,IAAIN,EAAY9E,CAAI,EAC1B,MAAMqF,EAAoBrpG,EAAK,mBAAkB,EACjDgkG,EAAK,IAAI,iBAAkBqF,CAAiB,EAC5C,MAAMC,EAAiB,IAAIxpG,EAAKE,CAAI,EACpCspG,EAAe,IAAI,OAAQ3pG,EAAK,IAAI,gBAAgB,CAAC,EACrD,MAAM4pG,EAAgBvpG,EAAK,mBAAkB,EAC7CspG,EAAe,IAAI,aAAcC,CAAa,EAC9C,MAAMrF,EAAO,CAAA,EACboF,EAAe,IAAI,IAAKpF,CAAI,EAC5BkF,EAAM,IAAIC,EAAmBC,CAAc,EAC3C,MAAMZ,EAAa,IAAI5oG,EAAKE,CAAI,EAC1BwpG,EAAO,CAAA,EACbd,EAAW,IAAI,OAAQc,CAAI,EAC3B,MAAMR,EAAU,MAAM,KAAKS,GAAW,CACpC,qBAAA5/F,EACA,kBAAAw/F,EACA,eAAgB,KAChB,KAAAnF,EACA,KAAAsF,EACA,KAAAxpG,EACA,WAAA+oG,EACA,QAAAI,EACA,MAAAC,CACN,CAAK,EACDE,EAAe,IAAI,oBAAqBN,CAAO,EAC/CI,EAAM,IAAIG,EAAeb,CAAU,EACnC,SAAW,CAACtnG,EAAK5J,CAAG,IAAK4xG,EAAM,MAAK,EAClCD,EAAQ,IAAI/nG,EAAK,CACf,KAAM5J,CACd,CAAO,CAEL,CACA,MAAM,oBAAoB,CACxB,WAAAuxG,EACA,qBAAAl/F,CACJ,EAAK,CACD,GAAI,CAAC,KAAK,IACR,OAAAnT,EAAK,mDAAmD,EACjD,GAET,IAAIsyG,EAAU,KAAK,KAAK,IAAI,mBAAmB,EAC/C,GAAI,CAAC,OAAO,UAAUA,CAAO,GAAKA,EAAU,EAC1C,OAAAtyG,EAAK,kDAAkD,EAChD,GAET,MAAMgyG,EAAa,KAAK,KAAK,IAAI,YAAY,EAC7C,GAAI,EAAEA,aAAsB5oG,GAC1B,OAAApJ,EAAK,yDAAyD,EACvD,GAET,MAAM8yG,EAAOd,EAAW,IAAI,MAAM,EAClC,GAAI,CAAC,MAAM,QAAQc,CAAI,EACrB,OAAA9yG,EAAK,qDAAqD,EACnD,GAET,MAAMgzG,EAAa,IAAIhF,GAAWgE,EAAY,KAAK,IAAI,EACvD,UAAW1kB,KAAan6E,EAAqB,OAAQ,CACnD,KAAM,CACJ,SAAA8/F,CACR,EAAU,MAAMZ,EAAW,QAAQ/kB,CAAS,EACtC,GAAI,CAAC2lB,EAAS,IAAI,eAAe,EAC/B,SAEF,MAAMt7D,EAAKs7D,EAAS,IAAI,eAAe,EACvC,GAAI,CAAC,OAAO,UAAUt7D,CAAE,GAAK,CAAC,MAAM,QAAQq7D,EAAW,IAAIr7D,CAAE,CAAC,EAC5D,OAAA33C,EAAK,qCAAqCstF,CAAS,kBAAkB,EAC9D,EAEX,CACA,IAAIilB,EAAqB,GACzB,SAAW,CAACjlB,EAAWklB,CAAQ,IAAKr/F,EAAsB,CACxD,KAAM,CACJ,SAAA8/F,CACR,EAAU,MAAMZ,EAAW,QAAQ/kB,CAAS,EACtCskB,GAAesB,GAAgB,CAC7B,SAAAV,EACA,KAAM,KAAK,KACX,SAAAS,EACA,WAAAD,CACR,CAAO,EACD,UAAW/hG,KAAWuhG,EAChBvhG,EAAQ,mBAAmB,OACvBA,EAAQ,kBAAkB,cAAgB,IAC9CA,EAAQ,aAAeqhG,KAEzBC,EAAqB,GAG3B,CACA,GAAIA,EAAoB,CACtB,UAAWC,KAAYr/F,EAAqB,SAC1C,UAAWlC,KAAWuhG,EACpB,OAAOvhG,EAAQ,aACf,OAAOA,EAAQ,iBAGnB,MAAO,EACT,CACA,MAAO,EACT,CACA,MAAM,oBAAoB,CACxB,qBAAAkC,EACA,WAAAk/F,EACA,QAAAI,CACJ,EAAK,CACD,KAAM,CACJ,IAAKE,EACL,KAAArpG,CACN,EAAQ,KACEspG,EAAiB,KAAK,KAAK,MAAK,EAChCF,EAAQ,IAAI3nG,GAClB2nG,EAAM,IAAIC,EAAmBC,CAAc,EAC3C,IAAIC,EAAgBD,EAAe,OAAO,YAAY,EAClDZ,EACAa,aAAyBjpG,EAC3BooG,EAAa1oG,EAAK,MAAMupG,CAAa,GAErCb,EAAaa,EACbA,EAAgBvpG,EAAK,mBAAkB,EACvCspG,EAAe,IAAI,aAAcC,CAAa,GAEhDb,EAAaA,EAAW,MAAK,EAC7BU,EAAM,IAAIG,EAAeb,CAAU,EACnC,IAAIc,EAAOd,EAAW,OAAO,MAAM,EAC/BmB,EAAU,KACVL,aAAgBlpG,IAClBupG,EAAUL,EACVA,EAAOxpG,EAAK,MAAM6pG,CAAO,GAE3BL,EAAOA,EAAK,MAAK,EACZK,GACHnB,EAAW,IAAI,OAAQc,CAAI,EAE7B,MAAMM,EAAa,MAAMxB,GAAemB,GAAW,CACjD,qBAAA5/F,EACA,kBAAAw/F,EACA,eAAgB,KAChB,KAAM,KACN,KAAAG,EACA,KAAAxpG,EACA,WAAA+oG,EACA,QAAAI,EACA,MAAAC,CACN,CAAK,EACD,GAAIU,IAAe,GAGnB,CAAAR,EAAe,IAAI,oBAAqBQ,CAAU,EAC9CD,GACFT,EAAM,IAAIS,EAASL,CAAI,EAEzB,SAAW,CAACpoG,EAAK5J,CAAG,IAAK4xG,EAAM,MAAK,EAClCD,EAAQ,IAAI/nG,EAAK,CACf,KAAM5J,CACd,CAAO,EAEL,CACA,YAAaiyG,GAAW,CACtB,qBAAA5/F,EACA,kBAAAw/F,EACA,eAAAC,EACA,KAAApF,EACA,KAAAsF,EACA,KAAAxpG,EACA,WAAA+oG,EACA,QAAAI,EACA,MAAAC,CACJ,EAAK,CACD,MAAMW,EAAOpqG,EAAK,IAAI,MAAM,EAC5B,IAAIqpG,EAAU,GACVgB,EACJ,SAAW,CAAChmB,EAAWklB,CAAQ,IAAKr/F,EAAsB,CACxD,MAAMnL,EAAO,MAAMqqG,EAAW,QAAQ/kB,CAAS,EACzC,CACJ,IAAK6kB,CACb,EAAUnqG,EACEurG,EAAYpB,aAAmBvoG,EACrC,SAAW,CACT,kBAAA4pG,EACA,IAAA9oG,EACA,aAAA+oG,EACA,iBAAAC,CACR,IAAWlB,EAAU,CACb,GAAI,CAACgB,GAAmB,KACtB,SAEF,KAAM,CACJ,aAAAG,CACV,EAAYH,EACJ,GAAIZ,GAAkB,OAAO,UAAUe,CAAY,GAAKA,GAAgB,EAAG,CACzE,IAAIC,GAAQN,IAAuB,IAAI,KAAO,IAAIhmB,CAAS,EACvDsmB,IAAS,SAEXA,EADuB,IAAIC,GAAejB,EAAgB5qG,EAAK,QAAQ,EACjD,eAAemqG,CAAO,EAC5CmB,EAAmB,IAAIhmB,EAAWsmB,CAAI,GAExC,MAAME,EAASF,GAAM,IAAID,CAAY,EACrC,GAAIG,EAAQ,CACV,MAAMC,EAAUzqG,EAAK,MAAMwqG,CAAM,EAAE,MAAK,EACxClC,GAAeoC,GAAiBD,EAASP,CAAiB,EAC1Df,EAAQ,IAAIqB,EAAQ,CAClB,KAAMC,CACpB,CAAa,EACD,QACF,CACF,CACAzB,EAAU,KAAK,IAAIA,EAASmB,CAAY,EACxC,MAAMQ,EAAS3qG,EAAK,mBAAkB,EAChCyqG,EAAU,IAAI3qG,EAAKE,CAAI,EAC7BsoG,GAAeoC,GAAiBD,EAASP,CAAiB,EAC1D,MAAM,KAAKU,GAAiB,CAC1B,iBAAAR,EACA,QAAAK,EACA,UAAWE,EACX,kBAAAtB,EACA,aAAcnF,EACd,KAAAlkG,EACA,MAAAopG,CACV,CAAS,EACD,MAAMyB,EAAU,IAAI/qG,EAAKE,CAAI,EAC7ByqG,EAAQ,IAAI,IAAKI,CAAO,EACxBA,EAAQ,IAAI,OAAQd,CAAI,EACpBE,GACFY,EAAQ,IAAI,KAAMhC,CAAO,EAE3BgC,EAAQ,IAAI,MAAOzpG,CAAG,EACtBgoG,EAAM,IAAIuB,EAAQF,CAAO,EACzBjB,EAAK,KAAKW,EAAcQ,CAAM,CAChC,CACF,CACA,OAAO3B,EAAU,CACnB,CACA,MAAO0B,GAAiBD,EAAS,CAC/B,KAAAxoG,EACA,MAAA6oG,EACA,KAAAh2D,EACA,IAAAi2D,EACA,SAAAC,EACA,WAAAC,CACJ,EAAK,CACDR,EAAQ,IAAI,IAAK9qG,EAAK,IAAIsC,CAAI,CAAC,EAC3B6oG,GACFL,EAAQ,IAAI,IAAKpnG,GAAuBynG,CAAK,CAAC,EAE5Ch2D,GACF21D,EAAQ,IAAI,OAAQpnG,GAAuByxC,CAAI,CAAC,EAE9Ci2D,GACFN,EAAQ,IAAI,MAAOpnG,GAAuB0nG,CAAG,CAAC,EAE5CC,GACFP,EAAQ,IAAI,IAAKpnG,GAAuB2nG,CAAQ,CAAC,EAE/CC,GACFR,EAAQ,IAAI,aAAcpnG,GAAuB4nG,CAAU,CAAC,CAEhE,CACA,MAAOrB,GAAgB,CACrB,SAAAV,EACA,KAAAlpG,EACA,SAAA2pG,EACA,WAAAD,CACJ,EAAK,CACD,MAAMwB,EAAe,IAAI,IACzB,UAAWvjG,KAAWuhG,EACpB,GAAIvhG,EAAQ,mBAAoB,CAC9B,MAAM0mC,EAAK,SAAS1mC,EAAQ,mBAAmB,MAAM,KAAK,EAAE,CAAC,EAAG,EAAE,EAClEujG,EAAa,oBAAoB78D,EAAIrvC,EAAO,EAAE,KAAK2I,CAAO,CAC5D,CAEF,MAAM0mC,EAAKs7D,EAAS,IAAI,eAAe,EACvC,GAAI,CAAC,OAAO,UAAUt7D,CAAE,EACtB,OAEF,MAAM88D,EAAczB,EAAW,IAAIr7D,CAAE,EAC/B+8D,EAAgB,CAACjH,EAAKkH,EAAS1C,IAAW,CAC9C,MAAM2C,EAAQJ,EAAa,IAAI/G,CAAG,EAClC,GAAImH,EAAO,CACT,MAAMC,EAAYF,EAAQ,OAAO,GAAG,EAC9BrgD,EAAahrD,EAAK,WAAWurG,CAAS,EAC5C,GAAIA,aAAqBjrG,GAAO0qD,aAAsBlrD,EAAM,CAC1D,MAAM0a,EAAS,CACb,IAAKmuF,EACL,KAAM0C,CAClB,EACU,UAAW1jG,KAAW2jG,EACpB3jG,EAAQ,iBAAmB6S,CAE/B,CACA,MAAO,EACT,CACA,MAAO,EACT,EACA,UAAWmuF,KAAUwC,EAAa,CAChC,GAAI,EAAExC,aAAkBroG,GACtB,SAEF,MAAM+qG,EAAUrrG,EAAK,MAAM2oG,CAAM,EAC3B52F,EAAIs5F,EAAQ,IAAI,GAAG,EACzB,GAAI,OAAO,UAAUt5F,CAAC,EAAG,CACvBq5F,EAAcr5F,EAAGs5F,EAAS1C,CAAM,EAChC,QACF,CACA,GAAK,MAAM,QAAQ52F,CAAC,EAGpB,QAASoyF,KAAOpyF,EAAG,CAEjB,GADAoyF,EAAMnkG,EAAK,WAAWmkG,CAAG,EACrB,OAAO,UAAUA,CAAG,GAAKiH,EAAcjH,EAAKkH,EAAS1C,CAAM,EAC7D,MAEF,GAAI,EAAExE,aAAerkG,GACnB,SAEF,GAAI,CAAC+B,GAAOsiG,EAAI,IAAI,MAAM,EAAG,KAAK,EAChC,MAEF,MAAM1H,EAAO0H,EAAI,IAAI,MAAM,EAC3B,GAAI,OAAO,UAAU1H,CAAI,GAAK2O,EAAc3O,EAAM4O,EAAS1C,CAAM,EAC/D,KAEJ,CACF,CACF,CACA,YAAaiC,GAAiB,CAC5B,iBAAAR,EACA,QAAAK,EACA,UAAAe,EACA,kBAAAnC,EACA,aAAAoC,EACA,KAAAzrG,EACA,MAAAopG,CACJ,EAAK,CACD,IAAIhoG,EAAM,KACNmqG,EACAnB,GACD,CACC,IAAAhpG,CACR,EAAUgpG,EACJmB,EAAYnB,EAAiB,KAAK,OAAO,GAAG,GAAKf,GAEjDkC,EAAYlC,EAEdoB,EAAQ,IAAI,IAAKc,CAAS,EAC1B,MAAMvgD,EAAahrD,EAAK,WAAWurG,CAAS,EAC5C,GAAI,CAACvgD,EAAY,CACfygD,EAAa,KAAKD,CAAS,EAC3B,MACF,CACA,MAAME,EAAmBtC,EAAM,iBAAiBmC,EAAW,IAAMvgD,EAAW,OAAO,EAC7E2gD,EAAgBD,EAAiB,OAAO,GAAG,EACjD,IAAIE,EAAmBD,aAAyBrrG,EAAM8oG,EAAM,IAAIuC,CAAa,EAAI,KACjF,GAAI,CAACC,EAAkB,CACrBA,EAAmB5rG,EAAK,WAAW2rG,CAAa,EAChDC,EAAmB,MAAM,QAAQA,CAAgB,EAAIA,EAAiB,MAAK,EAAK,CAACD,CAAa,EAC9F,MAAME,EAAgB7rG,EAAK,mBAAkB,EAC7C0rG,EAAiB,IAAI,IAAKG,CAAa,EACvCzC,EAAM,IAAIyC,EAAeD,CAAgB,CAC3C,CACA,MAAM/hF,EAAQ+hF,EAAiB,QAAQxqG,CAAG,EAC1CwqG,EAAiB,OAAO/hF,GAAS,EAAIA,EAAQ,EAAI+hF,EAAiB,OAAQ,EAAGJ,CAAS,CACxF,CACF,CACA,MAAMM,EAAkB,CACtB,YAAY9nF,EAAMnjB,EAAM,CACtB,KAAK,KAAOmjB,EACZ,KAAK,KAAOA,EAAK,KACjB,KAAK,KAAOnjB,EACZ,KAAK,KAAO,CAAA,EACZ,KAAK,UAAS,CAChB,CACA,IAAI,MAAO,CACT,MAAMkrG,EAAU,KAAK,KAAK,IAAI,GAAG,EAC3Bj0G,EAAOi0G,aAAmBpsG,EAAOosG,EAAQ,KAAO,GAChD,CACJ,KAAA/H,CACN,EAAQ,KAAK,KACT,OAAOA,EAAK,QAAQ,IAAIlsG,CAAI,GAAKA,CACnC,CACA,IAAI,QAAS,CACX,IAAIk0G,EAAM,KAAK,KAAK,IAAI,IAAI,GAAK,CAAA,EAC5B,MAAM,QAAQA,CAAG,IACpBA,EAAM,CAACA,CAAG,GAEZ,QAASC,KAAMD,EAAK,CAElB,GADAC,EAAK,KAAK,KAAK,WAAWA,CAAE,EACxB,CAACjqG,GAAOiqG,EAAI,UAAU,GAAK,CAACpqG,GAAOoqG,EAAG,IAAI,gBAAgB,EAAG,YAAY,EAC3E,SAEF,MAAMC,EAAatH,GAAS,iBAAiBqH,EAAG,IAAI,IAAI,CAAC,EACzD,GAAI,IAAEC,aAAsB7pG,KAAe,CAACL,GAAOkqG,EAAW,KAAM,cAAc,GAAK,CAACrqG,GAAOqqG,EAAW,KAAK,IAAI,SAAS,EAAG,wBAAwB,GAGvJ,OAAO/0G,GAAmB+0G,EAAW,WAAW,CAClD,CACA,UAAW3G,KAAc,KAAK,WAC5B,GAAI1jG,GAAO0jG,EAAW,IAAI,GAAG,EAAG,aAAa,EAAG,CAC9C,MAAM4G,EAAS5G,EAAW,IAAI,aAAa,EAC3C,OAAO4G,EAASvoG,GAAkBuoG,CAAM,EAAI,IAC9C,CAEF,OAAO,IACT,CACAC,GAAmB10G,EAAO6tG,EAAY,CACpC,MAAM8G,EAAU,CAAC30G,CAAK,EAChBiO,EAAU,IAAItE,GACpB,KAAOgrG,EAAQ,OAAS,GAAG,CAEzB,GADA30G,EAAQ20G,EAAQ,IAAG,EACf30G,aAAiB4I,EAAK,CACxB,GAAIqF,EAAQ,IAAIjO,CAAK,EACnB,SAEFiO,EAAQ,IAAIjO,CAAK,EACjBA,EAAQ,KAAK,KAAK,MAAMA,CAAK,CAC/B,CAIA,GAHIA,aAAiB2K,KACnB3K,EAAQA,EAAM,MAEZA,aAAiBoI,EAAM,CACzBylG,EAAW,KAAK7tG,CAAK,EACrB,QACF,CACA,GAAK,MAAM,QAAQA,CAAK,EAGxB,QAAS,EAAIA,EAAM,OAAS,EAAG,GAAK,EAAG,IAChC,OAAO,UAAUA,EAAM,CAAC,CAAC,GAC5B20G,EAAQ,KAAK30G,EAAM,CAAC,CAAC,CAG3B,CACF,CACA,IAAI,YAAa,CACf,MAAM6tG,EAAa,CAAA,EACb+G,EAAU,KAAK,KAAK,SAAS,GAAG,EACtC,GAAIA,IAAY,OAAW,CACzB,MAAMC,EAAW,KAAK,KAAK,UAAU,IAAI,UAAU,EACnD,GAAIA,aAAoBzsG,EACtB,UAAW0sG,KAAa,MAAM,QAAQF,CAAO,EAAIA,EAAU,CAACA,CAAO,EAC7DE,aAAqB7sG,GACvB,KAAKysG,GAAmBG,EAAS,OAAOC,EAAU,IAAI,EAAGjH,CAAU,CAI3E,CACA,YAAK6G,GAAmB,KAAK,KAAK,OAAO,GAAG,EAAG7G,CAAU,EAClDhuG,GAAO,KAAM,aAAcguG,CAAU,CAC9C,CACA,IAAI,iBAAkB,CACpB,KAAM,CACJ,KAAAkH,CACN,EAAQ,KACJ,GAAIA,IAAS,SAAWA,IAAS,MAAQA,IAAS,KAChD,OAAO,KAET,MAAM7qG,EAAM,IAAI,IAChB,UAAW2jG,KAAc,KAAK,WAC5B,GAAK1jG,GAAO0jG,EAAW,IAAI,GAAG,EAAG,OAAO,EAGxC,IAAIkH,IAAS,QAAS,CACpB,GAAIlH,EAAW,IAAI,SAAS,EAAG,CAC7B,MAAMmH,EAAUnH,EAAW,IAAI,SAAS,EACpC,OAAOmH,GAAY,UAAYA,EACjC9qG,EAAI,IAAI,UAAWgC,GAAkB8oG,CAAO,CAAC,EAE7C9qG,EAAI,OAAO,SAAS,CAExB,CACA,QACF,CACA,SAAW,CAACrB,EAAKzI,CAAI,IAAKswG,GAAuB,CAC/C,GAAI,CAAC7C,EAAW,IAAIhlG,CAAG,EACrB,SAEF,MAAM7I,EAAQ6tG,EAAW,IAAIhlG,CAAG,EAC5B,OAAO,UAAU7I,CAAK,GAAKA,EAAQ,EACrCkK,EAAI,IAAI9J,EAAMJ,CAAK,EAEnBkK,EAAI,OAAO9J,CAAI,CAEnB,CACA,GAAIytG,EAAW,IAAI,SAAS,EAAG,CAC7B3jG,EAAI,OAAO,SAAS,EACpB,MAAM+qG,EAAUpH,EAAW,SAAS,SAAS,EAC7C,GAAI,MAAM,QAAQoH,CAAO,EAAG,CAC1B,MAAMC,EAAMD,EAAQ,OAAOtzE,GAAU,OAAOA,GAAW,QAAQ,EAAE,IAAIz1B,EAAiB,EAClFgpG,EAAI,OAAS,GACfhrG,EAAI,IAAI,UAAWgrG,CAAG,CAE1B,CACF,CACA,GAAIH,IAAS,MAAQlH,EAAW,IAAI,OAAO,EAAG,CAC5C3jG,EAAI,OAAO,OAAO,EAClB,MAAMirG,EAAQtH,EAAW,IAAI,OAAO,EAChCsH,aAAiBltG,GAAQ,CAAC,MAAO,SAAU,MAAM,EAAE,SAASktG,EAAM,IAAI,GACxEjrG,EAAI,IAAI,QAASirG,EAAM,IAAI,CAE/B,CACA,GAAIJ,IAAS,MAAQlH,EAAW,IAAI,OAAO,EAAG,CAC5C3jG,EAAI,OAAO,OAAO,EAClB,MAAMkrG,EAAQvH,EAAW,IAAI,OAAO,EAChC,OAAOuH,GAAU,UAAYA,GAC/BlrG,EAAI,IAAI,QAASgC,GAAkBkpG,CAAK,CAAC,CAE7C,EAEF,OAAOlrG,EAAI,KAAOA,EAAM,IAC1B,CACA,WAAY,CACV,IAAImrG,EAAY,KAChB,MAAMvC,EAAS,KAAK,KAAK,OAAO,IAAI,EAChCA,aAAkBlqG,IACpBysG,EAAYvC,EAAO,SAAQ,GAE7B,MAAMtG,EAAO,KAAK,KAAK,IAAI,GAAG,EAC9B,GAAI,MAAM,QAAQA,CAAI,EACpB,UAAWC,KAAOD,EAAM,CACtB,MAAMv8F,EAAU,KAAK,SAASolG,EAAW,KAAK,KAAK,WAAW5I,CAAG,CAAC,EAC9Dx8F,GACF,KAAK,KAAK,KAAKA,CAAO,CAE1B,KACK,CACL,MAAMA,EAAU,KAAK,SAASolG,EAAW7I,CAAI,EACzCv8F,GACF,KAAK,KAAK,KAAKA,CAAO,CAE1B,CACF,CACA,SAASolG,EAAW5I,EAAK,CACvB,GAAI,OAAO,UAAUA,CAAG,EACtB,OAAI,KAAK,KAAK,SAAS,QAAU4I,EACxB,KAEF,IAAIC,GAAc,CACvB,KAAM3E,GAAkB,aACxB,KAAMlE,EACN,UAAA4I,CACR,CAAO,EAEH,GAAI,EAAE5I,aAAerkG,GACnB,OAAO,KAET,MAAM+oG,EAAU1E,EAAI,OAAO,IAAI,EAC3B0E,aAAmBvoG,IACrBysG,EAAYlE,EAAQ,SAAQ,GAE9B,MAAM5mG,EAAOkiG,EAAI,IAAI,MAAM,YAAaxkG,EAAOwkG,EAAI,IAAI,MAAM,EAAE,KAAO,KACtE,GAAIliG,IAAS,MAAO,CAClB,GAAI,KAAK,KAAK,SAAS,QAAU8qG,EAC/B,OAAO,KAET,MAAMpE,EAASxE,EAAI,OAAO,KAAK,EAC/B,OAAO,IAAI6I,GAAc,CACvB,KAAM3E,GAAkB,eACxB,SAAUM,aAAkBroG,EAAMqoG,EAAO,SAAQ,EAAK,KACtD,UAAAoE,EACA,KAAM5I,EAAI,IAAI,MAAM,CAC5B,CAAO,CACH,CACA,GAAIliG,IAAS,OAAQ,CACnB,GAAI,KAAK,KAAK,SAAS,QAAU8qG,EAC/B,OAAO,KAET,MAAMpE,EAASxE,EAAI,OAAO,KAAK,EAC/B,OAAO,IAAI6I,GAAc,CACvB,KAAM3E,GAAkB,OACxB,SAAUM,aAAkBroG,EAAMqoG,EAAO,SAAQ,EAAK,KACtD,UAAAoE,CACR,CAAO,CACH,CACA,OAAO,IAAIC,GAAc,CACvB,KAAM3E,GAAkB,QACxB,KAAMlE,CACZ,CAAK,CACH,CACF,CACA,MAAM6I,EAAc,CAClB,YAAY,CACV,KAAA/qG,EACA,KAAApB,EAAO,KACP,KAAA47F,EAAO,KACP,UAAAsQ,EAAY,KACZ,SAAAE,EAAW,IACf,EAAK,CACD,KAAK,KAAOhrG,EACZ,KAAK,KAAOpB,EACZ,KAAK,KAAO47F,EACZ,KAAK,UAAYsQ,EACjB,KAAK,SAAWE,EAChB,KAAK,WAAa,IACpB,CACF,CACA,MAAM1C,EAAe,CACnB,YAAYjB,EAAgBK,EAAU,CACpC,KAAK,KAAOL,EACZ,KAAK,KAAOA,GAAgB,MAAQ,KACpC,KAAK,SAAWA,GAAgB,MAAQ,KACxC,KAAK,SAAWK,EAChB,KAAK,MAAQ,CAAA,CACf,CACA,eAAed,EAAS,CACtB,GAAI,CAAC,KAAK,MAAQ,CAAC,KAAK,UAAY,EAAEA,aAAmBvoG,GACvD,OAAO,KAET,MAAMooG,EAAa,KAAK,SAAS,IAAI,YAAY,EACjD,GAAI,CAACA,EACH,OAAO,KAET,MAAMkE,EAAM,KAAK,KAAK,iBAAiB,IAAI/D,CAAO,EAClD,GAAI,CAAC+D,EACH,OAAO,KAET,MAAMhrG,EAAM,IAAI,IACV8nG,EAAa,IAAIhF,GAAWgE,EAAY,KAAK,IAAI,EACvD,SAAW,CAACwE,CAAM,IAAKN,EAAK,CAC1B,MAAMp1G,EAAMkyG,EAAW,OAAOwD,CAAM,EAChC11G,aAAe8I,GACjBsB,EAAI,IAAIsrG,EAAQ11G,CAAG,CAEvB,CACA,OAAOoK,CACT,CACA,MAAMinG,EAAS,CACb,GAAI,CAAC,KAAK,MAAQ,CAAC,KAAK,UAAY,EAAEA,aAAmBvoG,GACvD,OAEF,KAAM,CACJ,WAAAooG,CACN,EAAQ,KAAK,KACT,GAAI,CAACA,EACH,OAEF,MAAMr6D,EAAK,KAAK,SAAS,IAAI,eAAe,EACtCu+D,EAAM,KAAK,KAAK,iBAAiB,IAAI/D,CAAO,EAClD,GAAI,CAAC,OAAO,UAAUx6D,CAAE,GAAK,CAACu+D,EAC5B,OAEF,MAAMhrG,EAAM,IAAI,IAChB,GAAI,OAAO,UAAUysC,CAAE,EAAG,CACxB,MAAM88D,EAAczC,EAAW,IAAIr6D,CAAE,EACrC,GAAI,MAAM,QAAQ88D,CAAW,EAC3B,UAAW/pG,KAAO+pG,EACZ/pG,aAAed,GACjB,KAAK,QAAQ,KAAK,KAAK,MAAMc,CAAG,EAAGQ,CAAG,CAI9C,CACA,GAAKgrG,EAGL,SAAW,CAACM,EAAQjrG,EAAMuuF,CAAK,IAAKoc,EAAK,CACvC,MAAMp1G,EAAMkxG,EAAW,IAAIwE,CAAM,EACjC,GAAI,CAAC11G,EACH,SAEF,MAAM6jB,EAAO,KAAK,QAAQ,KAAK,KAAK,WAAW7jB,CAAG,EAAGoK,CAAG,EACxD,GAAI,GAACyZ,GAAQ,CAACm1E,GAGd,UAAW2T,KAAO9oF,EAAK,KACjB8oF,EAAI,OAASkE,GAAkB,QAAUlE,EAAI,WAAa3T,IAC5D2T,EAAI,KAAOliG,EAGjB,CACF,CACA,QAAQpB,EAAMe,EAAKtL,EAAQ,EAAG,CAC5B,GAAIA,EAAQ6xG,GACV,OAAAzxG,EAAK,+BAA+B,EAC7B,KAET,GAAI,EAAEmK,aAAgBf,GACpB,OAAO,KAET,GAAI8B,EAAI,IAAIf,CAAI,EACd,OAAOe,EAAI,IAAIf,CAAI,EAErB,MAAM8G,EAAU,IAAImkG,GAAkB,KAAMjrG,CAAI,EAEhD,OADAe,EAAI,IAAIf,EAAM8G,CAAO,EACbA,EAAQ,KAAI,CAClB,IAAK,IACL,IAAK,QACL,IAAK,KACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,KAED,UAAWw8F,KAAOx8F,EAAQ,KACpBw8F,EAAI,OAASkE,GAAkB,SACjC,KAAK,QAAQlE,EAAI,KAAMviG,EAAKtL,EAAQ,CAAC,CAInD,CACI,MAAMiL,EAASV,EAAK,IAAI,GAAG,EAC3B,GAAI,EAAEU,aAAkBzB,IAAS+B,GAAON,EAAO,IAAI,MAAM,EAAG,gBAAgB,EAC1E,OAAK,KAAK,gBAAgBV,EAAM8G,CAAO,GACrC/F,EAAI,OAAOf,CAAI,EAEV8G,EAET,MAAMwlG,EAAa,KAAK,QAAQ5rG,EAAQK,EAAKtL,EAAQ,CAAC,EACtD,GAAI,CAAC62G,EACH,OAAOxlG,EAET,IAAIylG,EAAO,GACX,UAAWjJ,KAAOgJ,EAAW,KACvBhJ,EAAI,OAASkE,GAAkB,SAAWlE,EAAI,OAAStjG,IACzDsjG,EAAI,WAAax8F,EACjBylG,EAAO,IAGX,OAAKA,GACHxrG,EAAI,OAAOf,CAAI,EAEV8G,CACT,CACA,gBAAgB9G,EAAM8G,EAAS,CAC7B,MAAMkiB,EAAQ,KAAK,KAAK,eAAehpB,EAAK,KAAK,EACjD,OAAI,MAAMgpB,CAAK,EACN,IAELA,IAAU,KACZ,KAAK,MAAMA,CAAK,EAAIliB,GAEf,GACT,CACA,IAAI,cAAe,CACjB,SAAS0lG,EAAmBppF,EAAM1iB,EAAQjL,EAAQ,EAAG,CACnD,GAAIA,EAAQ6xG,GAAW,CACrBzxG,EAAK,6CAA6C,EAClD,MACF,CACA,MAAMc,EAAM,OAAO,OAAO,IAAI,EAC9BA,EAAI,KAAOysB,EAAK,KAChBzsB,EAAI,SAAW,CAAA,EACf+J,EAAO,SAAS,KAAK/J,CAAG,EACxB,IAAIuzG,EAAM9mF,EAAK,KAAK,IAAI,KAAK,EACzB,OAAO8mF,GAAQ,WACjBA,EAAM9mF,EAAK,KAAK,IAAI,YAAY,GAE9B,OAAO8mF,GAAQ,WACjBvzG,EAAI,IAAMoM,GAAkBmnG,CAAG,GAEjC,MAAMuC,EAAWrpF,EAAK,KAAK,IAAI,IAAI,EAOnC,GANIzsB,EAAI,OAAS,MAAQ,OAAO81G,GAAa,UAAYA,IACvD91G,EAAI,SAAWoM,GAAkB0pG,CAAQ,GAE3CrpF,EAAK,iBAAiB,QAAQ,CAAC3R,EAAK/R,IAAQ,CAC1C/I,EAAI+I,CAAG,EAAI+R,CACb,CAAC,EACG9a,EAAI,OAAS,UACf,GAAI,CACF,KAAM,CACJ,OAAA+1G,CACZ,EAActpF,EACAspF,IACF/1G,EAAI,OAAS+1G,EAEjB,OAASrpG,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAERxN,EAAK,qBAAqBwN,CAAE,IAAI,CAClC,CAEF,IAAI2rB,EAAO,KACTtQ,EAAO,KACT,UAAWvjB,KAAKioB,EAAK,WAAY,CAC/B4L,EAAO9oB,GAAiB/K,EAAE,SAAS,MAAM,EAAG6zB,CAAI,EAChD,MAAMttB,EAAQvG,EAAE,IAAI,OAAO,EACrBwG,EAASxG,EAAE,IAAI,QAAQ,EACzB,OAAOuG,GAAU,UAAYA,EAAQ,GAAK,OAAOC,GAAW,UAAYA,EAAS,IACnF+c,EAAO,CAAC,EAAG,EAAGhd,EAAOC,CAAM,EAE/B,EACIqtB,GAAQtQ,KACV/nB,EAAI,KAAOq4B,GAAQtQ,GAErB,MAAMu1B,EAAO7wB,EAAK,KAAK,IAAI,MAAM,EAC7B,OAAO6wB,GAAS,WAClBt9C,EAAI,KAAOoM,GAAkBkxC,CAAI,GAEnC,UAAWqvD,KAAOlgF,EAAK,KAAM,CAC3B,MAAMupF,EAAarJ,EAAI,OAASkE,GAAkB,QAAUlE,EAAI,WAAa,KAC7E,GAAIqJ,EAAY,CACdH,EAAmBG,EAAYh2G,EAAKlB,EAAQ,CAAC,EAC7C,QACF,MAAW6tG,EAAI,OAASkE,GAAkB,cAAgBlE,EAAI,OAASkE,GAAkB,eACvF7wG,EAAI,SAAS,KAAK,CAChB,KAAM,UACN,GAAI,IAAI2sG,EAAI,SAAS,MAAMA,EAAI,IAAI,EAC/C,CAAW,EACQA,EAAI,OAASkE,GAAkB,OACxC7wG,EAAI,SAAS,KAAK,CAChB,KAAM,SACN,GAAI2sG,EAAI,QACpB,CAAW,EACQA,EAAI,OAASkE,GAAkB,YACxC7wG,EAAI,SAAS,KAAK,CAChB,KAAM,aACN,GAAI,GAAGxC,EAAgB,GAAGmvG,EAAI,QAAQ,EAClD,CAAW,CAEL,CACF,CACA,MAAMH,EAAO,OAAO,OAAO,IAAI,EAC/BA,EAAK,SAAW,CAAA,EAChBA,EAAK,KAAO,OACZ,UAAWwC,KAAS,KAAK,MAClBA,GAGL6G,EAAmB7G,EAAOxC,CAAI,EAEhC,OAAOA,CACT,CACF,CAgBA,MAAMziF,GAAQzf,GAAKA,aAAaxB,EAC1BmtG,GAAsBnvG,GAAqB,KAAK,KAAMijB,GAAO1f,EAAM,EACzE,SAAS6rG,GAAUjvG,EAAM,CACvB,OAAIA,aAAgBqB,IAClBrB,EAAOA,EAAK,IAAI,GAAG,GAEdgvG,GAAoBhvG,CAAI,EAAIA,EAAO,IAC5C,CACA,SAASkvG,GAAgBxlG,EAAQ,CAC/B,IAAI1J,EAAO0J,EAAO,IAAI,GAAG,EACzB,GAAI1J,EAAM,CAIR,GAHIA,aAAgBkB,IAClBlB,EAAOA,EAAK,MAEV,OAAOA,GAAS,SAClB,OAAOmF,GAAkBnF,EAAM,EAAI,EAC9B,GAAIgvG,GAAoBhvG,CAAI,EACjC,OAAO,KAAK,UAAUA,CAAI,CAE9B,CACA,OAAO,IACT,CACA,MAAMmvG,EAAQ,CACZC,GAAkB,KAClBC,GAA+B,IAAIrsG,GACnCssG,GAA+B,IAAI,IACnCC,GAAsB,IAAI,IAC1BC,GAAW,KACX,iBAAmB,IAAI,IACvB,UAAY,IAAIxsG,GAChB,sBAAwB,IAAIiiF,GAC5B,iBAAmB,IAAIC,GACvB,iBAAmB,IAAItiF,GACvB,cAAgB,IAAII,GACpB,eAAiB,IAAIA,GACrB,mBAAqB,IAAIA,GACzB,sBAAwB,IAAI,IAC5B,gBAAkB,IAAI,IACtB,YAAYsnG,EAAY/oG,EAAM,CAI5B,GAHA,KAAK,WAAa+oG,EAClB,KAAK,KAAO/oG,EACZ,KAAKiuG,GAAWjuG,EAAK,cAAa,EAC9B,EAAE,KAAKiuG,cAAoBnuG,GAC7B,MAAM,IAAIvH,EAAY,qCAAqC,EAE7D,KAAK,iBACP,CACA,WAAY,CACV,OAAO,KAAK01G,GAAS,MAAK,CAC5B,CACA,6BAA6B7sG,EAAK8sG,EAAU,GAAO,CACjD,IAAI7/D,EAAK,KAAKy/D,GAA6B,IAAI1sG,CAAG,EAClD,GAAI,CAACitC,EAAI,CACP,MAAM8/D,EAAS,iBAAiB/sG,EAAI,SAAQ,CAAE,GAC9CitC,EAAK8/D,EACL,IAAI,EAAI,EACR,KAAO,KAAKJ,GAA6B,IAAI1/D,CAAE,GAAK,KAAK,aAAa,IAAIA,CAAE,GAC1EA,EAAK,GAAG8/D,CAAM,IAAI,GAAG,GAEvB,KAAKL,GAA6B,IAAI1sG,EAAKitC,CAAE,EAC7C,KAAK0/D,GAA6B,IAAI1/D,EAAIjtC,CAAG,CAC/C,CACA,OAAI8sG,GACF,KAAKF,GAAoB,IAAI3/D,CAAE,EAE1BA,CACT,CACA,IAAI,SAAU,CACZ,MAAM25B,EAAU,KAAKimC,GAAS,IAAI,SAAS,EAC3C,GAAIjmC,aAAmBroE,EAAM,CAC3B,GAAIyE,GAAmB,KAAK4jE,EAAQ,IAAI,EACtC,OAAOzwE,GAAO,KAAM,UAAWywE,EAAQ,IAAI,EAE7CtxE,EAAK,gCAAgCsxE,EAAQ,IAAI,EAAE,CACrD,CACA,OAAOzwE,GAAO,KAAM,UAAW,IAAI,CACrC,CACA,IAAI,MAAO,CACT,MAAMu9C,EAAO,KAAKm5D,GAAS,IAAI,MAAM,EACrC,OAAO12G,GAAO,KAAM,OAAQu9C,GAAQ,OAAOA,GAAS,SAAWlxC,GAAkBkxC,CAAI,EAAI,IAAI,CAC/F,CACA,IAAI,gBAAiB,CACnB,MAAMs5D,EAAiB,KAAKH,GAAS,IAAI,gBAAgB,EACzD,OAAO12G,GAAO,KAAM,iBAAkB,OAAO62G,GAAmB,UAAYA,EAAiB,EAAK,CACpG,CACA,IAAI,YAAa,CACf,IAAIC,EAAa,KACjB,GAAI,CACF,MAAM72G,EAAM,KAAKy2G,GAAS,IAAI,YAAY,EACtCz2G,aAAesI,GAAQtI,EAAI,KAAO,IACpC62G,EAAa72G,EAEjB,OAAS0M,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAER1N,GAAK,mEAAmE,CAC1E,CACA,OAAOe,GAAO,KAAM,aAAc82G,CAAU,CAC9C,CACA,IAAI,UAAW,CACb,IAAIC,EAAW,KACf,GAAI,CACF,MAAM92G,EAAM,KAAKy2G,GAAS,IAAI,UAAU,EACpCz2G,aAAesI,GAAQtI,EAAI,KAAO,IACpC82G,EAAW92G,EAEf,OAAS0M,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAER1N,GAAK,6DAA6D,CACpE,CACA,OAAOe,GAAO,KAAM,WAAY+2G,CAAQ,CAC1C,CACA,IAAI,aAAc,CAChB,MAAM52G,EAAQ,KAAKu2G,GAAS,OAAO,UAAU,EAC7C,OAAO12G,GAAO,KAAM,cAAeG,aAAiB4I,EAAM5I,EAAQ,IAAI,CACxE,CACA,IAAI,UAAW,CACb,MAAM62G,EAAY,KAAKN,GAAS,OAAO,UAAU,EACjD,GAAI,EAAEM,aAAqBjuG,GACzB,OAAO/I,GAAO,KAAM,WAAY,IAAI,EAEtC,IAAIi3G,EAAW,KACf,GAAI,CACF,MAAMv0F,EAAS,KAAK,KAAK,MAAMs0F,EAAW,CAAC,KAAK,KAAK,SAAS,eAAe,EAC7E,GAAIt0F,aAAkB5X,IAAcL,GAAOiY,EAAO,KAAM,UAAU,GAAKpY,GAAOoY,EAAO,KAAK,IAAI,SAAS,EAAG,KAAK,EAAG,CAChH,MAAM7U,EAAOjO,GAAmB8iB,EAAO,UAAS,CAAE,EAC9C7U,IACFopG,EAAW,IAAItH,GAAe9hG,CAAI,EAAE,aAExC,CACF,OAASlB,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAER1N,GAAK,+BAA+B0N,CAAE,IAAI,CAC5C,CACA,OAAO3M,GAAO,KAAM,WAAYi3G,CAAQ,CAC1C,CACA,IAAI,UAAW,CACb,IAAIC,EAAW,KACf,GAAI,CACFA,EAAW,KAAKC,GAAa,CAC/B,OAASxqG,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAERxN,EAAK,2BAA2B,CAClC,CACA,OAAOa,GAAO,KAAM,WAAYk3G,CAAQ,CAC1C,CACAC,IAAgB,CACd,MAAMl3G,EAAM,KAAKy2G,GAAS,IAAI,UAAU,EACxC,GAAI,EAAEz2G,aAAesI,GACnB,OAAO,KAET,MAAM2uG,EAAW,IAAI,IACrB,UAAWluG,IAAO,CAAC,SAAU,iBAAkB,UAAU,EAAG,CAC1D,MAAM+R,EAAM9a,EAAI,IAAI+I,CAAG,EACvBkuG,EAAS,IAAIluG,EAAK,OAAO+R,GAAQ,UAAYA,EAAM,EAAK,CAC1D,CACA,OAAOm8F,CACT,CACA,IAAI,eAAgB,CAClB,OAAO,KAAKR,GAAS,IAAI,gBAAgB,CAC3C,CACA,IAAI,gBAAiB,CACnB,IAAIU,EAAa,KACjB,GAAI,CACFA,EAAa,KAAKC,GAAmB,CACvC,OAAS1qG,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAERxN,EAAK,qCAAqC,CAC5C,CACA,OAAOa,GAAO,KAAM,iBAAkBo3G,CAAU,CAClD,CACAC,IAAsB,CACpB,MAAMC,EAAS,KAAKZ,GAAS,OAAO,gBAAgB,EAClDz2G,EAAM,KAAK,KAAK,WAAWq3G,CAAM,EACnC,OAAOr3G,aAAesI,EAAO,IAAIwoG,GAAe,KAAK,KAAM9wG,EAAKq3G,CAAM,EAAI,IAC5E,CACA,IAAI,mBAAoB,CACtB,MAAMC,EAAW,KAAKb,GAAS,IAAI,OAAO,EAC1C,GAAI,EAAEa,aAAoBhvG,GACxB,MAAM,IAAIvH,EAAY,qCAAqC,EAE7D,OAAOhB,GAAO,KAAM,oBAAqBu3G,CAAQ,CACnD,CACA,IAAI,iBAAkB,CACpB,IAAIt3G,EAAM,KACV,GAAI,CACFA,EAAM,KAAKu3G,GAAoB,CACjC,OAAS7qG,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAERxN,EAAK,kCAAkC,CACzC,CACA,OAAOa,GAAO,KAAM,kBAAmBC,CAAG,CAC5C,CACAu3G,GAAqB73G,EAAU,GAAI,CACjC,IAAIM,EAAM,KAAKy2G,GAAS,IAAI,UAAU,EAKtC,GAJI,EAAEz2G,aAAesI,KAGrBtI,EAAMA,EAAI,OAAO,OAAO,EACpB,EAAEA,aAAe8I,IACnB,OAAO,KAET,MAAM0jG,EAAO,CACX,MAAO,CAAA,CACb,EACU/0E,EAAQ,CAAC,CACb,IAAAz3B,EACA,OAAQwsG,CACd,CAAK,EACK/5E,EAAY,IAAI5oB,GACtB4oB,EAAU,IAAIzyB,CAAG,EACjB,MAAMwI,EAAO,KAAK,KAChBgvG,EAAa,IAAI,kBAAkB,CAAC,EACtC,KAAO//E,EAAM,OAAS,GAAG,CACvB,MAAMn2B,EAAIm2B,EAAM,MAAK,EACfggF,EAAcjvG,EAAK,WAAWlH,EAAE,GAAG,EACzC,GAAIm2G,IAAgB,KAClB,SAEGA,EAAY,IAAI,OAAO,GAC1Bv4G,EAAK,mCAAmC,EAE1C,MAAM0O,EAAO,CACX,IAAK,KACL,KAAM,KACN,OAAQ,IAChB,EACMwoG,GAAQ,oBAAoB,CAC1B,SAAUqB,EACV,UAAW7pG,EACX,WAAY,KAAK,QACjB,eAAgB,KAAK,WAC7B,CAAO,EACD,MAAM0lG,EAAQmE,EAAY,IAAI,OAAO,EAC/B17C,EAAQ07C,EAAY,IAAI,GAAG,GAAK,EAChCr7F,EAAQq7F,EAAY,SAAS,GAAG,EAChCnkG,EAAQmkG,EAAY,IAAI,OAAO,EACrC,IAAIC,EAAWF,EACXroG,GAAciN,EAAO,CAAC,IAAMA,EAAM,CAAC,IAAM,GAAKA,EAAM,CAAC,IAAM,GAAKA,EAAM,CAAC,IAAM,KAC/Es7F,EAAW3uF,GAAgB,IAAI,OAAO3M,EAAO,CAAC,GAEhD,MAAMu7F,EAAc,CAClB,OAAQ/pG,EAAK,OACb,aAAcA,EAAK,aACnB,WAAYA,EAAK,WACjB,KAAMA,EAAK,KACX,IAAKA,EAAK,IACV,UAAWA,EAAK,UAChB,UAAWA,EAAK,UAChB,YAAaA,EAAK,YAClB,MAAO,OAAO0lG,GAAU,SAAWlnG,GAAkBknG,CAAK,EAAI,GAC9D,MAAOoE,EACP,MAAO,OAAO,UAAUpkG,CAAK,EAAIA,EAAQ,OACzC,KAAM,CAAC,EAAEyoD,EAAQ,GACjB,OAAQ,CAAC,EAAEA,EAAQ,GACnB,MAAO,CAAA,CACf,EACUr8D,EAAQ,cACVi4G,EAAY,QAAUF,GAExBn2G,EAAE,OAAO,MAAM,KAAKq2G,CAAW,EAC/B33G,EAAMy3G,EAAY,OAAO,OAAO,EAC5Bz3G,aAAe8I,GAAO,CAAC2pB,EAAU,IAAIzyB,CAAG,IAC1Cy3B,EAAM,KAAK,CACT,IAAAz3B,EACA,OAAQ23G,CAClB,CAAS,EACDllF,EAAU,IAAIzyB,CAAG,GAEnBA,EAAMy3G,EAAY,OAAO,MAAM,EAC3Bz3G,aAAe8I,GAAO,CAAC2pB,EAAU,IAAIzyB,CAAG,IAC1Cy3B,EAAM,KAAK,CACT,IAAAz3B,EACA,OAAQsB,EAAE,MACpB,CAAS,EACDmxB,EAAU,IAAIzyB,CAAG,EAErB,CACA,OAAOwsG,EAAK,MAAM,OAAS,EAAIA,EAAK,MAAQ,IAC9C,CACA,IAAI,0BAA2B,CAC7B,IAAIxsG,EAAM,KACV,GAAI,CACFA,EAAM,KAAKu3G,GAAqB,CAC9B,YAAa,EACrB,CAAO,CACH,OAAS7qG,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAERxN,EAAK,kCAAkC,CACzC,CACA,OAAOa,GAAO,KAAM,2BAA4BC,CAAG,CACrD,CACA,IAAI,aAAc,CAChB,IAAI43G,EAAc,KAClB,GAAI,CACFA,EAAc,KAAKC,GAAgB,CACrC,OAASnrG,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAERxN,EAAK,6BAA6B,CACpC,CACA,OAAOa,GAAO,KAAM,cAAe63G,CAAW,CAChD,CACAC,IAAmB,CACjB,MAAMC,EAAU,KAAK,KAAK,QAAQ,IAAI,SAAS,EAC/C,GAAI,EAAEA,aAAmBxvG,GACvB,OAAO,KAET,IAAIyzD,EAAQ+7C,EAAQ,IAAI,GAAG,EAC3B,GAAI,OAAO/7C,GAAU,SACnB,OAAO,KAETA,GAAS,GAAK,GACd,MAAM67C,EAAc,IAAI,IACxB,UAAW13G,KAAS,OAAO,OAAOvC,EAAc,EAC1Co+D,EAAQ77D,GACV03G,EAAY,IAAI13G,CAAK,EAGzB,OAAO03G,CACT,CACA,IAAI,uBAAwB,CAC1B,IAAIG,EAAS,KACb,GAAI,CACF,MAAM3uG,EAAa,KAAKqtG,GAAS,IAAI,cAAc,EACnD,GAAI,CAACrtG,EACH,OAAOrJ,GAAO,KAAM,wBAAyB,IAAI,EAEnD,MAAMi4G,EAAgB5uG,EAAW,IAAI,GAAG,EACxC,GAAI,CAAC4uG,EACH,OAAOj4G,GAAO,KAAM,wBAAyB,IAAI,EAEnD,MAAMk4G,EAAa7uG,EAAW,IAAI,MAAM,EACxC,GAAI,CAAC,MAAM,QAAQ6uG,CAAU,EAC3B,OAAOl4G,GAAO,KAAM,wBAAyB,IAAI,EAEnD,MAAMm4G,EAAgB,IAAIjuG,GAC1B,UAAWkuG,KAAYF,EACjB,EAAEE,aAAoBrvG,IAAQovG,EAAc,IAAIC,CAAQ,GAG5DD,EAAc,IAAIC,EAAU,KAAKC,GAA0BD,CAAQ,CAAC,EAEtEJ,EAAS,KAAKM,GAA2BL,EAAeE,CAAa,CACvE,OAASxrG,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAERxN,EAAK,2CAA2CwN,CAAE,EAAE,CACtD,CACA,OAAO3M,GAAO,KAAM,wBAAyBg4G,CAAM,CACrD,CACAK,GAA0BD,EAAU,CAClC,MAAMrtE,EAAQ,KAAK,KAAK,MAAMqtE,CAAQ,EAChCn4G,EAAM,CACV,GAAIm4G,EAAS,SAAQ,EACrB,KAAM,KACN,OAAQ,KACR,MAAO,CACL,MAAO,KACP,KAAM,IACd,EACM,SAAU,CAAA,CAChB,EACU73G,EAAOwqC,EAAM,IAAI,MAAM,EACzB,OAAOxqC,GAAS,WAClBN,EAAI,KAAOoM,GAAkB9L,CAAI,GAEnC,IAAI2U,EAAS61B,EAAM,SAAS,QAAQ,EAC/B,MAAM,QAAQ71B,CAAM,IACvBA,EAAS,CAACA,CAAM,GAEdA,EAAO,MAAM3T,GAAKA,aAAa6G,CAAI,IACrCnI,EAAI,OAASiV,EAAO,IAAI3T,GAAKA,EAAE,IAAI,GAErC,MAAMg3G,EAAQxtE,EAAM,IAAI,OAAO,EAC/B,GAAI,EAAEwtE,aAAiBhwG,GACrB,OAAOtI,EAET,MAAMu4G,EAAWv4G,EAAI,MACfw4G,EAAQF,EAAM,IAAI,OAAO,EAC/B,GAAIE,aAAiBlwG,EAAM,CACzB,MAAMmwG,EAAaD,EAAM,IAAI,YAAY,EACzC,GAAIC,aAAsBtwG,EACxB,OAAQswG,EAAW,KAAI,CACrB,IAAK,KACL,IAAK,MACHF,EAAS,MAAQ,CACf,WAAYE,EAAW,IACrC,CACA,CAEI,CACA,MAAMlxF,EAAO+wF,EAAM,IAAI,MAAM,EAC7B,GAAI/wF,aAAgBjf,EAAM,CACxB,MAAMowG,EAAYnxF,EAAK,IAAI,WAAW,EACtC,GAAImxF,aAAqBvwG,EACvB,OAAQuwG,EAAU,KAAI,CACpB,IAAK,KACL,IAAK,MACHH,EAAS,KAAO,CACd,UAAWG,EAAU,IACnC,CACA,CAEI,CACA,OAAO14G,CACT,CACAq4G,GAA2BN,EAAQG,EAAe,CAChD,SAASS,EAAWC,EAAM,CACxB,MAAMC,EAAW,CAAA,EACjB,GAAI,MAAM,QAAQD,CAAI,EACpB,UAAW14G,KAAS04G,EACd14G,aAAiB4I,GAAOovG,EAAc,IAAIh4G,CAAK,GACjD24G,EAAS,KAAK34G,EAAM,UAAU,EAIpC,OAAO24G,CACT,CACA,SAASC,EAAWF,EAAMG,EAAe,EAAG,CAC1C,GAAI,CAAC,MAAM,QAAQH,CAAI,EACrB,OAAO,KAET,MAAM5qB,EAAQ,CAAA,EACd,UAAW9tF,KAAS04G,EAAM,CACxB,GAAI14G,aAAiB4I,GAAOovG,EAAc,IAAIh4G,CAAK,EAAG,CACpD84G,EAAgB,IAAI94G,CAAK,EACzB8tF,EAAM,KAAK9tF,EAAM,UAAU,EAC3B,QACF,CACA,MAAM+4G,EAAcC,EAAiBh5G,EAAO64G,CAAY,EACpDE,GACFjrB,EAAM,KAAKirB,CAAW,CAE1B,CACA,GAAIF,EAAe,EACjB,OAAO/qB,EAET,MAAMmrB,EAAe,CAAA,EACrB,SAAW,CAAChB,CAAQ,IAAKD,EAAc,MAAK,EACtCc,EAAgB,IAAIb,CAAQ,GAGhCgB,EAAa,KAAKhB,EAAS,UAAU,EAEvC,OAAIgB,EAAa,QACfnrB,EAAM,KAAK,CACT,KAAM,KACN,MAAOmrB,CACjB,CAAS,EAEInrB,CACT,CACA,SAASkrB,EAAiBtvG,EAAKmvG,EAAc,CAC3C,GAAI,EAAEA,EAAeK,EACnB,OAAAl6G,EAAK,+CAA+C,EAC7C,KAET,MAAMgB,EAAQsI,EAAK,WAAWoB,CAAG,EACjC,GAAI,CAAC,MAAM,QAAQ1J,CAAK,EACtB,OAAO,KAET,MAAMm5G,EAAa7wG,EAAK,WAAWtI,EAAM,CAAC,CAAC,EAC3C,GAAI,OAAOm5G,GAAe,SACxB,OAAO,KAET,MAAMJ,EAAcH,EAAW54G,EAAM,MAAM,CAAC,EAAG64G,CAAY,EAC3D,OAAKE,GAAa,OAGX,CACL,KAAM7sG,GAAkBitG,CAAU,EAClC,MAAOJ,CACf,EALe,IAMX,CACA,SAASK,EAAcC,EAAU,CAC/B,GAAK,MAAM,QAAQA,CAAQ,EAG3B,UAAWr5G,KAASq5G,EAAU,CAC5B,MAAMC,EAAUhxG,EAAK,WAAWtI,CAAK,EACrC,GAAI,CAAC,MAAM,QAAQs5G,CAAO,GAAK,CAACA,EAAQ,OACtC,SAEF,MAAMC,EAAgB,IAAI,IAC1B,UAAW7vG,KAAO4vG,EACZ5vG,aAAed,GAAOovG,EAAc,IAAItuG,CAAG,GAAK,CAAC6vG,EAAc,IAAI7vG,EAAI,SAAQ,CAAE,IACnF6vG,EAAc,IAAI7vG,EAAI,UAAU,EAChCsuG,EAAc,IAAItuG,CAAG,EAAE,SAAS,KAAK6vG,CAAa,EAGxD,CACF,CACA,MAAMjxG,EAAO,KAAK,KAChBwwG,EAAkB,IAAInvG,GACtBuvG,EAAoB,GACtB,OAAAE,EAAcvB,EAAO,IAAI,UAAU,CAAC,EAC7B,CACL,KAAM,OAAOA,EAAO,IAAI,MAAM,GAAM,SAAW3rG,GAAkB2rG,EAAO,IAAI,MAAM,CAAC,EAAI,KACvF,QAAS,OAAOA,EAAO,IAAI,SAAS,GAAM,SAAW3rG,GAAkB2rG,EAAO,IAAI,SAAS,CAAC,EAAI,KAChG,UAAWA,EAAO,IAAI,WAAW,YAAa5vG,EAAO4vG,EAAO,IAAI,WAAW,EAAE,KAAO,KACpF,GAAIY,EAAWZ,EAAO,IAAI,IAAI,CAAC,EAC/B,IAAKY,EAAWZ,EAAO,IAAI,KAAK,CAAC,EACjC,MAAOe,EAAWf,EAAO,IAAI,OAAO,CAAC,EACrC,OAAQ,CAAC,GAAGG,CAAa,CAC/B,CACE,CACA,kBAAkBxuG,EAAM,KAAM,CAC5B,KAAK2sG,GAAkB3sG,CACzB,CACA,IAAI,mBAAoB,CACtB,OAAO,KAAK2sG,KAAoB,IAClC,CACA,IAAI,aAAc,CAChB,MAAMr2G,EAAM,KAAK,kBAAkB,IAAI,OAAO,EAC9C,GAAI,CAAC,OAAO,UAAUA,CAAG,EACvB,MAAM,IAAIe,EAAY,6DAA6D,EAErF,OAAOhB,GAAO,KAAM,cAAeC,CAAG,CACxC,CACA,IAAI,UAAW,CACb,OAAO,KAAKq2G,IAAmB,KAAK,WACtC,CACA,IAAI,cAAe,CACjB,MAAMqD,EAAQ,IAAI,IAClB,UAAW15G,KAAO,KAAK25G,KACrB,GAAI35G,aAAeitG,GACjB,SAAW,CAAClkG,EAAK7I,CAAK,IAAKF,EAAI,OAAM,EAAI,CACvC,MAAMiH,EAAOivG,GAAUh2G,CAAK,EACxB+G,GACFyyG,EAAM,IAAIttG,GAAkBrD,EAAK,EAAI,EAAG9B,CAAI,CAEhD,SACSjH,aAAesI,EACxB,SAAW,CAACS,EAAK7I,CAAK,IAAKF,EAAK,CAC9B,MAAMiH,EAAOivG,GAAUh2G,CAAK,EACxB+G,GACFyyG,EAAM,YAAYttG,GAAkBrD,EAAK,EAAI,EAAG9B,CAAI,CAExD,CAGJ,OAAOlH,GAAO,KAAM,eAAgB25G,CAAK,CAC3C,CACA,eAAe7iE,EAAI,CACjB,GAAI,OAAO,OAAO,KAAM,cAAc,EACpC,OAAO,KAAK,aAAa,IAAIA,CAAE,GAAK,KAEtC,UAAW72C,KAAO,KAAK25G,KACrB,GAAI35G,aAAeitG,IAAYjtG,aAAesI,EAAM,CAClD,MAAMrB,EAAOivG,GAAUl2G,EAAI,IAAI62C,CAAE,CAAC,EAClC,GAAI5vC,EACF,OAAOA,CAEX,CAEF,OAAO,KAAK,aAAa,IAAI4vC,CAAE,GAAK,IACtC,CACA8iE,IAAa,CACX,MAAM35G,EAAM,KAAKy2G,GAAS,IAAI,OAAO,EAC/BmD,EAAW,CAAA,EACjB,OAAI55G,GAAK,IAAI,OAAO,GAClB45G,EAAS,KAAK,IAAI3M,GAASjtG,EAAI,OAAO,OAAO,EAAG,KAAK,IAAI,CAAC,EAExD,KAAKy2G,GAAS,IAAI,OAAO,GAC3BmD,EAAS,KAAK,KAAKnD,GAAS,IAAI,OAAO,CAAC,EAEnCmD,CACT,CACA,IAAI,eAAgB,CAClB,MAAM55G,EAAM,KAAKy2G,GAAS,OAAO,YAAY,EAC7C,OAAKz2G,EAGc,IAAIktG,GAAWltG,EAAK,KAAK,IAAI,EAC9B,OAAM,EAHf,IAIX,CACA,IAAI,YAAa,CACf,IAAIA,EAAM,KACV,GAAI,CACFA,EAAM,KAAK65G,GAAe,CAC5B,OAASntG,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAERxN,EAAK,6BAA6B,CACpC,CACA,OAAOa,GAAO,KAAM,aAAcC,CAAG,CACvC,CACA65G,IAAkB,CAChB,MAAM7H,EAAO,KAAK,cAClB,GAAI,CAACA,EACH,OAAO,KAET,MAAM8H,EAAa,IAAI,MAAM,KAAK,QAAQ,EAC1C,IAAIxnB,EAAQ,KACV1jD,EAAS,GACPmrE,EAAe,GACjBC,EAAe,EACjB,QAAS14G,EAAI,EAAGmF,EAAK,KAAK,SAAUnF,EAAImF,EAAInF,IAAK,CAC/C,MAAM24G,EAAYjI,EAAK,IAAI1wG,CAAC,EAC5B,GAAI24G,IAAc,OAAW,CAC3B,GAAI,EAAEA,aAAqB3xG,GACzB,MAAM,IAAIvH,EAAY,gCAAgC,EAExD,GAAIk5G,EAAU,IAAI,MAAM,GAAK,CAAC5vG,GAAO4vG,EAAU,IAAI,MAAM,EAAG,WAAW,EACrE,MAAM,IAAIl5G,EAAY,uCAAuC,EAE/D,GAAIk5G,EAAU,IAAI,GAAG,EAAG,CACtB,MAAMxxF,EAAIwxF,EAAU,IAAI,GAAG,EAC3B,GAAI,EAAExxF,aAAatgB,GACjB,MAAM,IAAIpH,EAAY,wCAAwC,EAEhEuxF,EAAQ7pE,EAAE,IACZ,MACE6pE,EAAQ,KAEV,GAAI2nB,EAAU,IAAI,GAAG,EAAG,CACtB,MAAMx3G,EAAIw3G,EAAU,IAAI,GAAG,EAC3B,GAAI,OAAOx3G,GAAM,SACf,MAAM,IAAI1B,EAAY,yCAAyC,EAEjE6tC,EAASxiC,GAAkB3J,CAAC,CAC9B,MACEmsC,EAAS,GAEX,GAAIqrE,EAAU,IAAI,IAAI,EAAG,CACvB,MAAMC,EAAKD,EAAU,IAAI,IAAI,EAC7B,GAAI,EAAE,OAAO,UAAUC,CAAE,GAAKA,GAAM,GAClC,MAAM,IAAIn5G,EAAY,wCAAwC,EAEhEi5G,EAAeE,CACjB,MACEF,EAAe,CAEnB,CACA,OAAQ1nB,EAAK,CACX,IAAK,IACHynB,EAAeC,EACf,MACF,IAAK,IACL,IAAK,IACHD,EAAeprG,GAAgBqrG,EAAc1nB,IAAU,GAAG,EAC1D,MACF,IAAK,IACL,IAAK,IACH,MAAM6nB,EAAQ,GACRC,EAAcJ,EAAe,EAEnCD,EADkB,OAAO,aAAaznB,EAAM,WAAW,CAAC,EAAI8nB,EAAcD,CAAK,EACtD,OAAO,KAAK,MAAMC,EAAcD,CAAK,EAAI,CAAC,EACnE,MACF,QACE,GAAI7nB,EACF,MAAM,IAAIvxF,EAAY,kBAAkBuxF,CAAK,4BAA4B,EAE3EynB,EAAe,EACzB,CACMD,EAAWx4G,CAAC,EAAIstC,EAASmrE,EACzBC,GACF,CACA,OAAOF,CACT,CACA,IAAI,YAAa,CACf,MAAM95G,EAAM,KAAKy2G,GAAS,IAAI,YAAY,EAC1C,IAAI4D,EAAa,GACjB,GAAIr6G,aAAemI,EACjB,OAAQnI,EAAI,KAAI,CACd,IAAK,aACL,IAAK,YACL,IAAK,gBACL,IAAK,iBACL,IAAK,cACL,IAAK,eACHq6G,EAAar6G,EAAI,IAC3B,CAEI,OAAOD,GAAO,KAAM,aAAcs6G,CAAU,CAC9C,CACA,IAAI,UAAW,CACb,MAAMr6G,EAAM,KAAKy2G,GAAS,IAAI,UAAU,EACxC,IAAI6D,EAAW,UACf,GAAIt6G,aAAemI,EACjB,OAAQnI,EAAI,KAAI,CACd,IAAK,UACL,IAAK,cACL,IAAK,YACL,IAAK,aACL,IAAK,QACL,IAAK,iBACHs6G,EAAWt6G,EAAI,IACzB,CAEI,OAAOD,GAAO,KAAM,WAAYu6G,CAAQ,CAC1C,CACA,IAAI,mBAAoB,CACtB,MAAMt6G,EAAM,KAAKy2G,GAAS,IAAI,mBAAmB,EACjD,GAAI,EAAEz2G,aAAesI,GACnB,OAAOvI,GAAO,KAAM,oBAAqB,IAAI,EAE/C,IAAIw6G,EAAQ,KACZ,SAAW,CAACxxG,EAAK7I,CAAK,IAAKF,EAAK,CAC9B,IAAIw6G,EACJ,OAAQzxG,EAAG,CACT,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,YACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACC,OAAO7I,GAAU,YACnBs6G,EAAYt6G,GAEd,MACF,IAAK,wBACH,GAAIA,aAAiBiI,EACnB,OAAQjI,EAAM,KAAI,CAChB,IAAK,UACL,IAAK,cACL,IAAK,YACL,IAAK,QACHs6G,EAAYt6G,EAAM,KAClB,MACF,QACEs6G,EAAY,SAC5B,CAEU,MACF,IAAK,YACH,GAAIt6G,aAAiBiI,EACnB,OAAQjI,EAAM,KAAI,CAChB,IAAK,MACL,IAAK,MACHs6G,EAAYt6G,EAAM,KAClB,MACF,QACEs6G,EAAY,KAC5B,CAEU,MACF,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,YACH,GAAIt6G,aAAiBiI,EACnB,OAAQjI,EAAM,KAAI,CAChB,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,SACHs6G,EAAYt6G,EAAM,KAClB,MACF,QACEs6G,EAAY,SAC5B,CAEU,MACF,IAAK,eACH,GAAIt6G,aAAiBiI,EACnB,OAAQjI,EAAM,KAAI,CAChB,IAAK,OACL,IAAK,aACHs6G,EAAYt6G,EAAM,KAClB,MACF,QACEs6G,EAAY,YAC5B,CAEU,MACF,IAAK,SACH,GAAIt6G,aAAiBiI,EACnB,OAAQjI,EAAM,KAAI,CAChB,IAAK,UACL,IAAK,sBACL,IAAK,qBACHs6G,EAAYt6G,EAAM,KAClB,MACF,QACEs6G,EAAY,MAC5B,CAEU,MACF,IAAK,iBACC,MAAM,QAAQt6G,CAAK,GAAKA,EAAM,OAAS,IAAM,GAAKA,EAAM,MAAM,CAACgH,EAAM5F,EAAGoM,IAAQ,OAAO,UAAUxG,CAAI,GAAKA,EAAO,IAAM5F,IAAM,GAAK4F,GAAQwG,EAAIpM,EAAI,CAAC,IAAM4F,GAAQ,KAAK,QAAQ,IAChLszG,EAAYt6G,GAEd,MACF,IAAK,YACC,OAAO,UAAUA,CAAK,GAAKA,EAAQ,IACrCs6G,EAAYt6G,GAEd,MACF,QACEhB,EAAK,mDAAmD6J,CAAG,GAAG,EAC9D,QACV,CACM,GAAIyxG,IAAc,OAAW,CAC3Bt7G,EAAK,uBAAuB6J,CAAG,4BAA4B7I,CAAK,GAAG,EACnE,QACF,EACCq6G,IAAU,IAAI,KAAO,IAAIxxG,EAAKyxG,CAAS,CAC1C,CACA,OAAOz6G,GAAO,KAAM,oBAAqBw6G,CAAK,CAChD,CACA,IAAI,YAAa,CACf,MAAMv6G,EAAM,KAAKy2G,GAAS,IAAI,YAAY,EACpCgE,EAAa,IAAI,IACvB,GAAIz6G,aAAesI,EAAM,CACvB,MAAMoyG,EAAW,IAAIpyG,EAAK,KAAK,IAAI,EACnCoyG,EAAS,IAAI,IAAK16G,CAAG,EACrB,MAAM26G,EAAY,CAChB,IAAK,KACL,KAAM,KACN,OAAQ,IAChB,EACMvE,GAAQ,oBAAoB,CAC1B,SAAAsE,EACA,UAAAC,CACR,CAAO,EACG,MAAM,QAAQA,EAAU,IAAI,EAC9BF,EAAW,IAAI,OAAQE,EAAU,IAAI,EAC5BA,EAAU,QACnBF,EAAW,IAAI,SAAUE,EAAU,MAAM,CAE7C,MAAW1E,GAAoBj2G,CAAG,GAChCy6G,EAAW,IAAI,OAAQz6G,CAAG,EAE5B,OAAOD,GAAO,KAAM,aAAc06G,EAAW,KAAOA,EAAa,IAAI,CACvE,CACA,IAAI,aAAc,CAChB,MAAMz6G,EAAM,KAAKy2G,GAAS,IAAI,OAAO,EACrC,IAAImE,EAAc,KAClB,GAAI56G,aAAesI,GAAQtI,EAAI,IAAI,eAAe,EAAG,CACnD,MAAM66G,EAAW,IAAI5N,GAASjtG,EAAI,OAAO,eAAe,EAAG,KAAK,IAAI,EACpE,SAAW,CAAC+I,EAAK7I,CAAK,IAAK26G,EAAS,OAAM,GACvCD,IAAgB,IAAI,KAAO,IAAIxuG,GAAkBrD,EAAK,EAAI,EAAG,IAAIqkG,GAASltG,CAAK,EAAE,YAAY,CAElG,CACA,OAAOH,GAAO,KAAM,cAAe66G,CAAW,CAChD,CACAE,GAAyBjkE,EAAI,CAC3B,MAAM72C,EAAM,KAAKy2G,GAAS,IAAI,OAAO,EACrC,GAAIz2G,aAAesI,GAAQtI,EAAI,IAAI,eAAe,EAAG,CACnD,MAAM66G,EAAW,IAAI5N,GAASjtG,EAAI,OAAO,eAAe,EAAG,KAAK,IAAI,EACpE,SAAW,CAAC+I,EAAK7I,CAAK,IAAK26G,EAAS,OAAM,EACxC,GAAIzuG,GAAkBrD,EAAK,EAAI,IAAM8tC,EACnC,OAAOu2D,GAAS,YAAYltG,CAAK,CAGvC,CAEF,CACA,kBAAkB22C,EAAI,CACpB,MAAMkkE,EAAe,KAAKD,GAAyBjkE,CAAE,EACrD,GAAIkkE,IAAiB,OACnB,OAAOA,EAET,MAAMnxG,EAAM,KAAK2sG,GAA6B,IAAI1/D,CAAE,EACpD,GAAIjtC,EAAK,CACP,MAAMoxG,EAAS,KAAK,KAAK,MAAMpxG,CAAG,EAClC,GAAIoxG,aAAkBnwG,GAAY,CAChC,MAAM8vE,EAAUyyB,GAAS,kBAAkB4N,CAAM,EACjD,OAAI,KAAKxE,GAAoB,IAAI3/D,CAAE,EAC1B05D,GAAiByK,EAAQrgC,CAAO,GAAKA,EAEvCA,CACT,CACA,OAAOqgC,aAAkB1yG,EAAO8kG,GAAS,YAAY4N,CAAM,EAAI,IACjE,CACA,OAAO,IACT,CACA,IAAI,kBAAmB,CACrB,MAAMh7G,EAAM,KAAKy2G,GAAS,IAAI,OAAO,EACrC,MAAI,EAAEz2G,aAAesI,IAAS,CAACtI,EAAI,IAAI,eAAe,EAC7C,KAEQ,IAAIitG,GAASjtG,EAAI,OAAO,eAAe,EAAG,KAAK,IAAI,EACpD,OAAO,EAAI,CAC7B,CACA,IAAI,WAAY,CACd,MAAMA,EAAM,KAAKy2G,GAAS,IAAI,OAAO,EACrC,IAAIwE,EAAY,KAChB,GAAIj7G,aAAesI,GAAQtI,EAAI,IAAI,WAAW,EAAG,CAC/C,MAAM66G,EAAW,IAAI5N,GAASjtG,EAAI,OAAO,WAAW,EAAG,KAAK,IAAI,EAChE,SAAW,CAAC+I,EAAK7I,CAAK,IAAK26G,EAAS,OAAM,EACpC36G,aAAiB2K,KACnBowG,IAAc,IAAI,IAClBA,EAAU,IAAI7uG,GAAkBrD,EAAK,EAAI,EAAG7I,EAAM,UAAU,EAGlE,CACA,OAAOH,GAAO,KAAM,YAAak7G,CAAS,CAC5C,CACAC,IAAqB,CACnB,MAAMl7G,EAAM,KAAKy2G,GAAS,IAAI,OAAO,EACrC,IAAI0E,EAAa,KACjB,SAASC,EAAuB96G,EAAM+6G,EAAQ,CAC5C,GAAI,EAAEA,aAAkB/yG,IAAS,CAAC+B,GAAOgxG,EAAO,IAAI,GAAG,EAAG,YAAY,EACpE,OAEF,IAAIjrG,EAAKirG,EAAO,IAAI,IAAI,EACxB,GAAIjrG,aAAcvF,GAChBuF,EAAKA,EAAG,UAAS,UACR,OAAOA,GAAO,SACvB,OAEFA,EAAKhE,GAAkBgE,EAAI,EAAI,EAAE,WAAW,KAAQ,EAAE,EAClDA,IACD+qG,IAAe,IAAI,KAAO,IAAI76G,EAAM8P,CAAE,CAE3C,CACA,GAAIpQ,aAAesI,GAAQtI,EAAI,IAAI,YAAY,EAAG,CAChD,MAAM66G,EAAW,IAAI5N,GAASjtG,EAAI,OAAO,YAAY,EAAG,KAAK,IAAI,EACjE,SAAW,CAAC+I,EAAK7I,CAAK,IAAK26G,EAAS,OAAM,EACxCO,EAAuBhvG,GAAkBrD,EAAK,EAAI,EAAG7I,CAAK,CAE9D,CACA,MAAMu6G,EAAa,KAAKhE,GAAS,IAAI,YAAY,EACjD,OAAIgE,GACFW,EAAuB,aAAcX,CAAU,EAE1CU,CACT,CACA,IAAI,WAAY,CACd,MAAMA,EAAa,KAAKD,GAAkB,EAC1C,IAAI3qG,EAAUF,GAAe,KAAK,KAAM,KAAKomG,GAAUn4G,EAAuB,EAC9E,GAAI68G,EAAY,CACd5qG,IAAY,IAAI,IAChB,SAAW,CAACxH,EAAK+R,CAAG,IAAKqgG,EACvB5qG,EAAQ,oBAAoBxH,EAAKvB,EAAO,EAAE,KAAKsT,CAAG,CAEtD,CACA,OAAO/a,GAAO,KAAM,YAAawQ,CAAO,CAC1C,CACA,MAAM,QAAQ+qG,EAAoB,GAAO,CACvCnO,GAAiB,EACjB,KAAK,sBAAsB,MAAK,EAChC,KAAK,iBAAiB,MAAMmO,CAAiB,EAC7C,KAAK,mBAAmB,MAAK,EAC7B,KAAK,eAAe,MAAK,EACzB,KAAK,cAAc,MAAK,EACxB,KAAK,iBAAiB,MAAK,EAC3B,SAAW,CACT,KAAAjyG,CACN,IAAS,MAAM,QAAQ,IAAI,KAAK,SAAS,EACnC,OAAOA,EAAK,SAEd,KAAK,UAAU,MAAK,EACpB,KAAK,iBAAiB,MAAK,EAC3B,KAAK,sBAAsB,MAAK,EAChC,KAAK,gBAAgB,MAAK,CAC5B,CACA,MAAM,YAAYmjF,EAAW,CAC3B,MAAM+uB,EAAe,CAAC,KAAK,iBAAiB,EACtCC,EAAe,IAAI3xG,GACnB4xG,EAAW,KAAKhF,GAAS,OAAO,OAAO,EACzCgF,aAAoB3yG,GACtB0yG,EAAa,IAAIC,CAAQ,EAE3B,MAAMjzG,EAAO,KAAK,KAChBkzG,EAAqB,KAAK,mBAC1BC,EAAiB,KAAK,eACtBC,EAAgB,KAAK,cACvB,IAAIC,EAAmB,EACvB,KAAON,EAAa,QAAQ,CAC1B,MAAMO,EAAcP,EAAa,IAAG,EACpC,GAAIO,aAAuBhzG,EAAK,CAC9B,MAAMwK,EAAQooG,EAAmB,IAAII,CAAW,EAChD,GAAIxoG,GAAS,GAAKuoG,EAAmBvoG,GAASk5E,EAAW,CACvDqvB,GAAoBvoG,EACpB,QACF,CACA,GAAIkoG,EAAa,IAAIM,CAAW,EAC9B,MAAM,IAAI/6G,EAAY,yCAAyC,EAEjEy6G,EAAa,IAAIM,CAAW,EAC5B,MAAM97G,EAAM,MAAO47G,EAAc,IAAIE,CAAW,GAAKtzG,EAAK,WAAWszG,CAAW,GAChF,GAAI97G,aAAesI,EAAM,CACvB,IAAImC,EAAOzK,EAAI,OAAO,MAAM,EAI5B,GAHIyK,aAAgB3B,IAClB2B,EAAO,MAAMjC,EAAK,WAAWiC,CAAI,GAE/BJ,GAAOI,EAAM,MAAM,GAAK,CAACzK,EAAI,IAAI,MAAM,EAAG,CAO5C,GANK07G,EAAmB,IAAII,CAAW,GACrCJ,EAAmB,IAAII,EAAa,CAAC,EAElCH,EAAe,IAAIG,CAAW,GACjCH,EAAe,IAAIG,EAAaD,CAAgB,EAE9CA,IAAqBrvB,EACvB,MAAO,CAACxsF,EAAK87G,CAAW,EAE1BD,IACA,QACF,CACF,CACAN,EAAa,KAAKv7G,CAAG,EACrB,QACF,CACA,GAAI,EAAE87G,aAAuBxzG,GAC3B,MAAM,IAAIvH,EAAY,+DAA+D,EAEvF,KAAM,CACJ,MAAAi4F,CACR,EAAU8iB,EACJ,IAAIxoG,EAAQwoG,EAAY,OAAO,OAAO,EAItC,GAHIxoG,aAAiBxK,IACnBwK,EAAQ,MAAM9K,EAAK,WAAW8K,CAAK,GAEjC,OAAO,UAAUA,CAAK,GAAKA,GAAS,IAClC0lF,GAAS,CAAC0iB,EAAmB,IAAI1iB,CAAK,GACxC0iB,EAAmB,IAAI1iB,EAAO1lF,CAAK,EAEjCuoG,EAAmBvoG,GAASk5E,GAAW,CACzCqvB,GAAoBvoG,EACpB,QACF,CAEF,IAAIo5F,EAAOoP,EAAY,OAAO,MAAM,EAIpC,GAHIpP,aAAgB5jG,IAClB4jG,EAAO,MAAMlkG,EAAK,WAAWkkG,CAAI,GAE/B,CAAC,MAAM,QAAQA,CAAI,EAAG,CACxB,IAAIjiG,EAAOqxG,EAAY,OAAO,MAAM,EAIpC,GAHIrxG,aAAgB3B,IAClB2B,EAAO,MAAMjC,EAAK,WAAWiC,CAAI,GAE/BJ,GAAOI,EAAM,MAAM,GAAK,CAACqxG,EAAY,IAAI,MAAM,EAAG,CACpD,GAAID,IAAqBrvB,EACvB,MAAO,CAACsvB,EAAa,IAAI,EAE3BD,IACA,QACF,CACA,MAAM,IAAI96G,EAAY,8CAA8C,CACtE,CACA,QAASugC,EAAOorE,EAAK,OAAS,EAAGprE,GAAQ,EAAGA,IAAQ,CAClD,MAAMy6E,EAAUrP,EAAKprE,CAAI,EACzBi6E,EAAa,KAAKQ,CAAO,EACrBD,IAAgB,KAAK,mBAAqBC,aAAmBjzG,GAAO,CAAC8yG,EAAc,IAAIG,CAAO,GAChGH,EAAc,IAAIG,EAASvzG,EAAK,WAAWuzG,CAAO,CAAC,CAEvD,CACF,CACA,MAAM,IAAI,MAAM,cAAcvvB,CAAS,aAAa,CACtD,CACA,MAAM,gBAAgBjoC,EAAe,GAAO,CAC1C,KAAM,CACJ,aAAAw2C,CACN,EAAQ,KAAK,WAAW,iBACdtjE,EAAQ,CAAC,CACb,YAAa,KAAK,kBAClB,UAAW,CACjB,CAAK,EACK+jF,EAAe,IAAI3xG,GACnB4xG,EAAW,KAAKhF,GAAS,OAAO,OAAO,EACzCgF,aAAoB3yG,GACtB0yG,EAAa,IAAIC,CAAQ,EAE3B,MAAMrxG,EAAM,IAAI,IACd5B,EAAO,KAAK,KACZmzG,EAAiB,KAAK,eACxB,IAAInvB,EAAY,EAChB,SAASwvB,EAAY7J,EAAUd,EAAS,CAClCA,GAAW,CAACsK,EAAe,IAAItK,CAAO,GACxCsK,EAAe,IAAItK,EAAS7kB,CAAS,EAEvCpiF,EAAI,IAAIoiF,IAAa,CAAC2lB,EAAUd,CAAO,CAAC,CAC1C,CACA,SAAS4K,EAAaz2C,EAAO,CAC3B,GAAIA,aAAiBj4D,IAAsB,CAACg3C,EAC1C,MAAMihB,EAEJjhB,GAAgBw2C,GAAgBvO,IAAc,IAChDttF,EAAK,mDAAmDsmE,CAAK,IAAI,EACjEA,EAAQl9D,EAAK,OAEf8B,EAAI,IAAIoiF,IAAa,CAAChnB,EAAO,IAAI,CAAC,CACpC,CACA,KAAO/tC,EAAM,OAAS,GAAG,CACvB,MAAMykF,EAAYzkF,EAAM,GAAG,EAAE,EACvB,CACJ,YAAAqkF,EACA,UAAAK,CACR,EAAUD,EACJ,IAAIxP,EAAOoP,EAAY,OAAO,MAAM,EACpC,GAAIpP,aAAgB5jG,EAClB,GAAI,CACF4jG,EAAO,MAAMlkG,EAAK,WAAWkkG,CAAI,CACnC,OAAShgG,EAAI,CACXuvG,EAAavvG,CAAE,EACf,KACF,CAEF,GAAI,CAAC,MAAM,QAAQggG,CAAI,EAAG,CACxB,IAAIjiG,EAAOqxG,EAAY,OAAO,MAAM,EACpC,GAAIrxG,aAAgB3B,EAClB,GAAI,CACF2B,EAAO,MAAMjC,EAAK,WAAWiC,CAAI,CACnC,OAASiC,EAAI,CACXuvG,EAAavvG,CAAE,EACf,KACF,CAEF,GAAIrC,GAAOI,EAAM,MAAM,GAAK,CAACqxG,EAAY,IAAI,MAAM,EAAG,CACpDE,EAAYF,EAAa,IAAI,EAC7B,KACF,CACAG,EAAa,IAAIl7G,EAAY,8CAA8C,CAAC,EAC5E,KACF,CACA,GAAIo7G,GAAazP,EAAK,OAAQ,CAC5Bj1E,EAAM,IAAG,EACT,QACF,CACA,MAAM2kF,EAAS1P,EAAKyP,CAAS,EAC7B,IAAIn8G,EACJ,GAAIo8G,aAAkBtzG,EAAK,CACzB,GAAI0yG,EAAa,IAAIY,CAAM,EAAG,CAC5BH,EAAa,IAAIl7G,EAAY,yCAAyC,CAAC,EACvE,KACF,CACAy6G,EAAa,IAAIY,CAAM,EACvB,GAAI,CACFp8G,EAAM,MAAMwI,EAAK,WAAW4zG,CAAM,CACpC,OAAS1vG,EAAI,CACXuvG,EAAavvG,CAAE,EACf,KACF,CACF,MACE1M,EAAMo8G,EAER,GAAI,EAAEp8G,aAAesI,GAAO,CAC1B2zG,EAAa,IAAIl7G,EAAY,+DAA+D,CAAC,EAC7F,KACF,CACA,IAAI0J,EAAOzK,EAAI,OAAO,MAAM,EAC5B,GAAIyK,aAAgB3B,EAClB,GAAI,CACF2B,EAAO,MAAMjC,EAAK,WAAWiC,CAAI,CACnC,OAASiC,EAAI,CACXuvG,EAAavvG,CAAE,EACf,KACF,CAEErC,GAAOI,EAAM,MAAM,GAAK,CAACzK,EAAI,IAAI,MAAM,EACzCg8G,EAAYh8G,EAAKo8G,aAAkBtzG,EAAMszG,EAAS,IAAI,EAEtD3kF,EAAM,KAAK,CACT,YAAaz3B,EACb,UAAW,CACrB,CAAS,EAEHk8G,EAAU,WACZ,CACA,OAAO9xG,CACT,CACA,MAAM,aAAainG,EAAS,CAC1B,MAAMgL,EAAkB,KAAK,eAAe,IAAIhL,CAAO,EACvD,GAAIgL,IAAoB,OACtB,OAAOA,EAET,MAAM7zG,EAAO,KAAK,KAClB,IAAI8zG,EAAQ,EACV1yG,EAAMynG,EACR,MAAMljG,EAAU,IAAItE,GAEpB,IADAsE,EAAQ,IAAIkjG,CAAO,IACN,CACX,MAAM5kF,EAAO,MAAMjkB,EAAK,WAAWoB,CAAG,EACtC,GAAIc,GAAYd,EAAKynG,CAAO,GAAK,CAAC7mG,GAAOiiB,EAAM,MAAM,GAAK,EAAEA,aAAgBnkB,GAAQ,CAACmkB,EAAK,IAAI,MAAM,GAAKA,EAAK,IAAI,UAAU,GAC1H,MAAM,IAAI1rB,EAAY,qDAAqD,EAE7E,GAAI,CAAC0rB,EACH,MAEF,GAAI,EAAEA,aAAgBnkB,GACpB,MAAM,IAAIvH,EAAY,4BAA4B,EAEpD,MAAMgzG,EAAYtnF,EAAK,OAAO,QAAQ,EACtC,GAAIsnF,aAAqBjrG,EAAK,CAC5B,GAAIqF,EAAQ,IAAI4lG,CAAS,EACvB,MAAM,IAAIhzG,EAAY,yCAAyC,EAEjEoN,EAAQ,IAAI4lG,CAAS,CACvB,CACA,MAAMhqG,EAAS,MAAM0iB,EAAK,SAAS,QAAQ,EAC3C,GAAI,CAAC1iB,EACH,MAEF,GAAI,EAAEA,aAAkBzB,GACtB,MAAM,IAAIvH,EAAY,8BAA8B,EAEtD,MAAM2rG,EAAO,MAAM3iG,EAAO,SAAS,MAAM,EACzC,GAAI,CAAC2iG,EACH,MAEF,GAAI,CAAC,MAAM,QAAQA,CAAI,EACrB,MAAM,IAAI3rG,EAAY,wBAAwB,EAEhD,MAAMw7G,EAAc,CAAA,EACpB,IAAI91D,EAAQ,GACZ,UAAWkmD,KAAOD,EAAM,CACtB,GAAI,EAAEC,aAAe7jG,GACnB,MAAM,IAAI/H,EAAY,0BAA0B,EAElD,GAAI2J,GAAYiiG,EAAK/iG,CAAG,EAAG,CACzB68C,EAAQ,GACR,KACF,CACA81D,EAAY,KAAK/zG,EAAK,WAAWmkG,CAAG,EAAE,KAAK3sG,GAAO,CAChD,GAAI,EAAEA,aAAesI,GACnB,MAAM,IAAIvH,EAAY,gCAAgC,EAExD,GAAIf,EAAI,IAAI,OAAO,EAAG,CACpB,MAAMsT,EAAQtT,EAAI,IAAI,OAAO,EAC7B,GAAI,OAAO,UAAUsT,CAAK,GAAKA,GAAS,EAAG,CACzCgpG,GAAShpG,EACT,MACF,CACA,MAAM,IAAIvS,EAAY,qCAAqC,CAC7D,CACAu7G,GACF,CAAC,CAAC,CACJ,CACA,GAAI,CAAC71D,EACH,MAAM,IAAI1lD,EAAY,2CAA2C,EAEnE,MAAM,QAAQ,IAAIw7G,CAAW,EAC7B3yG,EAAMmqG,CACR,CACA,YAAK,eAAe,IAAI1C,EAASiL,CAAK,EAC/BA,CACT,CACA,IAAI,SAAU,CACZ,MAAME,EAAM,KAAK/F,GAAS,IAAI,KAAK,EACnC,GAAI+F,aAAel0G,EAAM,CACvB,MAAMwQ,EAAO0jG,EAAI,IAAI,MAAM,EAC3B,GAAI,OAAO1jG,GAAS,SAAU,CAC5B,MAAMlZ,EAAcJ,GAAuBsZ,EAAM,KAAM,CACrD,mBAAoB,EAC9B,CAAS,EACD,GAAIlZ,EACF,OAAOG,GAAO,KAAM,UAAWH,EAAY,IAAI,CAEnD,CACF,CACA,OAAOG,GAAO,KAAM,UAAW,KAAK,WAAW,UAAU,CAC3D,CACA,MAAO08G,GAA0Bj0G,EAAMk0G,EAAO,CAC5C,MAAMC,EAASn0G,EAAK,WAAWk0G,CAAK,EACpC,GAAI,EAAEC,aAAkBr0G,GACtB,OAAO,KAET,IAAI+oG,EAAU,KACd,MAAMuL,EAAWD,EAAO,OAAO,IAAI,EAInC,GAHIC,aAAoB9zG,IACtBuoG,EAAUuL,GAER,CAACvL,EAAS,CACZ,MAAM55E,EAAQ,CAACklF,CAAM,EACfxuG,EAAU,IAAItE,GAEpB,IADAsE,EAAQ,IAAIuuG,CAAK,EACVjlF,EAAM,OAAS,GAAK,CAAC45E,GAAS,CAEnC,IAAI3E,EADSj1E,EAAM,MAAK,EACR,OAAO,GAAG,EAC1B,GAAIi1E,aAAgB5jG,EAAK,CACvB,GAAIqF,EAAQ,IAAIu+F,CAAI,EAClB,SAEFv+F,EAAQ,IAAIu+F,CAAI,EAChBA,EAAOlkG,EAAK,MAAMkkG,CAAI,CACxB,CACA,IAAImQ,EACJ,GAAI,MAAM,QAAQnQ,CAAI,EACpBmQ,EAAUnQ,UACDA,EACTmQ,EAAU,CAACnQ,CAAI,MAEf,UAEF,UAAWC,KAAOkQ,EAAS,CACzB,GAAIlQ,aAAe7jG,EAAK,CACtB,GAAIqF,EAAQ,IAAIw+F,CAAG,EACjB,SAEFx+F,EAAQ,IAAIw+F,CAAG,CACjB,CACA,MAAMyP,EAAS5zG,EAAK,WAAWmkG,CAAG,EAClC,GAAI,EAAEyP,aAAkB9zG,GACtB,SAEF,MAAMw0G,EAAKV,EAAO,OAAO,IAAI,EAC7B,GAAIU,aAAch0G,EAAK,CACrBuoG,EAAUyL,EACV,KACF,CACArlF,EAAM,KAAK2kF,CAAM,CACnB,CACF,CACF,CACA,GAAI,CAAC/K,EAAS,CAEZ,IAAI0L,EAAUJ,EACd,QAASK,EAAQ,EAAGA,EAAQ,GAAWA,IAAS,CAC9C,MAAMC,EAAYF,EAAQ,OAAO,GAAG,EACpC,GAAI,EAAEE,aAAqBn0G,GACzB,MAEF,MAAM0qD,EAAahrD,EAAK,MAAMy0G,CAAS,EAIvC,GAHI,EAAEzpD,aAAsBlrD,IAGxB+B,GAAOmpD,EAAW,IAAI,MAAM,EAAG,gBAAgB,EACjD,MAEF,MAAMspD,EAAKtpD,EAAW,OAAO,IAAI,EACjC,GAAIspD,aAAch0G,EAAK,CACrBuoG,EAAUyL,EACV,KACF,CACAC,EAAUvpD,CACZ,CACF,CACA,GAAI,CAAC69C,EACH,OAAO,KAET,IAAInsG,EAAI,KACNC,EAAI,KACN,MAAM+3G,EAAQP,EAAO,IAAI,GAAG,EAC5B,GAAIO,aAAiB50G,EAAM,CACzB,MAAM+vB,EAAO/oB,GAAW4tG,EAAM,SAAS,MAAM,EAAG,IAAI,EAChD7kF,IACFnzB,EAAImzB,EAAK,CAAC,EACVlzB,EAAIkzB,EAAK,CAAC,EAEd,CACA,MAAO,CAACg5E,EAAS,CACf,KAAM,KACZ,EAAOnsG,EAAGC,EAAG,IAAI,CACf,CACA,OAAO,oBAAoB,CACzB,SAAAu1G,EACA,UAAAC,EACA,WAAAwC,EAAa,KACb,eAAAC,EAAiB,IACrB,EAAK,CACD,GAAI,EAAE1C,aAAoBpyG,GAAO,CAC/BpJ,EAAK,uDAAuD,EAC5D,MACF,CACA,IAAIyR,EAAS+pG,EAAS,IAAI,GAAG,EAC3Bn7G,EACA0H,EAeF,GAdM0J,aAAkBrI,IAClBoyG,EAAS,IAAI,MAAM,EACrB/pG,EAAS+pG,EAAS,IAAI,MAAM,GAE5B/pG,EAAS+pG,EAAS,IAAI,IAAI,EACtB/pG,aAAkBrI,IAChBqI,EAAO,IAAI,GAAG,EAChBA,EAASA,EAAO,IAAI,GAAG,EACdA,EAAO,IAAI,GAAG,IACvBA,EAASA,EAAO,IAAI,GAAG,MAK3BA,aAAkBrI,EAAM,CAC1B,MAAM+0G,EAAa1sG,EAAO,IAAI,GAAG,EACjC,GAAI,EAAE0sG,aAAsBl1G,GAAO,CACjCjJ,EAAK,yDAAyD,EAC9D,MACF,CACA,MAAMo+G,EAAaD,EAAW,KAC9B,OAAQC,EAAU,CAChB,IAAK,YACH,MAAMvhD,EAAQprD,EAAO,IAAI,OAAO,EAC1B4sG,IAAY,OAAOxhD,GAAU,SAAWA,EAAQ,GAAK,KAAO,EAC5DsP,EAAS,CAAA,EACTutC,EAAO,CAAA,EACb,UAAW54G,KAAO2Q,EAAO,IAAI,QAAQ,GAAK,CAAA,EACpC3Q,aAAe8I,EACjB8vG,EAAK,KAAK54G,EAAI,UAAU,EACf,OAAOA,GAAQ,UACxBqrE,EAAO,KAAKj/D,GAAkBpM,CAAG,CAAC,EAGtC26G,EAAU,UAAY,CACpB,OAAAtvC,EACA,KAAAutC,EACA,QAAA2E,CACZ,EACU,MACF,IAAK,MACHh+G,EAAMoR,EAAO,IAAI,KAAK,EAClBpR,aAAe4I,IACjB5I,EAAM,IAAMA,EAAI,MAElB,MACF,IAAK,OACH0H,EAAO0J,EAAO,IAAI,GAAG,EACrB,MACF,IAAK,SACL,IAAK,QACH,MAAM6sG,EAAU7sG,EAAO,IAAI,GAAG,EAC9B,GAAI6sG,aAAmBl1G,EACrB/I,EAAM,IAAI6tG,GAASoQ,CAAO,EAAE,iBACnB,OAAOA,GAAY,SAC5Bj+G,EAAMi+G,MAEN,OAEF,MAAMC,EAAatH,GAAgBxlG,CAAM,EACrC8sG,IACFl+G,EAAMA,EAAI,MAAM,IAAK,CAAC,EAAE,CAAC,EAAI,IAAMk+G,GAErC,MAAMC,EAAY/sG,EAAO,IAAI,WAAW,EACpC,OAAO+sG,GAAc,YACvB/C,EAAU,UAAY+C,GAExB,MACF,IAAK,QACH,MAAM1C,EAASrqG,EAAO,IAAI,GAAG,EAC7B,IAAIkmC,EAAK,KACT,GAAImkE,aAAkB1yG,EAAM,CAC1B,MAAMq1G,EAAe3C,EAAO,IAAI,GAAG,EAC7B16G,EAAO06G,EAAO,IAAI,GAAG,EACvB3wG,GAAOszG,EAAc,GAAG,GAAK,OAAOr9G,GAAS,WAC/Cu2C,EAAKzqC,GAAkB9L,EAAM,EAAI,EAErC,CACA,GAAI88G,GAAkBvmE,EAAI,CACxB8jE,EAAU,aAAe9jE,EACzB8jE,EAAU,WAAayC,EAAe,IAAIvmE,CAAE,EAC5C,MAAM+mE,EAAiBzH,GAAgBxlG,CAAM,EACzCitG,IACFjD,EAAU,eAAiBiD,EAE/B,MACE1+G,EAAK,qDAAqD,EAE5D,MACF,IAAK,QACH,MAAM2+G,EAAcltG,EAAO,IAAI,GAAG,EAC9BktG,aAAuB11G,IACzBwyG,EAAU,OAASkD,EAAY,MAEjC,MACF,IAAK,cACH,MAAMnpF,EAAQ/jB,EAAO,IAAI,OAAO,EAC1BmtG,EAAantG,EAAO,IAAI,YAAY,EAC1C,GAAI,CAAC,MAAM,QAAQ+jB,CAAK,GAAKA,EAAM,SAAW,EAC5C,MAEF,MAAMqpF,EAAW,CAAA,EACjB,UAAWl6F,KAAQ6Q,EACjB,GAAI7Q,aAAgB1b,EAClB,OAAQ0b,EAAK,KAAI,CACf,IAAK,KACL,IAAK,MACL,IAAK,SACHk6F,EAAS,KAAKl6F,EAAK,IAAI,EACvB,KAClB,MACuBA,aAAgB/a,GACzBi1G,EAAS,KAAKl6F,EAAK,UAAU,EAGjC,GAAIk6F,EAAS,SAAWrpF,EAAM,OAC5B,MAEFimF,EAAU,YAAc,CACtB,MAAOoD,EACP,WAAY,OAAOD,GAAe,UAAYA,EAAa,EACvE,EACU,MACF,IAAK,aACH,MAAME,EAAWrtG,EAAO,IAAI,IAAI,EAChC,IAAIP,EACA4tG,aAAoBnzG,GACtBuF,EAAK4tG,EAAS,UAAS,EACd,OAAOA,GAAa,WAC7B5tG,EAAK4tG,GAEP,MAAMC,EAAQ7tG,GAAM0B,GAAa1F,GAAkBgE,EAAI,EAAI,CAAC,EAC5D,GAAI6tG,EAAO,CACT1+G,EAAM0+G,EAAM,IACZtD,EAAU,UAAYsD,EAAM,UAC5B,KACF,CACF,QACE,GAAIX,IAAe,cAAgBA,IAAe,aAChD,MAEFp+G,EAAK,8CAA8Co+G,CAAU,IAAI,EACjE,KACV,CACI,MAAW5C,EAAS,IAAI,MAAM,IAC5BzzG,EAAOyzG,EAAS,IAAI,MAAM,GAE5B,GAAI,OAAOn7G,GAAQ,SAAU,CAC3B,MAAMK,EAAcJ,GAAuBD,EAAK49G,EAAY,CAC1D,mBAAoB,GACpB,mBAAoB,EAC5B,CAAO,EACGv9G,IACF+6G,EAAU,IAAM/6G,EAAY,MAE9B+6G,EAAU,UAAYp7G,CACxB,CAWA,GAVI0H,IACEA,aAAgBkB,IAClBlB,EAAOA,EAAK,MAEV,OAAOA,GAAS,SAClB0zG,EAAU,KAAOvuG,GAAkBnF,EAAM,EAAI,EACpCgvG,GAAoBhvG,CAAI,IACjC0zG,EAAU,KAAO1zG,IAGjB,CAAC0zG,EAAU,MAAQ,CAACA,EAAU,KAAO,CAACA,EAAU,QAAU,CAACA,EAAU,YAAc,CAACA,EAAU,aAAe,CAACA,EAAU,UAAW,CACrI,MAAM+B,EAAQhC,EAAS,OAAO,IAAI,EAClC,GAAIgC,aAAiB5zG,EACnB,GAAI,CACF,MAAMo1G,EAAS9H,GAAQqG,GAA0B/B,EAAS,KAAMgC,CAAK,EACjEwB,IACFvD,EAAU,KAAOuD,EAErB,OAASxxG,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAER1N,GAAK,oBAAoB,CAC3B,CAEJ,CACF,CACF,CAMA,MAAMm/G,GAA8B,MACpC,SAASC,GAAgB51G,EAAMuC,EAAOC,EAAQwzB,EAAY,CACxD,MAAMw2D,EAAQ,IAAI1sF,EAAKE,CAAI,EAC3B,OAAAwsF,EAAM,IAAI,OAAQ7sF,EAAK,IAAI,SAAS,CAAC,EACrC6sF,EAAM,IAAI,UAAW7sF,EAAK,IAAI,OAAO,CAAC,EACtC6sF,EAAM,IAAI,mBAAoB,CAAC,EAC/BA,EAAM,UAAU,aAAcx2D,CAAU,EACxCw2D,EAAM,IAAI,QAASjqF,CAAK,EACxBiqF,EAAM,IAAI,SAAUhqF,CAAM,EACnBgqF,CACT,CACA,SAASqpB,GAAe7xG,EAAQnD,EAAM,CACpC,OAAO,IAAIkX,GAAO/T,EAAQ,EAAGA,EAAO,OAAQnD,CAAI,CAClD,CACA,SAASi1G,GAAe3uE,EAAM4uE,EAAOC,EAAW,CAC9C,MAAM/7G,EAAIktC,EAAO4uE,EAAQC,EACnB96D,EAAK,KAAK,IAAIjhD,EAAIktC,CAAI,EACtBgU,EAAK,KAAK,IAAIlhD,EAAI87G,CAAK,EACvB36D,EAAK,KAAK,IAAInhD,EAAI+7G,CAAS,EACjC,OAAI96D,GAAMC,GAAMD,GAAME,EACbjU,EAEFgU,GAAMC,EAAK26D,EAAQC,CAC5B,CACA,SAASC,GAAsB7wG,EAAM7C,EAAOC,EAAQk4C,EAAe,CACjE,MAAMh8B,EAAUnc,EAAQm4C,EAClB3vB,EAAM,IAAI,WAAWvoB,GAAUkc,EAAU,EAAE,EAC3Cw3F,EAAa,CAAC,IAAI,WAAWx3F,CAAO,EAAG,IAAI,WAAWA,CAAO,EAAG,IAAI,WAAWA,CAAO,EAAG,IAAI,WAAWA,CAAO,EAAG,IAAI,WAAWA,CAAO,CAAC,EAC/I,QAAS/hB,EAAI,EAAGA,EAAI6F,EAAQ7F,IAAK,CAC/B,MAAMw5G,EAAYx5G,EAAI+hB,EAChB03F,EAAgBD,EAAYz3F,EAC5B23F,EAAS,CAAC,EAAG,EAAG,EAAG,EAAG,CAAC,EAC7B,QAAS35G,EAAI,EAAGA,EAAIgiB,EAAShiB,IAAK,CAChC,MAAMqQ,EAASopG,EAAYz5G,EACrB45G,EAAMlxG,EAAK2H,CAAM,EACjBo6B,EAAOzqC,GAAKg+C,EAAgBt1C,EAAK2H,EAAS2tC,CAAa,EAAI,EAC3Dq7D,EAAQp5G,EAAI,EAAIyI,EAAKgxG,EAAgB15G,CAAC,EAAI,EAC1Cs5G,EAAYr5G,EAAI,GAAKD,GAAKg+C,EAAgBt1C,EAAKgxG,EAAgB15G,EAAIg+C,CAAa,EAAI,EAC1Fw7D,EAAW,CAAC,EAAEx5G,CAAC,EAAI45G,EACnBJ,EAAW,CAAC,EAAEx5G,CAAC,EAAI45G,EAAMnvE,EAAO,IAChC+uE,EAAW,CAAC,EAAEx5G,CAAC,EAAI45G,EAAMP,EAAQ,IACjCG,EAAW,CAAC,EAAEx5G,CAAC,EAAI45G,GAAOnvE,EAAO4uE,GAAS,GAAK,IAC/CG,EAAW,CAAC,EAAEx5G,CAAC,EAAI45G,EAAMR,GAAe3uE,EAAM4uE,EAAOC,CAAS,EAAI,IAClE,QAASv/E,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAM30B,EAAIo0G,EAAWz/E,CAAC,EAAE/5B,CAAC,EACzB25G,EAAO5/E,CAAC,GAAK30B,EAAI,IAAMA,EAAI,IAAMA,CACnC,CACF,CACA,IAAIy0G,EAAa,EACjB,QAAS9/E,EAAI,EAAGA,EAAI,EAAGA,IACjB4/E,EAAO5/E,CAAC,EAAI4/E,EAAOE,CAAU,IAC/BA,EAAa9/E,GAGjB,MAAM+/E,EAAY75G,GAAK+hB,EAAU,GACjCqM,EAAIyrF,CAAS,EAAID,EACjBxrF,EAAI,IAAImrF,EAAWK,CAAU,EAAGC,EAAY,CAAC,CAC/C,CACA,OAAOzrF,CACT,CACA,eAAe0rF,GAAQ/9G,EAAO,CAC5B,MAAM8nB,EAAK,IAAI,kBAAkB,SAAS,EACpCZ,EAASY,EAAG,SAAS,UAAS,EAC9Bk2F,GAAgB,SAAY,CAChC,GAAI,CACF,MAAM92F,EAAO,MACb,MAAMA,EAAO,MAAMlnB,CAAK,EACxB,MAAMknB,EAAO,MACb,MAAMA,EAAO,MAAK,CACpB,OAAS/F,EAAQ,CACf,YAAM+F,EAAO,MAAM/F,CAAM,EAAE,MAAM,IAAM,CAAC,CAAC,EACnCA,CACR,CACF,GAAC,EACK,CAAC4wB,CAAU,EAAI,MAAM,QAAQ,IAAI,CAAC,IAAI,SAASjqB,EAAG,QAAQ,EAAE,MAAK,EAAIk2F,EAAa,KAAK,IAAM,IAAI,CAAC,CAAC,EACzG,OAAOjsE,CACT,CACA,eAAeksE,GAAmB3yG,EAAQzB,EAAOC,EAAQ3B,EAAM,CAC7D,MAAM65C,EAAgB12C,EAAO,QAAUzB,EAAQC,GAC/C,IAAIioC,EACJ,GAAI,OAAO,mBAAsB,WAC/B,GAAI,CACF,MAAMmsE,EAAWX,GAAsBjyG,EAAQzB,EAAOC,EAAQk4C,CAAa,EAC3EjQ,EAAa,MAAMgsE,GAAQG,CAAQ,CACrC,MAAQ,CAAC,CAEX,GAAI,CAACnsE,EACH,OAAOorE,GAAe7xG,EAAQnD,CAAI,EAEpCA,EAAK,UAAU,SAAU,aAAa,EACtC,MAAMg2G,EAAc,IAAI/2G,EAAKe,EAAK,IAAI,EACtC,OAAAg2G,EAAY,IAAI,YAAa,EAAE,EAC/BA,EAAY,IAAI,UAAWt0G,CAAK,EAChCs0G,EAAY,IAAI,SAAUn8D,CAAa,EACvCm8D,EAAY,IAAI,mBAAoB,CAAC,EACrCh2G,EAAK,IAAI,cAAeg2G,CAAW,EAC5BhB,GAAeprE,EAAY5pC,CAAI,CACxC,CACA,eAAei2G,GAAYr5F,EAAQzd,EAAM,CACvC,YAAA+2G,EAAc,EAChB,EAAI,GAAI,CACN,KAAM,CACJ,MAAAx0G,EACA,OAAAC,CACJ,EAAMib,EACJ,GAAI,CAAC,OAAO,UAAUlb,CAAK,GAAK,CAAC,OAAO,UAAUC,CAAM,GAAKD,GAAS,GAAKC,GAAU,EACnF,MAAIu0G,GACFt5F,EAAO,QAAK,EAER,IAAI,MAAM,0CAA0Clb,CAAK,IAAIC,CAAM,EAAE,EAE7E,MAAMqa,EAAS,IAAI,gBAAgBta,EAAOC,CAAM,EAC1CjJ,EAAMsjB,EAAO,WAAW,KAAM,CAClC,MAAO,GACP,mBAAoB,EACxB,CAAG,EACD,IAAIzX,EACJ,GAAI,CACF7L,EAAI,UAAUkkB,EAAQ,EAAG,CAAC,EAC1BrY,EAAO7L,EAAI,aAAa,EAAG,EAAGgJ,EAAOC,CAAM,EAAE,IAC/C,QAAC,CACKu0G,GACFt5F,EAAO,QAAK,CAEhB,CACA,MAAMu5F,EAAQ,IAAI,YAAY5xG,EAAK,OAAQA,EAAK,WAAYA,EAAK,YAAc,CAAC,EAC1E6xG,EAAO/9G,GAAY,eACnB2V,EAAUooG,EAAO,SAAa,WAC9BC,EAAe,IAAI,IACzB,IAAIC,EAAW,GACXC,EAAW,GACf,UAAWt1G,KAAKk1G,EAAO,CACrB,IAAKC,EAAOn1G,IAAM,GAAKA,EAAI,OAAU,IAAM,CACzCq1G,EAAW,GACX,KACF,CACIC,IACFF,EAAa,KAAKp1G,EAAI+M,KAAa,CAAC,EAChCqoG,EAAa,KAAOvB,KACtByB,EAAW,GACXF,EAAa,MAAK,GAGxB,CACIC,IACFC,EAAW,IAEb,MAAM5qB,EAAQopB,GAAgB51G,EAAMuC,EAAOC,EAAQ,WAAW,EAC9D,IAAI60G,EACAC,EAAoB,KACxB,GAAIF,EAAU,CACZ,MAAMG,EAAY,IAAI,WAAWh1G,EAAQC,EAAS,CAAC,EACnD,QAAS1J,EAAI,EAAGoS,EAAI,EAAGjN,EAAKmH,EAAK,OAAQtM,EAAImF,EAAInF,GAAK,EAAGoS,GAAK,EAC5DqsG,EAAUrsG,CAAC,EAAI9F,EAAKtM,CAAC,EACrBy+G,EAAUrsG,EAAI,CAAC,EAAI9F,EAAKtM,EAAI,CAAC,EAC7By+G,EAAUrsG,EAAI,CAAC,EAAI9F,EAAKtM,EAAI,CAAC,EAE/Bu+G,EAAqBV,GAAmBY,EAAWh1G,EAAOC,EAAQgqF,CAAK,EACvE8qB,EAAoBzB,GAAe0B,EAAW3B,GAAgB51G,EAAMuC,EAAOC,EAAQ,WAAW,CAAC,CACjG,MACEgqF,EAAM,UAAU,SAAU,WAAW,EACrC6qB,EAAqBx6F,EAAO,cAAc,CACxC,KAAM,aACN,QAAS,CACf,CAAK,EAAE,KAAK26F,GAAQA,EAAK,MAAK,CAAE,EAAE,KAAK9+G,GAASm9G,GAAen9G,EAAO8zF,CAAK,CAAC,EAE1E,IAAIirB,EAAqB,QAAQ,QAAQ,IAAI,EACzCC,EAAoB,KACxB,GAAIP,EAAU,CACZ,MAAMQ,EAAc,IAAI,WAAWX,EAAM,MAAM,EAC/C,GAAIC,EACF,QAASn+G,EAAI,EAAGmF,EAAK+4G,EAAM,OAAQl+G,EAAImF,EAAInF,IACzC6+G,EAAY7+G,CAAC,EAAIk+G,EAAMl+G,CAAC,IAAM,OAGhC,SAASA,EAAI,EAAGmF,EAAK+4G,EAAM,OAAQl+G,EAAImF,EAAInF,IACzC6+G,EAAY7+G,CAAC,EAAIk+G,EAAMl+G,CAAC,EAAI,IAGhC,MAAM4zF,EAAQkpB,GAAgB51G,EAAMuC,EAAOC,EAAQ,YAAY,EACzDo1G,EAAkBhC,GAAgB51G,EAAMuC,EAAOC,EAAQ,YAAY,EACzEi1G,EAAqBd,GAAmBgB,EAAap1G,EAAOC,EAAQkqF,CAAK,EACzEgrB,EAAoB7B,GAAe8B,EAAaC,CAAe,CACjE,CACA,KAAM,CAACt6D,EAAau6D,CAAW,EAAI,MAAM,QAAQ,IAAI,CAACR,EAAoBI,CAAkB,CAAC,EAC7F,MAAO,CACL,YAAAn6D,EACA,kBAAAg6D,EACA,YAAAO,EACA,kBAAAH,EACA,MAAAn1G,EACA,OAAAC,CACJ,CACA,CAOA,SAASs1G,GAAgBpgH,EAAO,CAC9B,OAAOA,aAAiB4I,GAAO5I,aAAiBoI,GAAQpI,aAAiB2K,IAAc,MAAM,QAAQ3K,CAAK,CAC5G,CACA,SAASqgH,GAAY9zF,EAAM8uF,EAAc,CACvC,GAAI9uF,aAAgBnkB,EAClBmkB,EAAOA,EAAK,aAAY,UACfA,aAAgB5hB,GACzB4hB,EAAOA,EAAK,KAAK,aAAY,UACpB,CAAC,MAAM,QAAQA,CAAI,EAC5B,OAEF,UAAW+zF,KAAY/zF,EACjB6zF,GAAgBE,CAAQ,GAC1BjF,EAAa,KAAKiF,CAAQ,CAGhC,CACA,MAAMC,EAAa,CACjB,OAAS,IAAI52G,GACb,YAAYR,EAAMq3G,EAAMl4G,EAAM,CAC5B,KAAK,KAAOa,EACZ,KAAK,KAAOq3G,EACZ,KAAK,KAAOl4G,CACd,CACA,MAAM,MAAO,CACX,KAAM,CACJ,KAAAk4G,EACA,KAAAr3G,CACN,EAAQ,KACEkyG,EAAe,CAAA,EACrB,UAAWxyG,KAAO23G,EAAM,CACtB,MAAMF,EAAWn3G,EAAK,OAAON,CAAG,EAC5By3G,IAAa,QACfjF,EAAa,KAAKiF,CAAQ,CAE9B,CACA,MAAM,KAAKG,GAAMpF,CAAY,EAC7B,KAAK,OAAS,IAChB,CACA,KAAMoF,GAAMpF,EAAc,CACxB,MAAMqF,EAAiB,CAAA,EACjBC,EAAkB,CAAA,EACxB,KAAOtF,EAAa,QAAQ,CAC1B,IAAIO,EAAcP,EAAa,IAAG,EAClC,GAAIO,aAAuBhzG,EAAK,CAC9B,GAAI,KAAK,OAAO,IAAIgzG,CAAW,EAC7B,SAEF,GAAI,CACF,KAAK,OAAO,IAAIA,CAAW,EAC3BA,EAAc,KAAK,KAAK,MAAMA,CAAW,CAC3C,OAASpvG,EAAI,CACX,GAAI,EAAEA,aAAcW,IAAuB,CACzCnO,EAAK,8CAA8CwN,CAAE,IAAI,EACzD,MAAM,KAAK,KAAK,OAAO,QAAQ,iBAAgB,EAC/C,MACF,CACAk0G,EAAe,KAAK9E,CAAW,EAC/B+E,EAAgB,KAAK,CACnB,MAAOn0G,EAAG,MACV,IAAKA,EAAG,GACpB,CAAW,CACH,CACF,CACA,GAAIovG,aAAuBjxG,GAAY,CACrC,MAAMie,EAAcgzF,EAAY,eAAc,EAC9C,GAAIhzF,EAAa,CACf,IAAIg4F,EAAmB,GACvB,UAAWr+F,KAAUqG,EACfrG,EAAO,eAGXq+F,EAAmB,GACnBD,EAAgB,KAAK,CACnB,MAAOp+F,EAAO,MACd,IAAKA,EAAO,GAC1B,CAAa,GAECq+F,GACFF,EAAe,KAAK9E,CAAW,CAEnC,CACF,CACAyE,GAAYzE,EAAaP,CAAY,CACvC,CACA,GAAIsF,EAAgB,OAAQ,CAC1B,MAAM,KAAK,KAAK,OAAO,QAAQ,cAAcA,CAAe,EAC5D,UAAWp0F,KAAQm0F,EACbn0F,aAAgB3jB,GAClB,KAAK,OAAO,OAAO2jB,CAAI,EAG3B,MAAM,KAAKk0F,GAAMC,CAAc,CACjC,CACF,CACA,aAAa,KAAK5gH,EAAK0gH,EAAMl4G,EAAM,CACjC,GAAIA,EAAK,OAAO,aACd,OAGF,MADkB,IAAIi4G,GAAazgH,EAAK0gH,EAAMl4G,CAAI,EAClC,KAAI,CACtB,CACF,CAGA,MAAMu4G,GAAoB,OAAM,EAC1BC,GAAW,OAAM,EACjBC,GAAe,OAAM,EACrBC,GAAkB,OAAM,EACxBC,GAAS,OAAM,EACfC,GAAa,OAAM,EACnBC,GAAW,OAAM,EACjBC,GAAS,OAAM,EACfC,GAAY,OAAM,EAClBC,GAAW,OAAO,SAAS,EAC3BC,GAAQ,OAAO,MAAM,EACrBC,GAAQ,OAAM,EACdC,EAAS,OAAO,OAAO,EACvBC,GAAY,OAAM,EAClBC,GAAa,OAAM,EACnBC,GAAkB,OAAM,EACxBC,GAAiB,OAAM,EACvBC,GAAqB,OAAM,EAC3BC,GAAsB,OAAM,EAC5BC,GAAqB,OAAM,EAC3BC,GAAuB,OAAM,EAC7BC,GAAgB,OAAM,EACtBC,GAAY,OAAM,EAClBC,GAA2B,OAAM,EACjCC,GAAe,OAAM,EACrBC,GAAwB,OAAM,EAC9BC,GAAe,OAAM,EACrBC,GAAoB,OAAM,EAC1BC,GAAa,OAAM,EACnBC,GAAmB,OAAM,EACzBC,GAAc,OAAM,EACpBC,GAAoB,OAAM,EAC1BC,GAAO,OAAM,EACbC,GAAW,OAAM,EACjBC,GAAY,OAAM,EAClBC,GAAc,OAAM,EACpBC,GAAc,OAAM,EACpBC,GAAe,OAAM,EACrBC,GAAgB,OAAM,EACtBC,GAAgB,OAAM,EACtBC,GAAgB,OAAM,EACtBC,GAAoB,OAAM,EAC1BC,GAAiB,OAAM,EACvBC,GAAY,OAAM,EAClBC,GAAiB,OAAM,EACvBC,GAAe,OAAO,aAAa,EACnCC,GAAY,OAAO,UAAU,EAC7BC,GAAgB,OAAM,EACtBC,GAAW,OAAM,EACjBC,GAAgB,OAAM,EACtBC,GAAU,OAAM,EAChBC,GAAc,OAAM,EACpBC,GAAW,OAAM,EACjBC,GAAY,OAAM,EAClBC,GAAe,OAAM,EACrBC,GAAQ,OAAO,MAAM,EACrBC,GAAqB,OAAM,EAC3BC,GAAc,OAAM,EACpBC,GAAS,OAAM,EACfC,GAAoB,OAAM,EAC1BC,GAAY,OAAM,EAClBC,GAAY,OAAM,EAClBC,GAAQ,OAAM,EACdC,GAAW,OAAM,EACjBC,GAAU,OAAM,EAChBC,GAAY,OAAM,EAClBC,GAAW,OAAM,EACjBC,GAAO,OAAO,KAAK,EAGnBC,GAAkB,OAAM,EACxBC,GAAe,CACnB,OAAQ,CACN,GAAI,EACJ,MAAOC,GAAMA,EAAG,WAAW,gCAAgC,CAC/D,EACE,cAAe,CACb,GAAI,EACJ,MAAOA,GAAMA,EAAG,WAAW,+CAA+C,CAC9E,EACE,SAAU,CACR,GAAI,EACJ,MAAOA,GAAMA,EAAG,WAAW,qCAAqC,CACpE,EACE,KAAM,CACJ,GAAI,EACJ,MAAOA,GAAMA,EAAG,WAAW,qCAAqC,CACpE,EACE,UAAW,CACT,GAAI,EACJ,MAAOA,GAAMA,EAAG,WAAW,2CAA2C,CAC1E,EACE,IAAK,CACH,GAAI,EACJ,MAAOA,GAAMA,IAAO,8BACxB,EACE,UAAW,CACT,GAAI,EACJ,MAAOA,GAAMA,IAAO,oCACxB,EACE,UAAW,CACT,GAAI,EACJ,MAAOA,GAAMA,EAAG,WAAW,2CAA2C,CAC1E,EACE,WAAY,CACV,GAAI,EACJ,MAAOA,GAAMA,IAAO,sCACxB,EACE,SAAU,CACR,GAAI,EACJ,MAAOA,GAAMA,EAAG,WAAW,yCAAyC,CACxE,EACE,IAAK,CACH,GAAI,GACJ,MAAOA,GAAMA,EAAG,WAAW,gCAAgC,CAC/D,EACE,IAAK,CACH,GAAI,GACJ,MAAOA,GAAMA,IAAO,0BACxB,EACE,KAAM,CACJ,GAAI,GACJ,MAAOA,GAAMA,IAAO,2BACxB,EACE,MAAO,CACL,GAAI,GACJ,MAAOA,GAAMA,IAAO,8BACxB,EACE,QAAS,CACP,GAAI,GACJ,MAAOA,GAAMA,IAAO,8BACxB,CACA,EAKMC,GAAgB,CACpB,GAAIpgH,GAAKA,EACT,GAAIA,GAAKA,EAAI,KAAO,GACpB,GAAIA,GAAKA,GAAK,GAAK,MAAQ,GAC3B,GAAIA,GAAKA,EAAI,GACb,GAAIA,GAAKA,CACX,EACMqgH,GAAqB,uBAC3B,SAASC,GAAY1lH,EAAK,CACxB,OAAIA,EAAI,WAAW,GAAG,GAAKA,EAAI,WAAW,GAAG,EACpCA,EAAI,MAAM,EAAG,EAAE,EAEjBA,CACT,CACA,SAAS2lH,GAAW,CAClB,KAAA73G,EACA,aAAA83G,EACA,SAAAC,CACF,EAAG,CACD,GAAI,CAAC/3G,EACH,OAAO83G,EAET93G,EAAOA,EAAK,KAAI,EAChB,MAAMxC,EAAI,SAASwC,EAAM,EAAE,EAC3B,MAAI,CAAC,MAAMxC,CAAC,GAAKu6G,EAASv6G,CAAC,EAClBA,EAEFs6G,CACT,CACA,SAASE,GAAS,CAChB,KAAAh4G,EACA,aAAA83G,EACA,SAAAC,CACF,EAAG,CACD,GAAI,CAAC/3G,EACH,OAAO83G,EAET93G,EAAOA,EAAK,KAAI,EAChB,MAAMxC,EAAI,WAAWwC,CAAI,EACzB,MAAI,CAAC,MAAMxC,CAAC,GAAKu6G,EAASv6G,CAAC,EAClBA,EAEFs6G,CACT,CACA,SAASG,GAAW,CAClB,KAAAj4G,EACA,aAAA83G,EACA,SAAAC,CACF,EAAG,CACD,OAAK/3G,GAGLA,EAAOA,EAAK,KAAI,EACZ+3G,EAAS/3G,CAAI,EACRA,EAEF83G,GANEA,CAOX,CACA,SAASI,GAAgBl4G,EAAMlO,EAAS,CACtC,OAAOmmH,GAAW,CAChB,KAAAj4G,EACA,aAAclO,EAAQ,CAAC,EACvB,SAAU6a,GAAK7a,EAAQ,SAAS6a,CAAC,CACrC,CAAG,CACH,CACA,SAASwrG,GAAejmH,EAAKkmH,EAAM,IAAK,CAEtC,GADAA,IAAQ,IACJ,CAAClmH,EACH,OAAOimH,GAAeC,CAAG,EAE3B,MAAMl2G,EAAQhQ,EAAI,KAAI,EAAG,MAAMylH,EAAkB,EACjD,GAAI,CAACz1G,EACH,OAAOi2G,GAAeC,CAAG,EAE3B,KAAM,CAAA,CAAGC,EAAUC,CAAI,EAAIp2G,EACrB5P,EAAQ,WAAW+lH,CAAQ,EACjC,GAAI,MAAM/lH,CAAK,EACb,OAAO6lH,GAAeC,CAAG,EAE3B,GAAI9lH,IAAU,EACZ,MAAO,GAET,MAAMimH,EAAOb,GAAcY,CAAI,EAC/B,OAAIC,EACKA,EAAKjmH,CAAK,EAEZA,CACT,CACA,SAASkmH,GAASx4G,EAAM,CACtB,GAAI,CAACA,EACH,MAAO,CACL,IAAK,EACL,IAAK,CACX,EAEE,MAAMmsB,EAAQnsB,EAAK,MAAM,IAAK,CAAC,EAAE,IAAI1I,GAAK,WAAWA,EAAE,KAAI,CAAE,CAAC,EAAE,OAAOA,GAAK,CAAC,MAAMA,CAAC,CAAC,EAIrF,GAHI60B,EAAM,SAAW,GACnBA,EAAM,KAAK,CAAC,EAEVA,EAAM,SAAW,EACnB,MAAO,CACL,IAAK,EACL,IAAK,CACX,EAEE,KAAM,CAACrwB,EAAK28G,CAAG,EAAItsF,EACnB,MAAO,CACL,IAAArwB,EACA,IAAA28G,CACJ,CACA,CACA,SAASC,GAAY14G,EAAM,CACzB,OAAKA,EAGEA,EAAK,OAAO,MAAM,KAAK,EAAE,IAAI,IAAM,CACxC,SAAU,EAAE,CAAC,IAAM,IACnB,SAAU,EAAE,UAAU,CAAC,CAC3B,EAAI,EALO,CAAA,CAMX,CACA,SAAS24G,GAAS34G,EAAMo4G,EAAM,CAAC,EAAG,EAAG,CAAC,EAAG,CACvC,GAAI,CAAC9jH,EAAGC,EAAGC,CAAC,EAAI4jH,EAChB,GAAI,CAACp4G,EACH,MAAO,CACL,EAAA1L,EACA,EAAAC,EACA,EAAAC,CACN,EAEE,MAAMga,EAAQxO,EAAK,MAAM,IAAK,CAAC,EAAE,IAAInJ,IACnCA,EAAI,SAASA,EAAE,KAAI,EAAI,EAAE,EAClB,MAAMA,CAAC,EAAI,EAAI2R,GAAU3R,EAAG,EAAG,GAAG,EAC1C,EACD,OAAI2X,EAAM,OAAS,EACV,CACL,EAAAla,EACA,EAAAC,EACA,EAAAC,CACN,GAEE,CAACF,EAAGC,EAAGC,CAAC,EAAIga,EACL,CACL,EAAAla,EACA,EAAAC,EACA,EAAAC,CACJ,EACA,CACA,SAASokH,GAAQ54G,EAAM,CAErB,GAAI,CAACA,EACH,MAAO,CACL,EAAG,GACH,EAAG,GACH,MAAO,GACP,OAAQ,EACd,EAEE,MAAMyqB,EAAOzqB,EAAK,MAAM,IAAK,CAAC,EAAE,IAAIrL,GAAKwjH,GAAexjH,EAAE,KAAI,EAAI,IAAI,CAAC,EACvE,GAAI81B,EAAK,OAAS,GAAKA,EAAK,CAAC,EAAI,GAAKA,EAAK,CAAC,EAAI,EAC9C,MAAO,CACL,EAAG,GACH,EAAG,GACH,MAAO,GACP,OAAQ,EACd,EAEE,KAAM,CAACnzB,EAAGC,EAAG4F,EAAOC,CAAM,EAAIqtB,EAC9B,MAAO,CACL,EAAAnzB,EACA,EAAAC,EACA,MAAA4F,EACA,OAAAC,CACJ,CACA,CACA,MAAMy7G,EAAW,CACf,WAAW,SAAU,CACnB,OAAO1mH,GAAO,KAAM,UAAW,IAAI0mH,GAAW,GAAO,KAAM,KAAM,IAAI,CAAC,CACxE,CACA,WAAW,OAAQ,CACjB,OAAO1mH,GAAO,KAAM,QAAS,IAAI0mH,GAAW,GAAM,KAAM,KAAM,IAAI,CAAC,CACrE,CACA,YAAYC,EAASC,EAAMtuF,EAAMuuF,EAAW,CAC1C,KAAK,QAAUF,EACf,KAAK,KAAOC,EACZ,KAAK,KAAOtuF,EACZ,KAAK,UAAYuuF,CACnB,CACA,SAAU,CACR,MAAO,CAAC,CAAC,KAAK,SAChB,CACA,OAAO,UAAUn6F,EAAM,CACrB,OAAO,IAAIg6F,GAAW,GAAO,KAAM,KAAMh6F,CAAI,CAC/C,CACA,OAAO,QAAQk6F,EAAMtuF,EAAO,KAAM,CAChC,OAAO,IAAIouF,GAAW,GAAME,EAAMtuF,EAAM,IAAI,CAC9C,CACF,CAMA,MAAMwuF,EAAW,CACf,YAAYC,EAAU,CACpB,KAAK,MAAQ,IAAI,IACjB,KAAK,MAAQ,IAAI,IACjB,KAAK,OAAS,IAAI,IAClB,KAAK,YAAc,KACnB,KAAK,IAAIA,CAAQ,CACnB,CACA,IAAIA,EAAUC,EAAqB,KAAM,CACvC,UAAWC,KAAWF,EACpB,KAAK,WAAWE,CAAO,EAEzB,UAAWA,KAAW,KAAK,MAAM,OAAM,EACrCA,EAAQ,UAAYA,EAAQ,QAAUA,EAAQ,MAAQA,EAAQ,WAEhE,GAAI,CAACD,GAAsBA,EAAmB,OAAS,EACrD,OAEF,MAAME,EAAS,KAAK,MAAM,IAAI,0BAA0B,EACxD,UAAWnmH,KAAWimH,EACpB,KAAK,MAAM,IAAIjmH,EAASmmH,CAAM,CAElC,CACA,WAAWD,EAAS,CAClB,MAAMx1G,EAAcw1G,EAAQ,YACtB1mH,EAAOkR,EAAY,WACnBquD,EAAO,KAAK,MAAM,oBAAoBv/D,EAAMoH,EAAO,EACzD,KAAK,cAAgBm4D,EACrB,IAAIv2D,EAAW,GACf,MAAMoI,EAAa,WAAWF,EAAY,UAAU,EAChD,WAAWA,EAAY,WAAW,IAAM,EAC1ClI,EAAWoI,GAAc,IAAM,aAAe,SACrCA,GAAc,MACvBpI,EAAW,QAERA,KACC09G,EAAQ,KAAK,SAAS,MAAM,GAAKA,EAAQ,QAAQ,SAAS,MAAM,KAClE19G,EAAW,SAET09G,EAAQ,KAAK,SAAS,QAAQ,GAAKA,EAAQ,KAAK,SAAS,IAAI,GAAKA,EAAQ,QAAQ,SAAS,QAAQ,GAAKA,EAAQ,QAAQ,SAAS,IAAI,KACvI19G,GAAY,WAGhBA,IAAa,UACbu2D,EAAKv2D,CAAQ,EAAI09G,CACnB,CACA,YAAa,CACX,OAAO,KAAK,WACd,CACA,KAAK5tD,EAAUloD,EAAW,GAAM,CAC9B,IAAI2uD,EAAO,KAAK,MAAM,IAAIzG,CAAQ,GAAK,KAAK,MAAM,IAAIA,CAAQ,EAC9D,GAAIyG,EACF,OAAOA,EAET,MAAMvrC,EAAU,8CAChB,IAAIh0B,EAAO84D,EAAS,WAAW9kC,EAAS,EAAE,EAE1C,GADAurC,EAAO,KAAK,MAAM,IAAIv/D,CAAI,EACtBu/D,EACF,YAAK,MAAM,IAAIzG,EAAUyG,CAAI,EACtBA,EAETv/D,EAAOA,EAAK,YAAW,EACvB,MAAM4mH,EAAQ,CAAA,EACd,SAAW,CAACC,EAAQH,CAAO,IAAK,KAAK,MAC/BG,EAAO,WAAW7yF,EAAS,EAAE,EAAE,YAAW,EAAG,WAAWh0B,CAAI,GAC9D4mH,EAAM,KAAKF,CAAO,EAGtB,GAAIE,EAAM,SAAW,EACnB,UAAWF,KAAW,KAAK,MAAM,OAAM,EACjCA,EAAQ,QAAQ,MAAM,WAAW1yF,EAAS,EAAE,EAAE,YAAW,EAAG,WAAWh0B,CAAI,GAC7E4mH,EAAM,KAAKF,CAAO,EAIxB,GAAIE,EAAM,SAAW,EAAG,CACtB5mH,EAAOA,EAAK,WAAW,YAAa,EAAE,EACtC,SAAW,CAAC6mH,EAAQH,CAAO,IAAK,KAAK,MAC/BG,EAAO,WAAW7yF,EAAS,EAAE,EAAE,YAAW,EAAG,WAAWh0B,CAAI,GAC9D4mH,EAAM,KAAKF,CAAO,CAGxB,CACA,GAAIE,EAAM,SAAW,EACnB,UAAWF,KAAW,KAAK,MAAM,OAAM,EACjCA,EAAQ,QAAQ,MAAM,WAAW1yF,EAAS,EAAE,EAAE,YAAW,EAAG,WAAWh0B,CAAI,GAC7E4mH,EAAM,KAAKF,CAAO,EAIxB,OAAIE,EAAM,QAAU,GACdA,EAAM,SAAW,GAAKh2G,GACxBhS,EAAK,qDAAqDk6D,CAAQ,EAAE,EAEtE,KAAK,MAAM,IAAIA,EAAU8tD,EAAM,CAAC,CAAC,EAC1BA,EAAM,CAAC,IAEZh2G,GAAY,CAAC,KAAK,OAAO,IAAIkoD,CAAQ,IACvC,KAAK,OAAO,IAAIA,CAAQ,EACxBl6D,EAAK,+BAA+Bk6D,CAAQ,EAAE,GAEzC,KACT,CACF,CACA,SAASguD,GAAWC,EAASC,EAAU,CACrC,OAAID,EAAQ,UAAY,SACfA,EAAQ,SAAW,OAASC,EAAS,WAAaA,EAAS,OACzDD,EAAQ,SAAW,OACrBC,EAAS,KAEXA,EAAS,OAClB,CACA,SAASC,GAAiBF,EAASG,EAAO,GAAO,CAC/C,IAAIR,EAAU,KACd,GAAIK,EAAS,CACX,MAAM/mH,EAAOklH,GAAY6B,EAAQ,QAAQ,EACnCC,EAAWD,EAAQxE,EAAW,EAAE,WAAW,KAAKviH,CAAI,EAC1D0mH,EAAUI,GAAWC,EAASC,CAAQ,CACxC,CACA,GAAI,CAACN,EACH,MAAO,CACL,WAAY,GACZ,QAAS,EACT,UAAW,EACjB,EAEE,MAAMj/F,EAAOs/F,EAAQ,MAAQ,GACvB9b,EAAayb,EAAQ,WAAa,KAAK,IAAIQ,EAAO,EAAI,IAAKR,EAAQ,UAAU,EAAI,IACjFS,EAAUT,EAAQ,UAAY,OAAY,GAAMA,EAAQ,QAC9D,MAAO,CACL,WAAYzb,EAAaxjF,EACzB,QAAS0/F,EAAU1/F,EACnB,UAAW,KAAK,IAAI,EAAGwjF,EAAakc,CAAO,EAAI1/F,CACnD,CACA,CAIA,MAAM2/F,GAAe,KACrB,MAAMC,EAAS,CACb,YAAYN,EAASO,EAAQrc,EAAYsc,EAAY,CAQnD,GAPA,KAAK,WAAatc,EAClB,KAAK,WAAaqc,GAAU,CAC1B,IAAK,EACL,OAAQ,EACR,KAAM,EACN,MAAO,CACb,EACQ,CAACP,EAAS,CACZ,CAAC,KAAK,QAAS,KAAK,OAAO,EAAI,KAAK,YAAYQ,CAAU,EAC1D,MACF,CACA,KAAK,QAAU,CACb,SAAUR,EAAQ,SAClB,QAASA,EAAQ,QACjB,OAAQA,EAAQ,OAChB,KAAMA,EAAQ,KACd,cAAeA,EAAQ,aAC7B,EACI,MAAMC,EAAWO,EAAW,KAAKR,EAAQ,QAAQ,EACjD,GAAI,CAACC,EAAU,CACb,CAAC,KAAK,QAAS,KAAK,OAAO,EAAI,KAAK,YAAYO,CAAU,EAC1D,MACF,CACA,KAAK,QAAUT,GAAWC,EAASC,CAAQ,EACtC,KAAK,UACR,CAAC,KAAK,QAAS,KAAK,OAAO,EAAI,KAAK,YAAYO,CAAU,EAE9D,CACA,YAAYA,EAAY,CACtB,MAAMhoD,EAAOgoD,EAAW,KAAK,YAAa,EAAK,GAAKA,EAAW,KAAK,aAAc,EAAK,GAAKA,EAAW,KAAK,QAAS,EAAK,GAAKA,EAAW,WAAU,EACpJ,GAAIhoD,GAAM,QAAS,CACjB,MAAMmnD,EAAUnnD,EAAK,QAEfwnD,EAAU,CACd,SAFWL,EAAQ,YAEJ,WACf,QAAS,SACT,OAAQ,SACR,KAAM,GACN,cAAe,CACvB,EACM,MAAO,CAACA,EAASK,CAAO,CAC1B,CAQA,MAAO,CAAC,KAPQ,CACd,SAAU,UACV,QAAS,SACT,OAAQ,SACR,KAAM,GACN,cAAe,CACrB,CACyB,CACvB,CACF,CACA,MAAMS,EAAa,CACjB,YAAYC,EAAgBC,EAAmBC,EAAmBJ,EAAY,CAC5E,KAAK,WAAaA,EAClB,KAAK,MAAQ,CAAC,IAAIF,GAASI,EAAgBC,EAAmBC,EAAmBJ,CAAU,CAAC,CAC9F,CACA,SAASR,EAASO,EAAQrc,EAAY,CACpC,MAAM2c,EAAW,KAAK,MAAM,GAAG,EAAE,EACjC,UAAW5nH,IAAQ,CAAC,WAAY,UAAW,SAAU,OAAQ,eAAe,EAC1E+mH,EAAQ/mH,CAAI,IAAM4nH,EAAS,QAAQ5nH,CAAI,EAEzC,UAAWA,IAAQ,CAAC,MAAO,SAAU,OAAQ,OAAO,EAC9C,MAAMsnH,EAAOtnH,CAAI,CAAC,IACpBsnH,EAAOtnH,CAAI,EAAI4nH,EAAS,WAAW5nH,CAAI,GAG3C,MAAM6nH,EAAW,IAAIR,GAASN,EAASO,EAAQrc,GAAc2c,EAAS,WAAY,KAAK,UAAU,EACjGC,EAAS,UAAYD,EAAS,QAC9B,KAAK,MAAM,KAAKC,CAAQ,CAC1B,CACA,SAAU,CACR,KAAK,MAAM,IAAG,CAChB,CACA,SAAU,CACR,OAAO,KAAK,MAAM,GAAG,EAAE,CACzB,CACF,CACA,MAAMC,EAAY,CAChB,YAAYL,EAAgBC,EAAmBC,EAAmBI,EAAO,CACvE,KAAK,OAAS,CAAA,EACd,KAAK,aAAe,IAAIP,GAAaC,EAAgBC,EAAmBC,EAAmBI,CAAK,EAChG,KAAK,YAAc,CACrB,CACA,SAAShB,EAASO,EAAQrc,EAAY,CACpC,KAAK,aAAa,SAAS8b,EAASO,EAAQrc,CAAU,CACxD,CACA,QAAQ8b,EAAS,CACf,OAAO,KAAK,aAAa,QAAO,CAClC,CACA,SAAU,CACR,MAAMa,EAAW,KAAK,aAAa,QAAO,EAC1C,KAAK,aAAeA,EAAS,WAAW,IAAMA,EAAS,WAAW,MACpE,CACA,UAAUpoH,EAAK,CACb,GAAI,CAACA,EACH,OAEF,MAAMooH,EAAW,KAAK,aAAa,QAAO,EACpCzoB,EAAWyoB,EAAS,QAAQ,KAClC,GAAIA,EAAS,QAAS,CACpB,MAAMI,EAAgBJ,EAAS,QAAQ,cACjClB,EAAUkB,EAAS,QACnBK,EAAiBvB,EAAQ,YAAc,IACvCzb,EAAa2c,EAAS,YAAc,KAAK,IAAI,IAAKK,CAAc,EAAI9oB,EACpEgoB,EAAUT,EAAQ,UAAY,OAAY,GAAMA,EAAQ,QACxDwB,EAAQD,EAAiBd,EACzBgB,EAAkB,KAAK,IAAI,EAAGD,CAAK,EAAI/oB,EACvCrmF,EAAQqmF,EAAW,IACnBipB,EAAgB1B,EAAQ,cAAgBA,EAAQ,cAAc,GAAG,EAAE,CAAC,EAAE,MAC5E,UAAW1b,KAAQxrG,EAAI,MAAM,YAAY,EAAG,CAC1C,MAAM6oH,EAAc3B,EAAQ,aAAa1b,CAAI,EAAE,KAAK,EAAE,EAChD7pC,EAASulD,EAAQ,cAAc2B,CAAW,EAChD,UAAWhxD,KAAS8J,EAAQ,CAC1B,MAAM12D,EAAQ4sD,EAAM,OAAS+wD,EAC7B,KAAK,OAAO,KAAK,CAAC39G,EAAQqO,EAAQkvG,EAAe/c,EAAYkd,EAAiB9wD,EAAM,QAAS,EAAK,CAAC,CACrG,CACA,KAAK,OAAO,KAAK,CAAC,EAAG,EAAG,EAAG;AAAA,EAAM,EAAI,CAAC,CACxC,CACA,KAAK,OAAO,IAAG,EACf,MACF,CACA,UAAW2zC,KAAQxrG,EAAI,MAAM,YAAY,EAAG,CAC1C,UAAW2L,KAAQ6/F,EAAK,MAAM,EAAE,EAC9B,KAAK,OAAO,KAAK,CAAC7L,EAAU,IAAMA,EAAUA,EAAUh0F,EAAM,EAAK,CAAC,EAEpE,KAAK,OAAO,KAAK,CAAC,EAAG,EAAG,EAAG;AAAA,EAAM,EAAI,CAAC,CACxC,CACA,KAAK,OAAO,IAAG,CACjB,CACA,QAAQmgG,EAAU,CAChB,IAAIgd,EAAe,GACjBC,EAAiB,EACjB99G,EAAQ,EACRC,EAAS,EACT89G,EAAmB,EACnBC,EAAoB,EAClBC,EAAW,GACXC,EAAc,GAClB,QAAS3nH,EAAI,EAAGmF,EAAK,KAAK,OAAO,OAAQnF,EAAImF,EAAInF,IAAK,CACpD,KAAM,CAAC8hG,EAAYmI,EAAYkd,EAAiBh9G,EAAMy9G,CAAK,EAAI,KAAK,OAAO5nH,CAAC,EACtEqrE,EAAUlhE,IAAS,IACnB82F,EAAc0mB,EAAcR,EAAkBld,EACpD,GAAI2d,EAAO,CACTn+G,EAAQ,KAAK,IAAIA,EAAO+9G,CAAgB,EACxCA,EAAmB,EACnB99G,GAAU+9G,EACVA,EAAoBxmB,EACpBqmB,EAAe,GACfC,EAAiB,EACjBI,EAAc,GACd,QACF,CACA,GAAIt8C,EAAS,CACPm8C,EAAmB1lB,EAAawI,GAClC7gG,EAAQ,KAAK,IAAIA,EAAO+9G,CAAgB,EACxCA,EAAmB,EACnB99G,GAAU+9G,EACVA,EAAoBxmB,EACpBqmB,EAAe,GACfC,EAAiB,EACjBG,EAAW,GACXC,EAAc,KAEdF,EAAoB,KAAK,IAAIxmB,EAAawmB,CAAiB,EAC3DF,EAAiBC,EACjBA,GAAoB1lB,EACpBwlB,EAAetnH,GAEjB,QACF,CACA,GAAIwnH,EAAmB1lB,EAAawI,EAAU,CAC5C5gG,GAAU+9G,EACVA,EAAoBxmB,EAChBqmB,IAAiB,IACnBtnH,EAAIsnH,EACJ79G,EAAQ,KAAK,IAAIA,EAAO89G,CAAc,EACtCC,EAAmB,EACnBF,EAAe,GACfC,EAAiB,IAEjB99G,EAAQ,KAAK,IAAIA,EAAO+9G,CAAgB,EACxCA,EAAmB1lB,GAErB4lB,EAAW,GACXC,EAAc,GACd,QACF,CACAH,GAAoB1lB,EACpB2lB,EAAoB,KAAK,IAAIxmB,EAAawmB,CAAiB,CAC7D,CACA,OAAAh+G,EAAQ,KAAK,IAAIA,EAAO+9G,CAAgB,EACxC99G,GAAU+9G,EAAoB,KAAK,YAC5B,CACL,MAAOrB,GAAe38G,EACtB,OAAAC,EACA,SAAAg+G,CACN,CACE,CACF,CAKA,MAAMG,GAAc,UACdC,GAAe,UACfC,GAAY,CAChB,IAAK,EACL,OAAQ,EACR,QAAS,EACT,WAAY,EACZ,SAAU,CACZ,EACMC,GAAY,IAAI,IAAI,CAAC,CAAC,QAAS,CAAC9c,EAAMuQ,IAAYvQ,EAAK,SAAWA,EAAK,SAAS,KAAOA,CAAI,EAAG,CAAC,UAAW,CAACA,EAAMuQ,KAAavQ,EAAK,SAAWA,EAAK,SAAS,KAAOA,GAAM+V,EAAY,IAAI,CAAC,CAAC,EAAG,CAAC,YAAa,CAAC/V,EAAMuQ,IAAYvQ,EAAK,QAAQ,EAAG,CAAC,iBAAkB,CAACA,EAAMuQ,IAAYvQ,EAAK,aAAa,EAAG,CAAC,QAAS,CAACA,EAAMuQ,IAAYvQ,EAAK,IAAI,EAAG,CAAC,UAAW,CAACA,EAAMuQ,IAAYvQ,EAAK,MAAM,EAAG,CAAC,QAAS,CAACA,EAAMuQ,IAAYvQ,EAAK,IAAI,EAAG,CAAC,cAAe,CAACA,EAAMuQ,IAAYvQ,EAAK,UAAU,EAAG,CAAC,SAAU,CAACA,EAAMuQ,IAAYvQ,EAAK,KAAK,EAAG,CAAC,IAAK,CAACA,EAAMuQ,IAAYvQ,EAAK,QAAQ,EAAG,CAAC,OAAQ,CAACA,EAAMuQ,IAAYvQ,CAAI,EAAG,CAAC,MAAO,CAACA,EAAMuQ,IAAYvQ,CAAI,EAAG,CAAC,IAAK,CAACA,EAAMuQ,IAAYA,CAAO,CAAC,CAAC,EACzpBwM,GAAW,IAAI,QACrB,SAASC,GAAWn3F,EAAO,CAEzB,OADAA,EAAQA,EAAM,KAAI,EACdA,IAAU,IACL,IAEF,SAASA,EAAO,EAAE,GAAK,CAChC,CACA,SAASo3F,GAAgBC,EAAMC,EAAeC,EAAS,GAAM,CAC3D,IAAI95G,EAAQ45G,EAAK,MAAMP,EAAW,EAClC,GAAI,CAACr5G,EACH,OAAO,KAET,GAAI,CAACxP,CAAI,EAAIwP,EACb,MAAM+5G,EAAS,CAAC,CACd,KAAAvpH,EACA,UAAW,IAAMA,EACjB,MAAO,EACP,GAAI,KACJ,SAAU,KACV,SAAU+oH,GAAU,GACxB,CAAG,EACD,IAAI3mH,EAAMpC,EAAK,OACf,KAAOoC,EAAMgnH,EAAK,QAAQ,CACxB,MAAMnuD,EAAO74D,EAEb,GADagnH,EAAK,OAAOhnH,GAAK,IACjB,IAAK,CAEhB,GADAoN,EAAQ45G,EAAK,MAAMhnH,CAAG,EAAE,MAAM0mH,EAAY,EACtC,CAACt5G,EACH,OAAA5Q,EAAK,uCAAuC,EACrC,KAET2qH,EAAO,GAAG,EAAE,EAAE,MAAQL,GAAW15G,EAAM,CAAC,CAAC,EACzCpN,GAAOoN,EAAM,CAAC,EAAE,OAAS,EACzB,QACF,CACA,IAAI+/E,EACJ,OAAQ65B,EAAK,OAAOhnH,CAAG,EAAC,CACtB,IAAK,IACH,GAAI,CAACinH,EACH,OAAO,KAETjnH,IACAmtF,EAAWw5B,GAAU,OACrB,MACF,IAAK,IACH3mH,IACAmtF,EAAWw5B,GAAU,QACrB,MACF,IAAK,IACH,GAAIO,EACF,OAAA1qH,EAAK,wFAAwF,EACtF,KAET2wF,EAAWw5B,GAAU,WACrB,MACF,IAAK,IACH,GAAIO,EACF,OAAA1qH,EAAK,0FAA0F,EACxF,KAET2wF,EAAWw5B,GAAU,SACrB,MACF,QACEx5B,EAAWw5B,GAAU,IACrB,KACR,CAEI,GADAv5G,EAAQ45G,EAAK,MAAMhnH,CAAG,EAAE,MAAMymH,EAAW,EACrC,CAACr5G,EACH,MAEF,CAACxP,CAAI,EAAIwP,EACTpN,GAAOpC,EAAK,OACZupH,EAAO,KAAK,CACV,KAAAvpH,EACA,UAAWopH,EAAK,MAAMnuD,EAAM74D,CAAG,EAC/B,SAAAmtF,EACA,MAAO,EACP,GAAI,KACJ,SAAU,IAChB,CAAK,CACH,CACA,OAAOg6B,CACT,CACA,SAASC,GAAWtd,EAAMud,EAAWL,EAAMC,EAAgB,GAAMK,EAAW,GAAM,CAChF,MAAMH,EAASJ,GAAgBC,EAAMC,CAAa,EAClD,GAAI,CAACE,EACH,OAAO,KAET,MAAMnyF,EAAK4xF,GAAU,IAAIO,EAAO,CAAC,EAAE,IAAI,EACvC,IAAIvoH,EAAI,EACJ2oH,EACAvyF,GACFuyF,EAAc,GACdzd,EAAO,CAAC90E,EAAG80E,EAAMud,CAAS,CAAC,EAC3BzoH,EAAI,IAEJ2oH,EAAcF,IAAc,KAC5Bvd,EAAO,CAACud,GAAavd,CAAI,GAE3B,QAAS/lG,EAAKojH,EAAO,OAAQvoH,EAAImF,EAAInF,IAAK,CACxC,KAAM,CACJ,KAAAhB,EACA,UAAA4pH,EACA,SAAAr6B,EACA,MAAAx9D,CACN,EAAQw3F,EAAOvoH,CAAC,EACNo4F,EAAQ,CAAA,EACd,UAAWjtE,KAAQ+/E,EAAM,CACvB,GAAI,CAAC//E,EAAK,YACR,SAEF,IAAI09F,EAAUljC,EAKd,GAJI+iC,IACF/iC,EAASsiC,GAAS,oBAAoB98F,EAAMhlB,EAAO,EACnD0iH,EAAWljC,EAAO,IAAIijC,CAAS,GAE7B,CAACC,EAAU,CACb,OAAQt6B,EAAQ,CACd,KAAKw5B,GAAU,IACbc,EAAW19F,EAAKy1F,EAAkB,EAAE5hH,EAAM,EAAK,EAC/C,MACF,KAAK+oH,GAAU,OACbc,EAAW19F,EAAKy1F,EAAkB,EAAE5hH,EAAM,EAAI,EAC9C,MACF,KAAK+oH,GAAU,QACbc,EAAW19F,EAAKw1F,EAAmB,EAAE3hH,CAAI,EACzC6pH,EAAWA,EAAS,iBAAmBA,EAAS,SAAW,CAACA,CAAQ,EACpE,KAGZ,CACYH,GACF/iC,EAAO,IAAIijC,EAAWC,CAAQ,CAElC,CACIA,EAAS,OAAS,GACpBzwB,EAAM,KAAKywB,CAAQ,CAEvB,CACA,GAAIzwB,EAAM,SAAW,GAAK,CAACuwB,GAAe3oH,IAAM,EAAG,CAGjD,GADAyoH,EADeA,EAAUpH,EAAU,EAAC,EAEhC,CAACoH,EACH,OAAO,KAETzoH,EAAI,GACJkrG,EAAO,CAACud,CAAS,EACjB,QACF,CACAvd,EAAO,SAASn6E,CAAK,EAAIqnE,EAAM,OAAOjtE,GAAQ4F,EAAQ5F,EAAK,MAAM,EAAE,IAAIA,GAAQA,EAAK4F,CAAK,CAAC,EAAIqnE,EAAM,KAAI,CAC1G,CACA,OAAI8S,EAAK,SAAW,EACX,KAEFA,CACT,CACA,SAAS4d,GAAe5d,EAAMud,EAAWL,EAAM,CAC7C,MAAMG,EAASJ,GAAgBC,CAAI,EAInC,GAHI,CAACG,GAGDA,EAAO,KAAK3kH,GAAKA,EAAE,WAAamkH,GAAU,MAAM,EAClD,OAAO,KAET,MAAM3xF,EAAK4xF,GAAU,IAAIO,EAAO,CAAC,EAAE,IAAI,EACvC,IAAI,EAAI,EACJnyF,GACF80E,EAAO90E,EAAG80E,EAAMud,CAAS,EACzB,EAAI,GAEJvd,EAAOud,GAAavd,EAEtB,QAAS/lG,EAAKojH,EAAO,OAAQ,EAAIpjH,EAAI,IAAK,CACxC,KAAM,CACJ,KAAAnG,EACA,SAAAuvF,EACA,MAAAx9D,CACN,EAAQw3F,EAAO,CAAC,EACZ,GAAI,CAAC,SAASx3F,CAAK,EACjB,OAAAw3F,EAAO,CAAC,EAAE,MAAQ,EACXrd,EAAK,YAAYqd,EAAO,MAAM,CAAC,CAAC,EAEzC,IAAIM,EACJ,OAAQt6B,EAAQ,CACd,KAAKw5B,GAAU,IACbc,EAAW3d,EAAK0V,EAAkB,EAAE5hH,EAAM,EAAK,EAC/C,MACF,KAAK+oH,GAAU,OACbc,EAAW3d,EAAK0V,EAAkB,EAAE5hH,EAAM,EAAI,EAC9C,MACF,KAAK+oH,GAAU,QACbc,EAAW3d,EAAKyV,EAAmB,EAAE3hH,CAAI,EACzC6pH,EAAWA,EAAS,iBAAmBA,EAAS,SAAW,CAACA,CAAQ,EACpE,KAGR,CACI,GAAIA,EAAS,SAAW,EACtB,OAAO3d,EAAK,YAAYqd,EAAO,MAAM,CAAC,CAAC,EAEzC,GAAIx3F,EAAQ83F,EAAS,OAAQ,CAC3B,MAAMnb,EAAQmb,EAAS93F,CAAK,EAC5B,GAAI,CAAC28E,EAAM,YACT,OAAA9vG,EAAK,6BAA6B,EAC3B,KAETstG,EAAOwC,CACT,KACE,QAAA6a,EAAO,CAAC,EAAE,MAAQx3F,EAAQ83F,EAAS,OAC5B3d,EAAK,YAAYqd,EAAO,MAAM,CAAC,CAAC,CAE3C,CACA,OAAO,IACT,CASA,MAAMQ,GAAkB,OAAM,EACxBC,GAAc,OAAM,EACpBC,GAAkB,OAAM,EACxBC,GAAY,OAAO,WAAW,EAC9BC,GAAkB,OAAM,EACxBC,GAAa,OAAM,EACnBC,GAAgB,OAAM,EACtBC,GAA6B,OAAM,EACnCC,GAAgB,OAAM,EACtBC,GAAsB,OAAM,EAC5BC,GAAe,OAAM,EACrBC,GAAO,OAAM,EACbC,GAAW,OAAM,EACjBC,GAAU,OAAO,QAAQ,EACzBC,GAA2B,OAAM,EACjCC,GAAiB,OAAM,EACvBC,GAAa,OAAM,EACzB,IAAIC,GAAM,EACV,MAAMC,GAAcnG,GAAa,SAAS,GAC1C,MAAMoG,CAAU,CACd,YAAYC,EAAMnrH,EAAMorH,EAAc,GAAO,CAC3C,KAAK9H,EAAY,EAAI6H,EACrB,KAAK5H,EAAS,EAAIvjH,EAClB,KAAKyqH,EAAY,EAAIW,EACrB,KAAKR,EAAO,EAAI,KAChB,KAAKV,EAAS,EAAI,CAAA,EAClB,KAAKtF,EAAI,EAAI,GAAG5kH,CAAI,GAAGgrH,IAAK,GAC5B,KAAKzI,EAAW,EAAI,IACtB,CACA,IAAI,aAAc,CAChB,MAAO,EACT,CACA,IAAI,kBAAmB,CACrB,MAAO,EACT,CACA,YAAYpzG,EAAM,CAChB,IAAI+8F,EAAO,KACT//E,EAAO,KACT,SAAW,CACT,KAAAnsB,EACA,MAAA+xB,CACN,IAAS5iB,EAAM,CACT,QAASnO,EAAI,EAAGmF,EAAK,SAAS4rB,CAAK,EAAIA,EAAQ,EAAG/wB,GAAKmF,EAAInF,IAAK,CAC9D,MAAMmqH,EAAOjf,EAAKoX,EAAY,IAAM2H,GAAc,GAAK/e,EAAKoX,EAAY,EACxEn3F,EAAO,IAAIk/F,GAAUF,EAAMnrH,CAAI,EAC/BksG,EAAKyU,EAAY,EAAEx0F,CAAI,CACzB,CACA+/E,EAAO//E,CACT,CACA,OAAOA,CACT,CACA,CAACs3F,EAAQ,EAAE/U,EAAO,CAChB,GAAI,CAAC,KAAK+b,EAAY,GAAK,CAAC,KAAK/G,EAAa,EAAEhV,CAAK,EACnD,MAAO,GAET,MAAM1uG,EAAO0uG,EAAM6U,EAAS,EACtBp3F,EAAO,KAAKnsB,CAAI,EACtB,GAAImsB,aAAgBm/F,GAClB,GAAIn/F,EAAK,KAAKuiF,CAAK,EACjB,YAAKiS,EAAY,EAAEjS,CAAK,EACjB,OAGT,QAAIviF,IAAS,MACX,KAAK43F,EAAY,EAAE53F,CAAI,EAEzB,KAAKnsB,CAAI,EAAI0uG,EACb,KAAKiS,EAAY,EAAEjS,CAAK,EACjB,GAET,IAAIn4D,EAAK,GACT,OAAI,KAAK,GACPA,EAAK,SAAS,KAAK,EAAE,IACZ,KAAK,OACdA,EAAK,WAAW,KAAK,IAAI,IAAI,KAAK,EAAE,KAAK,KAE3C33C,EAAK,eAAe,KAAK2kH,EAAS,CAAC,IAAIhtE,CAAE,wBAAwBv2C,CAAI,IAAI,EAClE,EACT,CACA,CAAC0jH,EAAa,EAAEhV,EAAO,CACrB,OAAO,OAAO,OAAO,KAAMA,EAAM6U,EAAS,CAAC,GAAK7U,EAAM4U,EAAY,IAAM,KAAKA,EAAY,CAC3F,CACA,CAACN,EAAa,GAAI,CAChB,MAAO,EACT,CACA,CAACvC,EAAiB,GAAI,CACpB,MAAO,EACT,CACA,CAACmC,EAAW,GAAI,CACd,MAAO,EACT,CACA,CAACC,EAAW,GAAI,CACd,MAAO,EACT,CACA,CAACgB,EAAQ,GAAI,CACP,KAAK,MACP,KAAKvB,EAAgB,EAAC,EAAGjB,CAAM,EAAE,UAAU,IAAG,CAElD,CACA,CAACyC,EAAS,GAAI,CACZ,KAAKxB,EAAgB,EAAC,EAAGjB,CAAM,EAAE,UAAU,KAAK,KAAK,IAAI,CAC3D,CACA,CAAC8C,EAAM,EAAErP,EAAK,CACR,KAAK,IAAM,KAAKwO,EAAY,IAAMwB,GAAa,SAAS,IAC1DhQ,EAAI,IAAI,KAAK,GAAI,IAAI,CAEzB,CACA,CAACwN,EAAgB,GAAI,CACnB,OAAO,KAAKC,EAAW,EAAE,QAC3B,CACA,CAACU,EAAa,GAAI,CAChB,MAAO,EACT,CACA,CAACC,EAAiB,GAAI,CACpB,MAAO,EACT,CACA,CAACvC,EAAY,EAAEjS,EAAO,CACpBA,EAAMkc,EAAO,EAAI,KACjB,KAAKV,EAAS,EAAE,KAAKxb,CAAK,EACtB,CAACA,EAAM6T,EAAW,GAAK,KAAKA,EAAW,IACzC7T,EAAM6T,EAAW,EAAI,KAAKA,EAAW,EAEzC,CACA,CAACwB,EAAY,EAAErV,EAAO,CACpB,MAAM1tG,EAAI,KAAKkpH,EAAS,EAAE,QAAQxb,CAAK,EACvC,KAAKwb,EAAS,EAAE,OAAOlpH,EAAG,CAAC,CAC7B,CACA,CAACwhH,EAAiB,GAAI,CACpB,OAAO,OAAO,OAAO,KAAM,OAAO,CACpC,CACA,CAAC6B,EAAS,EAAE1iH,EAAG,CAAC,CAChB,CAACgiH,EAAO,EAAEhiH,EAAG,CAAC,CACd,CAAC2/G,EAAS,GAAI,CAAC,CACf,CAACT,EAAM,EAAEvkC,EAAS,CAChB,OAAO,KAAKmuC,EAAY,EACpB,KAAK1J,EAAQ,IACfzkC,EAAQ,MAAM,KAAKykC,EAAQ,CAAC,EAC5B,OAAO,KAAKA,EAAQ,EAExB,CACA,CAAC2B,EAAQ,EAAEhU,EAAO,CAChB,OAAO,KAAKwb,EAAS,EAAE,QAAQxb,CAAK,CACtC,CACA,CAACiU,EAAS,EAAE3hH,EAAG0tG,EAAO,CACpBA,EAAMkc,EAAO,EAAI,KACjB,KAAKV,EAAS,EAAE,OAAOlpH,EAAG,EAAG0tG,CAAK,EAC9B,CAACA,EAAM6T,EAAW,GAAK,KAAKA,EAAW,IACzC7T,EAAM6T,EAAW,EAAI,KAAKA,EAAW,EAEzC,CACA,CAACY,EAAc,GAAI,CACjB,MAAO,CAAC,KAAK,IACf,CACA,CAACE,EAAc,GAAI,CACjB,MAAO,EACT,CACA,CAACkB,EAAK,GAAI,CACR,OAAO,KAAK2F,EAAS,EAAE,SAAW,EAAI,KAAKhJ,EAAQ,EAAI,KAAKgJ,EAAS,EAAE,IAAI/lH,GAAKA,EAAEogH,EAAK,GAAG,EAAE,KAAK,EAAE,CACrG,CACA,IAAK0F,EAAe,GAAI,CACtB,MAAM74C,EAAQ,OAAO,eAAe,IAAI,EACxC,GAAI,CAACA,EAAM,YAAa,CACtB,MAAMq8B,EAAar8B,EAAM,YAAc,IAAI,IAC3C,UAAWpxE,KAAQ,OAAO,oBAAoB,IAAI,EAAG,CACnD,GAAI,KAAKA,CAAI,IAAM,MAAQ,KAAKA,CAAI,YAAakrH,GAAa,KAAKlrH,CAAI,YAAasrH,EAClF,MAEF7d,EAAW,IAAIztG,CAAI,CACrB,CACF,CACA,OAAOP,GAAO,KAAMwqH,GAAiB74C,EAAM,WAAW,CACxD,CACA,CAAC2xC,EAAa,EAAEt5G,EAAQ,CACtB,IAAI0iB,EAAO,KACX,KAAOA,GAAM,CACX,GAAIA,IAAS1iB,EACX,MAAO,GAET0iB,EAAOA,EAAKk2F,EAAU,EAAC,CACzB,CACA,MAAO,EACT,CACA,CAACA,EAAU,GAAI,CACb,OAAO,KAAKuI,EAAO,CACrB,CACA,CAACxI,EAAiB,GAAI,CACpB,OAAO,KAAKC,EAAU,EAAC,CACzB,CACA,CAACjB,EAAK,GAAI,CACR,MAAMmK,EAAS,OAAO,OAAO,IAAI,EAC7B,KAAKrK,EAAQ,IACfqK,EAAO,SAAW,KAAKrK,EAAQ,GAEjC,UAAWlhH,KAAQ,OAAO,oBAAoB,IAAI,EAAG,CACnD,MAAMJ,EAAQ,KAAKI,CAAI,EACnBJ,IAAU,OAGVA,aAAiBsrH,EACnBK,EAAOvrH,CAAI,EAAIJ,EAAMwhH,EAAK,EAAC,EAClBxhH,aAAiB0rH,EACrB1rH,EAAM,YACT2rH,EAAOvrH,CAAI,EAAIJ,EAAM,KAAI,GAG3B2rH,EAAOvrH,CAAI,EAAIJ,EAEnB,CACA,OAAO2rH,CACT,CACA,CAAC5G,EAAQ,GAAI,CACX,OAAO,IACT,CACA,CAACF,EAAO,GAAI,CACV,OAAO0B,GAAW,KACpB,CACA,EAAEjE,EAAqB,GAAI,CACzB,UAAW/1F,KAAQ,KAAK81F,EAAY,EAAC,EACnC,MAAM91F,CAEV,CACA,EAAEm+F,EAA0B,EAAErlE,EAAQg4D,EAAS,CAC7C,UAAW9wF,KAAQ,KAAK+1F,EAAqB,EAAC,EAC5C,GAAI,CAACj9D,GAAUg4D,IAAYh4D,EAAO,IAAI94B,EAAKo3F,EAAS,CAAC,EAAG,CACtD,MAAMiI,EAAiB,KAAK9J,EAAkB,EAAC,EACzCjpF,EAAMtM,EAAKs4F,EAAO,EAAE+G,CAAc,EACnC/yF,EAAI,UACP,KAAK4oF,CAAM,EAAE,YAAcl1F,GAE7B,MAAMsM,CACR,CAEJ,CACA,CAAC8oF,EAAU,GAAI,CACb,OAAO,IACT,CACA,CAACb,EAAQ,EAAE2F,EAAMtuF,EAAM,CACrB,KAAKspF,CAAM,EAAE,SAAS,KAAKgF,CAAI,CACjC,CACA,CAAC3E,EAAkB,GAAI,CAAC,CACxB,CAACd,EAAe,EAAE,CAChB,OAAA37D,EAAS,KACT,QAAAg4D,EAAU,EACd,EAAK,CACD,GAAI,CAAC,KAAKoE,CAAM,EAAE,UAChB,KAAKA,CAAM,EAAE,UAAY,KAAKiJ,EAA0B,EAAErlE,EAAQg4D,CAAO,MACpE,CACL,MAAMuO,EAAiB,KAAK9J,EAAkB,EAAC,EACzCjpF,EAAM,KAAK4oF,CAAM,EAAE,YAAYoD,EAAO,EAAE+G,CAAc,EAC5D,GAAI,CAAC/yF,EAAI,QACP,OAAOA,EAELA,EAAI,MACN,KAAKioF,EAAQ,EAAEjoF,EAAI,KAAMA,EAAI,IAAI,EAEnC,OAAO,KAAK4oF,CAAM,EAAE,WACtB,CACA,OAAa,CACX,MAAMh4G,EAAM,KAAKg4G,CAAM,EAAE,UAAU,KAAI,EACvC,GAAIh4G,EAAI,KACN,MAEF,MAAMovB,EAAMpvB,EAAI,MAChB,GAAI,CAACovB,EAAI,QACP,OAAOA,EAELA,EAAI,MACN,KAAKioF,EAAQ,EAAEjoF,EAAI,KAAMA,EAAI,IAAI,CAErC,CACA,YAAK4oF,CAAM,EAAE,UAAY,KAClB8E,GAAW,KACpB,CACA,CAAC/B,EAAiB,EAAE3W,EAAY,CAC9B,KAAKqd,EAAc,EAAI,IAAI,IAAI,OAAO,KAAKrd,CAAU,CAAC,CACxD,CACA,CAAC+c,EAAmB,EAAEiB,EAAiB,CACrC,MAAMC,EAAU,KAAKzB,EAAe,EAC9B0B,EAAU,KAAKb,EAAc,EACnC,OAAOW,EAAgB,KAAI,EAAG,OAAO7mH,GAAK8mH,EAAQ,IAAI9mH,CAAC,GAAK,CAAC+mH,EAAQ,IAAI/mH,CAAC,CAAC,EAAE,QAAO,CACtF,CACA,CAACq/G,EAAkB,EAAEnP,EAAK8W,EAAY,IAAI,IAAO,CAC/C,UAAWld,KAAS,KAAKwb,EAAS,EAChCxb,EAAMmc,EAAwB,EAAE/V,EAAK8W,CAAS,CAElD,CACA,CAACf,EAAwB,EAAE/V,EAAK8W,EAAW,CACzC,MAAMx6C,EAAQ,KAAKm5C,EAAa,EAAEzV,EAAK8W,CAAS,EAC5Cx6C,EACF,KAAK24C,EAAe,EAAE34C,EAAO0jC,EAAK8W,CAAS,EAE3C,KAAK3H,EAAkB,EAAEnP,EAAK8W,CAAS,CAE3C,CACA,CAACrB,EAAa,EAAEzV,EAAK8W,EAAW,CAC9B,KAAM,CACJ,IAAAC,EACA,QAAAC,CACN,EAAQ,KACJ,GAAI,CAACD,GAAO,CAACC,EACX,OAAO,KAET,IAAI16C,EAAQ,KACR26C,EAAgB,KAChBx1E,EAAK,KACLjtC,EAAMuiH,EAwBV,GAvBIC,GACFxiH,EAAMwiH,EACFA,EAAQ,WAAW,OAAO,GAAKA,EAAQ,SAAS,GAAG,EACrDC,EAAgBD,EAAQ,MAAM,EAAgB,EAAE,EACvCA,EAAQ,WAAW,QAAQ,GAAKA,EAAQ,SAAS,GAAG,EAC7DC,EAAgBD,EAAQ,MAAM,EAAiB,EAAE,EACxCA,EAAQ,WAAW,GAAG,EAC/Bv1E,EAAKu1E,EAAQ,MAAM,CAAC,EACXA,EAAQ,WAAW,IAAI,IAChCv1E,EAAKu1E,EAAQ,MAAM,CAAC,IAEbD,EAAI,WAAW,GAAG,EAC3Bt1E,EAAKs1E,EAAI,MAAM,CAAC,EAEhBE,EAAgBF,EAElB,KAAK,IAAM,KAAK,QAAU,GACtBt1E,EACF66B,EAAQ0jC,EAAI,IAAIv+D,CAAE,GAElB66B,EAAQo4C,GAAW1U,EAAI,IAAIkP,EAAK,EAAG,KAAM+H,EAAe,GAAM,EAAK,EACnE36C,IAAUA,EAAM,CAAC,GAEf,CAACA,EACH,OAAAxyE,EAAK,sCAAsC0K,CAAG,GAAG,EAC1C,KAET,GAAI8nE,EAAMmyC,EAAS,IAAM,KAAKA,EAAS,EACrC,OAAA3kH,EAAK,iCAAiCwyE,EAAMmyC,EAAS,CAAC,QAAQ,KAAKA,EAAS,CAAC,GAAG,EACzE,KAET,GAAIqI,EAAU,IAAIx6C,CAAK,EACrB,OAAAxyE,EAAK,yCAAyC,EACvC,KAETgtH,EAAU,IAAIx6C,CAAK,EACnB,MAAM46C,EAAa56C,EAAMm5C,EAAa,EAAEzV,EAAK8W,CAAS,EACtD,OAAII,GACF56C,EAAM24C,EAAe,EAAEiC,EAAYlX,EAAK8W,CAAS,EAEnDx6C,EAAM6yC,EAAkB,EAAEnP,EAAK8W,CAAS,EACxCA,EAAU,OAAOx6C,CAAK,EACfA,CACT,CACA,CAAC24C,EAAe,EAAE34C,EAAO0jC,EAAK8W,EAAW,CACvC,GAAIA,EAAU,IAAIx6C,CAAK,EAAG,CACxBxyE,EAAK,yCAAyC,EAC9C,MACF,CACI,CAAC,KAAKsiH,EAAQ,GAAK9vC,EAAM8vC,EAAQ,IACnC,KAAKA,EAAQ,EAAI9vC,EAAM8vC,EAAQ,GAEZ,IAAI,IAAI0K,CAAS,EACzB,IAAIx6C,CAAK,EACtB,UAAW66C,KAAiB,KAAKzB,EAAmB,EAAEp5C,EAAM05C,EAAc,CAAC,EACzE,KAAKmB,CAAa,EAAI76C,EAAM66C,CAAa,EACrC,KAAKnB,EAAc,GACrB,KAAKA,EAAc,EAAE,IAAImB,CAAa,EAG1C,UAAWjsH,KAAQ,OAAO,oBAAoB,IAAI,EAAG,CACnD,GAAI,KAAKiqH,EAAe,EAAE,IAAIjqH,CAAI,EAChC,SAEF,MAAMJ,EAAQ,KAAKI,CAAI,EACjBksH,EAAa96C,EAAMpxE,CAAI,EAC7B,GAAIJ,aAAiB0rH,EAAgB,CACnC,UAAW5c,KAAS9uG,EAAMsqH,EAAS,EACjCxb,EAAMmc,EAAwB,EAAE/V,EAAK8W,CAAS,EAEhD,QAAS5qH,EAAIpB,EAAMsqH,EAAS,EAAE,OAAQ/jH,EAAK+lH,EAAWhC,EAAS,EAAE,OAAQlpH,EAAImF,EAAInF,IAAK,CACpF,MAAM0tG,EAAQt9B,EAAM84C,EAAS,EAAElpH,CAAC,EAAEggH,EAAM,EAAC,EACzC,GAAIphH,EAAM,KAAK8uG,CAAK,EAClBA,EAAMkc,EAAO,EAAI,KACjB,KAAKV,EAAS,EAAE,KAAKxb,CAAK,EAC1BA,EAAMmc,EAAwB,EAAE/V,EAAK8W,CAAS,MAE9C,MAEJ,CACA,QACF,CACA,GAAIhsH,IAAU,KAAM,CAClBA,EAAMqkH,EAAkB,EAAEnP,EAAK8W,CAAS,EACpCM,GACFtsH,EAAMmqH,EAAe,EAAEmC,EAAYpX,EAAK8W,CAAS,EAEnD,QACF,CACA,GAAIM,IAAe,KAAM,CACvB,MAAMxd,EAAQwd,EAAWlL,EAAM,EAAC,EAChCtS,EAAMkc,EAAO,EAAI,KACjB,KAAK5qH,CAAI,EAAI0uG,EACb,KAAKwb,EAAS,EAAE,KAAKxb,CAAK,EAC1BA,EAAMmc,EAAwB,EAAE/V,EAAK8W,CAAS,CAChD,CACF,CACF,CACA,OAAQzB,EAAe,EAAEzqH,EAAK,CAC5B,OAAI,MAAM,QAAQA,CAAG,EACZA,EAAI,IAAIkF,GAAKsmH,EAAUf,EAAe,EAAEvlH,CAAC,CAAC,EAE/C,OAAOlF,GAAQ,UAAYA,IAAQ,KAC9B,OAAO,OAAO,CAAA,EAAIA,CAAG,EAEvBA,CACT,CACA,CAACshH,EAAM,GAAI,CACT,MAAMtX,EAAQ,OAAO,OAAO,OAAO,eAAe,IAAI,CAAC,EACvD,UAAWyiB,KAAW,OAAO,sBAAsB,IAAI,EACrD,GAAI,CACFziB,EAAMyiB,CAAO,EAAI,KAAKA,CAAO,CAC/B,MAAQ,CACN1sH,GAAOiqG,EAAOyiB,EAAS,KAAKA,CAAO,CAAC,CACtC,CAEFziB,EAAMkb,EAAI,EAAI,GAAGlb,EAAM6Z,EAAS,CAAC,GAAGyH,IAAK,GACzCthB,EAAMwgB,EAAS,EAAI,CAAA,EACnB,UAAWlqH,KAAQ,OAAO,oBAAoB,IAAI,EAAG,CACnD,GAAI,KAAKiqH,EAAe,EAAE,IAAIjqH,CAAI,EAAG,CACnC0pG,EAAM1pG,CAAI,EAAIkrH,EAAUf,EAAe,EAAE,KAAKnqH,CAAI,CAAC,EACnD,QACF,CACA,MAAMJ,EAAQ,KAAKI,CAAI,EACvB0pG,EAAM1pG,CAAI,EAAIJ,aAAiB0rH,EAAiB,IAAIA,EAAe1rH,EAAM8qH,EAAI,CAAC,EAAI,IACpF,CACA,UAAWhc,KAAS,KAAKwb,EAAS,EAAG,CACnC,MAAMlqH,EAAO0uG,EAAM6U,EAAS,EACtB6I,EAAc1d,EAAMsS,EAAM,EAAC,EACjCtX,EAAMwgB,EAAS,EAAE,KAAKkC,CAAW,EACjCA,EAAYxB,EAAO,EAAIlhB,EACnBA,EAAM1pG,CAAI,IAAM,KAClB0pG,EAAM1pG,CAAI,EAAIosH,EAEd1iB,EAAM1pG,CAAI,EAAEkqH,EAAS,EAAE,KAAKkC,CAAW,CAE3C,CACA,OAAO1iB,CACT,CACA,CAACuY,EAAY,EAAEjiH,EAAO,KAAM,CAC1B,OAAQA,EAAyB,KAAKkqH,EAAS,EAAE,OAAO/lH,GAAKA,EAAEo/G,EAAS,IAAMvjH,CAAI,EAAnE,KAAKkqH,EAAS,CAC/B,CACA,CAACvI,EAAmB,EAAE3hH,EAAM,CAC1B,OAAO,KAAKA,CAAI,CAClB,CACA,CAAC4hH,EAAkB,EAAE5hH,EAAMqsH,EAAgBjoH,EAAQ,GAAM,CACvD,OAAO,MAAM,KAAK,KAAKy9G,EAAoB,EAAE7hH,EAAMqsH,EAAgBjoH,CAAK,CAAC,CAC3E,CACA,EAAEy9G,EAAoB,EAAE7hH,EAAMqsH,EAAgBjoH,EAAQ,GAAM,CAC1D,GAAIpE,IAAS,SAAU,CACrB,MAAM,KAAK4qH,EAAO,EAClB,MACF,CACA,UAAWlc,KAAS,KAAKwb,EAAS,EAC5Bxb,EAAM6U,EAAS,IAAMvjH,IACvB,MAAM0uG,GAEJA,EAAM,OAAS1uG,IACjB,MAAM0uG,IAEJ2d,GAAkB3d,EAAMyU,EAAc,OACxC,MAAOzU,EAAMmT,EAAoB,EAAE7hH,EAAMqsH,EAAgB,EAAK,GAG9DjoH,GAAS,KAAK6lH,EAAe,EAAE,IAAIjqH,CAAI,IACzC,MAAM,IAAIssH,GAAa,KAAMtsH,EAAM,KAAKA,CAAI,CAAC,EAEjD,CACF,CACA,MAAMsrH,CAAe,CACnB,YAAYt1G,EAAM,IAAU,CAC1B,KAAK00G,EAAI,EAAI10G,EACb,KAAKk0G,EAAS,EAAI,CAAA,CACpB,CACA,IAAI,aAAc,CAChB,MAAO,EACT,CACA,IAAI,kBAAmB,CACrB,MAAO,EACT,CACA,KAAKxb,EAAO,CAEV,OADY,KAAKwb,EAAS,EAAE,QACjB,KAAKQ,EAAI,GAClB,KAAKR,EAAS,EAAE,KAAKxb,CAAK,EACnB,KAET9vG,EAAK,eAAe8vG,EAAM6U,EAAS,CAAC,0BAA0B,KAAKmH,EAAI,CAAC,WAAW,EAC5E,GACT,CACA,SAAU,CACR,OAAO,KAAKR,EAAS,EAAE,SAAW,CACpC,CACA,MAAO,CACL,OAAO,KAAKA,EAAS,EAAE,SAAW,EAAI,KAAKA,EAAS,EAAE,CAAC,EAAE9I,EAAK,IAAM,KAAK8I,EAAS,EAAE,IAAItlH,GAAKA,EAAEw8G,EAAK,GAAG,CACzG,CACA,CAACJ,EAAM,GAAI,CACT,MAAMtX,EAAQ,IAAI4hB,EAAe,KAAKZ,EAAI,CAAC,EAC3C,OAAAhhB,EAAMwgB,EAAS,EAAI,KAAKA,EAAS,EAAE,IAAI/lH,GAAKA,EAAE68G,EAAM,GAAG,EAChDtX,CACT,CACA,IAAI,UAAW,CACb,OAAO,KAAKwgB,EAAS,CACvB,CACA,OAAQ,CACN,KAAKA,EAAS,EAAE,OAAS,CAC3B,CACF,CACA,MAAMoC,EAAa,CACjB,YAAYngG,EAAMnsB,EAAMJ,EAAO,CAC7B,KAAKgrH,EAAO,EAAIz+F,EAChB,KAAKo3F,EAAS,EAAIvjH,EAClB,KAAKkhH,EAAQ,EAAIthH,EACjB,KAAKqhH,EAAS,EAAI,GAClB,KAAK2D,EAAI,EAAI,YAAYoG,IAAK,EAChC,CACA,CAAC3I,EAAU,GAAI,CACb,OAAO,KAAKuI,EAAO,CACrB,CACA,CAAC9H,EAAY,GAAI,CACf,MAAO,EACT,CACA,CAAChB,EAAa,GAAI,CAChB,OAAO,KAAKZ,EAAQ,EAAE,KAAI,CAC5B,CACA,CAACmD,EAAS,EAAEzkH,EAAO,CACjBA,EAAQA,EAAM,OAAS,GACvB,KAAKshH,EAAQ,EAAIthH,EAAM,SAAQ,CACjC,CACA,CAAC2kH,EAAK,GAAI,CACR,OAAO,KAAKrD,EAAQ,CACtB,CACA,CAAC6B,EAAa,EAAEt5G,EAAQ,CACtB,OAAO,KAAKmhH,EAAO,IAAMnhH,GAAU,KAAKmhH,EAAO,EAAE7H,EAAa,EAAEt5G,CAAM,CACxE,CACF,CACA,MAAM4hH,WAAkBH,CAAU,CAChC,YAAYC,EAAMnrH,EAAMytG,EAAa,CAAA,EAAI,CAIvC,GAHA,MAAM0d,EAAMnrH,CAAI,EAChB,KAAKkhH,EAAQ,EAAI,GACjB,KAAKkJ,EAAU,EAAI,KACfpqH,IAAS,QAAS,CACpB,MAAM8J,EAAM,IAAI,IAChB,KAAKkgH,EAAW,EAAIlgH,EACpB,SAAW,CAAC6jG,EAAU/tG,CAAK,IAAK,OAAO,QAAQ6tG,CAAU,EACvD3jG,EAAI,IAAI6jG,EAAU,IAAI2e,GAAa,KAAM3e,EAAU/tG,CAAK,CAAC,EAE3D,GAAI,OAAO,OAAO6tG,EAAY+V,EAAa,EAAG,CAC5C,MAAM+I,EAAW9e,EAAW+V,EAAa,EAAE,IAAI,SAC3C+I,IAAa,SACXA,IAAa,YACf,KAAKnC,EAAU,EAAI,GACVmC,IAAa,cACtB,KAAKnC,EAAU,EAAI,IAGzB,CACF,CACA,KAAKnJ,EAAS,EAAI,EACpB,CACA,CAACyD,EAAS,EAAEh5G,EAAK,CACf,MAAM8gH,EAAU,KAAKjJ,EAAS,EAC9B,GAAIiJ,IAAY,QAAS,CACvB9gH,EAAI,KAAK+E,GAAkB,KAAKywG,EAAQ,CAAC,CAAC,EAC1C,MACF,CACA,MAAMuL,EAAc1mH,GAAmBymH,CAAO,EACxCl+E,EAAS,KAAKg1E,EAAY,IAAM2H,GAAc,OAAS,GAC7Dv/G,EAAI,KAAK,IAAI4iC,CAAM,GAAGm+E,CAAW,EAAE,EACnC,SAAW,CAACzsH,EAAMJ,CAAK,IAAK,KAAKoqH,EAAW,EAAG,CAC7C,MAAM0C,EAAW3mH,GAAmB/F,CAAI,EACxC0L,EAAI,KAAK,IAAIghH,CAAQ,KAAKj8G,GAAkB7Q,EAAMshH,EAAQ,CAAC,CAAC,GAAG,CACjE,CAQA,GAPI,KAAKkJ,EAAU,IAAM,OACnB,KAAKA,EAAU,EACjB1+G,EAAI,KAAK,2BAA2B,EAEpCA,EAAI,KAAK,2BAA2B,GAGpC,CAAC,KAAKw1G,EAAQ,GAAK,KAAKgJ,EAAS,EAAE,SAAW,EAAG,CACnDx+G,EAAI,KAAK,IAAI,EACb,MACF,CAEA,GADAA,EAAI,KAAK,GAAG,EACR,KAAKw1G,EAAQ,EACX,OAAO,KAAKA,EAAQ,GAAM,SAC5Bx1G,EAAI,KAAK+E,GAAkB,KAAKywG,EAAQ,CAAC,CAAC,EAE1C,KAAKA,EAAQ,EAAEwD,EAAS,EAAEh5G,CAAG,MAG/B,WAAWgjG,KAAS,KAAKwb,EAAS,EAChCxb,EAAMgW,EAAS,EAAEh5G,CAAG,EAGxBA,EAAI,KAAK,KAAK4iC,CAAM,GAAGm+E,CAAW,GAAG,CACvC,CACA,CAAChJ,EAAQ,EAAE/U,EAAO,CAChB,GAAI,KAAKwS,EAAQ,EAAG,CAClB,MAAM/0F,EAAO,IAAIk/F,GAAU,KAAK/H,EAAY,EAAG,OAAO,EACtD,KAAK3C,EAAY,EAAEx0F,CAAI,EACvBA,EAAK+0F,EAAQ,EAAI,KAAKA,EAAQ,EAC9B,KAAKA,EAAQ,EAAI,EACnB,CACA,YAAKP,EAAY,EAAEjS,CAAK,EACjB,EACT,CACA,CAACiV,EAAO,EAAEnkH,EAAK,CACb,KAAK0hH,EAAQ,GAAK1hH,CACpB,CACA,CAAC8hH,EAAS,GAAI,CACZ,GAAI,KAAKJ,EAAQ,GAAK,KAAKgJ,EAAS,EAAE,OAAS,EAAG,CAChD,MAAM/9F,EAAO,IAAIk/F,GAAU,KAAK/H,EAAY,EAAG,OAAO,EACtD,KAAK3C,EAAY,EAAEx0F,CAAI,EACvBA,EAAK+0F,EAAQ,EAAI,KAAKA,EAAQ,EAC9B,OAAO,KAAKA,EAAQ,CACtB,CACF,CACA,CAACuD,EAAO,GAAI,CACV,OAAI,KAAKlB,EAAS,IAAM,QACf4C,GAAW,QAAQ,CACxB,KAAM,QACN,MAAO,KAAKjF,EAAQ,CAC5B,CAAO,EAEIiF,GAAW,KACpB,CACA,CAAC1E,EAAc,GAAI,CACjB,OAAO,KAAKuI,EAAW,CACzB,CACA,CAACrI,EAAmB,EAAE3hH,EAAM,CAC1B,MAAMJ,EAAQ,KAAKoqH,EAAW,EAAE,IAAIhqH,CAAI,EACxC,OAAIJ,IAAU,OACLA,EAEF,KAAKqiH,EAAY,EAAEjiH,CAAI,CAChC,CACA,EAAE6hH,EAAoB,EAAE7hH,EAAMqsH,EAAgB,CAC5C,MAAMzsH,EAAQ,KAAKoqH,EAAW,EAAE,IAAIhqH,CAAI,EACpCJ,IACF,MAAMA,GAER,UAAW8uG,KAAS,KAAKwb,EAAS,EAC5Bxb,EAAM6U,EAAS,IAAMvjH,IACvB,MAAM0uG,GAEJ2d,IACF,MAAO3d,EAAMmT,EAAoB,EAAE7hH,EAAMqsH,CAAc,EAG7D,CACA,EAAE7K,EAAe,EAAExhH,EAAM2sH,EAAc,CACrC,MAAM/sH,EAAQ,KAAKoqH,EAAW,EAAE,IAAIhqH,CAAI,EACpCJ,IAAU,CAAC+sH,GAAgB,CAAC/sH,EAAMqhH,EAAS,KAC7C,MAAMrhH,GAER,UAAW8uG,KAAS,KAAKwb,EAAS,EAChC,MAAOxb,EAAM8S,EAAe,EAAExhH,EAAM2sH,CAAY,CAEpD,CACA,EAAE3K,EAAwB,EAAEhiH,EAAMqsH,EAAgBM,EAAc,CAC9D,UAAWje,KAAS,KAAKwb,EAAS,EAC5Bxb,EAAM6U,EAAS,IAAMvjH,IAAS,CAAC2sH,GAAgB,CAACje,EAAMuS,EAAS,KACjE,MAAMvS,GAEJ2d,IACF,MAAO3d,EAAMsT,EAAwB,EAAEhiH,EAAMqsH,EAAgBM,CAAY,EAG/E,CACA,CAAC7J,EAAY,GAAI,CACf,OAAI,KAAKsH,EAAU,IAAM,KAChB,KAAKF,EAAS,EAAE,SAAW,GAAK,KAAKA,EAAS,EAAE,CAAC,EAAE5G,EAAY,IAAMwB,GAAa,MAAM,GAE1F,KAAKsF,EAAU,CACxB,CACA,CAACtI,EAAa,GAAI,CAChB,OAAI,KAAKsI,EAAU,IAAM,KACnB,KAAKF,EAAS,EAAE,SAAW,EACtB,KAAKhJ,EAAQ,EAAE,KAAI,EAExB,KAAKgJ,EAAS,EAAE,CAAC,EAAE5G,EAAY,IAAMwB,GAAa,MAAM,GACnD,KAAKoF,EAAS,EAAE,CAAC,EAAE3F,EAAK,EAAC,EAAG,KAAI,EAElC,KAEF,KAAKrD,EAAQ,EAAE,KAAI,CAC5B,CACA,CAACmD,EAAS,EAAEzkH,EAAO,CACjBA,EAAQA,EAAM,OAAS,GACvB,KAAKshH,EAAQ,EAAIthH,EAAM,SAAQ,CACjC,CACA,CAACwhH,EAAK,EAAEwL,EAAQ,GAAO,CACrB,MAAMrB,EAAS,OAAO,OAAO,IAAI,EAC7BqB,IACFrB,EAAO,IAAM,KAAKjI,EAAY,GAE5B,KAAKpC,EAAQ,IACfqK,EAAO,SAAW,KAAKrK,EAAQ,GAEjCqK,EAAO,MAAQ,KAAKhI,EAAS,EAC7BgI,EAAO,SAAW,CAAA,EAClB,UAAW7c,KAAS,KAAKwb,EAAS,EAChCqB,EAAO,SAAS,KAAK7c,EAAM0S,EAAK,EAAEwL,CAAK,CAAC,EAE1CrB,EAAO,WAAa,OAAO,OAAO,IAAI,EACtC,SAAW,CAACvrH,EAAMJ,CAAK,IAAK,KAAKoqH,EAAW,EAC1CuB,EAAO,WAAWvrH,CAAI,EAAIJ,EAAMshH,EAAQ,EAE1C,OAAOqK,CACT,CACF,CACA,MAAMsB,WAAsB3B,CAAU,CACpC,YAAYC,EAAMnrH,EAAM,CACtB,MAAMmrH,EAAMnrH,CAAI,EAChB,KAAKkhH,EAAQ,EAAI,EACnB,CACA,CAACyC,EAAO,EAAE/5C,EAAM,CACd,KAAKs3C,EAAQ,GAAKt3C,CACpB,CACA,CAAC03C,EAAS,GAAI,CAAC,CACjB,CACA,MAAMwL,WAAqBD,EAAc,CACvC,YAAY1B,EAAMnrH,EAAMZ,EAAS,CAC/B,MAAM+rH,EAAMnrH,CAAI,EAChB,KAAK2qH,EAAQ,EAAIvrH,CACnB,CACA,CAACkiH,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAIqE,GAAW,CAC1B,KAAM,KAAKrE,EAAQ,EACnB,aAAc,KAAKyJ,EAAQ,EAAE,CAAC,EAC9B,SAAU1wG,GAAK,KAAK0wG,EAAQ,EAAE,SAAS1wG,CAAC,CAC9C,CAAK,CACH,CACA,CAAC4mG,EAAM,EAAEvkC,EAAS,CAChB,MAAMukC,EAAM,EAAEvkC,CAAO,EACrB,OAAO,KAAKquC,EAAQ,CACtB,CACF,CACA,MAAMoC,WAAqBF,EAAc,CACvC,CAACvL,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAI,KAAKA,EAAQ,EAAE,KAAI,CACtC,CACF,CACA,MAAM8L,WAAsBH,EAAc,CACxC,YAAY1B,EAAMnrH,EAAMolH,EAAc6H,EAAW,CAC/C,MAAM9B,EAAMnrH,CAAI,EAChB,KAAKqqH,EAAa,EAAIjF,EACtB,KAAK2F,EAAU,EAAIkC,CACrB,CACA,CAAC3L,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAIiE,GAAW,CAC1B,KAAM,KAAKjE,EAAQ,EACnB,aAAc,KAAKmJ,EAAa,EAChC,SAAU,KAAKU,EAAU,CAC/B,CAAK,CACH,CACA,CAAClK,EAAM,EAAEvkC,EAAS,CAChB,MAAMukC,EAAM,EAAEvkC,CAAO,EACrB,OAAO,KAAK+tC,EAAa,EACzB,OAAO,KAAKU,EAAU,CACxB,CACF,CACA,MAAMmC,WAAiBF,EAAc,CACnC,YAAY7B,EAAMnrH,EAAM,CACtB,MAAMmrH,EAAMnrH,EAAM,EAAG8K,GAAKA,IAAM,CAAC,CACnC,CACF,CACA,MAAMqiH,WAAiBH,EAAc,CACnC,YAAY7B,EAAMnrH,EAAM,CACtB,MAAMmrH,EAAMnrH,EAAM,EAAG8K,GAAKA,IAAM,CAAC,CACnC,CACF,CAUA,SAASsiH,GAAgBnrH,EAAG,CAC1B,OAAI,OAAOA,GAAM,SACR,MAEF,OAAO,UAAUA,CAAC,EAAI,GAAGA,CAAC,KAAO,GAAGA,EAAE,QAAQ,CAAC,CAAC,IACzD,CACA,MAAMorH,GAAa,CACjB,WAAWlhG,EAAM6lE,EAAO,CACtB,MAAMvoF,EAAS0iB,EAAKi2F,EAAiB,EAAC,EACtC,GAAI,GAAC34G,GAAUA,EAAO,QAAUA,EAAO,SAAW,YAMlD,OAHM,cAAeuoF,IACnBA,EAAM,UAAY,IAEZ7lE,EAAK,WAAU,CACrB,IAAK,eACH6lE,EAAM,WAAa,yBACnB,MACF,IAAK,aACHA,EAAM,WAAa,qBACnB,MACF,IAAK,cACHA,EAAM,WAAa,yBACnB,MACF,IAAK,eACHA,EAAM,WAAa,uBACnB,MACF,IAAK,aACHA,EAAM,WAAa,oBACnB,MACF,IAAK,cACHA,EAAM,WAAa,wBACnB,MACF,IAAK,YACHA,EAAM,WAAa,oBACnB,MACF,IAAK,WACHA,EAAM,WAAa,qBACnB,KACR,CACE,EACA,WAAW7lE,EAAM6lE,EAAO,CACtB,MAAMvoF,EAAS0iB,EAAKi2F,EAAiB,EAAC,EACtC,IAAI33G,EAAQ0hB,EAAK,EACjB,MAAMzhB,EAASyhB,EAAK,EACpB,GAAI1iB,EAAO,QAAQ,SAAS,KAAK,EAAG,CAClC,MAAMipF,EAAQjpF,EAAO43G,CAAM,EACrBiM,EAAUnhG,EAAK,QACrB,IAAI+0D,EACAosC,IAAY,IACdpsC,EAAI,KAAK,WAAWwR,EAAM,aAAa,MAAMA,EAAM,aAAa,CAAC,EACjEA,EAAM,cAAgB,IAEtBxR,EAAI,KAAK,WAAWwR,EAAM,aAAa,MAAMA,EAAM,cAAeA,EAAM,cAAgB46B,CAAO,CAAC,EAChG56B,EAAM,eAAiBA,EAAM,cAAgBvmE,EAAK,SAAWumE,EAAM,aAAa,QAE7E,MAAMxR,CAAC,IACVz2E,EAAQ0hB,EAAK,EAAI+0D,EAErB,CACA8Q,EAAM,MAAQvnF,IAAU,GAAK2iH,GAAgB3iH,CAAK,EAAI,OACtDunF,EAAM,OAAStnF,IAAW,GAAK0iH,GAAgB1iH,CAAM,EAAI,MAC3D,EACA,SAASyhB,EAAM6lE,EAAO,CACpB,MAAMvoF,EAAS0iB,EAAKi2F,EAAiB,EAAC,EAClC34G,GAAQ,QAAUA,EAAO,SAAW,aAGxCuoF,EAAM,SAAW,WACjBA,EAAM,KAAOo7B,GAAgBjhG,EAAK,CAAC,EACnC6lE,EAAM,IAAMo7B,GAAgBjhG,EAAK,CAAC,EACpC,EACA,OAAOA,EAAM6lE,EAAO,CACd7lE,EAAK,SACD,cAAe6lE,IACnBA,EAAM,UAAY,IAEpBA,EAAM,WAAa,WAAW7lE,EAAK,MAAM,OACzC6lE,EAAM,gBAAkB,WAE5B,EACA,SAAS7lE,EAAM6lE,EAAO,CACpB,OAAQ7lE,EAAK,SAAQ,CACnB,IAAK,YACH6lE,EAAM,WAAa,SACnB,MACF,IAAK,SACL,IAAK,WACHA,EAAM,QAAU,OAChB,KACR,CACE,EACA,OAAO7lE,EAAM6lE,EAAO,CAClB,GAAI7lE,EAAKo3F,EAAS,IAAM,OACtB,OAAQp3F,EAAK,OAAM,CACjB,IAAK,aACH6lE,EAAM,UAAY,cAClB,MACF,IAAK,QACHA,EAAM,UAAY,OAClB,MACF,QACEA,EAAM,UAAY7lE,EAAK,MACjC,KAEM,QAAQA,EAAK,OAAM,CACjB,IAAK,OACH6lE,EAAM,UAAY,QAClB,MACF,IAAK,SACHA,EAAM,UAAY,SAClB,MACF,IAAK,QACHA,EAAM,UAAY,MAClB,KACV,CAEE,EACA,OAAO7lE,EAAM6lE,EAAO,CACd7lE,EAAK,SACP6lE,EAAM,OAAS7lE,EAAK,OAAOw4F,EAAQ,EAAC,EAAG,OAE3C,CACF,EACA,SAAS4I,GAAoBphG,EAAM6lE,EAAO,CACzB7lE,EAAKi2F,EAAiB,EAAC,EAC3B,SAAW,aAChBj2F,EAAK,KAAO,IACd6lE,EAAM,SAAWo7B,GAAgBjhG,EAAK,IAAI,GAExCA,EAAK,KAAO,IACd6lE,EAAM,SAAWo7B,GAAgBjhG,EAAK,IAAI,GAExCA,EAAK,KAAO,IACd6lE,EAAM,UAAYo7B,GAAgBjhG,EAAK,IAAI,GAEzCA,EAAK,KAAO,IACd6lE,EAAM,UAAYo7B,GAAgBjhG,EAAK,IAAI,GAGjD,CACA,SAASqhG,GAAW5jD,EAAMm9C,EAASO,EAAQrc,EAAYsc,EAAY98G,EAAO,CACxE,MAAMgjH,EAAU,IAAI3F,GAAYf,EAASO,EAAQrc,EAAYsc,CAAU,EACvE,OAAI,OAAO39C,GAAS,SAClB6jD,EAAQ,UAAU7jD,CAAI,EAEtBA,EAAKg6C,EAAW,EAAE6J,CAAO,EAEpBA,EAAQ,QAAQhjH,CAAK,CAC9B,CACA,SAASijH,GAAWvhG,EAAMq/F,EAAgB,CACxC,IAAI9gH,EAAS,KACTD,EAAQ,KACRi+G,EAAW,GACf,IAAK,CAACv8F,EAAK,GAAK,CAACA,EAAK,IAAMA,EAAK,MAAO,CACtC,IAAIwhG,EAAU,EACVC,EAAU,EACVzhG,EAAK,SACPwhG,EAAUxhG,EAAK,OAAO,UAAYA,EAAK,OAAO,WAC9CyhG,EAAUzhG,EAAK,OAAO,SAAWA,EAAK,OAAO,aAE/C,IAAI8+E,EAAa,KACbqc,EAAS,KACTn7F,EAAK,OACPm7F,EAAS,OAAO,OAAO,IAAI,EAC3Brc,EAAa9+E,EAAK,KAAK,aAAe,GAAK,KAAOA,EAAK,KAAK,WAC5Dm7F,EAAO,IAAMn7F,EAAK,KAAK,aAAe,GAAK,EAAIA,EAAK,KAAK,WACzDm7F,EAAO,OAASn7F,EAAK,KAAK,aAAe,GAAK,EAAIA,EAAK,KAAK,WAC5Dm7F,EAAO,KAAOn7F,EAAK,KAAK,aAAe,GAAK,EAAIA,EAAK,KAAK,WAC1Dm7F,EAAO,MAAQn7F,EAAK,KAAK,cAAgB,GAAK,EAAIA,EAAK,KAAK,aAE9D,IAAIozC,EAAOpzC,EAAK,KAChB,GAAI,CAACozC,EAAM,CACT,MAAM2sC,EAAO//E,EAAKm2F,EAAgB,EAAC,EACnC,IAAI74G,EAAS0iB,EAAKk2F,EAAU,EAAC,EAC7B,KAAO54G,GAAUA,IAAWyiG,GAAM,CAChC,GAAIziG,EAAO,KAAM,CACf81D,EAAO91D,EAAO,KACd,KACF,CACAA,EAASA,EAAO44G,EAAU,EAAC,CAC7B,CACF,CACA,MAAM/W,GAAYn/E,EAAK,GAAKq/F,EAAe,OAASmC,EAC9CpG,EAAap7F,EAAKo2F,EAAW,EAAE,WACrC,GAAIp2F,EAAK,MAAM,QAAUA,EAAK,MAAM,OAAO+0F,EAAQ,GAAK/0F,EAAK,MAAM,OAAO,cAAgB,YAAa,CACrG,MAAMsM,EAAM+0F,GAAWrhG,EAAK,MAAM,OAAO+0F,EAAQ,EAAG3hD,EAAM+nD,EAAQrc,EAAYsc,EAAYjc,CAAQ,EAClG7gG,EAAQguB,EAAI,MACZ/tB,EAAS+tB,EAAI,OACbiwF,EAAWjwF,EAAI,QACjB,KAAO,CACL,MAAMmxC,EAAOz9C,EAAK,MAAMo4F,EAAK,EAAC,EAC9B,GAAI36C,EAAM,CACR,MAAMnxC,EAAM+0F,GAAW5jD,EAAMrK,EAAM+nD,EAAQrc,EAAYsc,EAAYjc,CAAQ,EAC3E7gG,EAAQguB,EAAI,MACZ/tB,EAAS+tB,EAAI,OACbiwF,EAAWjwF,EAAI,QACjB,CACF,CACIhuB,IAAU,MAAQ,CAAC0hB,EAAK,IAC1B1hB,GAASkjH,GAEPjjH,IAAW,MAAQ,CAACyhB,EAAK,IAC3BzhB,GAAUkjH,EAEd,CACA,MAAO,CACL,EAAGnjH,EACH,EAAGC,EACH,SAAAg+G,CACJ,CACA,CACA,SAASmF,GAAY1hG,EAAMk6F,EAAMmF,EAAgB,CAC/C,IAAIzzF,EACJ,GAAI5L,EAAK,IAAM,IAAMA,EAAK,IAAM,GAC9B4L,EAAO,CAAC5L,EAAK,EAAGA,EAAK,EAAGA,EAAK,EAAGA,EAAK,CAAC,MACjC,CACL,GAAI,CAACq/F,EACH,OAAO,KAET,IAAI/gH,EAAQ0hB,EAAK,EACjB,GAAI1hB,IAAU,GAAI,CAChB,GAAI0hB,EAAK,OAAS,EAAG,CACnB,MAAM1iB,EAAS0iB,EAAKi2F,EAAiB,EAAC,EACtC33G,EAAQhB,EAAO,SAAW,YAAcA,EAAO,IAAM,GAAK,EAAI0iB,EAAK,IACrE,MACE1hB,EAAQ,KAAK,IAAI0hB,EAAK,KAAMq/F,EAAe,KAAK,EAElDnF,EAAK,WAAW,MAAM,MAAQ+G,GAAgB3iH,CAAK,CACrD,CACA,IAAIC,EAASyhB,EAAK,EAClB,GAAIzhB,IAAW,GAAI,CACjB,GAAIyhB,EAAK,OAAS,EAAG,CACnB,MAAM1iB,EAAS0iB,EAAKi2F,EAAiB,EAAC,EACtC13G,EAASjB,EAAO,SAAW,YAAcA,EAAO,IAAM,GAAK,EAAI0iB,EAAK,IACtE,MACEzhB,EAAS,KAAK,IAAIyhB,EAAK,KAAMq/F,EAAe,MAAM,EAEpDnF,EAAK,WAAW,MAAM,OAAS+G,GAAgB1iH,CAAM,CACvD,CACAqtB,EAAO,CAAC5L,EAAK,EAAGA,EAAK,EAAG1hB,EAAOC,CAAM,CACvC,CACA,OAAOqtB,CACT,CACA,SAAS+1F,GAAc3hG,EAAM,CAC3B,MAAM1iB,EAAS0iB,EAAKi2F,EAAiB,EAAC,EACtC,GAAI34G,EAAO,QAAQ,SAAS,KAAK,EAAG,CAClC,MAAMipF,EAAQjpF,EAAO43G,CAAM,EACrBiM,EAAUnhG,EAAK,QACrB,IAAI1hB,EACA6iH,IAAY,GACd7iH,EAAQ,KAAK,WAAWioF,EAAM,aAAa,MAAMA,EAAM,aAAa,CAAC,EAErEjoF,EAAQ,KAAK,WAAWioF,EAAM,aAAa,MAAMA,EAAM,cAAeA,EAAM,cAAgB46B,CAAO,CAAC,EAEjG,MAAM7iH,CAAK,IACd0hB,EAAK,EAAI1hB,EAEb,CACIhB,EAAO,QAAUA,EAAO,SAAW,aACrC0iB,EAAK,EAAIA,EAAK,EAAI,GAEhBA,EAAK,SAAW,SACdA,EAAK,IAAM,IAAM,MAAM,QAAQA,EAAK,YAAY,IAClDA,EAAK,EAAI,KAAK,WAAWA,EAAK,YAAY,EAGhD,CACA,SAAS4hG,GAAY5hG,EAAM,CACzB,OAAQA,EAAK,OAAM,CACjB,IAAK,WACH,MAAO,cACT,IAAK,QACH,MAAO,UACT,IAAK,SACH,MAAO,WACT,IAAK,QACH,MAAO,UACT,IAAK,MACH,MAAO,SACT,IAAK,QACH,MAAO,WACT,IAAK,KACH,MAAO,QACT,QACE,MAAO,aACb,CACA,CACA,SAAS6hG,GAAQ7hG,KAASwlC,EAAO,CAC/B,MAAMqgC,EAAQ,OAAO,OAAO,IAAI,EAChC,UAAWhyF,KAAQ2xD,EAAO,CACxB,MAAM/xD,EAAQusB,EAAKnsB,CAAI,EACvB,GAAIJ,IAAU,KAGd,IAAI,OAAO,OAAOytH,GAAYrtH,CAAI,EAAG,CACnCqtH,GAAWrtH,CAAI,EAAEmsB,EAAM6lE,CAAK,EAC5B,QACF,CACA,GAAIpyF,aAAiBsrH,EAAW,CAC9B,MAAM+C,EAAWruH,EAAM+kH,EAAQ,EAAC,EAC5BsJ,EACF,OAAO,OAAOj8B,EAAOi8B,CAAQ,EAE7BrvH,EAAK,6BAA6BoB,CAAI,sBAAsB,CAEhE,EACF,CACA,OAAOgyF,CACT,CACA,SAASk8B,GAAc/hG,EAAMk6F,EAAM,CACjC,KAAM,CACJ,WAAA5Y,CACJ,EAAM4Y,EACE,CACJ,MAAAr0B,CACJ,EAAMyb,EACE0gB,EAAU,CACd,KAAM,MACN,WAAY,CACV,MAAO,CAAC,YAAY,EACpB,MAAO,OAAO,OAAO,IAAI,CAC/B,EACI,SAAU,CAAA,CACd,EAEE,GADA1gB,EAAW,MAAM,KAAK,YAAY,EAC9BthF,EAAK,OAAQ,CACf,KAAM,CACJ,OAAAumC,EACA,OAAA07D,CACN,EAAQjiG,EAAK,OAAOk1F,CAAM,EACtB,IAAI52G,EAAOC,EACP0yD,EAAMgxD,EAAO,CAAC,EACd/+E,EAAO++E,EAAO,CAAC,EACnB,MAAMC,EAAUD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAC9BE,EAAUF,EAAO,CAAC,EAAIA,EAAO,CAAC,EACpC,OAAQjiG,EAAK,OAAO,KAAI,CACtB,IAAK,OACHixC,GAAO1K,EAAO,CAAC,EAAI,EACnBrjB,GAAQqjB,EAAO,CAAC,EAAI,EACpBjoD,EAAQ,gBAAgBioD,EAAO,CAAC,EAAIA,EAAO,CAAC,GAAK,EAAI47D,CAAO,MAC5D5jH,EAAS,gBAAgBgoD,EAAO,CAAC,EAAIA,EAAO,CAAC,GAAK,EAAI27D,CAAO,MAC7D,MACF,IAAK,OACHjxD,GAAO1K,EAAO,CAAC,EACfrjB,GAAQqjB,EAAO,CAAC,EAChBjoD,EAAQ,eAAeioD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAI47D,CAAO,MACtD5jH,EAAS,eAAegoD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAI27D,CAAO,MACvD,MACF,IAAK,QACH5jH,EAAQ6jH,EAAU,eAAeA,CAAO,MAAQ,OAChD5jH,EAAS2jH,EAAU,eAAeA,CAAO,MAAQ,OACjD,KACR,CACI,MAAME,EAAa,CAAC,WAAW,EAC3BC,GAAYriG,EAAK,MAAM,GACzBoiG,EAAW,KAAK,cAAc,EAEhC,MAAME,EAAS,CACb,KAAM,MACN,WAAY,CACV,MAAOF,EACP,MAAO,CACL,IAAK,GAAGnxD,CAAG,KACX,KAAM,GAAG/tB,CAAI,KACb,MAAA5kC,EACA,OAAAC,CACV,CACA,EACM,SAAU,CAAA,CAChB,EACI,UAAWjC,IAAO,CAAC,SAAU,cAAe,cAAe,eAAgB,aAAa,EAClFupF,EAAMvpF,CAAG,IAAM,SACjBgmH,EAAO,WAAW,MAAMhmH,CAAG,EAAIupF,EAAMvpF,CAAG,EACxC,OAAOupF,EAAMvpF,CAAG,GAGpB0lH,EAAQ,SAAS,KAAKM,EAAQpI,CAAI,CACpC,MACE8H,EAAQ,SAAS,KAAK9H,CAAI,EAE5B,UAAW59G,IAAO,CAAC,aAAc,iBAAkB,MAAO,OAAQ,QAAS,SAAU,WAAY,YAAa,WAAY,YAAa,YAAa,kBAAmB,YAAY,EAC7KupF,EAAMvpF,CAAG,IAAM,SACjB0lH,EAAQ,WAAW,MAAM1lH,CAAG,EAAIupF,EAAMvpF,CAAG,EACzC,OAAOupF,EAAMvpF,CAAG,GAGpB,OAAA0lH,EAAQ,WAAW,MAAM,SAAWn8B,EAAM,WAAa,WAAa,WAAa,WACjF,OAAOA,EAAM,SACTA,EAAM,YACRm8B,EAAQ,WAAW,MAAM,UAAYn8B,EAAM,UAC3C,OAAOA,EAAM,WAERm8B,CACT,CACA,SAASO,GAAcC,EAAQ,CAC7B,MAAMC,EAASnJ,GAAekJ,EAAO,WAAY,KAAK,EACtD,GAAIC,GAAU,EACZ,OAGF,MAAM5uH,EAAO,YADC2uH,EAAO,YAAc,QAAU,QAAU,UACnB,OAAS,OAAS,SAChDp+E,EAAUk1E,GAAekJ,EAAO3uH,CAAI,EAAG,KAAK,EAClD2uH,EAAO3uH,CAAI,EAAI,GAAGuwC,EAAUq+E,CAAM,IACpC,CACA,SAASC,GAAU1iG,EAAMoiG,EAAY,CACnC,OAAQpiG,EAAK,OAAM,CACjB,IAAK,iBACHoiG,EAAW,KAAK,mBAAmB,EACnC,MACF,IAAK,WACHA,EAAW,KAAK,aAAa,EAC7B,MACF,IAAK,YACHA,EAAW,KAAK,aAAa,EAC7B,KACN,CACA,CACA,SAASC,GAAYriG,EAAM,CACzB,OAAOA,EAAK,SAAS,OAAS,GAAK,CAACA,EAAK,SAAS,CAAC,EAAE,UAAYA,EAAK,SAAS,CAAC,EAAE,WAAa,OACjG,CACA,SAAS2iG,GAAe3iG,EAAM,CAC5B,MAAM8U,EAAQ9U,EAAKm2F,EAAgB,EAAC,EAAGjB,CAAM,EAAE,UAC/C,OAAOpgF,EAAM,OAASA,EAAM,GAAG,EAAE,EAAI,IACvC,CACA,SAAS8tF,GAAQ5iG,EAAM6iG,EAAWpvH,EAAO,CACvC,GAAIA,EAAM,WAAW,OAAO,SAAS,SAAS,EAAG,CAC3CovH,IACE7iG,EAAK,IAAM,KACb6iG,EAAU,OAAS,QAEjB7iG,EAAK,IAAM,KACb6iG,EAAU,MAAQ,SAGtB,MAAMC,EAAOH,GAAe3iG,CAAI,EAChC,GAAI8iG,EAAM,CACR,MAAMC,EAAatvH,EAAM,WAAW,MAGpC,OAFAsvH,EAAW,QAAU,OACrBA,EAAW,cAAgB,SACnBD,EAAK,OAAM,CACjB,IAAK,MACHC,EAAW,eAAiB,QAC5B,MACF,IAAK,SACHA,EAAW,eAAiB,MAC5B,MACF,IAAK,SACHA,EAAW,eAAiB,SAC5B,KACV,CACM,MAAMC,EAAYF,EAAKtK,EAAQ,EAAC,EAChC,SAAW,CAACl8G,EAAK+R,CAAG,IAAK,OAAO,QAAQ20G,CAAS,EACzC1mH,KAAOymH,IACXA,EAAWzmH,CAAG,EAAI+R,EAGxB,CACF,CACF,CACA,SAAS40G,GAAcrI,EAAS56F,EAAMo7F,EAAYv1B,EAAO,CACvD,GAAI,CAACu1B,EAAY,CACf,OAAOv1B,EAAM,WACb,MACF,CACA,MAAMhyF,EAAOklH,GAAY6B,EAAQ,QAAQ,EACzC/0B,EAAM,WAAa5mF,GAAoBpL,CAAI,EAC3C,MAAMgnH,EAAWO,EAAW,KAAKvnH,CAAI,EACrC,GAAIgnH,EAAU,CACZ,KAAM,CACJ,WAAA37G,CACN,EAAQ27G,EAAS,QAAQ,YACjB37G,IAAerL,IACjBgyF,EAAM,WAAa5mF,GAAoBC,CAAU,GAEnD,MAAM4jH,EAAOH,GAAe3iG,CAAI,EAIhC,GAHI8iG,GAAQA,EAAK,aAAe,IAG5Bj9B,EAAM,WACR,OAEF,MAAM00B,EAAUI,GAAWC,EAASC,CAAQ,EACxCN,IACF10B,EAAM,WAAa,KAAK,IAAI,IAAK00B,EAAQ,UAAU,EAEvD,CACF,CACA,SAAS2I,GAAO7vH,EAAK,CACnB,MAAMF,EAAcJ,GAAuBM,EAAK,KAAM,CACpD,mBAAoB,GACpB,mBAAoB,EACxB,CAAG,EACD,OAAOF,EAAcA,EAAY,KAAO,IAC1C,CAMA,SAASgwH,GAAWnjG,EAAM09F,EAAU,CAClC,MAAO,CACL,KAAM,MACN,WAAY,CACV,MAAO,CAAC19F,EAAK,SAAW,QAAU,QAAU,OAAO,CACzD,EACI,SAAA09F,CACJ,CACA,CACA,SAAS0F,GAAUpjG,EAAM,CACvB,GAAI,CAACA,EAAKk1F,CAAM,EACd,OAAO,KAGT,MAAMgF,EAAO,CACX,KAAM,MACN,WAHiBl6F,EAAKk1F,CAAM,EAAE,WAI9B,SAAUl1F,EAAKk1F,CAAM,EAAE,QAC3B,EACE,GAAIl1F,EAAKk1F,CAAM,EAAE,YAAa,CAC5B,MAAMmO,EAAkBrjG,EAAKk1F,CAAM,EAAE,YAAYE,EAAU,EAAC,EACxDiO,IACErjG,EAAK,OAAO,SAAS,KAAK,EAC5Bk6F,EAAK,SAAS,KAAKiJ,GAAWnjG,EAAM,CAACqjG,CAAe,CAAC,CAAC,EAEtDnJ,EAAK,SAAS,KAAKmJ,CAAe,EAGxC,CACA,OAAInJ,EAAK,SAAS,SAAW,EACpB,KAEFA,CACT,CACA,SAASoJ,GAAQtjG,EAAMk6F,EAAMtuF,EAAM,CACjC,MAAM26D,EAAQvmE,EAAKk1F,CAAM,EACnBmK,EAAiB94B,EAAM,eACvB,CAAC9tF,EAAGC,EAAGq8E,EAAG56D,CAAC,EAAIyR,EACrB,OAAQ5L,EAAK,OAAM,CACjB,IAAK,WACH,CACEumE,EAAM,MAAQ,KAAK,IAAIA,EAAM,MAAO9tF,EAAIs8E,CAAC,EACzCwR,EAAM,OAAS,KAAK,IAAIA,EAAM,OAAQ7tF,EAAIyhB,CAAC,EAC3CosE,EAAM,SAAS,KAAK2zB,CAAI,EACxB,KACF,CACF,IAAK,QACL,IAAK,SACC,CAAC3zB,EAAM,MAAQA,EAAM,UAAY,KACnCA,EAAM,KAAO48B,GAAWnjG,EAAM,CAAA,CAAE,EAChCumE,EAAM,SAAS,KAAKA,EAAM,IAAI,EAC9BA,EAAM,aAAe,GAEvBA,EAAM,cAAgB,EACtBA,EAAM,KAAK,SAAS,KAAK2zB,CAAI,EACzB3zB,EAAM,UAAY,GACpBA,EAAM,cAAgBxR,EACtBwR,EAAM,OAAS,KAAK,IAAIA,EAAM,OAAQA,EAAM,WAAapsE,CAAC,IAE1DosE,EAAM,aAAexR,EACrBwR,EAAM,WAAaA,EAAM,OACzBA,EAAM,QAAUpsE,EAChBosE,EAAM,QAAU,GAElBA,EAAM,MAAQ,KAAK,IAAIA,EAAM,MAAOA,EAAM,YAAY,EACtD,MACF,IAAK,SACL,IAAK,MACH,CACEA,EAAM,SAAS,KAAK2zB,CAAI,EACxB3zB,EAAM,OAASxR,EACfwR,EAAM,OAAS,KAAK,IAAIA,EAAM,OAAQpsE,CAAC,EACvC,MAAM5b,EAAS0iH,GAAgB16B,EAAM,MAAM,EAC3C,UAAWgc,KAAShc,EAAM,SACxBgc,EAAM,WAAW,MAAM,OAAShkG,EAElC,KACF,CACF,IAAK,QACH,CACEgoF,EAAM,MAAQ58E,GAAUorE,EAAGwR,EAAM,MAAO84B,EAAe,KAAK,EAC5D94B,EAAM,QAAUpsE,EAChBosE,EAAM,SAAS,KAAK2zB,CAAI,EACxB,KACF,CACF,IAAK,KACH,CACE3zB,EAAM,MAAQ58E,GAAUorE,EAAGwR,EAAM,MAAO84B,EAAe,KAAK,EAC5D94B,EAAM,QAAUpsE,EAChBosE,EAAM,SAAS,KAAK2zB,CAAI,EACxB,KACF,CACN,CACA,CACA,SAASqJ,GAAkBvjG,EAAM,CAC/B,MAAMq/F,EAAiBr/F,EAAKk1F,CAAM,EAAE,eAC9BuM,EAAUzhG,EAAK,OAASA,EAAK,OAAO,SAAWA,EAAK,OAAO,YAAc,EACzEwhG,EAAUxhG,EAAK,OAASA,EAAK,OAAO,UAAYA,EAAK,OAAO,WAAa,EAC/E,OAAQA,EAAK,OAAM,CACjB,IAAK,QACL,IAAK,QACH,OAAIA,EAAKk1F,CAAM,EAAE,UAAY,EACpB,CACL,MAAOmK,EAAe,MAAQmC,EAAUxhG,EAAKk1F,CAAM,EAAE,aACrD,OAAQmK,EAAe,OAASoC,EAAUzhG,EAAKk1F,CAAM,EAAE,UACjE,EAEa,CACL,MAAOmK,EAAe,MAAQmC,EAC9B,OAAQnC,EAAe,OAASoC,EAAUzhG,EAAKk1F,CAAM,EAAE,MAC/D,EACI,IAAK,SACL,IAAK,MAEH,MAAO,CACL,MAFY,KAAK,WAAWl1F,EAAKk1F,CAAM,EAAE,aAAa,MAAMl1F,EAAKk1F,CAAM,EAAE,aAAa,CAAC,EAGvF,OAAQmK,EAAe,OAASmC,CACxC,EACI,IAAK,QACL,IAAK,KACH,MAAO,CACL,MAAOnC,EAAe,MAAQmC,EAC9B,OAAQnC,EAAe,OAASoC,EAAUzhG,EAAKk1F,CAAM,EAAE,MAC/D,EAEI,QACE,OAAOmK,CACb,CACA,CACA,SAASmE,GAAmBxjG,EAAM,CAChC,IAAI+0D,EAAI/0D,EAAK,IAAM,GAAK,IAAMA,EAAK,EAC/B7F,EAAI6F,EAAK,IAAM,GAAK,IAAMA,EAAK,EAC/B,CAACyjG,EAASC,CAAO,EAAI,CAAC,EAAG,CAAC,EAC9B,OAAQ1jG,EAAK,YAAc,GAAE,CAC3B,IAAK,eACH,CAACyjG,EAASC,CAAO,EAAI,CAAC3uC,EAAI,EAAG56D,CAAC,EAC9B,MACF,IAAK,aACH,CAACspG,EAASC,CAAO,EAAI,CAAC,EAAGvpG,CAAC,EAC1B,MACF,IAAK,cACH,CAACspG,EAASC,CAAO,EAAI,CAAC3uC,EAAG56D,CAAC,EAC1B,MACF,IAAK,eACH,CAACspG,EAASC,CAAO,EAAI,CAAC3uC,EAAI,EAAG56D,EAAI,CAAC,EAClC,MACF,IAAK,aACH,CAACspG,EAASC,CAAO,EAAI,CAAC,EAAGvpG,EAAI,CAAC,EAC9B,MACF,IAAK,cACH,CAACspG,EAASC,CAAO,EAAI,CAAC3uC,EAAG56D,EAAI,CAAC,EAC9B,MACF,IAAK,YACH,CAACspG,EAASC,CAAO,EAAI,CAAC3uC,EAAI,EAAG,CAAC,EAC9B,MACF,IAAK,WACH,CAAC0uC,EAASC,CAAO,EAAI,CAAC3uC,EAAG,CAAC,EAC1B,KACN,CACE,IAAIt8E,EAAGC,EACP,OAAQsnB,EAAK,QAAU,EAAC,CACtB,IAAK,GACH,CAACvnB,EAAGC,CAAC,EAAI,CAAC,CAAC+qH,EAAS,CAACC,CAAO,EAC5B,MACF,IAAK,IACH,CAACjrH,EAAGC,CAAC,EAAI,CAAC,CAACgrH,EAASD,CAAO,EAC3B,CAAC1uC,EAAG56D,CAAC,EAAI,CAACA,EAAG,CAAC46D,CAAC,EACf,MACF,IAAK,KACH,CAACt8E,EAAGC,CAAC,EAAI,CAAC+qH,EAASC,CAAO,EAC1B,CAAC3uC,EAAG56D,CAAC,EAAI,CAAC,CAAC46D,EAAG,CAAC56D,CAAC,EAChB,MACF,IAAK,KACH,CAAC1hB,EAAGC,CAAC,EAAI,CAACgrH,EAAS,CAACD,CAAO,EAC3B,CAAC1uC,EAAG56D,CAAC,EAAI,CAAC,CAACA,EAAG46D,CAAC,EACf,KACN,CACE,MAAO,CAAC/0D,EAAK,EAAIvnB,EAAI,KAAK,IAAI,EAAGs8E,CAAC,EAAG/0D,EAAK,EAAItnB,EAAI,KAAK,IAAI,EAAGyhB,CAAC,EAAG,KAAK,IAAI46D,CAAC,EAAG,KAAK,IAAI56D,CAAC,CAAC,CAC5F,CACA,SAASwpG,GAAgB3jG,EAAM8Z,EAAO,CAIpC,GAHI9Z,EAAKm2F,EAAgB,EAAC,EAAGjB,CAAM,EAAE,oBAAsB,MAGvDl1F,EAAK,IAAM,GAAKA,EAAK,IAAM,EAC7B,MAAO,GAET,MAAM4jG,EAAQ,EACRtmH,EAAS0iB,EAAKi2F,EAAiB,EAAC,EAChC4N,EAAUvmH,EAAO43G,CAAM,GAAG,SAAW,EACrC,CAAA,CAAGx8G,EAAGq8E,EAAG56D,CAAC,EAAIqpG,GAAmBxjG,CAAI,EAC3C,OAAQ1iB,EAAO,OAAM,CACnB,IAAK,QACL,IAAK,QACH,OAAIumH,IAAY,EACT7jG,EAAKm2F,EAAgB,EAAC,EAAGjB,CAAM,EAAE,gBAelCl1F,EAAK,IAAM,GACN,KAAK,MAAM+0D,EAAIj7C,EAAM,KAAK,GAAK8pF,EAEjC9pF,EAAM,MAAQ8pF,EAjBf5jG,EAAK,IAAM,IAAM,KAAK,MAAM7F,EAAI2f,EAAM,MAAM,EAAI8pF,EAC3C,GAEL5jG,EAAK,IAAM,GACT,KAAK,MAAM+0D,EAAIj7C,EAAM,KAAK,GAAK8pF,EAC1B,GAELtmH,EAAO43G,CAAM,EAAE,eAAiB,EAC3Bp7E,EAAM,OAAS8pF,EAEjB,GAEF9pF,EAAM,MAAQ8pF,EAOrB5jG,EAAKm2F,EAAgB,EAAC,EAAGjB,CAAM,EAAE,gBAC5B,GAELl1F,EAAK,IAAM,IAAM,KAAK,MAAM7F,EAAI2f,EAAM,MAAM,EAAI8pF,EAC3C,GAEL5jG,EAAK,IAAM,IAAM,KAAK,MAAM+0D,EAAIj7C,EAAM,KAAK,GAAK8pF,EAC3C9pF,EAAM,OAAS8pF,EAEpBtmH,EAAOy5G,EAAiB,IACnB,GAEFj9E,EAAM,OAAS8pF,EACxB,IAAK,QACL,IAAK,KACH,OAAI5jG,EAAKm2F,EAAgB,EAAC,EAAGjB,CAAM,EAAE,gBAC5B,GAELl1F,EAAK,IAAM,IAAM,CAACA,EAAK82F,EAAa,IAC/B,KAAK,MAAM38F,EAAI2f,EAAM,MAAM,GAAK8pF,EAErC5jG,EAAK,IAAM,IAAM,KAAK,MAAM+0D,EAAIj7C,EAAM,KAAK,GAAK8pF,EAC3C9pF,EAAM,OAAS8pF,EAEpBtmH,EAAOy5G,EAAiB,IACnB,GAEFj9E,EAAM,OAAS8pF,EACxB,IAAK,WAIH,GAHI5jG,EAAKm2F,EAAgB,EAAC,EAAGjB,CAAM,EAAE,iBAGjCl1F,EAAK,IAAM,IAAM,KAAK,MAAM7F,EAAIzhB,EAAIohC,EAAM,MAAM,GAAK8pF,EACvD,MAAO,GAET,MAAMvrG,EAAO2H,EAAKm2F,EAAgB,EAAC,EAAGjB,CAAM,EAAE,mBAC9C,OAAO/6F,EAAIzhB,EAAI2f,EAAK,EACtB,IAAK,SACL,IAAK,MACH,OAAI2H,EAAKm2F,EAAgB,EAAC,EAAGjB,CAAM,EAAE,gBAC5B,GAELl1F,EAAK,IAAM,GACN,KAAK,MAAM7F,EAAI2f,EAAM,MAAM,GAAK8pF,EAElC,GACT,QACE,MAAO,EACb,CACA,CAaA,MAAME,GAAiBnL,GAAa,SAAS,GACvCoL,GAA+B,EAC/BC,GAAkB,EAClBC,GAAoB,IACpBC,GAAkB,WAClBC,GAAQ,IAAI,IAAI,CAAC,YAAa,aAAc,YAAa,cAAe,YAAa,aAAc,cAAe,YAAa,iBAAkB,aAAc,YAAa,0BAA0B,CAAC,EACvMC,GAAiB,CAAC,CAAC,CAAC,GAAM,EAAI,EAAG,WAAW,EAAG,CAAC,CAAC,IAAM,IAAM,GAAI,EAAG,YAAY,EAAG,CAAC,CAAC,GAAM,GAAM,GAAM,CAAI,EAAG,YAAY,EAAG,CAAC,CAAC,GAAM,GAAM,EAAM,EAAI,EAAG,YAAY,EAAG,CAAC,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,EAAI,EAAG,WAAW,EAAG,CAAC,CAAC,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,EAAI,EAAG,WAAW,CAAC,EACjS,SAASC,GAAcrkG,EAAM,CAC3B,GAAI,CAACA,GAAQ,CAACA,EAAK,OACjB,MAAO,CACL,EAAG,EACH,EAAG,CACT,EAEE,MAAMskG,EAActkG,EAAK,OAAO41F,EAAS,EAAC,EAC1C,OAAK0O,EAME,CACL,EAAGA,EAAY,OAAO,CAAC,EAAIA,EAAY,OAAO,CAAC,EAAIA,EAAY,OAAO,CAAC,EAAIA,EAAY,OAAO,CAAC,EAC/F,EAAGA,EAAY,OAAO,CAAC,EAAIA,EAAY,OAAO,CAAC,EAAIA,EAAY,OAAO,CAAC,EAAIA,EAAY,OAAO,CAAC,CACnG,EARW,CACL,EAAG,EACH,EAAG,CACT,CAMA,CACA,SAASC,GAAUvkG,EAAM,CACvB,OAAOA,EAAK,SAAWA,EAAK,OAAO,UAAYA,EAAK,OAAO,YAAcA,EAAK,OAAO,aAAeA,EAAK,OAAO,UAClH,CACA,SAASwkG,GAAUC,EAAchxH,EAAO,CACtC,GAAI,CAACgxH,EAAa,MAAO,CACvB,MAAMpiB,EAAY,IAAIqiB,GAAM,EAAE,EAC9BD,EAAajQ,EAAY,EAAEnS,CAAS,EACpCoiB,EAAa,MAAQpiB,CACvB,CACAoiB,EAAa,MAAMvM,EAAS,EAAEzkH,CAAK,CACrC,CACA,SAAUkxH,GAAqB3kG,EAAM,CACnC,UAAWuiF,KAASviF,EAAK81F,EAAY,EAAC,EAAI,CACxC,GAAIvT,aAAiBqiB,GAAY,CAC/B,MAAOriB,EAAMwT,EAAqB,EAAC,EACnC,QACF,CACA,MAAMxT,CACR,CACF,CACA,SAASsiB,GAAW7kG,EAAM,CACxB,OAAOA,EAAK,UAAU,WAAa,OACrC,CACA,SAAS8kG,GAAY9kG,EAAM,CACzB,KAAOA,GAAM,CACX,GAAI,CAACA,EAAK,UAAW,CACnBA,EAAKm4F,EAAS,EAAIn4F,EAAKk2F,EAAU,EAAC,EAAGiC,EAAS,EAC9C,MACF,CACA,GAAIn4F,EAAKm4F,EAAS,EAChB,OAEF,IAAIthF,EAAO,KACX,UAAW0rE,KAASviF,EAAK,UAAU81F,EAAY,EAAC,EAC9C,GAAIvT,EAAM,YAAc,OAAQ,CAC9B1rE,EAAO0rE,EACP,KACF,CAEF,GAAI,CAAC1rE,GAAQ,CAACA,EAAK,IAAK,CACtB7W,EAAKm4F,EAAS,EAAIn4F,EAAKk2F,EAAU,EAAC,EAAGiC,EAAS,EAC9C,MACF,CACA,MAAMpY,EAAO//E,EAAKm2F,EAAgB,EAAC,EACnCn2F,EAAKm4F,EAAS,EAAI,EAAEpY,EAAKoY,EAAS,EAClC,MAAMh7G,EAAM4iG,EAAKgY,EAAW,EAAElhF,EAAK,IAAK7W,CAAI,EAC5C,GAAI,CAAC7iB,EACH,OAEF6iB,EAAO7iB,EAAI,CAAC,CACd,CACF,CACA,SAAS4nH,GAAYxxH,EAAK+tG,EAAY,CACpC,MAAM0jB,EAASzxH,EAAI,OACnB,GAAIyxH,EAAQ,CACV,MAAMC,EAAcD,EAAO1M,EAAO,EAAC,EAC/B2M,IACF3jB,EAAW,MAAQ2jB,GAGrB,MAAM5hH,EADO2hH,EAAO,KACD,MAAMd,EAAe,EACxC,GAAI7gH,EAAO,CACT,MAAM6hH,EAAW,UACXC,EAAY9hH,EAAM,CAAC,EACzBi+F,EAAW,KAAO4jB,EAClB5jB,EAAW,YAAY,EAAI6jB,CAC7B,CACF,CACA,GAAI5xH,EAAI,SAAW,QACjB+tG,EAAW,KAAO,gBACT/tG,EAAI,SAAW,MACxB+tG,EAAW,KAAO,UACb,CACL,MAAMhkG,EAAS/J,EAAI2iH,EAAU,EAAC,EAC1B54G,EAAO,SAAW,QACpBgkG,EAAW,KAAOhkG,EAAO,QAAQ,OAAS,KAAO,eAAiB,OAEtE,CACF,CACA,SAAS8nH,GAAU7xH,EAAK,CACtB,GAAI,CAACA,EAAI,OACP,OAAO,KAET,MAAMyxH,EAASzxH,EAAI,OACnB,OAAIyxH,EAAO,OAASA,EAAO,MAAMjQ,EAAQ,IAAM,GACtCiQ,EAAO,MAAMjQ,EAAQ,EAE1BiQ,EAAO,QACFA,EAAO,QAAQjQ,EAAQ,EAEzB,IACT,CACA,SAASsQ,GAAY5xH,EAAO,CAC1B,OAAOumH,GAAW,QAAQ,CACxB,KAAM,MACN,WAAY,CACV,MAAO,CAAC,SAAS,EACjB,MAAO,OAAO,OAAO,IAAI,CAC/B,EACI,SAAU,CAAC,CACT,KAAM,OACN,WAAY,CACV,MAAO,OAAO,OAAO,IAAI,CACjC,EACM,MAAAvmH,CACN,CAAK,CACL,CAAG,CACH,CACA,SAAS6xH,GAAqBtlG,EAAM,CAClC,MAAM+/E,EAAO//E,EAAKm2F,EAAgB,EAAC,EAC/BpW,EAAKmV,CAAM,EAAE,oBAAsB,OACrCnV,EAAKmV,CAAM,EAAE,kBAAoBl1F,EACjC+/E,EAAKmV,CAAM,EAAE,gBAAkB,GAEnC,CACA,SAASqQ,GAAuBvlG,EAAM,CACpC,MAAM+/E,EAAO//E,EAAKm2F,EAAgB,EAAC,EAC/BpW,EAAKmV,CAAM,EAAE,oBAAsBl1F,IACrC+/E,EAAKmV,CAAM,EAAE,gBAAkB,GAEnC,CACA,SAASsQ,GAAYxlG,EAAM,CAKzB,GAJIA,EAAKk1F,CAAM,IAGfl1F,EAAKk1F,CAAM,EAAI,OAAO,OAAO,IAAI,EAC7Bl1F,EAAK,aAAe,QACtB,MAAO,GAET,MAAM+/E,EAAO//E,EAAKm2F,EAAgB,EAAC,EACnC,IAAI5H,EAAS,KACb,GAAIvuF,EAAK,OAAQ,CAEf,GADAuuF,EAASxO,EAAKgY,EAAW,EAAE/3F,EAAK,OAAQA,EAAKk2F,EAAU,GAAG,EACtD,CAAC3H,EACH,MAAO,GAETA,EAASA,EAAO,CAAC,CACnB,CACA,KAAM,CACJ,gBAAAkX,EACA,mBAAAC,CACJ,EAAM3lB,EAAKmV,CAAM,EACf,GAAIl1F,EAAK,aAAe,WAItB,OAHMuuF,aAAkBoX,KACtBpX,EAAS,MAEPvuF,EAAK,UACPA,EAAKk1F,CAAM,EAAE,OAAS3G,GAAUkX,EACzB,IACElX,GAAUA,IAAWkX,GAC9BzlG,EAAKk1F,CAAM,EAAE,OAAS3G,EACf,IAEF,GAEHA,aAAkBqX,KACtBrX,EAAS,MAEX,MAAMsX,EAAWtX,GAAUA,EAAO2H,EAAU,EAAC,EAC7C,IAAItwF,EACAkgG,EAAeD,EACnB,GAAI7lG,EAAK,SACP,GAAIuuF,EAAQ,CACV,MAAMwX,EAAeF,EAAS,YAAY,SACpCG,EAAkBD,EAAa,QAAQL,CAAkB,EACzDO,EAAiBF,EAAa,QAAQxX,CAAM,EAC9CyX,IAAoB,IAAMA,EAAkBC,IAC9CH,EAAe,MAEjBlgG,EAAQqgG,EAAiB,CAC3B,MACErgG,EAAQ6/F,EAAgB,YAAY,SAAS,QAAQC,CAAkB,UAEhEnX,GAAUA,IAAWmX,EAE9B9/F,EADqBigG,EAAS,YAAY,SACrB,QAAQtX,CAAM,EAAI,EACvCuX,EAAeD,IAAaJ,EAAkB,KAAOI,MAErD,OAAO,GAET,OAAA7lG,EAAKk1F,CAAM,EAAE,OAAS4Q,EACtB9lG,EAAKk1F,CAAM,EAAE,MAAQtvF,EACd,EACT,CACA,SAASsgG,GAAelmG,EAAMmmG,EAAWrsF,EAAO,CAC9C,MAAMimE,EAAO//E,EAAKm2F,EAAgB,EAAC,EAC7Bj9B,EAAQ6mB,EAAKmV,CAAM,EAAE,gBACrBkR,EAAcD,EAAUlQ,EAAiB,EAC/CkQ,EAAUlQ,EAAiB,EAAI,IAAMj2F,EACrC+/E,EAAKmV,CAAM,EAAE,gBAAkB,GAC/B,MAAM5oF,EAAM65F,EAAU7N,EAAO,EAAEx+E,CAAK,EACpC9Z,EAAKu0F,EAAQ,EAAEjoF,EAAI,KAAMA,EAAI,IAAI,EACjCyzE,EAAKmV,CAAM,EAAE,gBAAkBh8B,EAC/BitC,EAAUlQ,EAAiB,EAAImQ,CACjC,CACA,MAAMC,WAAyBzF,EAAa,CAC1C,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,kBAAkB,EACxC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMglB,WAAYvH,CAAU,CAC1B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,MAAO,EAAI,EACjC,KAAK,SAAW9K,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,KAAO4gH,GAAgB/X,EAAW,KAAM,CAAC,OAAQ,OAAQ,OAAO,CAAC,EACtE,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,WAAa6X,GAAS,CACzB,KAAM7X,EAAW,WACjB,aAAc,EACd,SAAU7oG,GAAK,EACrB,CAAK,EACD,KAAK,WAAa0gH,GAAS,CACzB,KAAM7X,EAAW,WACjB,aAAc,IACd,SAAU7oG,GAAK,EACrB,CAAK,EACD,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,KAAO,KACZ,KAAK,KAAO,IACd,CACA,CAACgX,EAAO,GAAI,CACV,MAAMiO,EAAO,KAAK,MAAQ,IAAIC,GAAK,CAAA,CAAE,EAC/BC,EAAYF,EAAK/N,EAAQ,EAAC,EAC1B3yB,EAAQ,OAAO,OAAO,IAAI,EAC5B,KAAK,MAAM,WAAa,UAC1B,OAAO,OAAOA,EAAO,KAAK,KAAK2yB,EAAQ,GAAG,EAE1C3yB,EAAM,KAAO,cAEfA,EAAM,YAAco7B,GAAgBsF,EAAK,WAAa,UAAYA,EAAK,UAAY,CAAC,EACpF1gC,EAAM,OAAS4gC,EAAU,MACzB,IAAIC,EACJ,MAAMplB,EAAa,CACjB,MAAOzwG,GACP,MAAO,CACL,MAAO,OACP,OAAQ,OACR,SAAU,SAClB,CACA,EACI,GAAI,KAAK,aAAe,IACtB61H,EAAM,CACJ,KAAM,UACN,WAAY,CACV,MAAO71H,GACP,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,MAAAg1F,CACV,CACA,MACW,CACL,MAAM8gC,EAAa,KAAK,WAAa,KAAK,GAAK,IACzCC,EAAa,KAAK,WAAa,KAAK,GAAK,IACzCC,EAAW,KAAK,WAAa,IAAM,EAAI,EACvC,CAAC/tH,EAAIC,EAAIE,EAAIE,CAAE,EAAI,CAAC,IAAM,EAAI,KAAK,IAAIwtH,CAAU,GAAI,IAAM,EAAI,KAAK,IAAIA,CAAU,GAAI,IAAM,EAAI,KAAK,IAAIA,EAAaC,CAAU,GAAI,IAAM,EAAI,KAAK,IAAID,EAAaC,CAAU,EAAE,EACtLF,EAAM,CACJ,KAAM,OACN,WAAY,CACV,MAAO71H,GACP,EAAG,KAAKiI,CAAE,IAAIC,CAAE,cAAc8tH,CAAQ,MAAM5tH,CAAE,IAAIE,CAAE,GACpD,aAAc,qBACd,MAAA0sF,CACV,CACA,EACM,OAAO,OAAOyb,EAAY,CACxB,QAAS,cACT,oBAAqB,MAC7B,CAAO,CACH,CACA,MAAMwlB,EAAM,CACV,KAAM,MACN,SAAU,CAACJ,CAAG,EACd,WAAAplB,CACN,EACUhkG,EAAS,KAAK44G,EAAU,EAAC,EAAGA,EAAU,EAAC,EAC7C,OAAIqO,GAAUjnH,CAAM,EACX08G,GAAW,QAAQ,CACxB,KAAM,MACN,WAAY,CACV,MAAO,CACL,QAAS,SACT,MAAO,OACP,OAAQ,MACpB,CACA,EACQ,SAAU,CAAC8M,CAAG,CACtB,CAAO,GAEHA,EAAI,WAAW,MAAM,SAAW,WACzB9M,GAAW,QAAQ8M,CAAG,EAC/B,CACF,CACA,MAAMC,WAAahI,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,QAAU9K,GAAW,CACxB,KAAM1X,EAAW,QACjB,aAAc,EACd,SAAU,GAAK,GAAK,GAAK,IAAM,EACrC,CAAK,EACD,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,SAAWuY,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,KAAO,IAAI6d,EAChB,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,UAAY,IAAIA,EACrB,KAAK,MAAQ,IAAIA,EACjB,KAAK,QAAU,IAAIA,EACnB,KAAK,WAAa,IAAIA,CACxB,CACA,EAAEpJ,EAAqB,GAAI,CACzB,MAAO4O,GAAqB,IAAI,CAClC,CACA,CAAC3N,EAAc,GAAI,CACjB,MAAO,EACT,CACA,CAACN,EAAW,GAAI,CACd,MAAO,EACT,CACA,CAACnC,EAAQ,EAAE2F,EAAMtuF,EAAM,CACrB,KAAM,CAACnzB,EAAGC,EAAGq8E,EAAG56D,CAAC,EAAIyR,EACrB,KAAKspF,CAAM,EAAE,MAAQ,KAAK,IAAI,KAAKA,CAAM,EAAE,MAAOz8G,EAAIs8E,CAAC,EACvD,KAAKmgC,CAAM,EAAE,OAAS,KAAK,IAAI,KAAKA,CAAM,EAAE,OAAQx8G,EAAIyhB,CAAC,EACzD,KAAK+6F,CAAM,EAAE,SAAS,KAAKgF,CAAI,CACjC,CACA,CAAC3E,EAAkB,GAAI,CACrB,OAAO,KAAKL,CAAM,EAAE,cACtB,CACA,CAACoD,EAAO,EAAE+G,EAAgB,CACxB,MAAMx5B,EAAQg8B,GAAQ,KAAM,UAAU,EAChCvgB,EAAa,CACjB,MAAAzb,EACA,GAAI,KAAK4yB,EAAI,EACb,MAAO,CAAC,SAAS,CACvB,EACQ4J,GAAY,IAAI,GAClB/gB,EAAW,MAAM,KAAK,cAAc,EAElC,KAAK,OACPA,EAAW,QAAU,KAAK,MAE5B,MAAMoc,EAAW,CAAA,EACjB,KAAKxI,CAAM,EAAI,CACb,SAAAwI,EACA,MAAO,EACP,OAAQ,EACR,eAAA2B,CACN,EACI,MAAMx9G,EAAS,KAAK4yG,EAAe,EAAE,CACnC,OAAQ,IAAI,IAAI,CAAC,OAAQ,OAAQ,QAAS,YAAa,UAAW,YAAY,CAAC,EAC/E,QAAS,EACf,CAAK,EACD,GAAI,CAAC5yG,EAAO,QACV,OAAIA,EAAO,UACFA,GAET,OAAO,KAAKqzG,CAAM,EACX8E,GAAW,SAEpBn0B,EAAM,MAAQo7B,GAAgB,KAAK/L,CAAM,EAAE,KAAK,EAChDrvB,EAAM,OAASo7B,GAAgB,KAAK/L,CAAM,EAAE,MAAM,EAClD,MAAMgF,EAAO,CACX,KAAM,MACN,WAAA5Y,EACA,SAAAoc,CACN,EACU9xF,EAAO,CAAC,KAAK,EAAG,KAAK,EAAG,KAAKspF,CAAM,EAAE,MAAO,KAAKA,CAAM,EAAE,MAAM,EACrE,cAAO,KAAKA,CAAM,EACX8E,GAAW,QAAQE,EAAMtuF,CAAI,CACtC,CACF,CACA,MAAMo7F,WAAejI,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,MAAQ,KACb,KAAK,QAAU,IACjB,CACA,CAACgX,EAAO,GAAI,CACV,OAAO,KAAK,UAAUvD,EAAQ,GAAK,IACrC,CACF,CACA,MAAMkS,WAAgBlI,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,aAAe1K,GAAW,CAC7B,KAAM9X,EAAW,aAAeA,EAAW,aAAa,YAAW,EAAK,GACxE,aAAc,GACd,SAAUxzF,GAAK,CAAC,QAAS,WAAY,eAAgB,MAAO,WAAY,UAAW,WAAY,OAAQ,YAAa,QAAS,QAAQ,EAAE,SAASA,CAAC,GAAKA,EAAE,MAAM,gBAAgB,CACpL,CAAK,EACD,KAAK,SAAWurG,GAAgB/X,EAAW,SAAU,CAAC,OAAQ,SAAU,gBAAiB,SAAU,MAAM,CAAC,EAC1G,KAAK,gBAAkB0X,GAAW,CAChC,KAAM1X,EAAW,gBACjB,aAAc,GACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,WAAaugH,GAAW,CAC3B,KAAM1X,EAAW,WACjB,aAAc,GACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,SAAW4gH,GAAgB/X,EAAW,SAAU,CAAC,OAAQ,eAAe,CAAC,EAC9E,KAAK,aAAe0X,GAAW,CAC7B,KAAM1X,EAAW,aACjB,aAAc,GACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,QAAU6oG,EAAW,SAAW,GACrC,KAAK,qBAAuB0X,GAAW,CACrC,KAAM1X,EAAW,qBACjB,aAAc,GACd,SAAU7oG,GAAKA,GAAK,GAAKA,GAAK,CACpC,CAAK,EACD,KAAK,GAAK6oG,EAAW,IAAM,GAC3B,KAAK,aAAegY,GAAehY,EAAW,aAAc,KAAK,EACjE,KAAK,YAAcgY,GAAehY,EAAW,YAAa,QAAQ,EAClE,KAAK,gBAAkB0X,GAAW,CAChC,KAAM1X,EAAW,gBACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,eAAiBkhH,GAASrY,EAAW,cAAc,EACxD,KAAK,UAAYA,EAAW,WAAa,GACzC,KAAK,aAAe+X,GAAgB/X,EAAW,aAAc,CAAC,QAAS,QAAS,gBAAiB,gBAAiB,MAAM,CAAC,EACzH,KAAK,SAAW0X,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,KAAO4gH,GAAgB/X,EAAW,KAAOA,EAAW,KAAK,YAAW,EAAK,GAAI,CAAC,QAAS,UAAW,qBAAsB,sBAAuB,iBAAkB,mBAAoB,WAAY,mBAAoB,SAAU,SAAU,SAAU,UAAW,WAAY,WAAY,WAAY,cAAe,aAAc,OAAQ,WAAY,WAAY,QAAS,YAAa,YAAa,YAAa,MAAO,UAAW,WAAY,MAAO,SAAU,cAAe,UAAW,eAAgB,eAAgB,mBAAoB,kBAAmB,eAAgB,aAAc,YAAa,iBAAkB,aAAc,SAAU,OAAQ,QAAS,gBAAiB,eAAgB,eAAgB,mBAAoB,iBAAkB,UAAW,SAAU,eAAgB,aAAc,OAAQ,WAAY,WAAY,WAAY,OAAQ,WAAY,WAAY,UAAW,UAAW,aAAa,CAAC,EACp4B,KAAK,QAAU+X,GAAgB/X,EAAW,QAAS,CAAC,YAAa,uBAAwB,eAAgB,gBAAgB,CAAC,EAC1H,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,gBAAkBqY,GAASrY,EAAW,eAAe,EAC1D,KAAK,QAAU,KACf,KAAK,OAAS,IAChB,CACF,CACA,MAAM4lB,WAAanI,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,MAAQzK,GAAgB/X,EAAW,MAAO,CAAC,OAAQ,UAAW,SAAU,MAAM,CAAC,EACpF,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAU,IACjB,CACF,CACA,MAAM6lB,WAAkBpI,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,WAAW,EACjC,KAAK,WAAaxiB,EAAW,YAAc,GAC3C,KAAK,SAAWA,EAAW,UAAY,GACvC,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,SAAWA,EAAW,UAAY,EACzC,CACF,CACA,MAAM8lB,WAAgBrI,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAS,EAC/B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM+lB,WAAuBtG,EAAS,CACpC,YAAYzf,EAAY,CACtB,MAAMwiB,GAAgB,SAAS,EAC/B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,OAAOgG,GAAY,KAAKtQ,EAAQ,IAAM,EAAI,IAAM,GAAG,CACrD,CACF,CACA,MAAMuS,WAAevI,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,MAAQzK,GAAgB/X,EAAW,MAAO,CAAC,QAAS,MAAM,CAAC,EAChE,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,OAAQ,OAAQ,OAAO,CAAC,EACtE,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAY,WAAW,CAAC,EACnG,KAAK,SAAWuY,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAAI6d,EAAe,CAAC,EAClC,KAAK,KAAO,IAAIA,EAAe,CAAC,EAChC,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,OAAS,IAChB,CACA,CAACvJ,EAAS,GAAI,CACZ,GAAI,CAAC,KAAKV,CAAM,EAAG,CACjB,MAAMqS,EAAQ,KAAK,KAAK,SAAS,MAAK,EACtC,GAAIA,EAAM,OAAS,EAAG,CACpB,MAAMC,EAAcD,EAAM,GAAG,EAAE,GAAK,IAAIf,GAAK,EAAE,EAC/C,QAAS,EAAIe,EAAM,OAAQ,EAAI,EAAG,IAChCA,EAAM,KAAKC,CAAW,CAE1B,CACA,MAAMjhE,EAASghE,EAAM,IAAIhB,GAAQA,EAAK,SAAS,EACzCtE,EAAS,CAAC,EAAG,EAAG,EAAG,CAAC,EACtB,KAAK,SACPA,EAAO,CAAC,EAAI,KAAK,OAAO,SACxBA,EAAO,CAAC,EAAI,KAAK,OAAO,WACxBA,EAAO,CAAC,EAAI,KAAK,OAAO,YACxBA,EAAO,CAAC,EAAI,KAAK,OAAO,WAE1B,KAAK/M,CAAM,EAAI,CACb,OAAA3uD,EACA,OAAA07D,EACA,MAAAsF,CACR,CACI,CACA,OAAO,KAAKrS,CAAM,CACpB,CACA,CAACsD,EAAQ,GAAI,CACX,KAAM,CACJ,MAAA+O,CACN,EAAQ,KAAK3R,EAAS,EAAC,EACb6R,EAAaF,EAAM,IAAIvnG,GAAQ,CACnC,MAAM6lE,EAAQ7lE,EAAKw4F,EAAQ,EAAC,EAC5B,OAAA3yB,EAAM,QAAU,UACTA,CACT,CAAC,EACKA,EAAQ,OAAO,OAAO,IAAI,EAOhC,GANI,KAAK,QACP,OAAO,OAAOA,EAAO,KAAK,OAAO2yB,EAAQ,GAAG,EAE1C,KAAK,MAAM,WAAa,WAC1B,OAAO,OAAO3yB,EAAO,KAAK,KAAK2yB,EAAQ,GAAG,EAExC,KAAK,OAAO,SAAS,KAAKx4F,GAAQA,EAAK,SAAW,CAAC,EAAG,CACxD,MAAM0nG,EAAe,KAAK,OAAO,SAAS,IAAI1nG,GAAQA,EAAKw4F,EAAQ,GAAG,EACtE,GAAIkP,EAAa,SAAW,GAAKA,EAAa,SAAW,EAAG,CAC1D,MAAM7yF,EAAO6yF,EAAa,GAAG,EAAE,EAC/B,QAAS7yH,EAAI6yH,EAAa,OAAQ7yH,EAAI,EAAGA,IACvC6yH,EAAa,KAAK7yF,CAAI,CAE1B,CACAgxD,EAAM,aAAe6hC,EAAa,IAAI1rG,GAAKA,EAAE,MAAM,EAAE,KAAK,GAAG,CAC/D,CACA,OAAQ,KAAK,SAAQ,CACnB,IAAK,YACL,IAAK,SACH6pE,EAAM,YAAc,GACpB,MACF,IAAK,WACHA,EAAM,YAAc,OACpB,MACF,QACEA,EAAM,YAAc4hC,EAAW,IAAIzrG,GAAKA,EAAE,KAAK,EAAE,KAAK,GAAG,EACzD,KACR,CACI,OAAA6pE,EAAM,YAAc4hC,EAAW,IAAIzrG,GAAKA,EAAE,KAAK,EAAE,KAAK,GAAG,EACzD6pE,EAAM,YAAc4hC,EAAW,IAAIzrG,GAAKA,EAAE,KAAK,EAAE,KAAK,GAAG,EAClD6pE,CACT,CACF,CACA,MAAM8hC,WAAc5I,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,QAAS,EAAI,EACnC,KAAK,MAAQzK,GAAgB/X,EAAW,MAAO,CAAC,OAAQ,cAAe,WAAY,WAAY,SAAS,CAAC,EACzG,KAAK,YAAcA,EAAW,aAAe,GAC7C,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,cAAe,WAAY,WAAY,SAAS,CAAC,EAC3G,KAAK,aAAeA,EAAW,cAAgB,GAC/C,KAAK,cAAgBA,EAAW,eAAiB,GACjD,KAAK,eAAiBA,EAAW,gBAAkB,GACnD,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,eAAiBA,EAAW,gBAAkB,GACnD,KAAK,eAAiBA,EAAW,gBAAkB,GACnD,KAAK,gBAAkBA,EAAW,iBAAmB,GACrD,KAAK,SAAW0X,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAChB,CACF,CACA,MAAMsmB,WAAmB7I,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,aAAc,EAAI,EACxC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,SAAW0X,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,OAAS6oG,EAAW,QAAU,GACnC,KAAK,WAAa+X,GAAgB/X,EAAW,WAAY,CAAC,OAAQ,cAAe,UAAU,CAAC,EAC5F,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAChB,CACF,CACA,MAAMumB,WAAoB9I,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,cAAe,EAAI,EACzC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,SAAW0X,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,OAAS6oG,EAAW,QAAU,GACnC,KAAK,WAAa+X,GAAgB/X,EAAW,WAAY,CAAC,OAAQ,cAAe,UAAU,CAAC,EAC5F,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAChB,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,YAAKnK,CAAM,EAAI,CAAA,EACR8E,GAAW,OACpB,CACF,CACA,MAAM8N,WAAe/I,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,UAAYzK,GAAgB/X,EAAW,UAAW,CAAC,WAAY,OAAQ,UAAW,MAAM,CAAC,EAC9F,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAChB,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CAExB,MAAM0I,EADS,KAAK7R,EAAU,EAAC,EACRA,EAAU,EAAC,EAC5B8R,EAAa,CACjB,KAAM,SACN,WAAY,CACV,GAAI,KAAKvP,EAAI,EACb,MAAO,CAAC,WAAW,EACnB,MAAO,CAAA,CACf,EACM,SAAU,CAAA,CAChB,EACI,UAAWwP,KAASF,EAAQ,MAAM,SAAU,CAC1C,GAAIE,EAAM,WAAa,SAAW,CAACA,EAAM,OACvC,SAEF,MAAMzW,EAAQnsG,GAAa4iH,EAAM,OAAOlT,EAAQ,CAAC,EACjD,GAAI,CAACvD,EACH,SAEF,MAAM0W,EAAOhF,GAAO1R,EAAM,GAAG,EACxB0W,GAGLF,EAAW,SAAS,KAAK,CACvB,KAAM,IACN,WAAY,CACV,GAAI,OAAS,KAAKvP,EAAI,EACtB,KAAAyP,EACA,UAAW1W,EAAM,UACjB,MAAO,CAAC,SAAS,EACjB,MAAO,CAAA,CACjB,EACQ,SAAU,CAAA,CAClB,CAAO,CACH,CACA,OAAOwI,GAAW,QAAQgO,CAAU,CACtC,CACF,CACA,MAAMG,WAAkBpJ,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,YAAa,EAAI,EACvC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,WAAY,QAAS,SAAU,SAAS,CAAC,EAC/F,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,QAAU,KACf,KAAK,OAAS,IAChB,CACF,CACA,MAAM8mB,WAAgBrJ,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,UAAY+X,GAAgB/X,EAAW,UAAW,CAAC,OAAQ,SAAU,SAAU,QAAS,KAAK,CAAC,EACnG,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAY,WAAW,CAAC,EACnG,KAAK,QAAU,KAAK,KAAKgY,GAAehY,EAAW,OAAO,CAAC,EAC3D,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,MAAQ,IACf,CACA,CAAC4W,EAAS,EAAEzkH,EAAO,CACjB+wH,GAAU,KAAM/wH,CAAK,CACvB,CACA,CAACmiH,EAAS,EAAEyJ,EAAgB,CAC1B,GAAI,CAAC,KAAKnK,CAAM,EAAG,CACjB,GAAI,CACF,MAAA52G,EACA,OAAAC,CACR,EAAU8gH,EACJ,OAAQ,KAAK,UAAS,CACpB,IAAK,OACL,IAAK,QACL,IAAK,SACH/gH,EAAQ,KAAK,SAAW,EAAIA,EAAQ,KAAK,QACzC,MACF,IAAK,MACL,IAAK,SACHC,EAAS,KAAK,SAAW,EAAIA,EAAS,KAAK,QAC3C,KACV,CACM,KAAK22G,CAAM,EAAIqM,GAAW,KAAM,CAC9B,MAAAjjH,CAEF,CAAC,CACH,CACA,OAAO,KAAK42G,CAAM,CACpB,CACA,CAACoD,EAAO,EAAE+G,EAAgB,CACxB,GAAI,CAAC,KAAK,MACR,OAAOrF,GAAW,MAEpB,KAAKrC,EAAS,EAAC,EACf,MAAMlkH,EAAQ,KAAK,MAAM6kH,EAAO,EAAE+G,CAAc,EAAE,KAClD,GAAI,CAAC5rH,EACH,YAAKikH,EAAQ,EAAC,EACPsC,GAAW,MAEpB,MAAMqO,EAAe,KAAK,QAC1B,GAAI,KAAK,SAAW,EAAG,CACrB,KAAM,CACJ,EAAAtzC,EACA,EAAA56D,CACR,EAAU,KAAKy7F,EAAS,EAAEyJ,CAAc,EAClC,OAAQ,KAAK,UAAS,CACpB,IAAK,OACL,IAAK,QACL,IAAK,SACH,KAAK,QAAUtqC,EACf,MACF,IAAK,MACL,IAAK,SACH,KAAK,QAAU56D,EACf,KACV,CACI,CACA,MAAMujG,EAAW,CAAA,EACb,OAAOjqH,GAAU,SACnBiqH,EAAS,KAAK,CACZ,KAAM,QACN,MAAAjqH,CACR,CAAO,EAEDiqH,EAAS,KAAKjqH,CAAK,EAErB,MAAMoyF,EAAQg8B,GAAQ,KAAM,OAAQ,SAAU,YAAY,EAC1D,OAAQ,KAAK,UAAS,CACpB,IAAK,OACL,IAAK,QACC,KAAK,QAAU,IACjBh8B,EAAM,MAAQo7B,GAAgB,KAAK,OAAO,GAE5C,MACF,IAAK,MACL,IAAK,SACC,KAAK,QAAU,IACjBp7B,EAAM,OAASo7B,GAAgB,KAAK,OAAO,GAE7C,KACR,CACI,OAAA2B,GAAQ,KAAM,KAAMnvH,CAAK,EACzB,KAAKikH,EAAQ,EAAC,EACd,KAAK,QAAU2Q,EACRrO,GAAW,QAAQ,CACxB,KAAM,MACN,WAAY,CACV,MAAAn0B,EACA,MAAO,CAAC,YAAY,CAC5B,EACM,SAAA63B,CACN,CAAK,CACH,CACF,CACA,MAAM4K,WAAoB1H,EAAa,CACrC,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,aAAa,EACnC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMinB,WAAqBxJ,CAAU,CACnC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,eAAgB,EAAI,EAC1C,KAAK,uBAAyBzK,GAAgB/X,EAAW,uBAAwB,CAAC,WAAY,UAAU,CAAC,EACzG,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,UAAYA,EAAW,WAAa,GACzC,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,WAAa,KAClB,KAAK,QAAU,KACf,KAAK,SAAW,KAChB,KAAK,KAAO,KACZ,KAAK,QAAU,KACf,KAAK,WAAa,IACpB,CACF,CACA,MAAMknB,WAAoBzJ,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,cAAe,EAAI,EACzC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,UAAW,QAAS,SAAU,QAAS,UAAW,SAAU,MAAM,CAAC,EACjH,KAAK,MAAQ+X,GAAgB/X,EAAW,MAAO,CAAC,SAAU,OAAO,CAAC,EAClE,KAAK,KAAOgY,GAAehY,EAAW,KAAM,MAAM,EAClD,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,OAAS,IAChB,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,MAAMx5B,EAAQg8B,GAAQ,KAAM,QAAQ,EAC9BvmG,EAAO2lG,GAAgB,KAAK,IAAI,EACtCp7B,EAAM,MAAQA,EAAM,OAASvqE,EAC7B,IAAItd,EACAuqG,EACAkgB,EACJ,MAAM5pD,EAAQ,KAAKq3C,EAAU,EAAC,EAAGA,EAAU,EAAC,EACtC75B,EAAQxd,EAAM,MAAM,SAAS,QAAUA,EAAM,MAAM,SAAS,CAAC,EAAEy5C,EAAO,EAAC,EAAG,MAAQ,CAAA,EAClFoQ,EAAgB,CACpB,IAAKrsC,EAAM,CAAC,IAAM,OAAYA,EAAM,CAAC,EAAI,MAAM,SAAQ,EACvD,KAAMA,EAAM,CAAC,IAAM,OAAYA,EAAM,CAAC,EAAI,OAAO,SAAQ,CAC/D,EAEUssC,GADQ9pD,EAAM,QAAQu5C,EAAK,EAAC,GAAM,SACdsQ,EAAc,IAAM,OACxCpL,EAAYz+C,EAAMo3C,EAAiB,EAAC,EACpC2S,EAAU/pD,EAAM45C,EAAI,EAC1B,IAAIoQ,EACAvL,aAAqBwL,IACvBL,EAAUnL,EAAU7E,EAAI,EACxBz6G,EAAO,QACPuqG,EAAY,WACZsgB,EAASvL,EAAUtI,EAAK,IAAIyD,EAAI,GAAK6E,EAAU7E,EAAI,IAEnDz6G,EAAO,WACPuqG,EAAY,cACZsgB,EAAShqD,EAAMm2C,EAAK,IAAIyD,EAAI,GAAK55C,EAAM45C,EAAI,GAE7C,MAAM7iF,EAAQ,CACZ,KAAM,QACN,WAAY,CACV,MAAO,CAAC2yE,CAAS,EACjB,MAAA1iB,EACA,QAAA+iC,EACA,OAAAC,EACA,KAAA7qH,EACA,QAAA2qH,EACA,MAAOD,EAAc,GACrB,OAAQA,EAAc,IACtB,aAActD,GAAUvmD,CAAK,EAC7B,gBAAiB,EACzB,CACA,EACI,OAAI4pD,IACF7yF,EAAM,WAAW,KAAO6yF,GAEtB5D,GAAWhmD,CAAK,IAClBjpC,EAAM,WAAW,eAAe,EAAI,GACpCA,EAAM,WAAW,SAAW,IAEvBokF,GAAW,QAAQ,CACxB,KAAM,QACN,WAAY,CACV,MAAO,CAAC,UAAU,CAC1B,EACM,SAAU,CAACpkF,CAAK,CACtB,CAAK,CACH,CACF,CACA,MAAMmzF,WAAmBhK,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,aAAc,EAAI,EACxC,KAAK,SAAWzK,GAAgB/X,EAAW,SAAU,CAAC,SAAU,MAAM,CAAC,EACvE,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,cAAe,SAAU,cAAe,SAAS,CAAC,EAChG,KAAK,UAAY0X,GAAW,CAC1B,KAAM1X,EAAW,UACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,OAAS,IAChB,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,MAAMx5B,EAAQg8B,GAAQ,KAAM,SAAU,QAAQ,EAExChjD,EADK,KAAKq3C,EAAU,EAAC,EACVA,EAAU,EAAC,EAEtB8S,EAAc,CAClB,SAAU,QAFKnqD,EAAM,MAAM,MAAQ,EAET,iCAChC,EACU6+C,EAAW,CAAA,EACjB,GAAI7+C,EAAM,MAAM,SAAS,OAAS,EAAG,CACnC,MAAMwd,EAAQxd,EAAM,MACpB,IAAIoqD,EAAiB,EACjBC,EAAY,EACZ7sC,EAAM,SAAS,SAAW,IAC5B4sC,EAAiB5sC,EAAM,SAAS,CAAC,EAAE,KACnC6sC,EAAY,EAAID,GAElB,MAAME,EAAY9sC,EAAM,SAAS4sC,CAAc,EAAE3Q,EAAO,EAAC,EAAG,KACtDx7G,EAASu/E,EAAM,SAAS6sC,CAAS,EAAE5Q,EAAO,EAAC,EAAG,KACpD,IAAI8Q,EAAW,GACf,MAAM31H,EAAQorE,EAAM,QAAQu5C,EAAK,EAAC,GAAM,GACxC,QAASvjH,EAAI,EAAGmF,EAAKmvH,EAAU,OAAQt0H,EAAImF,EAAInF,IAAK,CAClD,MAAMw0H,EAAS,CACb,KAAM,SACN,WAAY,CACV,MAAOvsH,EAAOjI,CAAC,GAAKs0H,EAAUt0H,CAAC,EAC/B,MAAOm0H,CACnB,EACU,MAAOG,EAAUt0H,CAAC,CAC5B,EACYiI,EAAOjI,CAAC,IAAMpB,IAChB41H,EAAO,WAAW,SAAWD,EAAW,IAE1C1L,EAAS,KAAK2L,CAAM,CACtB,CACKD,GACH1L,EAAS,OAAO,EAAG,EAAG,CACpB,KAAM,SACN,WAAY,CACV,OAAQ,GACR,SAAU,EACtB,EACU,MAAO,GACjB,CAAS,CAEL,CACA,MAAM4L,EAAmB,CACvB,MAAO,CAAC,WAAW,EACnB,QAASzqD,EAAM45C,EAAI,EACnB,OAAQ55C,EAAMm2C,EAAK,IAAIyD,EAAI,GAAK55C,EAAM45C,EAAI,EAC1C,MAAA5yB,EACA,aAAcu/B,GAAUvmD,CAAK,EAC7B,gBAAiB,EACvB,EACI,OAAIgmD,GAAWhmD,CAAK,IAClByqD,EAAiB,eAAe,EAAI,GACpCA,EAAiB,SAAW,IAE1B,KAAK,OAAS,gBAChBA,EAAiB,SAAW,IAEvBtP,GAAW,QAAQ,CACxB,KAAM,QACN,WAAY,CACV,MAAO,CAAC,UAAU,CAC1B,EACM,SAAU,CAAC,CACT,KAAM,SACN,SAAA0D,EACA,WAAY4L,CACpB,CAAO,CACP,CAAK,CACH,CACF,CACA,MAAMC,WAAcxK,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,QAAS,EAAI,EACnC,KAAK,OAASzK,GAAgB/X,EAAW,OAAQ,CAAC,MAAM,CAAC,EACzD,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,MAAQA,EAAW,MAAQwY,GAASxY,EAAW,KAAK,EAAI,GAC7D,KAAK,OAAS,IAChB,CACA,CAAC+U,EAAiB,GAAI,CACpB,MAAO,EACT,CACA,CAACmC,EAAQ,GAAI,CACX,OAAO,KAAK,MAAQjjH,GAAK,aAAa,KAAK,MAAM,EAAG,KAAK,MAAM,EAAG,KAAK,MAAM,CAAC,EAAI,IACpF,CACF,CACA,MAAMi0H,WAAazK,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,MAAM,EAC5B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,cAAgB0X,GAAW,CAC9B,KAAM1X,EAAW,cACjB,aAAc,EACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMmoB,WAAgB1K,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,WAAaxiB,EAAW,YAAc,GAC3C,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,MAAQ+X,GAAgB/X,EAAW,MAAO,CAAC,kBAAmB,aAAc,YAAY,CAAC,EAC9F,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,QAAU,IACjB,CACF,CACA,MAAMskB,WAAoB7G,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,cAAe,EAAI,EACzC,KAAK,EAAIxK,GAAehY,EAAW,CAAC,EACpC,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,SAAWuY,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,EAAIgY,GAAehY,EAAW,CAAC,EACpC,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,KAAO,KACZ,KAAK,OAAS,IAChB,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,MAAMn8E,EAAO+9E,GAAgB,KAAK,CAAC,EAC7BhwD,EAAMgwD,GAAgB,KAAK,CAAC,EAC5Bp7B,EAAQ,CACZ,KAAA3iD,EACA,IAAA+tB,EACA,MAAOgwD,GAAgB,KAAK,CAAC,EAC7B,OAAQA,GAAgB,KAAK,CAAC,CACpC,EACUmB,EAAa,CAAC,gBAAgB,EACpC,OAAIC,GAAY,IAAI,GAClBD,EAAW,KAAK,cAAc,EAEzBpI,GAAW,QAAQ,CACxB,KAAM,MACN,SAAU,CAAA,EACV,WAAY,CACV,MAAAn0B,EACA,MAAOu8B,EACP,GAAI,KAAK3J,EAAI,CACrB,CACA,CAAK,CACH,CACF,CACA,MAAMiR,WAAe3K,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,SAAW0X,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,KAAO4gH,GAAgB/X,EAAW,KAAM,CAAC,SAAU,OAAO,CAAC,EAChE,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAY,WAAW,CAAC,EACnG,KAAK,OAASgY,GAAehY,EAAW,MAAM,EAC9C,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,QAAS,UAAW,aAAc,SAAU,SAAU,WAAY,SAAU,UAAW,QAAQ,CAAC,EAClJ,KAAK,UAAYgY,GAAehY,EAAW,UAAW,OAAO,EAC7D,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,MAAQ,KACb,KAAK,OAAS,IAChB,CACA,CAACkX,EAAQ,GAAI,CACX,MAAM3yB,EAAQg8B,GAAQ,KAAM,YAAY,EACxC,OAAAh8B,EAAM,OAASo7B,GAAgB,KAAK,OAAS,SAAW,EAAI,KAAK,MAAM,EAChEp7B,CACT,CACF,CACA,MAAM8jC,WAAoBjJ,EAAc,CACtC,YAAYpf,EAAY,CACtB,MAAMwiB,GAAgB,MAAM,EAC5B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAAC6T,EAAS,GAAI,CACZ,MAAMrvG,EAAO,KAAKivG,EAAQ,EAAE,KAAI,EAChC,KAAKA,EAAQ,EAAIjvG,EAAO,IAAI,KAAKA,CAAI,EAAI,IAC3C,CACA,CAACwyG,EAAO,EAAE+G,EAAgB,CACxB,OAAOgG,GAAY,KAAKtQ,EAAQ,EAAI,KAAKA,EAAQ,EAAE,SAAQ,EAAK,EAAE,CACpE,CACF,CACA,MAAM6U,WAAiBlJ,EAAc,CACnC,YAAYpf,EAAY,CACtB,MAAMwiB,GAAgB,UAAU,EAChC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAAC6T,EAAS,GAAI,CACZ,MAAMrvG,EAAO,KAAKivG,EAAQ,EAAE,KAAI,EAChC,KAAKA,EAAQ,EAAIjvG,EAAO,IAAI,KAAKA,CAAI,EAAI,IAC3C,CACA,CAACwyG,EAAO,EAAE+G,EAAgB,CACxB,OAAOgG,GAAY,KAAKtQ,EAAQ,EAAI,KAAKA,EAAQ,EAAE,SAAQ,EAAK,EAAE,CACpE,CACF,CACA,MAAM8U,WAAqB9K,CAAU,CACnC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,eAAgB,EAAI,EAC1C,KAAK,cAAgBzK,GAAgB/X,EAAW,cAAe,CAAC,OAAQ,MAAO,IAAI,CAAC,EACpF,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,MAAM,CAAC,EACjE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,OAAS,IAChB,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,MAAMx5B,EAAQg8B,GAAQ,KAAM,SAAU,OAAQ,QAAQ,EAChDhjD,EAAQ,KAAKq3C,EAAU,EAAC,EAAGA,EAAU,EAAC,EACtCgE,EAAO,CACX,KAAM,QACN,WAAY,CACV,KAAM,OACN,QAASr7C,EAAM45C,EAAI,EACnB,OAAQ55C,EAAMm2C,EAAK,IAAIyD,EAAI,GAAK55C,EAAM45C,EAAI,EAC1C,MAAO,CAAC,cAAc,EACtB,MAAA5yB,EACA,aAAcu/B,GAAUvmD,CAAK,EAC7B,gBAAiB,EACzB,CACA,EACI,OAAIgmD,GAAWhmD,CAAK,IAClBq7C,EAAK,WAAW,eAAe,EAAI,GACnCA,EAAK,WAAW,SAAW,IAEtBF,GAAW,QAAQ,CACxB,KAAM,QACN,WAAY,CACV,MAAO,CAAC,UAAU,CAC1B,EACM,SAAU,CAACE,CAAI,CACrB,CAAK,CACH,CACF,CACA,MAAM4P,WAAgBpJ,EAAc,CAClC,YAAYpf,EAAY,CACtB,MAAMwiB,GAAgB,SAAS,EAC/B,KAAK,WAAa9K,GAAW,CAC3B,KAAM1X,EAAW,WACjB,aAAc,EACd,SAAU7oG,GAAK,EACrB,CAAK,EACD,KAAK,GAAK6oG,EAAW,IAAM,GAC3B,KAAK,WAAa0X,GAAW,CAC3B,KAAM1X,EAAW,WACjB,aAAc,GACd,SAAU7oG,GAAK,EACrB,CAAK,EACD,KAAK,KAAO6oG,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAAC6T,EAAS,GAAI,CACZ,MAAMhzG,EAAS,WAAW,KAAK4yG,EAAQ,EAAE,KAAI,CAAE,EAC/C,KAAKA,EAAQ,EAAI,MAAM5yG,CAAM,EAAI,KAAOA,CAC1C,CACA,CAACm2G,EAAO,EAAE+G,EAAgB,CACxB,OAAOgG,GAAY,KAAKtQ,EAAQ,IAAM,KAAO,KAAKA,EAAQ,EAAE,SAAQ,EAAK,EAAE,CAC7E,CACF,CACA,MAAMgV,WAAkBhL,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,YAAa,EAAI,EACvC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAChB,CACF,CACA,MAAM0oB,WAAajL,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,QAAU,IAAI6d,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,QAAU,IAAIA,EACnB,KAAK,OAAS,IAAIA,EAClB,KAAK,MAAQ,IAAIA,EACjB,KAAK,MAAQ,IAAIA,EACjB,KAAK,QAAU,IAAIA,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,KAAO,IAAIA,CAClB,CACF,CACA,MAAM8K,WAAqBtJ,EAAa,CACtC,YAAYrf,EAAY,CACtB,MAAMwiB,GAAgB,eAAgB,CAAC,GAAI,OAAQ,SAAU,SAAU,WAAW,CAAC,EACnF,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM4oB,WAAsBnL,CAAU,CACpC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,gBAAiB,EAAI,EAC3C,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,aAAe,IAAI6d,CAC1B,CACF,CACA,MAAMgL,WAAapL,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,WAAazK,GAAgB/X,EAAW,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,UAAU,CAAC,EACvL,KAAK,QAAU0X,GAAW,CACxB,KAAM1X,EAAW,QACjB,aAAc,EACd,SAAU,GAAK,GAAK,GAAK,IAAM,EACrC,CAAK,EACD,KAAK,EAAIA,EAAW,EAAIgY,GAAehY,EAAW,CAAC,EAAI,GACvD,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,OAAO,CAAC,EAC9G,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAY,WAAW,CAAC,EACnG,KAAK,SAAWuY,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,OAAS0X,GAAW,CACvB,KAAM1X,EAAW,OACjB,aAAc,EACd,SAAU7oG,GAAKA,EAAI,KAAO,CAChC,CAAK,EACD,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,EAAIA,EAAW,EAAIgY,GAAehY,EAAW,CAAC,EAAI,GACvD,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,QAAU,KACf,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,UAAY,KACjB,KAAK,GAAK,KACV,KAAK,MAAQ,KACb,KAAK,YAAc,IAAI6d,CACzB,CACA,CAACjH,EAAS,EAAEzkH,EAAO,CACjB+wH,GAAU,KAAM/wH,CAAK,CACvB,CACA,CAAC6kH,EAAO,EAAE+G,EAAgB,CAExB,GADAyF,GAAY,IAAI,EACZ,KAAK,WAAa,UAAY,KAAK,WAAa,WAClD,OAAO9K,GAAW,MAEpB2H,GAAc,IAAI,EAClB,KAAKhK,EAAS,EAAC,EACf,MAAMyS,EAAS,KAAK,EACdC,EAAS,KAAK,EACd,CACJ,EAAAt1C,EACA,EAAA56D,EACA,SAAAoiG,CACN,EAAQgF,GAAW,KAAMlC,CAAc,EACnC,GAAItqC,GAAK,KAAK,IAAM,GAAI,CACtB,GAAIwnC,GAAY,KAAKtG,EAAiB,EAAC,EAAGc,EAAiB,EAAC,EAC1D,YAAKW,EAAQ,EAAC,EACPsC,GAAW,QAEpB,KAAK,EAAIjlC,CACX,CAKA,GAJI56D,GAAK,KAAK,IAAM,KAClB,KAAK,EAAIA,GAEXmrG,GAAqB,IAAI,EACrB,CAAC3B,GAAgB,KAAMtE,CAAc,EACvC,YAAK,EAAI+K,EACT,KAAK,EAAIC,EACT,KAAK3S,EAAQ,EAAC,EACPsC,GAAW,QAEpBuL,GAAuB,IAAI,EAC3B,MAAM1/B,EAAQg8B,GAAQ,KAAM,OAAQ,SAAU,aAAc,WAAY,WAAY,SAAU,aAAc,SAAU,QAAQ,EAC9HT,GAAoB,KAAMv7B,CAAK,EAC3BA,EAAM,SACRA,EAAM,QAAUA,EAAM,OACtB,OAAOA,EAAM,QAEf,MAAMu8B,EAAa,CAAC,SAAS,EACzB,KAAK,MACPA,EAAW,KAAK,SAAS,EAEvBC,GAAY,IAAI,GAClBD,EAAW,KAAK,cAAc,EAEhC,MAAM9gB,EAAa,CACjB,MAAAzb,EACA,GAAI,KAAK4yB,EAAI,EACb,MAAO2J,CACb,EACQ,KAAK,OACP9gB,EAAW,QAAU,KAAK,MAE5B,MAAM4Y,EAAO,CACX,KAAM,MACN,WAAA5Y,EACA,SAAU,CAAA,CAChB,EACIyjB,GAAY,KAAMzjB,CAAU,EAC5B,MAAM11E,EAAO81F,GAAY,KAAMxH,EAAMmF,CAAc,EAC7C5rH,EAAQ,KAAK,MAAQ,KAAK,MAAM6kH,EAAO,EAAE+G,CAAc,EAAE,KAAO,KACtE,OAAI5rH,IAAU,MACZ,KAAK,EAAI22H,EACT,KAAK,EAAIC,EACT,KAAK3S,EAAQ,EAAC,EACPsC,GAAW,QAAQ+H,GAAc,KAAM7H,CAAI,EAAGtuF,CAAI,IAE3DsuF,EAAK,SAAS,KAAKzmH,CAAK,EACxBmvH,GAAQ,KAAM/8B,EAAOpyF,CAAK,EAC1B,KAAK,EAAI22H,EACT,KAAK,EAAIC,EACT,KAAK3S,EAAQ,EAAC,EACPsC,GAAW,QAAQ+H,GAAc,KAAM7H,CAAI,EAAGtuF,CAAI,EAC3D,CACF,CACA,MAAM46F,WAAazH,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,IAAMzK,GAAgB/X,EAAW,IAAK,CAAC,SAAU,OAAQ,OAAO,CAAC,EACtE,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAY,WAAW,CAAC,EACnG,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,QAAS,UAAW,aAAc,SAAU,SAAU,WAAY,SAAU,UAAW,QAAQ,CAAC,EAClJ,KAAK,UAAYgY,GAAehY,EAAW,UAAW,OAAO,EAC7D,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,MAAQ,KACb,KAAK,OAAS,IAChB,CACA,CAACkX,EAAQ,GAAI,CACX,MAAM3yB,EAAQg8B,GAAQ,KAAM,YAAY,EAOxC,GANA,OAAO,OAAOh8B,EAAO,CACnB,QAAS,KAAK,IACd,MAAOo7B,GAAgB,KAAK,SAAS,EACrC,MAAO,KAAK,MAAQ,KAAK,MAAMzI,EAAQ,EAAC,EAAK,UAC7C,MAAO,EACb,CAAK,EACG,KAAK,WAAa,UACpB3yB,EAAM,MAAQ,WAEd,QAAQ,KAAK,OAAM,CACjB,IAAK,QACHA,EAAM,MAAQ,QACd,MACF,IAAK,UACHA,EAAM,MAAQ,SACd,MACF,IAAK,aACHA,EAAM,MAAQ,SACd,MACF,IAAK,SACHA,EAAM,MAAQ,SACd,MACF,IAAK,SACHA,EAAM,MAAQ,SACd,MACF,IAAK,WACHA,EAAM,MAAQ,QACd,MACF,IAAK,SACHA,EAAM,MAAQ,SACd,MACF,IAAK,UACHA,EAAM,MAAQ,QACd,MACF,IAAK,SACHA,EAAM,MAAQ,SACd,KACV,CAEI,OAAOA,CACT,CACF,CACA,MAAMykC,WAAiB3J,EAAa,CAClC,YAAYrf,EAAY,CACtB,MAAMwiB,GAAgB,WAAY,CAAC,qBAAsB,sBAAuB,iBAAiB,CAAC,EAClG,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMipB,WAAkBxL,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,YAAa,EAAI,EACvC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,SAAW,IAAI6d,CACtB,CACF,CACA,MAAMqL,WAAgBzL,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,YAAc,IACrB,CACF,CACA,MAAMmpB,WAAoB1L,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,cAAe,EAAI,EACzC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,UAAY+X,GAAgB/X,EAAW,UAAW,CAAC,UAAW,SAAS,CAAC,EAC7E,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,SAAW,IAClB,CACF,CACA,MAAMopB,WAAmB3L,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,aAAc,EAAI,EACxC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,YAAc,IAAI6d,CACzB,CACF,CACA,MAAMwL,WAAyBhK,EAAa,CAC1C,YAAYrf,EAAY,CACtB,MAAMwiB,GAAgB,mBAAoB,CAAC,GAAI,aAAc,gBAAiB,aAAc,YAAY,CAAC,EACzG,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMspB,WAA0B7L,CAAU,CACxC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,oBAAqB,EAAI,EAC/C,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,iBAAmB,IAAI6d,CAC9B,CACF,CACA,MAAM0L,WAAc9L,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,QAAS,EAAI,EACnC,KAAK,SAAWzK,GAAgB/X,EAAW,SAAU,CAAC,QAAS,SAAU,WAAY,WAAY,QAAS,OAAQ,OAAQ,cAAe,aAAc,YAAa,aAAc,YAAa,UAAW,cAAe,WAAY,YAAa,WAAY,WAAY,aAAc,aAAc,UAAW,WAAY,UAAW,UAAW,YAAa,QAAS,iBAAiB,CAAC,EAC3X,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,UAAW,mBAAmB,CAAC,EACjF,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,YAAc,KACnB,KAAK,QAAU,KACf,KAAK,OAAS,KACd,KAAK,SAAW,KAChB,KAAK,OAAS,IAChB,CACF,CACA,MAAMwpB,WAAepK,EAAc,CACjC,YAAYpf,EAAY,CACtB,MAAMwiB,GAAgB,QAAQ,EAC9B,KAAK,YAAcxiB,EAAW,aAAe,GAC7C,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,UAAY0X,GAAW,CAC1B,KAAM1X,EAAW,UACjB,aAAc,GACd,SAAU7oG,GAAKA,GAAK,EAC1B,CAAK,EACD,KAAK,KAAO6oG,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,iBAAmB+X,GAAgB/X,EAAW,iBAAkB,CAAC,OAAQ,SAAU,SAAS,CAAC,EAClG,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAACmV,EAAW,GAAI,CACd,OAAO,KAAK,cAAgB,WAC9B,CACA,CAACa,EAAQ,EAAE/U,EAAO,CAChB,OAAI,KAAK,cAAgB,aAAeA,EAAM4U,EAAY,IAAMwB,GAAa,MAAM,IACjF,KAAK5D,EAAQ,EAAIxS,EACV,IAEL,KAAK,cAAgB,YACvB,KAAKwS,EAAQ,EAAIxS,EACV,IAEF,EACT,CACA,CAAC+V,EAAO,EAAE+G,EAAgB,CACxB,OAAI,KAAK,cAAgB,aAAe,CAAC,KAAKtK,EAAQ,EAC7CiF,GAAW,MAEb,KAAKjF,EAAQ,EAAEuD,EAAO,EAAE+G,CAAc,CAC/C,CACF,CACA,MAAM0L,WAAiBhM,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,WAAY,EAAI,EACtC,KAAK,QAAUxiB,EAAW,SAAW,GACrC,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,SAAWA,EAAW,UAAY,GACvC,KAAK,SAAWA,EAAW,UAAY,GACvC,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,QAAU,IAAI6d,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,QAAU,IAAIA,EACnB,KAAK,OAAS,IAAIA,EAClB,KAAK,SAAW,IAAIA,EACpB,KAAK,MAAQ,IAAIA,EACjB,KAAK,MAAQ,IAAIA,EACjB,KAAK,QAAU,IAAIA,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,KAAO,IAAIA,CAClB,CACF,CACA,MAAM2J,WAAkB/J,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,YAAa,EAAI,EACvC,KAAK,OAASzK,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,iBAAkB,YAAa,UAAU,CAAC,EACpG,KAAK,UAAYA,EAAW,WAAa,GACzC,KAAK,WAAa+X,GAAgB/X,EAAW,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,UAAU,CAAC,EACvL,KAAK,QAAU0X,GAAW,CACxB,KAAM1X,EAAW,QACjB,aAAc,EACd,SAAU,GAAK,GAAK,GAAK,IAAM,EACrC,CAAK,EACD,KAAK,EAAIA,EAAW,EAAIgY,GAAehY,EAAW,CAAC,EAAI,GACvD,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,OAAO,CAAC,EAC9G,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,WAAY,QAAS,SAAU,QAAS,MAAO,QAAS,IAAI,CAAC,EAC/G,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAY,WAAW,CAAC,EACnG,KAAK,SAAWuY,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,EAAIA,EAAW,EAAIgY,GAAehY,EAAW,CAAC,EAAI,GACvD,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,UAAY,KACjB,KAAK,QAAU,KACf,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,UAAY,KACjB,KAAK,SAAW,KAChB,KAAK,QAAU,IAAI6d,EACnB,KAAK,MAAQ,IAAIA,EACjB,KAAK,MAAQ,IAAIA,EACjB,KAAK,YAAc,IAAIA,CACzB,CACA,CAACzI,EAAW,GAAI,CACd,MAAO,EACT,CACA,CAACL,EAAiB,GAAI,CACpB,MAAO,EACT,CACA,CAAC6B,EAAS,EAAEzkH,EAAO,CACjB,UAAWorE,KAAS,KAAK,MAAM,SAAU,CACvC,GAAI,CAACA,EAAM,MAAO,CAChB,MAAMwjC,EAAY,IAAIqiB,GAAM,EAAE,EAC9B7lD,EAAM21C,EAAY,EAAEnS,CAAS,EAC7BxjC,EAAM,MAAQwjC,CAChB,CACAxjC,EAAM,MAAMq5C,EAAS,EAAEzkH,CAAK,CAC9B,CACF,CACA,CAACsjH,EAAiB,GAAI,CACpB,OAAO,KAAK,OAAO,SAAS,KAAK,GAAK,KAAK7B,CAAM,EAAE,UAAY,GAAK,KAAKA,CAAM,EAAE,aAAe,GAAK,KAAKgB,EAAU,EAAC,EAAGa,EAAiB,EAAC,CAC5I,CACA,CAACD,EAAa,GAAI,CAChB,MAAMx5G,EAAS,KAAK24G,EAAiB,EAAC,EACtC,OAAK34G,EAAOw5G,EAAa,IAGrB,KAAK5B,CAAM,EAAE,gBAAkB,OAC1B,KAAKA,CAAM,EAAE,cAElB,KAAK,SAAW,YAAc,KAAK,OAAO,SAAS,KAAK,GAC1D,KAAKA,CAAM,EAAE,cAAgB,GACtB,IAEL53G,EAAO,QAAQ,SAAS,KAAK,GAAKA,EAAO43G,CAAM,EAAE,eAAiB,EAC7D,IAET,KAAKA,CAAM,EAAE,cAAgB,GACtB,IAbE,EAcX,CACA,CAACE,EAAU,GAAI,CACb,OAAOgO,GAAU,IAAI,CACvB,CACA,CAAC7O,EAAQ,EAAE2F,EAAMtuF,EAAM,CACrB03F,GAAQ,KAAMpJ,EAAMtuF,CAAI,CAC1B,CACA,CAAC2pF,EAAkB,GAAI,CACrB,OAAOgO,GAAkB,IAAI,CAC/B,CACA,CAACjL,EAAO,EAAE+G,EAAgB,CAExB,GADAyF,GAAY,IAAI,EACZ,KAAK,WAAa,UAAY,KAAK,WAAa,YAAc,KAAK,IAAM,GAAK,KAAK,IAAM,EAC3F,OAAO9K,GAAW,MAEpB2H,GAAc,IAAI,EAClB,MAAMjE,EAAW,CAAA,EACXpc,EAAa,CACjB,GAAI,KAAKmX,EAAI,EACb,MAAO,CAAA,CACb,EACIiK,GAAU,KAAMphB,EAAW,KAAK,EAChC,KAAK4T,CAAM,IAAM,OAAO,OAAO,IAAI,EACnC,OAAO,OAAO,KAAKA,CAAM,EAAG,CAC1B,SAAAwI,EACA,WAAApc,EACA,QAAS,EACT,KAAM,KACN,aAAc,EACd,eAAgB,CACd,MAAO,KAAK,IAAI,KAAK,GAAK,IAAU+d,EAAe,KAAK,EACxD,OAAQ,KAAK,IAAI,KAAK,GAAK,IAAUA,EAAe,MAAM,CAClE,EACM,MAAO,EACP,OAAQ,EACR,WAAY,EACZ,aAAc,CACpB,CAAK,EACD,MAAM2L,EAAe,KAAKlU,EAAa,EAAC,EAIxC,GAHKkU,GACH1F,GAAqB,IAAI,EAEvB,CAAC3B,GAAgB,KAAMtE,CAAc,EACvC,OAAOrF,GAAW,QAEpB,MAAMlhE,EAAS,IAAI,IAAI,CAAC,OAAO,CAAC,EAChC,GAAI,KAAK,OAAO,SAAS,KAAK,EAAG,CAC/B,MAAMmyE,EAAe,KAAKhV,EAAiB,EAAC,EAAG,aAC3C,MAAM,QAAQgV,CAAY,GAAKA,EAAa,OAAS,IACvD,KAAK/V,CAAM,EAAE,aAAe+V,EAC5B,KAAK/V,CAAM,EAAE,cAAgB,EAEjC,CACA,MAAMrvB,EAAQg8B,GAAQ,KAAM,aAAc,aAAc,WAAY,WAAY,SAAU,SAAU,QAAQ,EACtGO,EAAa,CAAC,cAAc,EAC5B9uF,EAAKsuF,GAAY,IAAI,EACvBtuF,GACF8uF,EAAW,KAAK9uF,CAAE,EAEhB+uF,GAAY,IAAI,GAClBD,EAAW,KAAK,cAAc,EAEhC9gB,EAAW,MAAQzb,EACnByb,EAAW,MAAQ8gB,EACf,KAAK,OACP9gB,EAAW,QAAU,KAAK,MAE5B,KAAKqW,EAAS,EAAC,EACf,MAAMuT,EAAS,KAAK,SAAW,SAAW,KAAK,SAAW,QACpDC,EAASD,EAASnH,GAA+B,EACvD,KAAO,KAAK7O,CAAM,EAAE,QAAUiW,EAAQ,KAAKjW,CAAM,EAAE,UAAW,CACxDgW,GAAU,KAAKhW,CAAM,EAAE,UAAY6O,GAA+B,IACpE,KAAK7O,CAAM,EAAE,aAAe,GAE9B,MAAMrzG,EAAS,KAAK4yG,EAAe,EAAE,CACnC,OAAA37D,EACA,QAAS,EACjB,CAAO,EACD,GAAIj3C,EAAO,QACT,MAEF,GAAIA,EAAO,UACT,YAAK61G,EAAQ,EAAC,EACP71G,EAET,GAAIqpH,GAAU,KAAKhW,CAAM,EAAE,UAAY,GAAK,KAAKA,CAAM,EAAE,eAAiB,GAAK,CAAC,KAAKiB,EAAgB,EAAC,EAAGjB,CAAM,EAAE,gBAAiB,CAChI,KAAKA,CAAM,EAAE,QAAUiW,EACvB,KACF,CACF,CAKA,GAJA,KAAKzT,EAAQ,EAAC,EACTsT,GACHzF,GAAuB,IAAI,EAEzB,KAAKrQ,CAAM,EAAE,UAAYiW,EAC3B,OAAKH,GACH,OAAO,KAAK9V,CAAM,EAEb8E,GAAW,QAEpB,IAAIwH,EAAU,EACVC,EAAU,EACV,KAAK,SACPD,EAAU,KAAK,OAAO,UAAY,KAAK,OAAO,WAC9CC,EAAU,KAAK,OAAO,SAAW,KAAK,OAAO,aAE/C,MAAMnjH,EAAQ,KAAK,IAAI,KAAK42G,CAAM,EAAE,MAAQsM,EAAS,KAAK,GAAK,CAAC,EAC1DjjH,EAAS,KAAK,IAAI,KAAK22G,CAAM,EAAE,OAASuM,EAAS,KAAK,GAAK,CAAC,EAC5D71F,EAAO,CAAC,KAAK,EAAG,KAAK,EAAGttB,EAAOC,CAAM,EACvC,KAAK,IAAM,KACbsnF,EAAM,MAAQo7B,GAAgB3iH,CAAK,GAEjC,KAAK,IAAM,KACbunF,EAAM,OAASo7B,GAAgB1iH,CAAM,GAEvC,MAAM27G,EAAO,CACX,KAAM,MACN,WAAA5Y,EACA,SAAAoc,CACN,EACI,OAAAqH,GAAY,KAAMzjB,CAAU,EAC5B,OAAO,KAAK4T,CAAM,EACX8E,GAAW,QAAQ+H,GAAc,KAAM7H,CAAI,EAAGtuF,CAAI,CAC3D,CACF,CACA,MAAMw/F,WAAgBrM,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAS,EAC/B,KAAK,WAAaxiB,EAAW,YAAc,GAC3C,KAAK,YAAc+X,GAAgB/X,EAAW,YAAa,CAAC,SAAU,SAAS,CAAC,EAChF,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,MAAQ+X,GAAgB/X,EAAW,MAAO,CAAC,SAAU,OAAQ,QAAQ,CAAC,EAC3E,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM+pB,WAAetM,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,QAAU,IAAI6d,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,QAAU,IAAIA,EACnB,KAAK,OAAS,IAAIA,EAClB,KAAK,OAAS,IAAIA,EAClB,KAAK,MAAQ,IAAIA,EACjB,KAAK,MAAQ,IAAIA,EACjB,KAAK,QAAU,IAAIA,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,KAAO,IAAIA,CAClB,CACF,CACA,MAAMmM,WAAcvM,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,QAAS,EAAI,EACnC,KAAK,OAASzK,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,iBAAkB,YAAa,UAAU,CAAC,EACpG,KAAK,UAAYA,EAAW,WAAa,GACzC,KAAK,WAAa+X,GAAgB/X,EAAW,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,UAAU,CAAC,EACvL,KAAK,QAAU0X,GAAW,CACxB,KAAM1X,EAAW,QACjB,aAAc,EACd,SAAU,GAAK,GAAK,GAAK,IAAM,EACrC,CAAK,EACD,KAAK,EAAIA,EAAW,EAAIgY,GAAehY,EAAW,CAAC,EAAI,GACvD,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,OAAO,CAAC,EAC9G,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAY,WAAW,CAAC,EACnG,KAAK,SAAWuY,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,OAAS0X,GAAW,CACvB,KAAM1X,EAAW,OACjB,aAAc,EACd,SAAU7oG,GAAKA,EAAI,KAAO,CAChC,CAAK,EACD,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,EAAIA,EAAW,EAAIgY,GAAehY,EAAW,CAAC,EAAI,GACvD,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,UAAY,KACjB,KAAK,QAAU,KACf,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,MAAQ,IAAI6d,EAAe,CAAC,EACjC,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,UAAY,KACjB,KAAK,GAAK,KACV,KAAK,SAAW,KAChB,KAAK,MAAQ,KACb,KAAK,UAAY,IAAIA,EACrB,KAAK,QAAU,IAAIA,EACnB,KAAK,MAAQ,IAAIA,EACjB,KAAK,YAAc,IAAIA,CACzB,CACA,CAACzI,EAAW,GAAI,CACd,MAAO,EACT,CACA,CAACwB,EAAS,EAAEzkH,EAAO,CACjB+wH,GAAU,KAAM/wH,CAAK,CACvB,CACA,CAAC6kH,EAAO,EAAE+G,EAAgB,CAExB,GADAyF,GAAY,IAAI,EACZ,CAAC,KAAK,GAAI,CACZ,KAAK,GAAK,IAAIyG,GAAG,EAAE,EACnB,KAAK,GAAGnV,EAAW,EAAI,KAAKA,EAAW,EACvC,KAAK5B,EAAY,EAAE,KAAK,EAAE,EAC1B,IAAIx0F,EACJ,OAAQ,KAAK,MAAM,SAAS,OAAM,CAChC,IAAK,GACHA,EAAO,IAAIwrG,GAAS,EAAE,EACtB,KAAK,GAAG,SAAWxrG,EACnB,MACF,IAAK,GACHA,EAAO,IAAIwoG,GAAY,EAAE,EACzB,KAAK,GAAG,YAAcxoG,EACtB,MACF,IAAK,GACHA,EAAO,IAAI+oG,GAAW,EAAE,EACxB,KAAK,GAAG,WAAa/oG,EACrB,KACV,CACM,KAAK,GAAGw0F,EAAY,EAAEx0F,CAAI,CAC5B,CACA,GAAI,CAAC,KAAK,IAAM,KAAK,WAAa,UAAY,KAAK,WAAa,YAAc,KAAK,IAAM,GAAK,KAAK,IAAM,EACvG,OAAOg6F,GAAW,MAEhB,KAAK,SACP,OAAO,KAAK,QAAQ9E,CAAM,EAE5B,KAAKyC,EAAS,EAAC,EACf,MAAM8T,EAAU,KAAK,QAAU,KAAK,QAAQnT,EAAO,EAAE+G,CAAc,EAAE,KAAO,KACtE+K,EAAS,KAAK,EACdC,EAAS,KAAK,EACpB,IAAI7I,EAAU,EACVC,EAAU,EACV,KAAK,SACPD,EAAU,KAAK,OAAO,UAAY,KAAK,OAAO,WAC9CC,EAAU,KAAK,OAAO,SAAW,KAAK,OAAO,aAE/C,IAAIiK,EAAa,KACjB,GAAI,KAAK,IAAM,IAAM,KAAK,IAAM,GAAI,CAClC,IAAIptH,EAAQ,KACRC,EAAS,KACTotH,EAAM,EACNC,EAAM,EACV,GAAI,KAAK,GAAG,YACVD,EAAMC,EAAM,KAAK,GAAG,YAAY,SAC3B,CACL,KAAM,CACJ,EAAA72C,EACA,EAAA56D,CACV,EAAYonG,GAAW,KAAMlC,CAAc,EAC/BtqC,IAAM,MACR42C,EAAM52C,EACN62C,EAAMzxG,GAENyxG,EAAM9Q,GAAiB,KAAK,KAAM,EAAI,EAAE,SAE5C,CAIA,GAHA4Q,EAAarH,GAAc,KAAK,GAAGzO,EAAS,EAAC,CAAE,EAC/C+V,GAAOD,EAAW,EAClBE,GAAOF,EAAW,EACd,KAAK,QAAS,CAChB,KAAM,CACJ,EAAA32C,EACA,EAAA56D,EACA,SAAAoiG,CACV,EAAY,KAAK,QAAQ3G,EAAS,EAAEyJ,CAAc,EAC1C,GAAI9C,GAAY,KAAKtG,EAAiB,EAAC,EAAGc,EAAiB,EAAC,EAC1D,YAAKW,EAAQ,EAAC,EACPsC,GAAW,QAIpB,OAFA17G,EAAQy2E,EACRx2E,EAAS4b,EACD,KAAK,QAAQ,UAAS,CAC5B,IAAK,OACL,IAAK,QACL,IAAK,SACH7b,GAASqtH,EACT,MACF,IAAK,MACL,IAAK,SACHptH,GAAUqtH,EACV,KACZ,CACM,MACEttH,EAAQqtH,EACRptH,EAASqtH,EAEPttH,GAAS,KAAK,IAAM,KACtBA,GAASkjH,EACT,KAAK,EAAI,KAAK,IAAI,KAAK,MAAQ,EAAI,IAAW,KAAK,KAAM,KAAK,KAAO,EAAIljH,EAAQA,EAAQ,KAAK,IAAI,GAEhGC,GAAU,KAAK,IAAM,KACvBA,GAAUkjH,EACV,KAAK,EAAI,KAAK,IAAI,KAAK,MAAQ,EAAI,IAAW,KAAK,KAAM,KAAK,KAAO,EAAIljH,EAASA,EAAS,KAAK,IAAI,EAExG,CAIA,GAHA,KAAKm5G,EAAQ,EAAC,EACdiK,GAAc,IAAI,EAClB2D,GAAqB,IAAI,EACrB,CAAC3B,GAAgB,KAAMtE,CAAc,EACvC,YAAK,EAAI+K,EACT,KAAK,EAAIC,EACT,KAAK3S,EAAQ,EAAC,EACPsC,GAAW,QAEpBuL,GAAuB,IAAI,EAC3B,MAAM1/B,EAAQg8B,GAAQ,KAAM,OAAQ,aAAc,WAAY,SAAU,aAAc,WAAY,SAAU,QAAQ,EACpHT,GAAoB,KAAMv7B,CAAK,EAC/B,MAAMu8B,EAAa,CAAC,UAAU,EAC1B,KAAK,MACPA,EAAW,KAAK,SAAS,EAEvBC,GAAY,IAAI,GAClBD,EAAW,KAAK,cAAc,EAEhC,MAAM9gB,EAAa,CACjB,MAAAzb,EACA,GAAI,KAAK4yB,EAAI,EACb,MAAO2J,CACb,EACQv8B,EAAM,SACRA,EAAM,QAAUA,EAAM,OACtB,OAAOA,EAAM,QAEf68B,GAAU,KAAMN,CAAU,EACtB,KAAK,OACP9gB,EAAW,QAAU,KAAK,MAE5B,MAAMoc,EAAW,CAAA,EACXxD,EAAO,CACX,KAAM,MACN,WAAA5Y,EACA,SAAAoc,CACN,EACIqH,GAAY,KAAMzjB,CAAU,EAC5B,MAAMuqB,EAAc,KAAK,OAAS,KAAK,OAAOrT,EAAQ,EAAC,EAAK,KACtD5sF,EAAO81F,GAAY,KAAMxH,EAAMmF,CAAc,EAC7CyM,EAAK,KAAK,GAAGxT,EAAO,EAAC,EAAG,KAC9B,GAAI,CAACwT,EACH,cAAO,OAAOjmC,EAAOgmC,CAAW,EACzB7R,GAAW,QAAQ+H,GAAc,KAAM7H,CAAI,EAAGtuF,CAAI,EAEvD,KAAKusF,EAAS,IACZ2T,EAAG,WAAW,CAAC,EACjBA,EAAG,SAAS,CAAC,EAAE,WAAW,SAAW,KAAK3T,EAAS,EAEnD2T,EAAG,WAAW,SAAW,KAAK3T,EAAS,GAG3C2T,EAAG,WAAW,QAAU,OAAO,OAAO,IAAI,EAC1C,IAAIC,EAAW,KAUf,GATI,KAAK,GAAG,QACND,EAAG,SAAS,SAAW,IACzB,CAACC,CAAQ,EAAID,EAAG,SAAS,OAAO,EAAG,CAAC,GAEtC,OAAO,OAAOA,EAAG,WAAW,MAAOD,CAAW,GAE9C,OAAO,OAAOhmC,EAAOgmC,CAAW,EAElCnO,EAAS,KAAKoO,CAAE,EACZ,KAAK,OACP,GAAI,KAAK,GAAG,UACVA,EAAG,SAAS,KAAK,KAAK,MAAMxT,EAAO,EAAC,EAAG,IAAI,UAClC,CAAC,KAAK,GAAG,OAAQ,CAC1B,IAAI7kH,EAAQ,GACZ,GAAI,KAAK,MAAM,OACbA,EAAQ,KAAK,MAAM,OAAO2kH,EAAK,EAAC,UACvB,KAAK,MAAM,KACpB3kH,EAAQ,KAAK,MAAM,KAAKmiH,EAAS,EAAC,MAC7B,CACL,MAAMoW,EAAY,KAAK,MAAM1T,EAAO,EAAC,EAAG,KACpC0T,IAAc,OAChBv4H,EAAQu4H,EAAU,SAAS,CAAC,EAAE,MAElC,CACI,KAAK,GAAG,UAAY,KAAK,MAAM,MAAM,WACvCF,EAAG,SAAS,CAAC,EAAE,WAAW,UAAY,KAAK,MAAM,KAAK,UAEpDr4H,IACE,KAAK,GAAG,cACVA,EAAQ,WAAWA,CAAK,EACxBA,EAAQ,MAAMA,CAAK,EAAI,GAAKA,EAAM,SAAQ,GAExCq4H,EAAG,SAAS,CAAC,EAAE,OAAS,WAC1BA,EAAG,SAAS,CAAC,EAAE,WAAW,YAAcr4H,EAExCq4H,EAAG,SAAS,CAAC,EAAE,WAAW,MAAQr4H,EAGxC,EAEF,GAAI,CAAC,KAAK,GAAG,WAAaq4H,EAAG,WAAW,CAAC,GAAK,KAAK,EAAG,CACpDJ,IAAerH,GAAc,KAAK,GAAGzO,EAAS,EAAC,CAAE,EACjD,IAAIqW,EAAgB,EACpB,GAAI,KAAK,SAAW,CAAC,MAAO,QAAQ,EAAE,SAAS,KAAK,QAAQ,SAAS,EAAG,CACtEA,EAAgB,KAAK,QAAQ,QACzBA,GAAiB,IACnBA,EAAgB,KAAK,QAAQrW,EAAS,EAAEyJ,CAAc,EAAE,GAE1D,MAAM6M,EAAc,KAAK,EAAID,EAAgBxK,EAAUiK,EAAW,EAClEI,EAAG,SAAS,CAAC,EAAE,WAAW,MAAM,OAAS7K,GAAgBiL,CAAW,CACtE,MACEJ,EAAG,SAAS,CAAC,EAAE,WAAW,MAAM,OAAS,MAE7C,CAIA,GAHIC,GACFD,EAAG,SAAS,KAAKC,CAAQ,EAEvB,CAACN,EACH,OAAIK,EAAG,WAAW,OAChBA,EAAG,WAAW,MAAM,KAAK,SAAS,EAEpC,KAAK,EAAI1B,EACT,KAAK,EAAIC,EACFrQ,GAAW,QAAQ+H,GAAc,KAAM7H,CAAI,EAAGtuF,CAAI,EAE3D,GAAI,KAAK,GAAG,OACV,OAAIi6D,EAAM,SACR,OAAOA,EAAM,QAEX4lC,EAAQ,OAAS,QACnBA,EAAQ,KAAO,QAEjBK,EAAG,SAAS,KAAKL,CAAO,EACjBzR,GAAW,QAAQE,EAAMtuF,CAAI,EAMtC,OALW,KAAK,GAAG,cACjB6/F,EAAQ,WAAW,MAAM,CAAC,EAAI,4BAEhCK,EAAG,WAAW,QAAU,CAAA,EACxBA,EAAG,SAAS,OAAO,EAAG,EAAGL,CAAO,EACxB,KAAK,QAAQ,UAAS,CAC5B,IAAK,OACHK,EAAG,WAAW,MAAM,KAAK,SAAS,EAClC,MACF,IAAK,QACHA,EAAG,WAAW,MAAM,KAAK,UAAU,EACnC,MACF,IAAK,MACHA,EAAG,WAAW,MAAM,KAAK,QAAQ,EACjC,MACF,IAAK,SACHA,EAAG,WAAW,MAAM,KAAK,WAAW,EACpC,MACF,IAAK,SACHA,EAAG,WAAW,MAAM,KAAK,SAAS,EAClC,KACR,CACI,YAAK,EAAI1B,EACT,KAAK,EAAIC,EACFrQ,GAAW,QAAQ+H,GAAc,KAAM7H,CAAI,EAAGtuF,CAAI,CAC3D,CACF,CACA,MAAMugG,WAAapN,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAY,WAAW,CAAC,EACnG,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,MAAQ,KACb,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,QAAU,KACf,KAAK,OAAS,KACd,KAAK,MAAQ,KACb,KAAK,QAAU,IACjB,CACA,CAACkX,EAAQ,GAAI,CACX,MAAMl7G,EAAS,KAAK44G,EAAU,EAAC,EAEzBkW,EADU9uH,EAAO44G,EAAU,EAAC,EACTA,EAAU,EAAC,EAC9BrwB,EAAQ,OAAO,OAAO,IAAI,EAChC,IAAIwmC,EAAW,QACXC,EAAcD,EACd/uH,aAAkBgqH,KACpB+E,EAAW,mBACXC,EAAc,aACVF,aAAoBb,KACtB1lC,EAAM,gBAAkB,WAGxBvoF,aAAkBivH,IAAajvH,aAAkBgpH,MACnD+F,EAAWC,EAAc,OACzBzmC,EAAM,KAAO,SAEf,UAAWhyF,KAAQ,OAAO,oBAAoB,IAAI,EAAG,CACnD,GAAIA,IAAS,UAAYA,IAAS,QAChC,SAEF,MAAMN,EAAM,KAAKM,CAAI,EACrB,GAAI,EAAEN,aAAewrH,GACnB,SAEF,MAAMpvG,EAAQpc,EAAIilH,EAAQ,EAAE,KAAK,KAAK,EACtC,OAAI7oG,IACFk2E,EAAMl2E,EAAM,WAAW,GAAG,EAAI08G,EAAWC,CAAW,EAAI38G,GAEnDk2E,CACT,CACA,GAAI,KAAK,OAAO,MAAO,CACrB,MAAMl2E,EAAQ,KAAK,MAAM6oG,EAAQ,EAAC,EAClC3yB,EAAMl2E,EAAM,WAAW,GAAG,EAAI08G,EAAWC,CAAW,EAAI38G,CAC1D,CACA,OAAOk2E,CACT,CACF,CACA,MAAM2mC,WAAezN,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,kBAAoBzK,GAAgB/X,EAAW,kBAAmB,CAAC,GAAI,WAAY,WAAY,MAAM,CAAC,EAC3G,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,QAAU0X,GAAW,CACxB,KAAM,KAAK,QACX,aAAc,EACd,SAAUvgH,GAAKA,GAAK,GAAKA,GAAK,CACpC,CAAK,EACD,KAAK,iBAAmB,KACxB,KAAK,aAAe,KACpB,KAAK,cAAgB,KACrB,KAAK,UAAY,KACjB,KAAK,kBAAoB,KACzB,KAAK,QAAU,KACf,KAAK,aAAe,KACpB,KAAK,IAAM,KACX,KAAK,QAAU,KACf,KAAK,UAAY,IACnB,CACF,CACA,MAAMg0H,WAAc/L,EAAc,CAChC,YAAYpf,EAAY,CACtB,MAAMwiB,GAAgB,OAAO,EAC7B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAAC6T,EAAS,GAAI,CACZ,MAAMhzG,EAAS,WAAW,KAAK4yG,EAAQ,EAAE,KAAI,CAAE,EAC/C,KAAKA,EAAQ,EAAI,MAAM5yG,CAAM,EAAI,KAAOA,CAC1C,CACA,CAACm2G,EAAO,EAAE+G,EAAgB,CACxB,OAAOgG,GAAY,KAAKtQ,EAAQ,IAAM,KAAO,KAAKA,EAAQ,EAAE,SAAQ,EAAK,EAAE,CAC7E,CACF,CACA,MAAM2X,WAAsB3N,CAAU,CACpC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,cAAgBxK,GAAehY,EAAW,aAAa,EAC5D,KAAK,oBAAsB6X,GAAS,CAClC,KAAM7X,EAAW,oBACjB,aAAc,IACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,kBAAoB0gH,GAAS,CAChC,KAAM7X,EAAW,kBACjB,aAAc,IACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,GAAK6oG,EAAW,IAAM,GAC3B,KAAK,YAAc+X,GAAgB/X,EAAW,YAAa,CAAC,OAAQ,MAAM,CAAC,EAC3E,KAAK,cAAgBgY,GAAehY,EAAW,cAAe,GAAG,EACjE,KAAK,YAAc0X,GAAW,CAC5B,KAAM1X,EAAW,YACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,GAAKA,IAAM,CACtC,CAAK,EACD,KAAK,kBAAoB4gH,GAAgB/X,EAAW,kBAAmB,CAAC,MAAO,MAAM,CAAC,EACtF,KAAK,SAAW0X,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,GAAKA,IAAM,CACtC,CAAK,EACD,KAAK,eAAiB4gH,GAAgB/X,EAAW,eAAgB,CAAC,MAAO,MAAM,CAAC,EAChF,KAAK,QAAU+X,GAAgB/X,EAAW,QAAS,CAAC,SAAU,QAAQ,CAAC,EACvE,KAAK,KAAOgY,GAAehY,EAAW,KAAM,MAAM,EAClD,KAAK,SAAWA,EAAW,UAAY,UACvC,KAAK,UAAY0X,GAAW,CAC1B,KAAM1X,EAAW,UACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,GAAKA,IAAM,CACtC,CAAK,EACD,KAAK,gBAAkB4gH,GAAgB/X,EAAW,gBAAiB,CAAC,MAAO,MAAM,CAAC,EAClF,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,SAAU,MAAM,CAAC,EACnE,KAAK,OAAS,KACd,KAAK,KAAO,IACd,CACA,CAACoT,EAAM,EAAEvkC,EAAS,CAChB,MAAMukC,EAAM,EAAEvkC,CAAO,EACrB,KAAKimC,EAAW,EAAE,cAAc,IAAI,KAAK,QAAQ,CACnD,CACA,CAACoC,EAAQ,GAAI,CACX,MAAM3yB,EAAQg8B,GAAQ,KAAM,MAAM,EAC5BlyG,EAAQk2E,EAAM,MACpB,OAAIl2E,IACEA,IAAU,UACZ,OAAOk2E,EAAM,MACHl2E,EAAM,WAAW,GAAG,IAC9Bk2E,EAAM,WAAal2E,EACnBk2E,EAAM,eAAiB,OACvBA,EAAM,MAAQ,gBAGd,KAAK,gBACPA,EAAM,cAAgBo7B,GAAgB,KAAK,aAAa,GAE1Dp7B,EAAM,YAAc,KAAK,cAAgB,OAAS,OAAS,SAC3DA,EAAM,cAAgBo7B,GAAgB,KAAK,aAAa,EACpD,KAAK,cAAgB,IACvBp7B,EAAM,eAAiB,eACnB,KAAK,cAAgB,IACvBA,EAAM,oBAAsB,WAG5B,KAAK,WAAa,IACpBA,EAAM,eAAiB,WACnB,KAAK,WAAa,IACpBA,EAAM,oBAAsB,WAGhCA,EAAM,UAAY,KAAK,QACvBA,EAAM,SAAWo7B,GAAgB,IAAO,KAAK,IAAI,EACjDgC,GAAc,KAAM,KAAM,KAAK7M,EAAW,EAAE,WAAYvwB,CAAK,EACzD,KAAK,YAAc,IACrBA,EAAM,eAAiB,YACnB,KAAK,YAAc,IACrBA,EAAM,oBAAsB,WAGhCA,EAAM,WAAa,KAAK,OACjBA,CACT,CACF,CACA,MAAM8mC,WAAe5N,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,QAAU,IACjB,CACF,CACA,MAAMsrB,WAAgBhM,EAAa,CACjC,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,SAAS,EAC/B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMurB,WAAoB9N,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,aAAa,EACnC,KAAK,eAAiB9K,GAAW,CAC/B,KAAM1X,EAAW,eACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,kBAAoBugH,GAAW,CAClC,KAAM1X,EAAW,kBACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,UAAYugH,GAAW,CAC1B,KAAM1X,EAAW,UACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,GAAK6oG,EAAW,IAAM,GAC3B,KAAK,mBAAqB0X,GAAW,CACnC,KAAM1X,EAAW,mBACjB,aAAc,EACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,qBAAuBugH,GAAW,CACrC,KAAM1X,EAAW,qBACjB,aAAc,EACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,mBAAqB0X,GAAW,CACnC,KAAM1X,EAAW,mBACjB,aAAc,EACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,CACH,CACF,CACA,MAAMq0H,WAAclM,EAAa,CAC/B,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,OAAO,EAC7B,KAAK,OAASzK,GAAgB/X,EAAW,OAAQ,CAAC,MAAO,SAAU,SAAU,OAAQ,OAAO,CAAC,EAC7F,KAAK,YAAcA,EAAW,aAAe,GAC7C,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,iBAAmB+X,GAAgB/X,EAAW,iBAAkB,CAAC,SAAU,OAAQ,SAAS,CAAC,EAClG,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAACgX,EAAO,GAAI,CACV,GAAI,KAAK,aAAe,CAAC6L,GAAM,IAAI,KAAK,YAAY,YAAW,CAAE,EAC/D,OAAOnK,GAAW,MAEpB,IAAIj6G,EAAS,KAAKq2G,EAAW,EAAE,QAAQ,IAAI,KAAK,IAAI,EAOpD,GANI,CAACr2G,IAAW,KAAK,MAAQ,CAAC,KAAKg1G,EAAQ,KAGvC,CAACh1G,GAAU,KAAK,mBAAqB,WACvCA,EAAS,WAAW,WAAW,KAAKg1G,EAAQ,CAAC,GAE3C,CAACh1G,GACH,OAAOi6G,GAAW,MAEpB,GAAI,CAAC,KAAK,YAAa,CACrB,SAAW,CAAC5kF,EAAQp3B,CAAI,IAAKomH,GAC3B,GAAIrkH,EAAO,OAASq1B,EAAO,QAAUA,EAAO,MAAM,CAAC38B,EAAG5D,IAAM4D,IAAMsH,EAAOlL,CAAC,CAAC,EAAG,CAC5E,KAAK,YAAcmJ,EACnB,KACF,CAEF,GAAI,CAAC,KAAK,YACR,OAAOg8G,GAAW,KAEtB,CACA,MAAMzG,EAAO,IAAI,KAAK,CAACxzG,CAAM,EAAG,CAC9B,KAAM,KAAK,WACjB,CAAK,EACD,IAAI8lF,EACJ,OAAQ,KAAK,OAAM,CACjB,IAAK,MACL,IAAK,SACH,MACF,IAAK,SACHA,EAAQ,CACN,OAAQ,OACR,UAAW,MACrB,EACQ,MACF,IAAK,OACHA,EAAQ,CACN,MAAO,OACP,OAAQ,OACR,UAAW,MACrB,EACQ,MACF,IAAK,QACHA,EAAQ,CACN,MAAO,OACP,UAAW,MACrB,EACQ,KACR,CACI,MAAMvoF,EAAS,KAAK44G,EAAU,EAAC,EAC/B,OAAO8D,GAAW,QAAQ,CACxB,KAAM,MACN,WAAY,CACV,MAAO,CAAC,UAAU,EAClB,MAAAn0B,EACA,IAAK,IAAI,gBAAgB0tB,CAAI,EAC7B,IAAKj2G,EAAS8nH,GAAU9nH,EAAO44G,EAAU,EAAC,CAAE,EAAI,IACxD,CACA,CAAK,CACH,CACF,CACA,MAAM6W,WAAkBhO,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,YAAa,EAAI,EACvC,KAAK,KAAOzK,GAAgB/X,EAAW,KAAM,CAAC,OAAQ,OAAO,CAAC,EAC9D,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,OAAS,IAChB,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,OAAI,KAAK,OAAS,QACTrF,GAAW,QAAQ,CACxB,KAAM,MACN,SAAU,CAAA,EACV,WAAY,CAAA,CACpB,CAAO,EAEIA,GAAW,KACpB,CACF,CACA,MAAMgT,WAAgBtM,EAAc,CAClC,YAAYpf,EAAY,CACtB,MAAMwiB,GAAgB,SAAS,EAC/B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAAC6T,EAAS,GAAI,CACZ,MAAMhzG,EAAS,SAAS,KAAK4yG,EAAQ,EAAE,KAAI,EAAI,EAAE,EACjD,KAAKA,EAAQ,EAAI,MAAM5yG,CAAM,EAAI,KAAOA,CAC1C,CACA,CAACm2G,EAAO,EAAE+G,EAAgB,CACxB,OAAOgG,GAAY,KAAKtQ,EAAQ,IAAM,KAAO,KAAKA,EAAQ,EAAE,SAAQ,EAAK,EAAE,CAC7E,CACF,CACA,MAAMkY,WAAgBlO,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,YAAc,IAAI6d,CACzB,CACF,CACA,MAAM+N,WAAcnO,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,QAAS,EAAI,EACnC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAY,WAAW,CAAC,EACnG,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,KAAO0X,GAAW,CACrB,KAAM1X,EAAW,KACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,QAAU,IAAI6d,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,QAAU,IAAIA,EACnB,KAAK,OAAS,IAAIA,EAClB,KAAK,MAAQ,IAAIA,EACjB,KAAK,MAAQ,IAAIA,EACjB,KAAK,QAAU,IAAIA,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,KAAO,IAAIA,CAClB,CACA,CAAC7G,EAAO,GAAI,CACV,MAAMzhH,EAAS,CAAA,EACf,UAAW0rG,KAAS,KAAKuT,EAAY,EAAC,EACpCj/G,EAAO,KAAK0rG,EAAM6V,EAAK,EAAC,CAAE,EAE5B,OAAO4B,GAAW,QAAQnjH,CAAM,CAClC,CACF,CACA,MAAMs2H,WAAapO,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,MAAMruG,EAAU,CAAC,OAAQ,cAAe,UAAU,EAClD,KAAK,OAASomH,GAAgB/X,EAAW,OAAQruG,CAAO,EACxD,KAAK,KAAOomH,GAAgB/X,EAAW,KAAMruG,CAAO,EACpD,KAAK,SAAWomH,GAAgB/X,EAAW,SAAUruG,CAAO,EAC5D,KAAK,IAAMquG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAChB,CACF,CACA,MAAM8rB,WAAiBrO,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAU,EAChC,MAAM7wH,EAAU,CAAC,GAAI,MAAO,IAAI,EAChC,KAAK,QAAUomH,GAAgB/X,EAAW,QAASruG,CAAO,EAC1D,KAAK,iBAAmBomH,GAAgB/X,EAAW,iBAAkBruG,CAAO,EAC5E,KAAK,aAAeomH,GAAgB/X,EAAW,aAAcruG,CAAO,EACpE,KAAK,iBAAmBomH,GAAgB/X,EAAW,iBAAkBruG,CAAO,EAC5E,KAAK,aAAeomH,GAAgB/X,EAAW,aAAcruG,CAAO,EACpE,KAAK,GAAKquG,EAAW,IAAM,GAC3B,KAAK,aAAe+X,GAAgB/X,EAAW,aAAcruG,CAAO,EACpE,KAAK,YAAcomH,GAAgB/X,EAAW,YAAaruG,CAAO,EAClE,KAAK,gBAAkBomH,GAAgB/X,EAAW,gBAAiBruG,CAAO,EAC1E,KAAK,eAAiBomH,GAAgB/X,EAAW,eAAgBruG,CAAO,EACxE,KAAK,KAAOomH,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM+rB,WAAatO,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,KAAOzK,GAAgB/X,EAAW,KAAM,CAAC,OAAQ,OAAQ,OAAO,CAAC,EACtE,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,MAAQ+X,GAAgB/X,EAAW,MAAO,CAAC,KAAM,GAAG,CAAC,EAC1D,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,KAAO,IACd,CACA,CAACgX,EAAO,GAAI,CACV,MAAMh7G,EAAS,KAAK44G,EAAU,EAAC,EAAGA,EAAU,EAAC,EACvCqQ,EAAO,KAAK,MAAQ,IAAIC,GAAK,CAAA,CAAE,EAC/BC,EAAYF,EAAK/N,EAAQ,EAAC,EAC1B3yB,EAAQ,OAAO,OAAO,IAAI,EAC1B8N,EAAY4yB,EAAK,WAAa,UAAYA,EAAK,UAAY,EACjE1gC,EAAM,YAAco7B,GAAgBttB,CAAS,EAC7C9N,EAAM,OAAS4gC,EAAU,MACzB,IAAI3tH,EAAIC,EAAIE,EAAIE,EACZmF,EAAQ,OACRC,EAAS,OACTjB,EAAO,GAAKq2F,GACd,CAAC76F,EAAIC,EAAIE,EAAIE,CAAE,EAAI,CAAC,MAAO,EAAG,MAAO,MAAM,EAC3CmF,EAAQunF,EAAM,aACLvoF,EAAO,GAAKq2F,GACrB,CAAC76F,EAAIC,EAAIE,EAAIE,CAAE,EAAI,CAAC,EAAG,MAAO,OAAQ,KAAK,EAC3CoF,EAASsnF,EAAM,aACN,KAAK,QAAU,KACxB,CAAC/sF,EAAIC,EAAIE,EAAIE,CAAE,EAAI,CAAC,EAAG,EAAG,OAAQ,MAAM,EAExC,CAACL,EAAIC,EAAIE,EAAIE,CAAE,EAAI,CAAC,EAAG,OAAQ,OAAQ,CAAC,EAa1C,MAAM2tH,EAAM,CACV,KAAM,MACN,SAAU,CAbC,CACX,KAAM,OACN,WAAY,CACV,MAAOj2H,GACP,GAAAiI,EACA,GAAAC,EACA,GAAAE,EACA,GAAAE,EACA,MAAA0sF,CACR,CACA,CAGqB,EACf,WAAY,CACV,MAAOh1F,GACP,MAAAyN,EACA,OAAAC,EACA,MAAO,CACL,SAAU,SACpB,CACA,CACA,EACI,OAAIgmH,GAAUjnH,CAAM,EACX08G,GAAW,QAAQ,CACxB,KAAM,MACN,WAAY,CACV,MAAO,CACL,QAAS,SACT,MAAO,OACP,OAAQ,MACpB,CACA,EACQ,SAAU,CAAC8M,CAAG,CACtB,CAAO,GAEHA,EAAI,WAAW,MAAM,SAAW,WACzB9M,GAAW,QAAQ8M,CAAG,EAC/B,CACF,CACA,MAAMwG,WAAevO,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,UAAW,WAAY,SAAU,OAAO,CAAC,EACvF,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,MAAQ,KACb,KAAK,OAAS,IAChB,CACA,CAACkX,EAAQ,EAAE+U,EAAY,CACrBA,EAAaA,EAAaA,EAAW/U,EAAQ,EAAC,EAAK,UACnD,MAAM9nD,EAAS,KAAK,KAAK,QAAQ,WAAY,KAAK,EAAE,YAAW,EACzD88D,EAAW,KAAK,MAAQ,KAAK,MAAMhV,EAAQ,EAAC,EAAK,UACvD,MAAO,mBAAmB9nD,CAAM,KAAK68D,CAAU,KAAKC,CAAQ,GAC9D,CACF,CACA,MAAMC,WAAqB/M,EAAc,CACvC,YAAYpf,EAAY,CACtB,MAAMwiB,GAAgB,cAAc,EACpC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAAC6T,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAIsE,GAAgB,KAAKtE,EAAQ,EAAG,CAAC,OAAQ,IAAK,GAAG,CAAC,CACrE,CACF,CACA,MAAM2Y,WAAiB3O,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,WAAY,EAAI,EACtC,KAAK,OAASzK,GAAgB/X,EAAW,OAAQ,CAAC,UAAW,MAAO,SAAS,CAAC,EAC9E,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,IAAM,IAAI6d,CACjB,CACF,CACA,MAAMwO,WAAe5O,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,YAAcxK,GAAehY,EAAW,YAAa,GAAG,EAC7D,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,UAAYgY,GAAehY,EAAW,UAAW,GAAG,EACzD,KAAK,WAAagY,GAAehY,EAAW,WAAY,GAAG,EAC3D,KAAK,SAAWgY,GAAehY,EAAW,SAAU,GAAG,EACvD,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAChB,CACA,CAACkX,EAAQ,GAAI,CACX,MAAO,CACL,OAAQyI,GAAgB,KAAK,QAAQ,EAAI,IAAMA,GAAgB,KAAK,UAAU,EAAI,IAAMA,GAAgB,KAAK,WAAW,EAAI,IAAMA,GAAgB,KAAK,SAAS,CACtK,CACE,CACF,CACA,MAAM2M,WAAY7O,CAAU,CAC1B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,KAAK,EAC3B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,YAAc0X,GAAW,CAC5B,KAAM1X,EAAW,YACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,GAAKA,IAAM,CACtC,CAAK,EACD,KAAK,cAAgB4gH,GAAgB/X,EAAW,cAAe,CAAC,SAAU,QAAQ,CAAC,EACnF,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMusB,WAAe9O,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,QAAQ,EAC9B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,YAAcyY,GAAQzY,EAAW,WAAW,EACjD,KAAK,KAAOgY,GAAehY,EAAW,IAAI,EAC1C,KAAK,YAAc+X,GAAgB/X,EAAW,YAAa,CAAC,WAAY,WAAW,CAAC,EACpF,KAAK,MAAQgY,GAAehY,EAAW,KAAK,EAC5C,KAAK,MAAQA,EAAW,OAAS,GACjC,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,WAAY,WAAW,CAAC,EAClF,KAAK,QAAU+X,GAAgB/X,EAAW,QAAS,CAAC,OAAQ,UAAU,CAAC,EACvE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMwsB,WAAgB/O,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,KAAO,IAAI6d,CAClB,CACF,CACA,MAAM4O,WAAoBhP,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,cAAe,EAAI,EACzC,KAAK,cAAgBzK,GAAgB/X,EAAW,cAAe,CAAC,OAAQ,MAAO,IAAI,CAAC,EACpF,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,OAAS,IAChB,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,MAAMx5B,EAAQg8B,GAAQ,KAAM,SAAU,OAAQ,QAAQ,EAChDhjD,EAAQ,KAAKq3C,EAAU,EAAC,EAAGA,EAAU,EAAC,EACtCgE,EAAO,CACX,KAAM,QACN,WAAY,CACV,KAAM,OACN,QAASr7C,EAAM45C,EAAI,EACnB,OAAQ55C,EAAMm2C,EAAK,IAAIyD,EAAI,GAAK55C,EAAM45C,EAAI,EAC1C,MAAO,CAAC,cAAc,EACtB,MAAA5yB,EACA,aAAcu/B,GAAUvmD,CAAK,EAC7B,gBAAiB,EACzB,CACA,EACI,OAAIgmD,GAAWhmD,CAAK,IAClBq7C,EAAK,WAAW,eAAe,EAAI,GACnCA,EAAK,WAAW,SAAW,IAEtBF,GAAW,QAAQ,CACxB,KAAM,QACN,WAAY,CACV,MAAO,CAAC,UAAU,CAC1B,EACM,SAAU,CAACE,CAAI,CACrB,CAAK,CACH,CACF,CACA,MAAM8T,WAAcjP,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,QAAS,EAAI,EACnC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,QAAUA,EAAW,UAAY,GAAK0X,GAAW,CACpD,KAAM1X,EAAW,QACjB,aAAc,GACd,SAAU7oG,GAAK,EACrB,CAAK,EAAI,GACL,KAAK,IAAM6oG,EAAW,MAAQ,GAAK0X,GAAW,CAC5C,KAAM1X,EAAW,IACjB,aAAc,GACd,SAAU7oG,GAAK,EACrB,CAAK,EAAI,GACL,KAAK,IAAM6oG,EAAW,MAAQ,GAAK0X,GAAW,CAC5C,KAAM1X,EAAW,IACjB,aAAc,EACd,SAAU7oG,GAAK,EACrB,CAAK,EAAI,GACL,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAChB,CACA,CAACoT,EAAM,GAAI,CACT,MAAMp3G,EAAS,KAAK44G,EAAU,EAAC,EACzB+X,EAAc,KAAK,IACrB,KAAK,MAAQ,KACf,KAAK,IAAM3wH,aAAkBqoH,IAAYroH,aAAkB4wH,GAAU,EAAI,GAEvE,KAAK,MAAQ,KACXD,IAAgB,GAClB,KAAK,IAAM3wH,aAAkBqoH,IAAYroH,aAAkB4wH,GAAU,GAAK,EAE1E,KAAK,IAAM,KAAK,KAGhB,KAAK,MAAQ,IAAM,KAAK,IAAM,KAAK,MACrC,KAAK,IAAM,KAAK,KAEd,KAAK,UAAY,KACnB,KAAK,QAAU5wH,aAAkB6wH,GAAW,EAAI,KAAK,IAEzD,CACF,CACA,MAAMC,WAAYxN,EAAa,CAC7B,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,KAAK,EAC3B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM+sB,WAAatP,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,IAAM,IAAI6d,CACjB,CACF,CACA,MAAMmP,WAAiBvP,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAU,EAChC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAACsU,EAAS,GAAI,CACZ,GAAI,CAAC,KAAKV,CAAM,EAAG,CACjB,MAAM53G,EAAS,KAAK44G,EAAU,EAAC,EACzBnW,EAAO,KAAKoW,EAAgB,EAAC,EAC7B5H,EAASxO,EAAKgY,EAAW,EAAE,KAAK,OAAQz6G,CAAM,EAC9CixH,EAASxuB,EAAKgY,EAAW,EAAE,KAAK,OAAQz6G,CAAM,EAC9CkxH,EAAUzuB,EAAKgY,EAAW,EAAE,KAAK,QAASz6G,CAAM,EACtD,KAAK43G,CAAM,EAAI,CACb,OAAQ3G,IAAS,CAAC,GAAK,KACvB,OAAQggB,IAAS,CAAC,GAAK,KACvB,QAASC,IAAU,CAAC,GAAK,KACzB,UAAW,GACX,WAAY,EACpB,CACI,CACA,OAAO,KAAKtZ,CAAM,CACpB,CACF,CACA,MAAMyQ,WAAiB5G,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,WAAY,EAAI,EACtC,KAAK,gBAAkBzK,GAAgB/X,EAAW,gBAAiB,CAAC,MAAO,QAAS,UAAU,CAAC,EAC/F,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,cAAgB0X,GAAW,CAC9B,KAAM1X,EAAW,cACjB,aAAc,EACd,SAAU7oG,GAAK,EACrB,CAAK,EACD,KAAK,KAAO6oG,EAAW,MAAQ,GAC/B,KAAK,SAAW0X,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAK,EACrB,CAAK,EACD,KAAK,UAAY4gH,GAAgB/X,EAAW,UAAW,CAAC,MAAO,OAAQ,KAAK,CAAC,EAC7E,KAAK,aAAe+X,GAAgB/X,EAAW,aAAc,CAAC,MAAO,QAAS,OAAQ,OAAQ,MAAM,CAAC,EACrG,KAAK,SAAWuY,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,MAAQ,KACb,KAAK,KAAO,IAAI6d,EAChB,KAAK,YAAc,IAAIA,EACvB,KAAK,KAAO,IAAIA,EAChB,KAAK,UAAY,IAAIA,EACrB,KAAK,MAAQ,IAAIA,EACjB,KAAK,QAAU,IAAIA,CACrB,CACA,CAAClI,EAAS,GAAI,CACZ,OAAK,KAAK/B,CAAM,EAMT,CAAC,KAAK,OAAS,KAAK,MAAM,MAAQ,IAAM,KAAKA,CAAM,EAAE,YAAc,KAAK,MAAM,KALnF,KAAKA,CAAM,EAAI,CACb,YAAa,CACrB,EACa,GAGX,CACA,CAACP,EAAU,GAAI,CACb,OAAO,KAAKO,CAAM,CACpB,CACA,CAACc,EAAY,GAAI,CACf,KAAKd,CAAM,IAAM,CACf,YAAa,CACnB,EACI,MAAM53G,EAAS,KAAK44G,EAAU,EAAC,EAC/B,OAAI54G,EAAO,WAAa,qBAClB,KAAK25G,EAAS,KAChB,KAAK/B,CAAM,EAAE,aAAe,EACrB,MAGJ53G,EAAO04G,EAAY,EAAC,CAC7B,CACA,CAACT,EAAkB,GAAI,CACrB,OAAO,KAAKL,CAAM,EAAE,OAAS,CAC3B,MAAO,EACP,OAAQ,CACd,CACE,CACA,CAACoD,EAAO,GAAI,CACV,KAAKpD,CAAM,IAAM,CACf,YAAa,CACnB,EACI,MAAMwI,EAAW,CAAA,EACjB,KAAKxI,CAAM,EAAE,SAAWwI,EACxB,MAAM73B,EAAQ,OAAO,OAAO,IAAI,EAChC,GAAI,KAAK,QAAU,KAAK,OAAO,OAAS,KAAK,OAAO,MAOlD,GANAA,EAAM,MAAQo7B,GAAgB,KAAK,OAAO,KAAK,EAC/Cp7B,EAAM,OAASo7B,GAAgB,KAAK,OAAO,IAAI,EAC/C,KAAK/L,CAAM,EAAE,MAAQ,CACnB,MAAO,KAAK,OAAO,MACnB,OAAQ,KAAK,OAAO,IAC5B,EACU,KAAK,OAAO,cAAgB,YAAa,CAC3C,MAAMz8G,EAAIotF,EAAM,MAChBA,EAAM,MAAQA,EAAM,OACpBA,EAAM,OAASptF,EACf,KAAKy8G,CAAM,EAAE,MAAQ,CACnB,MAAO,KAAK,OAAO,KACnB,OAAQ,KAAK,OAAO,KAC9B,CACM,OAEAziH,EAAK,2DAA2D,EAElE,YAAKgiH,EAAe,EAAE,CACpB,OAAQ,IAAI,IAAI,CAAC,OAAQ,OAAQ,QAAS,SAAS,CAAC,EACpD,QAAS,EACf,CAAK,EACD,KAAKA,EAAe,EAAE,CACpB,OAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,EAC/B,QAAS,EACf,CAAK,EACMuF,GAAW,QAAQ,CACxB,KAAM,MACN,SAAA0D,EACA,WAAY,CACV,MAAO,CAAC,SAAS,EACjB,GAAI,KAAKjF,EAAI,EACb,MAAA5yB,EACA,QAAS,KAAK,IACtB,CACA,CAAK,CACH,CACF,CACA,MAAMqoC,WAAgBnP,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,iBAAmBzK,GAAgB/X,EAAW,iBAAkB,CAAC,WAAY,WAAW,CAAC,EAC9F,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,oBAAqB,kBAAmB,kBAAkB,CAAC,EACjH,KAAK,SAAWuY,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,MAAQ,KACb,KAAK,SAAW,IAAI6d,EACpB,KAAK,QAAU,IAAIA,CACrB,CACA,CAACxK,EAAU,GAAI,CACb,UAAWl6G,KAAQ,KAAK,SAAS,SAC/BA,EAAKk6G,EAAU,EAAC,EAElB,UAAWl6G,KAAQ,KAAK,QAAQ,SAC9BA,EAAKk6G,EAAU,EAAC,CAEpB,CACA,CAACsC,EAAS,GAAI,CACZ,MAAO,CAAC,KAAK,OAAS,KAAK,MAAM,MAAQ,IAAM,KAAK/B,CAAM,EAAE,YAAc,KAAK,MAAM,GACvF,CACA,CAACc,EAAY,GAAI,CAMf,GALA,KAAKd,CAAM,IAAM,CACf,YAAa,EACb,UAAW,GACX,aAAc,EACpB,EACQ,KAAK,WAAa,oBAAqB,CACzC,GAAI,KAAKA,CAAM,EAAE,UAAY,EAAI,KAAK,SAAS,SAAS,OACtD,YAAKA,CAAM,EAAE,WAAa,EACT,KAAK,SAAS,SAAS,KAAKA,CAAM,EAAE,SAAS,EAC9Cc,EAAY,EAAC,EAE/B,GAAI,KAAKd,CAAM,EAAE,aAAe,EAAI,KAAK,QAAQ,SAAS,OACxD,YAAKA,CAAM,EAAE,cAAgB,EACtB,KAAK,QAAQ,SAAS,KAAKA,CAAM,EAAE,YAAY,EAAEc,EAAY,EAAC,EAEvE,GAAI,KAAKiB,EAAS,IAChB,YAAK/B,CAAM,EAAE,aAAe,EAC5B,KAAKA,CAAM,EAAE,UAAY,GACzB,KAAKA,CAAM,EAAE,aAAe,GACrB,KAAKc,EAAY,EAAC,EAE3B,MAAM14G,EAAS,KAAK44G,EAAU,EAAC,EAC/B,OAAI54G,aAAkB4wH,GACb5wH,EAAO04G,EAAY,EAAC,GAE7B,KAAKrB,EAAU,EAAC,EACT,KAAKqB,EAAY,EAAC,EAC3B,CACA,MAAMyY,EAAa,KAAKtY,EAAgB,EAAC,EAAGjB,CAAM,EAAE,WAC9CwZ,EAASD,EAAa,IAAM,EAAI,OAAS,MACzC/5G,EAAW+5G,IAAe,EAAI,QAAU,OAC9C,IAAIh0H,EAAO,KAAK,SAAS,SAAS,KAAKzE,GAAKA,EAAE,YAAc04H,GAAU14H,EAAE,eAAiB0e,CAAQ,EASjG,OARIja,IAGJA,EAAO,KAAK,SAAS,SAAS,KAAKzE,GAAKA,EAAE,YAAc,OAASA,EAAE,eAAiB0e,CAAQ,EACxFja,KAGJA,EAAO,KAAK,SAAS,SAAS,KAAKzE,GAAKA,EAAE,YAAc,OAASA,EAAE,eAAiB,KAAK,EACrFyE,GACKA,EAEF,KAAK,SAAS,SAAS,CAAC,CACjC,CACF,CACA,MAAMk0H,WAAa5P,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,OAAQ,EAAI,EAClC,KAAK,OAASzK,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,OAAO,CAAC,EAC9G,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,WAAaA,EAAW,WAAagY,GAAehY,EAAW,WAAY,KAAK,EAAI,GACzF,KAAK,WAAaA,EAAW,WAAagY,GAAehY,EAAW,WAAY,KAAK,EAAI,GACzF,KAAK,YAAcA,EAAW,YAAcgY,GAAehY,EAAW,YAAa,KAAK,EAAI,GAC5F,KAAK,QAAU0X,GAAW,CACxB,KAAM1X,EAAW,QACjB,aAAc,EACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,SAAW6oG,EAAW,UAAY,GACvC,KAAK,YAAcA,EAAW,YAAcgY,GAAehY,EAAW,YAAa,KAAK,EAAI,GAC5F,KAAK,WAAaA,EAAW,WAAagY,GAAehY,EAAW,WAAY,KAAK,EAAI,GACzF,KAAK,WAAaA,EAAW,WAAagY,GAAehY,EAAW,WAAY,KAAK,EAAI,GACzF,KAAK,WAAaA,EAAW,WAAagY,GAAe,KAAK,UAAU,EAAI,GAC5E,KAAK,UAAYhY,EAAW,UAAY,IAAI,KAAI,EAAG,MAAM,KAAK,EAAE,IAAI,CAAC7oG,EAAG5D,IAAMA,EAAI,IAAM,EAAIykH,GAAe7gH,CAAC,EAAIA,CAAC,EACjH,KAAK,WAAa6oG,EAAW,WAAagY,GAAehY,EAAW,WAAY,KAAK,EAAI,GACzF,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,MAAO,SAAU,QAAQ,CAAC,EAC5E,KAAK,OAAS0X,GAAW,CACvB,KAAM1X,EAAW,OACjB,aAAc,EACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,YAAc,IACrB,CACA,CAAC+/G,EAAQ,GAAI,CACX,MAAM3yB,EAAQg8B,GAAQ,KAAM,QAAQ,EACpC,OAAI,KAAK,aAAe,KACtBh8B,EAAM,YAAco7B,GAAgB,KAAK,UAAU,GAEjD,KAAK,cAAgB,KACvBp7B,EAAM,aAAeo7B,GAAgB,KAAK,WAAW,GAEnD,KAAK,aAAe,KACtBp7B,EAAM,WAAao7B,GAAgB,KAAK,UAAU,GAEhD,KAAK,aAAe,KACtBp7B,EAAM,cAAgBo7B,GAAgB,KAAK,UAAU,GAEnD,KAAK,aAAe,KACtBp7B,EAAM,WAAao7B,GAAgB,KAAK,UAAU,EAClDsB,GAAc18B,CAAK,GAEjB,KAAK,WAAa,IACpBA,EAAM,WAAao7B,GAAgB,KAAK,UAAU,GAEhD,KAAK,aAAe,KACtBp7B,EAAM,QAAUo7B,GAAgB,KAAK,UAAU,GAE7C,KAAK,SAAS,OAAS,EACvB,KAAK,eACP,OAAO,OAAOp7B,EAAO,KAAK,cAAc2yB,EAAQ,GAAG,EAE9C3yB,CACT,CACF,CACA,MAAM+oC,WAAqB7P,CAAU,CACnC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,eAAgB,EAAI,EAC1C,KAAK,cAAgBzK,GAAgB/X,EAAW,cAAe,CAAC,OAAQ,MAAO,IAAI,CAAC,EACpF,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,aAAeA,EAAW,cAAgB,IAC/C,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,OAAS,IAChB,CACF,CACA,MAAMutB,WAAyB9P,CAAU,CACvC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,aAAc,gBAAiB,eAAgB,gBAAiB,aAAc,UAAU,CAAC,EACvI,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,MAAQ,KACb,KAAK,OAAS,IAChB,CACA,CAACkX,EAAQ,EAAE+U,EAAY,CACrBA,EAAaA,EAAaA,EAAW/U,EAAQ,EAAC,EAAK,UACnD,MAAMgV,EAAW,KAAK,MAAQ,KAAK,MAAMhV,EAAQ,EAAC,EAAK,UACjDl6G,EAAQ,EACR1C,EAAM,4BACN0zB,EAAS,GAAGi+F,CAAU,IAAIA,CAAU,IAAIjvH,CAAK,MAAMkvH,CAAQ,IAAIlvH,CAAK,MAAMkvH,CAAQ,IAAI,EAAIlvH,CAAK,KACrG,OAAQ,KAAK,KAAI,CACf,IAAK,aACH,MAAO,GAAG1C,CAAG,WAAW0zB,CAAM,KAAK1zB,CAAG,aAAa0zB,CAAM,IAC3D,IAAK,gBACH,MAAO,GAAG1zB,CAAG,UAAU0zB,CAAM,KAAK1zB,CAAG,WAAW0zB,CAAM,IACxD,IAAK,eACH,MAAO,GAAG1zB,CAAG,UAAU0zB,CAAM,IAC/B,IAAK,gBACH,MAAO,GAAG1zB,CAAG,WAAW0zB,CAAM,IAChC,IAAK,aACH,MAAO,GAAG1zB,CAAG,WAAW0zB,CAAM,IAChC,IAAK,WACH,MAAO,GAAG1zB,CAAG,aAAa0zB,CAAM,GACxC,CACI,MAAO,EACT,CACF,CACA,MAAMw/F,WAAgBlO,EAAa,CACjC,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,SAAS,EAC/B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMytB,WAAchQ,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,QAAS,EAAI,EACnC,KAAK,iBAAmB,IAAI3E,EAC5B,KAAK,IAAM,IAAIA,EACf,KAAK,KAAO,IAAIA,EAChB,KAAK,OAAS,IAAIA,EAClB,KAAK,QAAU,IAAIA,EACnB,KAAK,UAAY,IAAIA,EACrB,KAAK,QAAU,IAAIA,EACnB,KAAK,QAAU,IAAIA,EACnB,KAAK,OAAS,IAAIA,EAClB,KAAK,MAAQ,IAAIA,EACjB,KAAK,WAAa,IAAIA,EACtB,KAAK,YAAc,IAAIA,EACvB,KAAK,OAAS,IAAIA,EAClB,KAAK,UAAY,IAAIA,EACrB,KAAK,QAAU,IAAIA,EACnB,KAAK,YAAc,IAAIA,EACvB,KAAK,aAAe,IAAIA,EACxB,KAAK,YAAc,IAAIA,EACvB,KAAK,WAAa,IAAIA,EACtB,KAAK,MAAQ,IAAIA,EACjB,KAAK,KAAO,IAAIA,EAChB,KAAK,QAAU,IAAIA,EACnB,KAAK,YAAc,IAAIA,EACvB,KAAK,OAAS,IAAIA,EAClB,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,aAAe,IAAIA,EACxB,KAAK,QAAU,IAAIA,EACnB,KAAK,UAAY,IAAIA,EACrB,KAAK,KAAO,IAAIA,EAChB,KAAK,aAAe,IAAIA,EACxB,KAAK,cAAgB,IAAIA,EACzB,KAAK,KAAO,IAAIA,EAChB,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,UAAY,IAAIA,EACrB,KAAK,QAAU,IAAIA,EACnB,KAAK,YAAc,IAAIA,EACvB,KAAK,WAAa,IAAIA,EACtB,KAAK,iBAAmB,IAAIA,EAC5B,KAAK,kBAAoB,IAAIA,EAC7B,KAAK,MAAQ,IAAIA,EACjB,KAAK,OAAS,IAAIA,EAClB,KAAK,SAAW,IAAIA,EACpB,KAAK,UAAY,IAAIA,EACrB,KAAK,QAAU,IAAIA,EACnB,KAAK,OAAS,IAAIA,EAClB,KAAK,MAAQ,IAAIA,EACjB,KAAK,KAAO,IAAIA,EAChB,KAAK,OAAS,IAAIA,EAClB,KAAK,MAAQ,IAAIA,EACjB,KAAK,KAAO,IAAIA,EAChB,KAAK,OAAS,IAAIA,EAClB,KAAK,QAAU,IAAIA,EACnB,KAAK,YAAc,IAAIA,EACvB,KAAK,MAAQ,IAAIA,EACjB,KAAK,UAAY,IAAIA,EACrB,KAAK,QAAU,IAAIA,EACnB,KAAK,QAAU,IAAIA,EACnB,KAAK,MAAQ,IAAIA,EACjB,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,KAAO,IAAIA,EAChB,KAAK,OAAS,IAAIA,EAClB,KAAK,aAAe,IAAIA,EACxB,KAAK,SAAW,IAAIA,EACpB,KAAK,OAAS,IAAIA,EAClB,KAAK,IAAM,IAAIA,EACf,KAAK,OAAS,IAAIA,EAClB,KAAK,QAAU,IAAIA,EACnB,KAAK,YAAc,IAAIA,EACvB,KAAK,MAAQ,IAAIA,EACjB,KAAK,IAAM,IAAIA,EACf,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,SAAW,IAAIA,EACpB,KAAK,QAAU,IAAIA,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,aAAe,IAAIA,EACxB,KAAK,QAAU,IAAIA,EACnB,KAAK,QAAU,IAAIA,EACnB,KAAK,OAAS,IAAIA,EAClB,KAAK,OAAS,IAAIA,EAClB,KAAK,QAAU,IAAIA,EACnB,KAAK,UAAY,IAAIA,EACrB,KAAK,IAAM,IAAIA,EACf,KAAK,OAAS,IAAIA,EAClB,KAAK,YAAc,IAAIA,EACvB,KAAK,SAAW,IAAIA,EACpB,KAAK,UAAY,IAAIA,EACrB,KAAK,QAAU,IAAIA,EACnB,KAAK,MAAQ,IAAIA,EACjB,KAAK,MAAQ,IAAIA,EACjB,KAAK,QAAU,IAAIA,EACnB,KAAK,QAAU,IAAIA,EACnB,KAAK,WAAa,IAAIA,EACtB,KAAK,UAAY,IAAIA,EACrB,KAAK,WAAa,IAAIA,EACtB,KAAK,OAAS,IAAIA,EAClB,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,KAAO,IAAIA,EAChB,KAAK,UAAY,IAAIA,EACrB,KAAK,QAAU,IAAIA,EACnB,KAAK,UAAY,IAAIA,EACrB,KAAK,SAAW,IAAIA,EACpB,KAAK,GAAK,IAAIA,EACd,KAAK,SAAW,IAAIA,EACpB,KAAK,MAAQ,IAAIA,EACjB,KAAK,UAAY,IAAIA,CACvB,CACF,CACA,MAAM6P,WAAejQ,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,SAAU,UAAU,CAAC,EACnE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,MAAQ,KACb,KAAK,OAAS,IAChB,CACA,CAACkX,EAAQ,EAAE+U,EAAY,CACrBA,EAAaA,EAAaA,EAAW/U,EAAQ,EAAC,EAAK,UACnD,MAAMgV,EAAW,KAAK,MAAQ,KAAK,MAAMhV,EAAQ,EAAC,EAAK,UAEvD,MAAO,qCADQ,KAAK,OAAS,SAAW,GAAG+U,CAAU,IAAIC,CAAQ,GAAK,GAAGA,CAAQ,IAAID,CAAU,EAC7C,GACpD,CACF,CACA,MAAM0B,WAAerO,EAAa,CAChC,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,QAAQ,EAC9B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM4tB,WAAgBnQ,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAAI6d,CACpB,CACF,CACA,MAAMoN,WAAkBxN,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,YAAa,EAAI,EACvC,KAAK,KAAOzK,GAAgB/X,EAAW,KAAM,CAAC,OAAQ,OAAQ,OAAO,CAAC,EACtE,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAAI6d,EAAe,CAAC,EAClC,KAAK,KAAO,IAAIA,EAAe,CAAC,EAChC,KAAK,KAAO,IACd,CACA,CAAC7G,EAAO,GAAI,CACV,MAAMiO,EAAO,KAAK,KAAK,SAAS,OAAS,KAAK,KAAK,SAAS,CAAC,EAAI,IAAIC,GAAK,CAAA,CAAE,EACtEC,EAAYF,EAAK/N,EAAQ,EAAC,EAC1B3yB,EAAQ,OAAO,OAAO,IAAI,EAC5B,KAAK,MAAM,WAAa,UAC1B,OAAO,OAAOA,EAAO,KAAK,KAAK2yB,EAAQ,GAAG,EAE1C3yB,EAAM,KAAO,cAEfA,EAAM,YAAco7B,GAAgBsF,EAAK,WAAa,UAAYA,EAAK,UAAY,CAAC,EACpF1gC,EAAM,OAAS4gC,EAAU,MAEzB,MAAM0I,GADS,KAAK,OAAO,SAAS,OAAS,KAAK,OAAO,SAAS,CAAC,EAAI,IAAIzF,GAAO,CAAA,CAAE,GACzDlR,EAAQ,EAAC,EAc9BsO,EAAM,CACV,KAAM,MACN,SAAU,CAfC,CACX,KAAM,OACN,WAAY,CACV,MAAOj2H,GACP,MAAO,OACP,OAAQ,OACR,EAAG,EACH,EAAG,EACH,GAAIs+H,EAAY,OAChB,GAAIA,EAAY,OAChB,MAAAtpC,CACR,CACA,CAGqB,EACf,WAAY,CACV,MAAOh1F,GACP,MAAO,CACL,SAAU,SACpB,EACQ,MAAO,OACP,OAAQ,MAChB,CACA,EACUyM,EAAS,KAAK44G,EAAU,EAAC,EAAGA,EAAU,EAAC,EAC7C,OAAIqO,GAAUjnH,CAAM,EACX08G,GAAW,QAAQ,CACxB,KAAM,MACN,WAAY,CACV,MAAO,CACL,QAAS,SACT,MAAO,OACP,OAAQ,MACpB,CACA,EACQ,SAAU,CAAC8M,CAAG,CACtB,CAAO,GAEHA,EAAI,WAAW,MAAM,SAAW,WACzB9M,GAAW,QAAQ8M,CAAG,EAC/B,CACF,CACA,MAAMsI,WAAmBxO,EAAa,CACpC,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,KAAK,EAC3B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM+tB,WAAezO,EAAa,CAChC,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,QAAQ,EAC9B,KAAK,QAAUxiB,EAAW,SAAW,GACrC,KAAK,YAAcA,EAAW,aAAe,GAC7C,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,MAAQ+X,GAAgB/X,EAAW,MAAO,CAAC,SAAU,OAAQ,QAAQ,CAAC,EAC3E,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMguB,WAAoBvQ,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,aAAa,EACnC,KAAK,WAAaxiB,EAAW,YAAc,GAC3C,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,OAASA,EAAW,QAAU,EACrC,CACF,CACA,MAAMiuB,WAAiBxQ,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,WAAY,EAAI,EACtC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,UAAY+X,GAAgB/X,EAAW,UAAW,CAAC,OAAQ,QAAS,QAAQ,CAAC,EAClF,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,SAAW,IAClB,CACF,CACA,MAAMkuB,WAAkBzQ,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,YAAa,EAAI,EACvC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,SAAU,QAAQ,CAAC,EACjE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,SAAW,KAChB,KAAK,OAAS,IAChB,CACF,CACA,MAAMmuB,WAAgB1Q,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,YAAc,IAAI6d,CACzB,CACF,CACA,MAAMuQ,WAAc3Q,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,QAAS,EAAI,EACnC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,IAChB,CACA,CAACkX,EAAQ,EAAE+U,EAAY,CACrB,OAAOA,EAAaA,EAAW/U,EAAQ,EAAC,EAAK,SAC/C,CACF,CACA,MAAMmX,WAAc/O,EAAa,CAC/B,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,OAAO,EAC7B,KAAK,QAAU9K,GAAW,CACxB,KAAM1X,EAAW,QACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,GAAK6oG,EAAW,IAAM,GAC3B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,SAAU,UAAW,OAAQ,SAAS,CAAC,EAC7F,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMsuB,WAAgB7Q,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO0X,GAAW,CACrB,KAAM1X,EAAW,KACjB,aAAc,GACd,SAAU7oG,GAAKA,GAAK,GAAKA,GAAK,GACpC,CAAK,EACD,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,MAAQ,KACb,KAAK,OAAS,IAChB,CACA,CAACkX,EAAQ,EAAExZ,EAAS,CAClB,MAAM1U,EAAQ,KAAK,KAAO,IAC1B,OAAO/0F,GAAK,aAAa,KAAK,MAAMypG,EAAQ,MAAM,GAAK,EAAI1U,GAAS,KAAK,MAAM,EAAIA,CAAK,EAAG,KAAK,MAAM0U,EAAQ,MAAM,GAAK,EAAI1U,GAAS,KAAK,MAAM,EAAIA,CAAK,EAAG,KAAK,MAAM0U,EAAQ,MAAM,GAAK,EAAI1U,GAAS,KAAK,MAAM,EAAIA,CAAK,CAAC,CAC/N,CACF,CACA,MAAMulC,WAAgB9Q,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,UAAW,EAAI,EACrC,KAAK,OAASzK,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,iBAAkB,YAAa,UAAU,CAAC,EACpG,KAAK,WAAa0X,GAAW,CAC3B,KAAM1X,EAAW,WACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,WAAa4gH,GAAgB/X,EAAW,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,UAAU,CAAC,EACvL,KAAK,QAAU0X,GAAW,CACxB,KAAM1X,EAAW,QACjB,aAAc,EACd,SAAU,GAAK,GAAK,GAAK,IAAM,EACrC,CAAK,EACD,KAAK,cAAgBA,EAAW,cAAgB,IAAI,KAAI,EAAG,MAAM,KAAK,EAAE,IAAI7oG,GAAKA,IAAM,KAAO,GAAK6gH,GAAe7gH,CAAC,CAAC,EACpH,KAAK,EAAI6oG,EAAW,EAAIgY,GAAehY,EAAW,CAAC,EAAI,GACvD,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,OAAO,CAAC,EAC9G,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,OAAS+X,GAAgB/X,EAAW,OAAQ,CAAC,WAAY,QAAS,SAAU,QAAS,MAAO,QAAS,IAAI,CAAC,EAC/G,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,UAAY+X,GAAgB/X,EAAW,UAAW,CAAC,cAAe,eAAe,CAAC,EACvF,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOgY,GAAehY,EAAW,KAAM,KAAK,EACjD,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAY,WAAW,CAAC,EACnG,KAAK,SAAWuY,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,aAAe+X,GAAgB/X,EAAW,aAAc,CAAC,SAAU,MAAM,CAAC,EAC/E,KAAK,MAAQ+X,GAAgB/X,EAAW,MAAO,CAAC,OAAQ,MAAM,CAAC,EAC/D,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,EAAIA,EAAW,EAAIgY,GAAehY,EAAW,CAAC,EAAI,GACvD,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,EAAIgY,GAAehY,EAAW,EAAG,KAAK,EAC3C,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,QAAU,KACf,KAAK,OAAS,KACd,KAAK,MAAQ,KACb,KAAK,UAAY,KACjB,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,MAAQ,KACb,KAAK,SAAW,KAChB,KAAK,QAAU,KACf,KAAK,KAAO,KACZ,KAAK,UAAY,KACjB,KAAK,SAAW,KAChB,KAAK,UAAY,KACjB,KAAK,KAAO,IAAI6d,EAChB,KAAK,WAAa,IAAIA,EACtB,KAAK,YAAc,IAAIA,EACvB,KAAK,QAAU,IAAIA,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,MAAQ,IAAIA,EACjB,KAAK,SAAW,IAAIA,EACpB,KAAK,UAAY,IAAIA,EACrB,KAAK,MAAQ,IAAIA,EACjB,KAAK,MAAQ,IAAIA,EACjB,KAAK,YAAc,IAAIA,EACvB,KAAK,QAAU,IAAIA,EACnB,KAAK,WAAa,IAAIA,CACxB,CACA,CAAClJ,EAAiB,GAAI,CACpB,MAAM34G,EAAS,KAAK44G,EAAU,EAAC,EAC/B,OAAI54G,aAAkBsnH,GACbtnH,EAAO24G,EAAiB,EAAC,EAE3B34G,CACT,CACA,CAACo5G,EAAW,GAAI,CACd,MAAO,EACT,CACA,CAACK,EAAiB,GAAI,CACpB,OAAO,KAAK,OAAO,SAAS,KAAK,GAAK,KAAK7B,CAAM,EAAE,UAAY,GAAK,KAAKA,CAAM,EAAE,aAAe,GAAK,KAAKgB,EAAU,EAAC,EAAGa,EAAiB,EAAC,CAC5I,CACA,EAAEhB,EAAqB,GAAI,CACzB,MAAO4O,GAAqB,IAAI,CAClC,CACA,CAACvP,EAAU,GAAI,CACb,OAAOgO,GAAU,IAAI,CACvB,CACA,CAAC7O,EAAQ,EAAE2F,EAAMtuF,EAAM,CACrB03F,GAAQ,KAAMpJ,EAAMtuF,CAAI,CAC1B,CACA,CAAC2pF,EAAkB,GAAI,CACrB,OAAOgO,GAAkB,IAAI,CAC/B,CACA,CAACzM,EAAa,GAAI,CAChB,MAAMx5G,EAAS,KAAK24G,EAAiB,EAAC,EACtC,OAAK34G,EAAOw5G,EAAa,IAGrB,KAAK5B,CAAM,EAAE,gBAAkB,OAC1B,KAAKA,CAAM,EAAE,cAElB,KAAK,SAAW,YAAc,KAAK,OAAO,SAAS,KAAK,GAC1D,KAAKA,CAAM,EAAE,cAAgB,GACtB,IAEL,KAAK,MAAQ,KAAK,KAAK,SAAW,QACpC,KAAKA,CAAM,EAAE,cAAgB,GACtB,IAEL53G,EAAO,QAAQ,SAAS,KAAK,GAAKA,EAAO43G,CAAM,EAAE,eAAiB,EAC7D,IAET,KAAKA,CAAM,EAAE,cAAgB,GACtB,IAjBE,EAkBX,CACA,CAACoD,EAAO,EAAE+G,EAAgB,CAExB,GADAyF,GAAY,IAAI,EACZ,KAAK,MAAO,CACd,GAAI,KAAK,MAAM,QAAU,QAAU,KAAK,MAAM,cAAgB,GAAI,CAChE,MAAM9kG,EAAO,IAAI4nG,GAAW,CAC1B,WAAY,KAAK,MAAM,MACvB,OAAQ,KAAK,MAAM,YACnB,SAAU,KAAK,MAAM,SAAS,SAAQ,CAChD,CAAS,EACD5nG,EAAKo2F,EAAW,EAAI,KAAKA,EAAW,EACpC,KAAK5B,EAAY,EAAEx0F,CAAI,EACvB,KAAK,WAAW,KAAKA,CAAI,CAC3B,CACA,GAAI,KAAK,MAAM,SAAW,QAAU,KAAK,MAAM,eAAiB,GAAI,CAClE,MAAMA,EAAO,IAAI6nG,GAAY,CAC3B,WAAY,KAAK,MAAM,OACvB,OAAQ,KAAK,MAAM,aACnB,SAAU,KAAK,MAAM,SAAS,SAAQ,CAChD,CAAS,EACD7nG,EAAKo2F,EAAW,EAAI,KAAKA,EAAW,EACpC,KAAK5B,EAAY,EAAEx0F,CAAI,EACvB,KAAK,YAAY,KAAKA,CAAI,CAC5B,CACA,GAAI,KAAK,MAAM,iBAAmB,GAAI,CACpC,MAAMA,EAAO,IAAIsuG,GAAS,CACxB,OAAQ,KAAK,MAAM,eACnB,OAAQ,KAAK,MAAM,eACnB,QAAS,KAAK,MAAM,eAC9B,CAAS,EACDtuG,EAAKo2F,EAAW,EAAI,KAAKA,EAAW,EACpC,KAAK5B,EAAY,EAAEx0F,CAAI,EACvB,KAAK,SAAS,KAAKA,CAAI,CACzB,CACA,KAAK43F,EAAY,EAAE,KAAK,KAAK,EAC7B,KAAK,MAAQ,IACf,CACA,GAAI,KAAK,WAAa,UAAY,KAAK,WAAa,WAClD,OAAOoC,GAAW,MAKpB,IAHI,KAAK,YAAY,SAAS,OAAS,GAAK,KAAK,WAAW,SAAS,OAAS,IAC5EvnH,EAAK,yEAAyE,EAE5E,KAAK,YAAY,SAAS,QAAU,EAAG,CACzC,MAAMq9H,EAAc,KAAK,YAAY,SAAS,CAAC,EAC/C,GAAItK,GAAYsK,CAAW,EACzB,OAAO9V,GAAW,UAAU8V,CAAW,CAE3C,CACA,GAAI,KAAK5a,CAAM,GAAG,gBAChB,OAAO8E,GAAW,MAEpB2H,GAAc,IAAI,EAClB,MAAMjE,EAAW,CAAA,EACXpc,EAAa,CACjB,GAAI,KAAKmX,EAAI,EACb,MAAO,CAAA,CACb,EACIiK,GAAU,KAAMphB,EAAW,KAAK,EAChC,KAAK4T,CAAM,IAAM,OAAO,OAAO,IAAI,EACnC,OAAO,OAAO,KAAKA,CAAM,EAAG,CAC1B,SAAAwI,EACA,KAAM,KACN,WAAApc,EACA,QAAS,EACT,aAAc,EACd,eAAgB,CACd,MAAO,KAAK,IAAI,KAAK,GAAK,IAAU+d,EAAe,KAAK,EACxD,OAAQ,KAAK,IAAI,KAAK,GAAK,IAAUA,EAAe,MAAM,CAClE,EACM,MAAO,EACP,OAAQ,EACR,WAAY,EACZ,aAAc,CACpB,CAAK,EACD,MAAMtf,EAAO,KAAKoW,EAAgB,EAAC,EAC7B4Z,EAAuBhwB,EAAKmV,CAAM,EAAE,gBACpC8V,EAAe,KAAKlU,EAAa,EAAC,EAIxC,GAHKkU,GACH1F,GAAqB,IAAI,EAEvB,CAAC3B,GAAgB,KAAMtE,CAAc,EACvC,OAAOrF,GAAW,QAEpB,MAAMlhE,EAAS,IAAI,IAAI,CAAC,OAAQ,OAAQ,YAAa,QAAS,UAAW,YAAY,CAAC,EACtF,GAAI,KAAK,OAAO,SAAS,KAAK,EAAG,CAC/B,MAAMmyE,EAAe,KAAKhV,EAAiB,EAAC,EAAG,aAC3C,MAAM,QAAQgV,CAAY,GAAKA,EAAa,OAAS,IACvD,KAAK/V,CAAM,EAAE,aAAe+V,EAC5B,KAAK/V,CAAM,EAAE,cAAgB,EAEjC,CACA,MAAMrvB,EAAQg8B,GAAQ,KAAM,aAAc,aAAc,WAAY,WAAY,SAAU,SAAU,QAAQ,EACtGO,EAAa,CAAC,YAAY,EAC1B9uF,EAAKsuF,GAAY,IAAI,EAS3B,GARItuF,GACF8uF,EAAW,KAAK9uF,CAAE,EAEpBguE,EAAW,MAAQzb,EACnByb,EAAW,MAAQ8gB,EACf,KAAK,OACP9gB,EAAW,QAAU,KAAK,MAExB,KAAK,SAAU,CACjB,MAAM0uB,EAAgB,KAAK,SAASpa,EAAS,EAAC,EAC1Coa,EAAc,YAChBA,EAAc,UAAY,GAC1B9J,GAAe,KAAM8J,EAAc,OAAQ3Q,CAAc,EAE7D,CACA,KAAK1H,EAAS,EAAC,EACf,MAAMuT,EAAS,KAAK,SAAW,SAAW,KAAK,SAAW,QACpDC,EAASD,EAASnH,GAA+B,EACvD,KAAO,KAAK7O,CAAM,EAAE,QAAUiW,EAAQ,KAAKjW,CAAM,EAAE,UAAW,CACxDgW,GAAU,KAAKhW,CAAM,EAAE,UAAY6O,GAA+B,IACpE,KAAK7O,CAAM,EAAE,aAAe,GAE9B,MAAMrzG,EAAS,KAAK4yG,EAAe,EAAE,CACnC,OAAA37D,EACA,QAAS,EACjB,CAAO,EACD,GAAIj3C,EAAO,QACT,MAEF,GAAIA,EAAO,UACT,YAAK61G,EAAQ,EAAC,EACP71G,EAET,GAAIqpH,GAAU,KAAKhW,CAAM,EAAE,UAAY,GAAK,KAAKA,CAAM,EAAE,eAAiB,GAAK,CAACnV,EAAKmV,CAAM,EAAE,gBAAiB,CAC5G,KAAKA,CAAM,EAAE,QAAUiW,EACvB,KACF,CACF,CAMA,GALA,KAAKzT,EAAQ,EAAC,EACTsT,GACHzF,GAAuB,IAAI,EAE7BxlB,EAAKmV,CAAM,EAAE,gBAAkB6a,EAC3B,KAAK7a,CAAM,EAAE,UAAYiW,EAC3B,OAAI,KAAK,WACP,KAAKhV,EAAgB,EAAC,EAAGjB,CAAM,EAAE,aAAe,KAAK,UAElD8V,GACH,OAAO,KAAK9V,CAAM,EAEb8E,GAAW,QAEpB,GAAI,KAAK,SAAU,CACjB,MAAMgW,EAAgB,KAAK,SAASpa,EAAS,EAAC,EAC1Coa,EAAc,aAChBA,EAAc,WAAa,GAC3B9J,GAAe,KAAM8J,EAAc,QAAS3Q,CAAc,EAE9D,CACA,IAAImC,EAAU,EACVC,EAAU,EACV,KAAK,SACPD,EAAU,KAAK,OAAO,UAAY,KAAK,OAAO,WAC9CC,EAAU,KAAK,OAAO,SAAW,KAAK,OAAO,aAE/C,MAAMnjH,EAAQ,KAAK,IAAI,KAAK42G,CAAM,EAAE,MAAQsM,EAAS,KAAK,GAAK,CAAC,EAC1DjjH,EAAS,KAAK,IAAI,KAAK22G,CAAM,EAAE,OAASuM,EAAS,KAAK,GAAK,CAAC,EAC5D71F,EAAO,CAAC,KAAK,EAAG,KAAK,EAAGttB,EAAOC,CAAM,EAO3C,GANI,KAAK,IAAM,KACbsnF,EAAM,MAAQo7B,GAAgB3iH,CAAK,GAEjC,KAAK,IAAM,KACbunF,EAAM,OAASo7B,GAAgB1iH,CAAM,IAElCsnF,EAAM,QAAU,OAASA,EAAM,SAAW,QAAU63B,EAAS,SAAW,EAC3E,OAAO1D,GAAW,MAEpB,MAAME,EAAO,CACX,KAAM,MACN,WAAA5Y,EACA,SAAAoc,CACN,EACIqH,GAAY,KAAMzjB,CAAU,EAC5B,MAAMz/F,EAASm4G,GAAW,QAAQ+H,GAAc,KAAM7H,CAAI,EAAGtuF,CAAI,EACjE,GAAI,KAAK,WAAW,SAAS,QAAU,EAAG,CACxC,MAAMqkG,EAAa,KAAK,WAAW,SAAS,CAAC,EAC7C,GAAIzK,GAAYyK,CAAU,EACxB,YAAK/a,CAAM,EAAE,gBAAkBrzG,EACxBm4G,GAAW,UAAUiW,CAAU,CAE1C,CACA,cAAO,KAAK/a,CAAM,EACXrzG,CACT,CACF,CACA,MAAM+iH,WAAmB7F,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,aAAc,EAAI,EACxC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,UAAW,SAAU,WAAW,CAAC,EACvF,KAAK,SAAWuY,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,QAAU,KACf,KAAK,MAAQ,KACb,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,MAAQ,KACb,KAAK,SAAW,KAChB,KAAK,WAAa,IAAI6d,EACtB,KAAK,YAAc,IAAIA,EACvB,KAAK,QAAU,IAAIA,EACnB,KAAK,WAAa,IAAIA,CACxB,CACA,EAAEpJ,EAAqB,GAAI,CACzB,MAAO4O,GAAqB,IAAI,CAClC,CACA,CAAC1O,EAAiB,GAAI,CACpB,IAAI34G,EAAS,KAAK44G,EAAU,EAAC,EAC7B,KAAO,EAAE54G,aAAkBuyH,KACzBvyH,EAASA,EAAO44G,EAAU,EAAC,EAE7B,OAAO54G,CACT,CACA,CAACo5G,EAAW,GAAI,CACd,MAAO,EACT,CACF,CACA,MAAMwZ,WAAkBxP,EAAc,CACpC,YAAYpf,EAAY,CACtB,MAAMwiB,GAAgB,WAAW,EACjC,KAAK,UAAYxiB,EAAW,WAAa,IACzC,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAAC6T,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAI,IAAI,IAAI,KAAKA,EAAQ,EAAE,MAAM,KAAK,SAAS,EAAE,IAAIob,IAChEA,EAAKA,EAAG,MAAM,IAAK,CAAC,EACpBA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAE,KAAI,EACXA,EACR,CAAC,CACJ,CACF,CACA,MAAMC,WAAmBrR,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,aAAc,EAAI,EACxC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,UAAY,IAAI6d,CACvB,CACF,CACA,MAAMkR,WAAetR,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,SAAU,EAAI,EACpC,KAAK,SAAW9K,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,OAAS4gH,GAAgB/X,EAAW,OAAQ,CAAC,MAAO,WAAY,MAAO,aAAc,MAAO,KAAK,CAAC,EACvG,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,aAAe8X,GAAW,CAC7B,KAAM9X,EAAW,aAAeA,EAAW,aAAa,YAAW,EAAK,GACxE,aAAc,GACd,SAAUxzF,GAAK,CAAC,QAAS,WAAY,eAAgB,MAAO,WAAY,UAAW,WAAY,OAAQ,YAAa,QAAS,QAAQ,EAAE,SAASA,CAAC,GAAKA,EAAE,MAAM,gBAAgB,CACpL,CAAK,EACD,KAAK,IAAMwzF,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,WAAaA,EAAW,YAAc,GAC3C,KAAK,QAAU,KACf,KAAK,YAAc,IAAI6d,EACvB,KAAK,SAAW,IAAIA,CACtB,CACF,CACA,MAAMgP,WAAiBpP,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,WAAY,EAAI,EACtC,KAAK,YAAczK,GAAgB/X,EAAW,YAAa,CAAC,OAAQ,kBAAkB,CAAC,EACvF,KAAK,OAAS,KACd,KAAK,QAAU,IAAI6d,CACrB,CACA,CAAChK,EAAS,GAAI,CACR,KAAK,QAAQ,SAAS,SAAW,GACnC1iH,EAAK,qCAAqC,EAExC,KAAK,QAAQ,SAAS,QAAU,GAClCA,EAAK,6DAA6D,EAEpE,KAAK0lH,EAAS,EAAI8L,EACpB,CACA,CAACnN,EAAa,GAAI,CAChB,MAAO,EACT,CACA,CAACiB,EAAW,EAAEkF,EAAMK,EAAW,CAC7B,OAAIL,EAAK,WAAW,GAAG,EACd,CAAC,KAAK3G,EAAI,EAAE,IAAI2G,EAAK,MAAM,CAAC,CAAC,CAAC,EAEhCI,GAAW,KAAMC,EAAWL,EAAM,GAAM,EAAI,CACrD,CACA,EAAE5E,EAAQ,GAAI,CACZ,GAAI,CAAC,KAAK,QAAQ,SAAS,OACzB,OAAO2B,GAAW,QAAQ,CACxB,KAAM,MACN,SAAU,CAAA,CAClB,CAAO,EAEH,KAAK9E,CAAM,EAAI,CACb,aAAc,KACd,kBAAmB,KACnB,mBAAoB,KACpB,gBAAiB,KACjB,gBAAiB,GACjB,WAAY,EACZ,aAAc,QACd,UAAW,MACX,gBAAiB,WACjB,UAAW,CAAA,CACjB,EACI,MAAMnV,EAAO,KAAK,QAAQ,SAAS,CAAC,EACpCA,EAAK,QAAQ4U,EAAU,EAAC,EACxB,MAAM2b,EAAYvwB,EAAK,QAAQ,SAAS,SAClCwwB,EAAW,CACf,KAAM,MACN,SAAU,CAAA,CAChB,EACI,IAAI1K,EAAW,KACXiK,EAAc,KACdU,EAAoB,KAcxB,GAbIzwB,EAAK,YAAY,SAAS,QAAU,GACtC+vB,EAAc/vB,EAAK,YAAY,SAAS,CAAC,EACzCywB,EAAoBV,EAAY,QACvB/vB,EAAK,QAAQ,SAAS,QAAU,GAAKA,EAAK,QAAQ,SAAS,CAAC,EAAE,YAAY,SAAS,QAAU,GACtG+vB,EAAc/vB,EAAK,QAAQ,SAAS,CAAC,EAAE,YAAY,SAAS,CAAC,EAC7DywB,EAAoBV,EAAY,QACvB/vB,EAAK,OAAO,cACrB+vB,EAAc/vB,EAAK,MACnBywB,EAAoBV,EAAY,cACvB/vB,EAAK,QAAQ,SAAS,QAAU,GAAKA,EAAK,QAAQ,SAAS,CAAC,EAAE,OAAO,eAC9E+vB,EAAc/vB,EAAK,QAAQ,SAAS,CAAC,EAAE,MACvCywB,EAAoBV,EAAY,cAE9BA,EAAa,CACf,MAAMvhB,EAAS,KAAKwJ,EAAW,EAAEyY,EAAmBV,EAAY5Z,EAAU,GAAG,EACzE3H,aAAkBoX,KACpBE,EAAWtX,EACXuhB,EAAY5a,CAAM,EAAI,CAAA,EAE1B,CACA2Q,IAAayK,EAAU,CAAC,EACxBzK,EAAS3Q,CAAM,EAAI,CACjB,YAAa,CACnB,EACI,MAAMub,EAAiB5K,EAAS3P,EAAU,EAAC,EAC3Cua,EAAevb,CAAM,EAAI,CACvB,YAAa,EACb,UAAWub,EAAe,SAAS,SAAS,QAAQ5K,CAAQ,EAC5D,aAAc,CACpB,EACI,IAAI6K,EACAnC,EAAS,KACTC,EAAU,KACVmC,EAAe,GACfC,EAAsB,EACtBh0D,EAAa,EACjB,OAAa,CACX,GAAK+zD,EAOHC,EAAsB,UANtBL,EAAS,SAAS,IAAG,EACjB,EAAEK,IAAwB5M,GAC5B,OAAAvxH,EAAK,gDAAgD,EAC9C89H,EAKXG,EAAiB,KACjB,KAAKxb,CAAM,EAAE,gBAAkB2Q,EAC/B,MAAMprH,EAAOorH,EAASvN,EAAO,EAAC,EAAG,KACjCiY,EAAS,SAAS,KAAK91H,CAAI,EACvB8zH,IACF,KAAKrZ,CAAM,EAAE,gBAAkB,GAC/Bz6G,EAAK,SAAS,KAAK8zH,EAAOjW,EAAO,EAAEuN,EAAS3Q,CAAM,EAAE,KAAK,EAAE,IAAI,EAC/DqZ,EAAS,MAEPC,IACF,KAAKtZ,CAAM,EAAE,gBAAkB,GAC/Bz6G,EAAK,SAAS,KAAK+zH,EAAQlW,EAAO,EAAEuN,EAAS3Q,CAAM,EAAE,KAAK,EAAE,IAAI,EAChEsZ,EAAU,MAEZ,MAAMzI,EAAeF,EAAS,YAAY,SACpCgL,EAAmBp2H,EAAK,SAAS,OAAOulB,GAAQA,EAAK,WAAW,MAAM,SAAS,gBAAgB,CAAC,EACtG2wG,EAAe,GACf,KAAKzb,CAAM,EAAE,kBAAoB,KACjC,KAAKA,CAAM,EAAE,gBAAkB,GAC/B,MAAM4b,EAAQlrG,GAAS,CACrB,MAAMs0F,EAAOna,EAAKqV,EAAU,EAAC,EACzB8E,IACFyW,IAAiBzW,EAAK,UAAU,OAAS,EACzC2W,EAAiBjrG,CAAK,EAAE,SAAS,KAAKs0F,CAAI,EAE9C,EACA,QAASrlH,EAAI+nE,EAAY5iE,EAAK+rH,EAAa,OAAQlxH,EAAImF,EAAInF,IAAK,CAC9D,MAAMk8H,EAAc,KAAK7b,CAAM,EAAE,mBAAqB6Q,EAAalxH,CAAC,EAC9DilC,EAAQ,CACZ,MAAOi3F,EAAY,EACnB,OAAQA,EAAY,CAC9B,EACQn0D,EAAa,EACT2xD,IACFsC,EAAiBh8H,CAAC,EAAE,SAAS,KAAK05H,EAAOjW,EAAO,EAAEx+E,CAAK,EAAE,IAAI,EAC7Dy0F,EAAS,MAEPC,IACFqC,EAAiBh8H,CAAC,EAAE,SAAS,KAAK25H,EAAQlW,EAAO,EAAEx+E,CAAK,EAAE,IAAI,EAC9D00F,EAAU,MAEZ,MAAMtU,EAAOna,EAAKuY,EAAO,EAAEx+E,CAAK,EAChC,GAAIogF,EAAK,QACP,OAAIA,EAAK,MACPyW,IAAiBzW,EAAK,KAAK,UAAU,OAAS,EAC9C2W,EAAiBh8H,CAAC,EAAE,SAAS,KAAKqlH,EAAK,IAAI,GAClC,CAACyW,GAAgBJ,EAAS,SAAS,OAAS,GACrDA,EAAS,SAAS,IAAG,EAEhBA,EAET,GAAIrW,EAAK,UAAW,CAClB,MAAMl6F,EAAOk6F,EAAK,UAElB,GADA4W,EAAMj8H,CAAC,EACHmrB,EAAK,aAAe,OACtB,SAEEA,EAAK,SACPuuG,EAAS,KAAKxW,EAAW,EAAE/3F,EAAK,OAAQA,EAAKk2F,EAAU,GAAG,EAC1DqY,EAASA,EAASA,EAAO,CAAC,EAAI,MAE5BvuG,EAAK,UACPwuG,EAAU,KAAKzW,EAAW,EAAE/3F,EAAK,QAASA,EAAKk2F,EAAU,GAAG,EAC5DsY,EAAUA,EAAUA,EAAQ,CAAC,EAAI,MAE/BxuG,EAAK,aAAe,YACtB0wG,EAAiB1wG,EAAKk1F,CAAM,EAAE,OAC9BrgH,EAAI,KACMmrB,EAAKk1F,CAAM,EAAE,QAGvBwb,EAAiB1wG,EAAKk1F,CAAM,EAAE,OAC9Bt4C,EAAa58C,EAAKk1F,CAAM,EAAE,MAAQ,EAClCrgH,EAAI,KAJJA,EAAImrB,EAAKk1F,CAAM,EAAE,MAMnB,QACF,CACA,GAAI,KAAKA,CAAM,EAAE,aAAc,CAC7B,MAAMl1F,EAAO,KAAKk1F,CAAM,EAAE,aAC1B,KAAKA,CAAM,EAAE,aAAe,KAC5B,MAAM8a,EAAgBhwG,EAAK41F,EAAS,EAAC,EAC/BrH,EAASyhB,EAAc,OAC7BA,EAAc,UAAYA,EAAc,SAAW,KACnDA,EAAc,WAAaA,EAAc,UAAY,KACrDc,EAAMj8H,CAAC,EACP,MAAM04G,EAAe14G,EAErB,GADAA,EAAI,IACA05G,aAAkBoX,GACpB+K,EAAiBniB,UACRA,aAAkBqX,GAAa,CACxC,MAAMhgG,EAAQmgG,EAAa,QAAQxX,CAAM,EACrC3oF,IAAU,GACRA,EAAQ2nF,EACV14G,EAAI+wB,EAAQ,EAEZg3C,EAAah3C,GAGf8qG,EAAiBniB,EAAO2H,EAAU,EAAC,EACnCt5C,EAAa8zD,EAAe,YAAY,SAAS,QAAQniB,CAAM,EAEnE,CACA,QACF,CACAuiB,EAAMj8H,CAAC,CACT,CACA,KAAKqgH,CAAM,EAAE,YAAc,EACvBwb,IACEA,EAAezZ,EAAS,IAC1ByZ,EAAexb,CAAM,EAAE,aAAe,EAEtCwb,EAAiB,MAGrB7K,EAAW6K,GAAkB7K,EAAS7P,EAAY,EAAC,EACnD,MAAM,IACR,CACF,CACF,CACA,MAAMgb,WAAatQ,EAAc,CAC/B,YAAYpf,EAAY,CACtB,MAAMwiB,GAAgB,MAAM,EAC5B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,SAAW0X,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAKA,GAAK,CAC1B,CAAK,EACD,KAAK,KAAO6oG,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAACgT,EAAiB,GAAI,CACpB,MAAO,EACT,CACA,CAACgD,EAAQ,EAAE/U,EAAO,CAChB,OAAIA,EAAM4U,EAAY,IAAMwB,GAAa,MAAM,IAC7C,KAAK5D,EAAQ,EAAIxS,EACV,KAET9vG,EAAK,kCAAkC8vG,EAAM6U,EAAS,CAAC,GAAG,EACnD,GACT,CACA,CAACI,EAAO,EAAEnkH,EAAK,CACT,KAAK0hH,EAAQ,YAAagK,GAG9B,MAAMvH,EAAO,EAAEnkH,CAAG,CACpB,CACA,CAAC8hH,EAAS,GAAI,CACR,OAAO,KAAKJ,EAAQ,GAAM,WAC5B,KAAKA,EAAQ,EAAI,KAAKA,EAAQ,EAAE,WAAW;AAAA,EAAQ;AAAA,CAAI,EAE3D,CACA,CAACa,EAAS,GAAI,CACZ,OAAI,OAAO,KAAKb,EAAQ,GAAM,SACrB,KAAKA,EAAQ,EAAE,MAAM,kBAAkB,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,CAAI,EAEpE,KAAKA,EAAQ,EAAEqD,EAAK,EAAC,CAC9B,CACA,CAACE,EAAO,EAAE+G,EAAgB,CACxB,GAAI,OAAO,KAAKtK,EAAQ,GAAM,SAAU,CACtC,MAAMmF,EAAOmL,GAAY,KAAKtQ,EAAQ,CAAC,EAAE,KACzC,OAAI,KAAKA,EAAQ,EAAE,SAAS,QAAQ,GAClCmF,EAAK,KAAO,MACZA,EAAK,SAAW,CAAA,EAChB,KAAKnF,EAAQ,EAAE,MAAM,QAAQ,EAAE,IAAI+N,GAAQA,EAAK,MAAM,YAAY,EAAE,QAAQjkB,GAAQ,CAAC,CACnF,KAAM,OACN,MAAOA,CACjB,EAAW,CACD,KAAM,IAChB,CAAS,CAAC,CAAC,EAAE,QAAQK,GAAS,CACpBgb,EAAK,SAAS,KAAK,CACjB,KAAM,IACN,SAAUhb,CACtB,CAAW,CACH,CAAC,GACQ,aAAa,KAAK,KAAK6V,EAAQ,CAAC,IACzCmF,EAAK,KAAO,MACZA,EAAK,SAAW,CAAA,EAChB,KAAKnF,EAAQ,EAAE,MAAM,YAAY,EAAE,QAAQlW,GAAQ,CACjDqb,EAAK,SAAS,KAAK,CACjB,KAAM,OACN,MAAOrb,CACnB,EAAa,CACD,KAAM,IAClB,CAAW,CACH,CAAC,GAEImb,GAAW,QAAQE,CAAI,CAChC,CACA,OAAO,KAAKnF,EAAQ,EAAEuD,EAAO,EAAE+G,CAAc,CAC/C,CACF,CACA,MAAMmM,WAAiBzM,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,WAAY,EAAI,EACtC,KAAK,cAAgB9K,GAAW,CAC9B,KAAM1X,EAAW,cACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,cAAgB4gH,GAAgB/X,EAAW,cAAe,CAAC,OAAQ,MAAO,IAAI,CAAC,EACpF,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,UAAY0X,GAAW,CAC1B,KAAM1X,EAAW,UACjB,aAAc,GACd,SAAU7oG,GAAKA,IAAM,GAAKA,IAAM,CACtC,CAAK,EACD,KAAK,IAAM6oG,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,cAAgB+X,GAAgB/X,EAAW,cAAe,CAAC,OAAQ,MAAO,IAAI,CAAC,EACpF,KAAK,OAAS,KACd,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,OAAS,IAChB,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,MAAMx5B,EAAQg8B,GAAQ,KAAM,SAAU,OAAQ,QAAQ,EACtD,IAAI3H,EACJ,MAAMr7C,EAAQ,KAAKq3C,EAAU,EAAC,EAAGA,EAAU,EAAC,EAC5C,OAAI,KAAK,YAAc,KACrB,KAAK,UAAYr3C,aAAiBsrD,GAAO,EAAI,GAE3C,KAAK,YAAc,EACrBjQ,EAAO,CACL,KAAM,WACN,WAAY,CACV,OAAQr7C,EAAMm2C,EAAK,IAAIyD,EAAI,GAAK55C,EAAM45C,EAAI,EAC1C,QAAS55C,EAAM45C,EAAI,EACnB,MAAO,CAAC,cAAc,EACtB,MAAA5yB,EACA,aAAcu/B,GAAUvmD,CAAK,EAC7B,gBAAiB,EAC3B,CACA,EAEMq7C,EAAO,CACL,KAAM,QACN,WAAY,CACV,KAAM,OACN,OAAQr7C,EAAMm2C,EAAK,IAAIyD,EAAI,GAAK55C,EAAM45C,EAAI,EAC1C,QAAS55C,EAAM45C,EAAI,EACnB,MAAO,CAAC,cAAc,EACtB,MAAA5yB,EACA,aAAcu/B,GAAUvmD,CAAK,EAC7B,gBAAiB,EAC3B,CACA,EAEQgmD,GAAWhmD,CAAK,IAClBq7C,EAAK,WAAW,eAAe,EAAI,GACnCA,EAAK,WAAW,SAAW,IAEtBF,GAAW,QAAQ,CACxB,KAAM,QACN,WAAY,CACV,MAAO,CAAC,UAAU,CAC1B,EACM,SAAU,CAACE,CAAI,CACrB,CAAK,CACH,CACF,CACA,MAAM+W,WAAarQ,EAAa,CAC9B,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,MAAM,EAC5B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACA,CAAC6T,EAAS,GAAI,CACZ,MAAMrvG,EAAO,KAAKivG,EAAQ,EAAE,KAAI,EAChC,KAAKA,EAAQ,EAAIjvG,EAAO,IAAI,KAAKA,CAAI,EAAI,IAC3C,CACA,CAACwyG,EAAO,EAAE+G,EAAgB,CACxB,OAAOgG,GAAY,KAAKtQ,EAAQ,EAAI,KAAKA,EAAQ,EAAE,SAAQ,EAAK,EAAE,CACpE,CACF,CACA,MAAMmc,WAAkBnS,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,WAAW,EACjC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,WAAY,UAAU,CAAC,EACrE,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM6vB,WAAgBvQ,EAAa,CACjC,YAAYtf,EAAY,CACtB,MAAMwiB,GAAgB,SAAS,EAC/B,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM8vB,WAAkBrS,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,YAAa,EAAI,EACvC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,SAAW,IAAI6d,CACtB,CACF,CACA,MAAMkS,WAAiBtS,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,WAAY,EAAI,EACtC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,UAAY+X,GAAgB/X,EAAW,UAAW,CAAC,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QAAS,IAAI,CAAC,EAC/G,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,OAAS,IAChB,CACA,IAAI,MAAO,CACT,OAAO,KAAK,SACd,CACA,CAAC0V,EAAc,GAAI,CACjB,MAAO,EACT,CACF,CACA,MAAMuU,WAAWxM,CAAU,CACzB,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,KAAM,EAAI,EAChC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,QAAU,KACf,KAAK,QAAU,KACf,KAAK,OAAS,KACd,KAAK,YAAc,KACnB,KAAK,WAAa,KAClB,KAAK,aAAe,KACpB,KAAK,UAAY,KACjB,KAAK,UAAY,KACjB,KAAK,YAAc,KACnB,KAAK,aAAe,KACpB,KAAK,UAAY,KACjB,KAAK,SAAW,IAClB,CACA,CAACsU,EAAS,GAAI,CACZ,GAAI,KAAKV,CAAM,IAAM,OAAW,CAC9B,UAAWrhH,KAAQ,OAAO,oBAAoB,IAAI,EAAG,CACnD,GAAIA,IAAS,UAAYA,IAAS,UAChC,SAEF,MAAMN,EAAM,KAAKM,CAAI,EACrB,GAAMN,aAAewrH,EAGrB,YAAK7J,CAAM,EAAI3hH,EACRA,CACT,CACA,KAAK2hH,CAAM,EAAI,IACjB,CACA,OAAO,KAAKA,CAAM,CACpB,CACA,CAACoD,EAAO,EAAE+G,EAAgB,CACxB,MAAM9rH,EAAM,KAAKqiH,EAAS,EAAC,EAC3B,OAAIriH,EACKA,EAAI+kH,EAAO,EAAE+G,CAAc,EAE7BrF,GAAW,KACpB,CACF,CACA,MAAMsX,WAAiBvS,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,WAAY,EAAI,EACtC,KAAK,WAAazK,GAAgB/X,EAAW,WAAY,CAAC,UAAW,WAAY,OAAO,CAAC,EACzF,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,SAAW+X,GAAgB/X,EAAW,SAAU,CAAC,WAAY,QAAS,SAAS,CAAC,EACrF,KAAK,WAAa+X,GAAgB/X,EAAW,WAAY,CAAC,QAAS,WAAY,SAAS,CAAC,EACzF,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,OAAS,KACd,KAAK,QAAU,KACf,KAAK,QAAU,KACf,KAAK,OAAS,IAChB,CACF,CACA,MAAMojB,WAAc3F,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,QAAS,EAAI,EACnC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,SAAW0X,GAAW,CACzB,KAAM1X,EAAW,SACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,SAAWohH,GAAYvY,EAAW,QAAQ,EAC/C,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,IAAM,KACX,KAAK,QAAU,KACf,KAAK,KAAO,KACZ,KAAK,SAAW,KAChB,KAAK,QAAU,KACf,KAAK,OAAS,KACd,KAAK,MAAQ,KACb,KAAK,MAAQ,KACb,KAAK,QAAU,KACf,KAAK,KAAO,KACZ,KAAK,UAAY,KACjB,KAAK,KAAO,KACZ,KAAK,KAAO,IACd,CACA,CAAC4W,EAAS,EAAEzkH,EAAO,CACjB,MAAM6J,EAAS,KAAK44G,EAAU,EAAC,EAC/B,GAAI54G,aAAkBguH,IAChBhuH,EAAO,IAAI,UAAW,CACnB,KAAK,QACR,KAAK,MAAQ,IAAIwvH,GAAM,EAAE,EACzB,KAAKtY,EAAY,EAAE,KAAK,KAAK,GAE/B,KAAK,MAAMO,EAAQ,EAAIthH,EAAMshH,EAAQ,EACrC,MACF,CAEF,MAAMwc,EAAY99H,EAAM2jH,EAAS,EACjC,GAAI,KAAKma,CAAS,IAAM,KAAM,CAC5B,KAAKA,CAAS,EAAExc,EAAQ,EAAIthH,EAAMshH,EAAQ,EAC1C,MACF,CACA,UAAWlhH,KAAQ,OAAO,oBAAoB,IAAI,EAAG,CACnD,MAAMN,EAAM,KAAKM,CAAI,EACjBN,aAAewrH,IACjB,KAAKlrH,CAAI,EAAI,KACb,KAAK+jH,EAAY,EAAErkH,CAAG,EAE1B,CACA,KAAKE,EAAM2jH,EAAS,CAAC,EAAI3jH,EACzB,KAAK+gH,EAAY,EAAE/gH,CAAK,CAC1B,CACA,CAAC2kH,EAAK,GAAI,CACR,GAAI,KAAK,OACP,OAAO,OAAO,KAAK,OAAOrD,EAAQ,GAAM,SAAW,KAAK,OAAOA,EAAQ,EAAE,KAAI,EAAK,KAAK,OAAOA,EAAQ,EAAEqD,EAAK,EAAC,EAAG,KAAI,EAEvH,UAAWvkH,KAAQ,OAAO,oBAAoB,IAAI,EAAG,CACnD,GAAIA,IAAS,QACX,SAEF,MAAMN,EAAM,KAAKM,CAAI,EACrB,GAAIN,aAAewrH,EACjB,OAAQxrH,EAAIwhH,EAAQ,GAAK,IAAI,SAAQ,EAAG,KAAI,CAEhD,CACA,OAAO,IACT,CACA,CAACuD,EAAO,EAAE+G,EAAgB,CACxB,UAAWxrH,KAAQ,OAAO,oBAAoB,IAAI,EAAG,CACnD,MAAMN,EAAM,KAAKM,CAAI,EACrB,GAAMN,aAAewrH,EAGrB,OAAOxrH,EAAI+kH,EAAO,EAAE+G,CAAc,CACpC,CACA,OAAOrF,GAAW,KACpB,CACF,CACA,MAAMwX,WAAkBzS,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMwiB,GAAgB,YAAa,EAAI,EACvC,KAAK,GAAKxiB,EAAW,IAAM,GAC3B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,GACrC,KAAK,QAAU,IAAI6d,EACnB,KAAK,KAAO,IAAIA,EAChB,KAAK,SAAW,IAAIA,EACpB,KAAK,QAAU,IAAIA,EACnB,KAAK,OAAS,IAAIA,EAClB,KAAK,MAAQ,IAAIA,EACjB,KAAK,MAAQ,IAAIA,EACjB,KAAK,QAAU,IAAIA,EACnB,KAAK,SAAW,IAAIA,EACpB,KAAK,OAAS,IAAIA,EAClB,KAAK,KAAO,IAAIA,EAChB,KAAK,KAAO,IAAIA,CAClB,CACA,CAACnI,EAAc,GAAI,CACjB,MAAO,EACT,CACF,CACA,MAAMya,EAAkB,CACtB,OAAQ/Y,EAAe,EAAE7kH,EAAMytG,EAAY,CACzC,GAAI,OAAO,OAAOmwB,GAAmB59H,CAAI,EAAG,CAC1C,MAAMmsB,EAAOyxG,GAAkB59H,CAAI,EAAEytG,CAAU,EAC/C,OAAAthF,EAAKi4F,EAAiB,EAAE3W,CAAU,EAC3BthF,CACT,CAEF,CACA,OAAO,iBAAiBywF,EAAO,CAC7B,OAAO,IAAI4V,GAAiB5V,CAAK,CACnC,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI6V,GAAI7V,CAAK,CACtB,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAIsW,GAAKtW,CAAK,CACvB,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIuW,GAAOvW,CAAK,CACzB,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIwW,GAAQxW,CAAK,CAC1B,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAIyW,GAAKzW,CAAK,CACvB,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI0W,GAAU1W,CAAK,CAC5B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAI2W,GAAQ3W,CAAK,CAC1B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAI4W,GAAe5W,CAAK,CACjC,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI6W,GAAO7W,CAAK,CACzB,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIkX,GAAMlX,CAAK,CACxB,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAImX,GAAWnX,CAAK,CAC7B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIoX,GAAYpX,CAAK,CAC9B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIqX,GAAOrX,CAAK,CACzB,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI0X,GAAU1X,CAAK,CAC5B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAI2X,GAAQ3X,CAAK,CAC1B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAI6X,GAAY7X,CAAK,CAC9B,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAI8X,GAAa9X,CAAK,CAC/B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAI+X,GAAY/X,CAAK,CAC9B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAIsY,GAAWtY,CAAK,CAC7B,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAI8Y,GAAM9Y,CAAK,CACxB,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI+Y,GAAK/Y,CAAK,CACvB,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIgZ,GAAQhZ,CAAK,CAC1B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAImV,GAAYnV,CAAK,CAC9B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIiZ,GAAOjZ,CAAK,CACzB,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAIkZ,GAAYlZ,CAAK,CAC9B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAImZ,GAASnZ,CAAK,CAC3B,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAIoZ,GAAapZ,CAAK,CAC/B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIqZ,GAAQrZ,CAAK,CAC1B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIsZ,GAAUtZ,CAAK,CAC5B,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAIuZ,GAAKvZ,CAAK,CACvB,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAIwZ,GAAaxZ,CAAK,CAC/B,CACA,OAAO,cAAcA,EAAO,CAC1B,OAAO,IAAIyZ,GAAczZ,CAAK,CAChC,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI0Z,GAAK1Z,CAAK,CACvB,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI+V,GAAK/V,CAAK,CACvB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI6Z,GAAS7Z,CAAK,CAC3B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI8Z,GAAU9Z,CAAK,CAC5B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAI+Z,GAAQ/Z,CAAK,CAC1B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIga,GAAYha,CAAK,CAC9B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAIia,GAAWja,CAAK,CAC7B,CACA,OAAO,iBAAiBA,EAAO,CAC7B,OAAO,IAAIka,GAAiBla,CAAK,CACnC,CACA,OAAO,kBAAkBA,EAAO,CAC9B,OAAO,IAAIma,GAAkBna,CAAK,CACpC,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIoa,GAAMpa,CAAK,CACxB,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIqa,GAAOra,CAAK,CACzB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIsa,GAASta,CAAK,CAC3B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIqY,GAAUrY,CAAK,CAC5B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAI2a,GAAQ3a,CAAK,CAC1B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI4a,GAAO5a,CAAK,CACzB,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAI6a,GAAM7a,CAAK,CACxB,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI0b,GAAK1b,CAAK,CACvB,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI+b,GAAO/b,CAAK,CACzB,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIgc,GAAMhc,CAAK,CACxB,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAIic,GAAcjc,CAAK,CAChC,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIkc,GAAOlc,CAAK,CACzB,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAImc,GAAQnc,CAAK,CAC1B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIoc,GAAYpc,CAAK,CAC9B,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIqc,GAAMrc,CAAK,CACxB,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIsc,GAAUtc,CAAK,CAC5B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIuc,GAAQvc,CAAK,CAC1B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIwc,GAAQxc,CAAK,CAC1B,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIyc,GAAMzc,CAAK,CACxB,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI0c,GAAK1c,CAAK,CACvB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI2c,GAAS3c,CAAK,CAC3B,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI4c,GAAK5c,CAAK,CACvB,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI6c,GAAO7c,CAAK,CACzB,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAIgd,GAAahd,CAAK,CAC/B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIid,GAASjd,CAAK,CAC3B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIkd,GAAOld,CAAK,CACzB,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAImd,GAAInd,CAAK,CACtB,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIod,GAAOpd,CAAK,CACzB,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIqd,GAAQrd,CAAK,CAC1B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIsd,GAAYtd,CAAK,CAC9B,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIud,GAAMvd,CAAK,CACxB,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI2d,GAAI3d,CAAK,CACtB,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI4d,GAAK5d,CAAK,CACvB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI6d,GAAS7d,CAAK,CAC3B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIkV,GAASlV,CAAK,CAC3B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIyd,GAAQzd,CAAK,CAC1B,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAIke,GAAKle,CAAK,CACvB,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAIme,GAAane,CAAK,CAC/B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIoe,GAAiBpe,CAAK,CACnC,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIqe,GAAQre,CAAK,CAC1B,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIse,GAAMte,CAAK,CACxB,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIue,GAAOve,CAAK,CACzB,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIwe,GAAOxe,CAAK,CACzB,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIye,GAAQze,CAAK,CAC1B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI8b,GAAU9b,CAAK,CAC5B,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI2e,GAAW3e,CAAK,CAC7B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI4e,GAAO5e,CAAK,CACzB,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAI6e,GAAY7e,CAAK,CAC9B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI8e,GAAS9e,CAAK,CAC3B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI+e,GAAU/e,CAAK,CAC5B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIgf,GAAQhf,CAAK,CAC1B,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIif,GAAMjf,CAAK,CACxB,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIkf,GAAMlf,CAAK,CACxB,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAImf,GAAQnf,CAAK,CAC1B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIof,GAAQpf,CAAK,CAC1B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAImU,GAAWnU,CAAK,CAC7B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIyf,GAAUzf,CAAK,CAC5B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAI2f,GAAW3f,CAAK,CAC7B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI4f,GAAO5f,CAAK,CACzB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI0d,GAAS1d,CAAK,CAC3B,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAIugB,GAAKvgB,CAAK,CACvB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI+a,GAAS/a,CAAK,CAC3B,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAIwgB,GAAKxgB,CAAK,CACvB,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIygB,GAAUzgB,CAAK,CAC5B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAI0gB,GAAQ1gB,CAAK,CAC1B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI2gB,GAAU3gB,CAAK,CAC5B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI4gB,GAAS5gB,CAAK,CAC3B,CACA,OAAO,GAAGA,EAAO,CACf,OAAO,IAAI8a,GAAG9a,CAAK,CACrB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI6gB,GAAS7gB,CAAK,CAC3B,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIiU,GAAMjU,CAAK,CACxB,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI+gB,GAAU/gB,CAAK,CAC5B,CACF,CASA,MAAMihB,GAAmB/Y,GAAa,SAAS,GAC/C,SAASgZ,GAAWzjD,EAAS,CAC3B,MAAMluD,EAAO,IAAIgxG,GAAK,EAAE,EACxB,OAAAhxG,EAAK+0F,EAAQ,EAAI7mC,EACVluD,CACT,CACA,MAAM4xG,EAAO,CACX,YAAY7xB,EAAM,CAChB,KAAK,KAAOA,EACZ,KAAK,SAAWA,EAAK,SACrB,KAAK,KAAOA,EAAK,UAAU,MAAQ,IAAImf,GAAUwS,GAAkB,MAAM,EACzE,KAAK,WAAa,KAAK,KAAK5b,EAAY,EAAC,EAAG,SAAW,EACvD,KAAK,KAAK,KAAO,KAAK,KAAO/V,EAAK,SAAS8U,EAAM,EAAC,CACpD,CACA,gBAAiB,CACf,MAAO,CAAC,KAAK,YAAc,KAAK,UAClC,CACA,kBAAmB,CACjB,MAAO,CAAC,KAAK,eAAc,CAC7B,CACA,MAAO,CACL,YAAK,aAAa,KAAK,KAAM,KAAK,IAAI,EAC/B,KAAK,IACd,CACA,SAAU,CACR,OAAO,KAAK,IACd,CACA,WAAWgd,EAAU1wH,EAAM2wH,EAAS,CAElC,GADAD,EAAS7c,EAAK,EAAI7zG,EACd0wH,EAASxb,EAAiB,IAC5B,GAAIl1G,EAAKw1G,EAAY,IAAK,CACxB,MAAMljH,EAAQ0N,EAAKw0G,EAAa,EAAC,EACjCkc,EAAS3Z,EAAS,EAAEyZ,GAAWl+H,CAAK,CAAC,CACvC,SAAWo+H,aAAoBvG,IAASuG,EAAS,IAAI,YAAY,OAAS,cAAe,CACvF,MAAMp+H,EAAQ0N,EAAK20G,EAAY,EAAC,EAAG,IAAIvT,GAASA,EAAMwS,EAAQ,EAAE,KAAI,CAAE,EAAE,KAAK;AAAA,CAAI,EACjF8c,EAAS3Z,EAAS,EAAEyZ,GAAWl+H,CAAK,CAAC,CACvC,MAAW,KAAK,kBACdhB,EAAK,oCAAoC,MAElC,CAAC0O,EAAKw1G,EAAY,EAAC,GAAM,KAAK,mBACvC,KAAK,aAAakb,EAAU1wH,CAAI,EAEhC1O,EAAK,oCAAoC,CAE7C,CACA,yBAAyBoB,EAAMk+H,EAAS3R,EAAU4R,EAAQ,CACxD,GAAI,CAACn+H,EACH,OAAO,KAET,IAAIo+H,EAAW5uH,EACf,QAASxO,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAE1B,IADAo9H,EAAY7R,EAASvK,EAAwB,EAAEhiH,EAAM,GAAO,EAAI,EAE9DwP,EAAQ4uH,EAAU,KAAI,EAAG,MACrB,EAAC5uH,GAGL,GAAI0uH,IAAY1uH,EAAMszG,EAAY,IAChC,OAAOtzG,EAGX,GAAI+8G,EAASjJ,EAAY,IAAMua,IAAoBtR,EAAShJ,EAAS,IAAM,OACzE,MAEFgJ,EAAWA,EAASlK,EAAU,EAAC,CACjC,CACA,OAAK8b,GAGLC,EAAY,KAAK,KAAKpc,EAAwB,EAAEhiH,EAAM,GAAM,EAAK,EACjEwP,EAAQ4uH,EAAU,KAAI,EAAG,MACrB5uH,IAGJ4uH,EAAY,KAAK,KAAK5c,EAAe,EAAExhH,EAAM,EAAI,EACjDwP,EAAQ4uH,EAAU,KAAI,EAAG,MACrB5uH,IAAQszG,EAAY,KACftzG,EAEF,MAZE,IAaX,CACA,eAAewuH,EAAUzR,EAAU,CACjC,GAAK,OAAO,OAAOyR,EAAU,aAAa,EAG1C,SAAW,CACT,IAAA10H,EACA,OAAAoxG,EACA,WAAA2jB,CACN,IAASL,EAAS,YAAY,SAAU,CAIlC,GAHIK,GAGA,CAAC/0H,EACH,SAEF,MAAM8vF,EAAQowB,GAAW,KAAK,KAAM+C,EAAUjjH,EAAK,GAAO,EAAK,EAC/D,GAAI,CAAC8vF,EAAO,CACVx6F,EAAK,4BAA4B0K,CAAG,GAAG,EACvC,QACF,CACA,KAAM,CAAC6iB,CAAI,EAAIitE,EACf,GAAI,CAACjtE,EAAK42F,EAAa,EAAE,KAAK,IAAI,EAAG,CACnCnkH,EAAK,0CAA0C,EAC/C,QACF,CACA,MAAM0/H,EAAc9U,GAAW,KAAK,KAAMwU,EAAUtjB,EAAQ,GAAO,EAAK,EACxE,GAAI,CAAC4jB,EAAa,CAChB1/H,EAAK,yBAAyB87G,CAAM,GAAG,EACvC,QACF,CACA,KAAM,CAAC6jB,CAAU,EAAID,EACrB,GAAI,CAACC,EAAWxb,EAAa,EAAEib,CAAQ,EAAG,CACxCp/H,EAAK,0DAA0D,EAC/D,QACF,CACA,MAAM4/H,EAAeD,EAAWlc,EAAU,EAAC,EAC3C,GAAIkc,aAAsB9C,IAAe+C,aAAwB/C,GAAa,CAC5E78H,EAAK,yEAAyE,EAC9E,QACF,CACA,GAAI2/H,aAAsBjL,IAAakL,aAAwBlL,GAAW,CACxE10H,EAAK,uEAAuE,EAC5E,QACF,CACA,MAAMy7E,EAAUluD,EAAKo4F,EAAK,EAAC,EACrBvkH,EAAOu+H,EAAWhb,EAAS,EACjC,GAAIgb,aAAsBjS,GAAc,CACtC,MAAM1P,EAAQ,OAAO,OAAO,IAAI,EAChCA,EAAM58G,CAAI,EAAIq6E,EACd,MAAM36E,EAAM,QAAQ,UAAU,OAAO,eAAe8+H,CAAY,EAAE,YAAa,CAAC5hB,CAAK,CAAC,EACtF4hB,EAAax+H,CAAI,EAAIN,EAAIM,CAAI,EAC7B,QACF,CACA,GAAI,CAAC,OAAO,OAAOu+H,EAAYrd,EAAQ,EAAG,CACxCtiH,EAAK,0CAA0C,EAC/C,QACF,CACA2/H,EAAWpd,EAAK,EAAIh1F,EACpBoyG,EAAWrd,EAAQ,EAAI7mC,EACvBkkD,EAAWjd,EAAS,EAAC,CACvB,CACF,CACA,WAAW0c,EAAUzR,EAAU,CAC7B,GAAI,CAAC,OAAO,OAAOyR,EAAU,OAAO,GAAK,CAAC,OAAO,OAAOA,EAAU,WAAW,GAAKA,EAAS,UAAU,QAAO,EAC1G,OAEF,UAAWzwH,KAAQywH,EAAS,MAAM,SAChCA,EAASja,EAAY,EAAEx2G,CAAI,EAE7BywH,EAAS,MAAM,MAAK,EACpB,MAAMS,EAAS,IAAIpF,GAAM,EAAE,EACrBpwH,EAAS,IAAIowH,GAAM,EAAE,EAC3B2E,EAASrd,EAAY,EAAE8d,CAAM,EAC7BT,EAAS,MAAM,KAAKS,CAAM,EAC1BT,EAASrd,EAAY,EAAE13G,CAAM,EAC7B+0H,EAAS,MAAM,KAAK/0H,CAAM,EAC1B,SAAW,CACT,IAAAK,EACA,SAAAo1H,EACA,SAAAC,EACA,WAAAN,CACN,IAASL,EAAS,UAAU,SAAU,CAIhC,GAHIK,GAGA,CAAC/0H,EACH,SAEF,MAAM8vF,EAAQowB,GAAW,KAAK,KAAM+C,EAAUjjH,EAAK,GAAO,EAAK,EAC/D,GAAI,CAAC8vF,EAAO,CACVx6F,EAAK,4BAA4B0K,CAAG,GAAG,EACvC,QACF,CACA,UAAW6iB,KAAQitE,EAAO,CACxB,GAAI,CAACjtE,EAAK42F,EAAa,EAAE,KAAK,QAAQ,EAAG,CACvCnkH,EAAK,sBAAsB0K,CAAG,8BAA8B,EAC5D,QACF,CACA,MAAMs1H,EAAapV,GAAW,KAAK,KAAMr9F,EAAMuyG,EAAU,GAAM,EAAK,EACpE,GAAI,CAACE,EAAY,CACfhgI,EAAK,wBAAwB8/H,CAAQ,GAAG,EACxC,QACF,CACA,KAAM,CAACG,CAAS,EAAID,EACpB,GAAI,CAACC,EAAU9b,EAAa,EAAE,KAAK,QAAQ,EAAG,CAC5CnkH,EAAK,gDAAgD,EACrD,QACF,CACA,MAAMkgI,EAAatV,GAAW,KAAK,KAAMr9F,EAAMwyG,EAAU,GAAM,EAAK,EACpE,GAAI,CAACG,EAAY,CACflgI,EAAK,wBAAwB+/H,CAAQ,GAAG,EACxC,QACF,CACA,KAAM,CAACI,CAAS,EAAID,EACpB,GAAI,CAACC,EAAUhc,EAAa,EAAE,KAAK,QAAQ,EAAG,CAC5CnkH,EAAK,gDAAgD,EACrD,QACF,CACA,MAAMogI,EAAQlB,GAAWe,EAAUta,EAAK,EAAC,CAAE,EACrC3kH,EAAQk+H,GAAWiB,EAAUxa,EAAK,EAAC,CAAE,EAC3Cka,EAAO9d,EAAY,EAAEqe,CAAK,EAC1BP,EAAO,KAAK,KAAKO,CAAK,EACtB/1H,EAAO03G,EAAY,EAAE/gH,CAAK,EAC1BqJ,EAAO,KAAK,KAAKrJ,CAAK,CACxB,CACF,CACF,CACA,iBAAiBo+H,EAAUtrD,EAASurD,EAAS,CAC3C,IAAIgB,EASJ,GARIvsD,EAAQ,OAAS,IACnBusD,EAAYjB,EAAShd,EAAM,EAAC,EAC5Bie,EAAUlb,EAAY,EAAEkb,EAAU,KAAK,EACvCA,EAAU,MAAQ,MAEpB,KAAK,WAAWjB,EAAUtrD,EAAQ,CAAC,EAAGurD,CAAO,EAC7C,KAAK,eAAeD,EAAUtrD,EAAQ,CAAC,CAAC,EACxC,KAAK,WAAWsrD,EAAUtrD,EAAQ,CAAC,CAAC,EAChCA,EAAQ,SAAW,EACrB,OAEF,MAAMjpE,EAASu0H,EAAS3b,EAAU,EAAC,EAC7BriH,EAAOg+H,EAASza,EAAS,EACzBnhH,EAAMqH,EAAOi5G,EAAQ,EAAEsb,CAAQ,EACrC,QAASh9H,EAAI,EAAGmF,EAAKusE,EAAQ,OAAQ1xE,EAAImF,EAAInF,IAAK,CAChD,MAAMwO,EAAQkjE,EAAQ1xE,CAAC,EACjB0oG,EAAQu1B,EAAUje,EAAM,EAAC,EAC/Bv3G,EAAOzJ,CAAI,EAAE,KAAK0pG,CAAK,EACvBjgG,EAAOk5G,EAAS,EAAEvgH,EAAMpB,EAAG0oG,CAAK,EAChC,KAAK,WAAWA,EAAOl6F,EAAOyuH,CAAO,EACrC,KAAK,eAAev0B,EAAOl6F,CAAK,EAChC,KAAK,WAAWk6F,EAAOl6F,CAAK,CAC9B,CACF,CACA,mBAAmBwuH,EAAU,CAC3B,GAAI,CAAC,KAAK,WACR,OAEF,KAAM,CACJ,MAAAkB,CACN,EAAQlB,EACJ,GAAI,CAACkB,GAASA,EAAM,SAAW,EAC7B,OAEF,MAAMz1H,EAASu0H,EAAS3b,EAAU,EAAC,EAC7BriH,EAAOg+H,EAASza,EAAS,EAC/B,GAAI,EAAE95G,EAAOzJ,CAAI,YAAasrH,GAC5B,OAEF,IAAI6T,EACAnB,EAAS,KACXmB,EAAgB11H,EAAOzJ,CAAI,EAAE,SAAS,OAAO6f,GAAKA,EAAE,OAASm+G,EAAS,IAAI,EAAE,OAE5EmB,EAAgB11H,EAAOzJ,CAAI,EAAE,SAAS,OAExC,MAAMoC,EAAMqH,EAAOi5G,EAAQ,EAAEsb,CAAQ,EAAI,EACnC73H,EAAK+4H,EAAM,QAAUC,EAC3B,GAAIh5H,EAAI,CACN,MAAMi5H,EAAYpB,EAAShd,EAAM,EAAC,EAClCoe,EAAUrb,EAAY,EAAEqb,EAAU,KAAK,EACvCA,EAAU,MAAQ,KAClB31H,EAAOzJ,CAAI,EAAE,KAAKo/H,CAAS,EAC3B31H,EAAOk5G,EAAS,EAAEvgH,EAAKg9H,CAAS,EAChC,QAASp+H,EAAI,EAAGA,EAAImF,EAAInF,IAAK,CAC3B,MAAM0oG,EAAQ01B,EAAUpe,EAAM,EAAC,EAC/Bv3G,EAAOzJ,CAAI,EAAE,KAAK0pG,CAAK,EACvBjgG,EAAOk5G,EAAS,EAAEvgH,EAAMpB,EAAG0oG,CAAK,CAClC,CACF,CACF,CACA,cAAcs0B,EAAU,CACtB,KAAM,CACJ,KAAAh+H,EACA,MAAAk/H,CACN,EAAQlB,EACJ,GAAI,CAACkB,GAAS,CAACl/H,EACb,MAAO,CAAC,EAAG,CAAC,EAEd,MAAMgW,EAAMkpH,EAAM,MAAQ,GAAK,IAAWA,EAAM,IAChD,MAAO,CAACA,EAAM,IAAKlpH,CAAG,CACxB,CACA,YAAYgoH,EAAUzR,EAAU,CAC9B,KAAK,eAAeyR,EAAUzR,CAAQ,EACtC,KAAK,WAAWyR,EAAUzR,CAAQ,EAClC,KAAK,aAAayR,EAAUzR,CAAQ,CACtC,CACA,aAAayR,EAAUzR,EAAU,CAC/B,MAAM8S,EAAe,CAAA,EACrB,KAAK,mBAAmBrB,CAAQ,EAChC,UAAWtvB,KAASsvB,EAAS/b,EAAY,EAAC,EAAI,CAC5C,GAAIvT,EAAMyS,EAAK,EACb,SAEF,GAAI,KAAK,aAAe,QAAazS,EAAM6U,EAAS,IAAM,UAAW,CACnE,KAAK,WAAa7U,EAAM,YAAc,cACtC,MAAM4wB,EAAe/S,EAAStK,EAAY,EAAC,EAC3C,GAAIqd,EAAa,OAAS,EACxB,KAAK,iBAAiB5wB,EAAO,CAAC4wB,EAAa,CAAC,CAAC,EAAG,IAAI,UAC3C,KAAK,WAAY,CAC1B,MAAMnU,EAAOoB,EAASjJ,EAAY,IAAMua,GAAmB,GAAKtR,EAASjJ,EAAY,EAC/Eic,EAAY7wB,EAAMyS,EAAK,EAAI,IAAIkK,GAAUF,EAAMzc,EAAM,MAAQ,MAAM,EACzE6d,EAAS5L,EAAY,EAAE4e,CAAS,EAChC,KAAK,aAAa7wB,EAAO6wB,CAAS,CACpC,CACA,QACF,CACA,GAAI,CAAC7wB,EAAMmU,EAAW,IACpB,SAEF,IAAIsb,EAAS,GACTF,EAAU,KACV30H,EAAM,KACNkG,EAAQ,KACZ,GAAIk/F,EAAM,KAAM,CACd,OAAQA,EAAM,KAAK,MAAK,CACtB,IAAK,OACH,KAAK,YAAYA,EAAO6d,CAAQ,EAChC,SACF,IAAK,SACH4R,EAAS,GACT,MACF,IAAK,UACH,GAAI,CAACzvB,EAAM,KAAK,IAAK,CACnB9vG,EAAK,8BAA8B8vG,EAAM6U,EAAS,CAAC,GAAG,EACtD,KAAK,YAAY7U,EAAO6d,CAAQ,EAChC,QACF,CACAjjH,EAAMolG,EAAM,KAAK,IACjB,KAGZ,CACYA,EAAM,KAAK,UACbuvB,EAAUvvB,EAAM,KAAK,QAAQwS,EAAQ,EAEzC,CACA,KAAM,CAACnrG,EAAKC,CAAG,EAAI,KAAK,cAAc04F,CAAK,EAC3C,GAAIplG,EAEF,GADAkG,EAAQg6G,GAAW,KAAK,KAAM+C,EAAUjjH,EAAK,GAAM,EAAK,EACpDkG,IAAU,KAAM,CAElB,GADAA,EAAQs6G,GAAe,KAAK,KAAMyC,EAAUjjH,CAAG,EAC3C,CAACkG,EACH,SAEE,KAAK,mBACPA,EAAMyxG,EAAS,EAAI,IAErB,KAAK,YAAYvS,EAAOl/F,CAAK,EAC7B,QACF,MACM,KAAK,mBACPA,EAAQA,EAAM,OAAO2c,GAAQ,CAACA,EAAK80F,EAAS,CAAC,GAE3CzxG,EAAM,OAASwG,EACjBxG,EAAQA,EAAM,MAAM,EAAGwG,CAAG,EACjBxG,EAAM,SAAW,IAC1BA,EAAQ,MAENA,GAAS,KAAK,kBAChBA,EAAM,QAAQ2c,GAAQ,CACpBA,EAAK80F,EAAS,EAAI,EACpB,CAAC,MAGA,CACL,GAAI,CAACvS,EAAM,KAAM,CACf,KAAK,YAAYA,EAAO6d,CAAQ,EAChC,QACF,CACA,GAAI,KAAK,iBAAkB,CACzB,MAAM75C,EAAU,CAAA,EAChB,KAAOA,EAAQ,OAAS18D,GAAK,CAC3B,MAAMmwC,EAAQ,KAAK,yBAAyBuoD,EAAM,KAAMA,EAAM8T,EAAiB,EAAC,EAAI+J,EAAU4R,CAAM,EACpG,GAAI,CAACh4E,EACH,MAEFA,EAAM86D,EAAS,EAAI,GACnBvuC,EAAQ,KAAKvsB,CAAK,CACpB,CACA32C,EAAQkjE,EAAQ,OAAS,EAAIA,EAAU,IACzC,KAAO,CAEL,GADAljE,EAAQ+8G,EAASvK,EAAwB,EAAEtT,EAAM,KAAM,GAAO,KAAK,UAAU,EAAE,KAAI,EAAG,MAClF,CAACl/F,EAAO,CACV,GAAIuG,IAAQ,EAAG,CACbspH,EAAa,KAAK3wB,CAAK,EACvB,QACF,CACA,MAAMyc,EAAOoB,EAASjJ,EAAY,IAAMua,GAAmB,GAAKtR,EAASjJ,EAAY,EACrF9zG,EAAQk/F,EAAMyS,EAAK,EAAI,IAAIkK,GAAUF,EAAMzc,EAAM,IAAI,EACjD,KAAK,aACPl/F,EAAMyxG,EAAS,EAAI,IAErBsL,EAAS5L,EAAY,EAAEnxG,CAAK,EAC5B,KAAK,YAAYk/F,EAAOl/F,CAAK,EAC7B,QACF,CACI,KAAK,aACPA,EAAMyxG,EAAS,EAAI,IAErBzxG,EAAQ,CAACA,CAAK,CAChB,CACF,CACIA,EACF,KAAK,iBAAiBk/F,EAAOl/F,EAAOyuH,CAAO,EAClCloH,EAAM,EACf,KAAK,YAAY24F,EAAO6d,CAAQ,EAEhC8S,EAAa,KAAK3wB,CAAK,CAE3B,CACA2wB,EAAa,QAAQlzG,GAAQA,EAAKk2F,EAAU,IAAI0B,EAAY,EAAE53F,CAAI,CAAC,CACrE,CACF,CAIA,MAAMqzG,EAAY,CAChB,YAAYtzB,EAAM5+F,EAAM,CACtB,KAAK,KAAOA,EACZ,KAAK,QAAU4+F,EAAK,UAAY,IAClC,CACA,UAAUuzB,EAAS,CACjB,MAAMx+F,EAAQ,CAAC,CAAC,GAAI,KAAK,KAAKghF,EAAY,EAAC,CAAE,CAAC,EAC9C,KAAOhhF,EAAM,OAAS,GAAG,CACvB,MAAMD,EAAOC,EAAM,GAAG,EAAE,EAClB,CAAC,EAAG4oF,CAAQ,EAAI7oF,EACtB,GAAI,EAAI,IAAM6oF,EAAS,OAAQ,CAC7B5oF,EAAM,IAAG,EACT,QACF,CACA,MAAMytE,EAAQmb,EAAS,EAAE7oF,EAAK,CAAC,CAAC,EAC1B0+F,EAAeD,EAAQ,IAAI/wB,EAAMkW,EAAI,CAAC,EAC5C,GAAI8a,EACFhxB,EAAM2V,EAAS,EAAEqb,CAAY,MACxB,CACL,MAAMjyB,EAAaiB,EAAM+S,EAAc,EAAC,EACxC,UAAW7hH,KAAS6tG,EAAW,SAAU,CACvC,MAAM/9F,EAAQ+vH,EAAQ,IAAI7/H,EAAMglH,EAAI,CAAC,EACrC,GAAIl1G,EAAO,CACT9P,EAAMykH,EAAS,EAAE30G,CAAK,EACtB,KACF,CACF,CACF,CACA,MAAM0pF,EAAQsV,EAAMuT,EAAY,EAAC,EAC7B7oB,EAAM,OAAS,GACjBn4D,EAAM,KAAK,CAAC,GAAIm4D,CAAK,CAAC,CAE1B,CACA,MAAM1tF,EAAM,CAAC,oEAAoE,EACjF,GAAI,KAAK,QACP,UAAWgjG,KAAS,KAAK,QAAQuT,EAAY,EAAC,EACxCvT,EAAM6U,EAAS,IAAM,QACvB7U,EAAMgW,EAAS,EAAEh5G,CAAG,EAI1B,YAAK,KAAKg5G,EAAS,EAAEh5G,CAAG,EACxBA,EAAI,KAAK,iBAAiB,EACnBA,EAAI,KAAK,EAAE,CACpB,CACF,CAQA,MAAMi0H,GAAe7a,GAAa,OAAO,GACzC,MAAM8a,WAAgB1U,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,UAAW,EAAI,EACnC,KAAK,SAAW,KAChB,KAAK,SAAW,KAChB,KAAK,OAAS,KACd,KAAK,SAAW,KAChB,KAAK,2BAA6B,KAClC,KAAK,UAAY,IAAIrU,CACvB,CACF,CACA,MAAMuU,WAAiB3U,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,WAAY,EAAI,EACpC,KAAK,cAAgB,IACvB,CACF,CACA,MAAMG,WAAuBhT,EAAa,CACxC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,iBAAkB,CAAC,WAAY,SAAU,SAAS,CAAC,CACzE,CACF,CACA,MAAMI,WAAwBjT,EAAa,CACzC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,kBAAmB,CAAC,WAAY,SAAU,SAAS,CAAC,CAC1E,CACF,CACA,MAAMK,WAAuB9S,EAAS,CACpC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,gBAAgB,CACtC,CACF,CACA,MAAMM,WAA6B/S,EAAS,CAC1C,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,sBAAsB,CAC5C,CACF,CACA,MAAMO,WAAmB/S,EAAS,CAChC,YAAY1f,EAAY,CACtB,MAAMkyB,GAAc,YAAY,CAClC,CACF,CACA,MAAMQ,WAA4BnT,EAAc,CAC9C,YAAYvf,EAAY,CACtB,MAAMkyB,GAAc,sBAAuB,EAAG,GAAK,GAAK,GAAK,GAAK,CAAC,CACrE,CACF,CACA,MAAMS,WAAclV,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,QAAS,EAAI,EACjC,KAAK,KAAOlyB,EAAW,KAAOA,EAAW,KAAK,KAAI,EAAK,GACvD,KAAK,OAAS,IAAI6d,CACpB,CACF,CACA,MAAM+U,WAAoBxT,EAAc,CACtC,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,aAAa,CACnC,CACF,CACA,MAAMW,WAAYvT,EAAa,CAC7B,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,KAAK,CAC3B,CACF,CACA,MAAMY,WAAoBrV,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,MAAM,EAC1B,KAAK,MAAQxa,GAAW,CACtB,KAAM1X,EAAW,MACjB,aAAc,EACd,SAAU,GAAK,GAAK,GAAK,GAAK,CACpC,CAAK,EACD,KAAK,KAAO+X,GAAgB/X,EAAW,KAAM,CAAC,GAAI,UAAW,WAAY,eAAgB,OAAQ,UAAW,SAAU,QAAS,SAAU,YAAa,YAAa,eAAe,CAAC,CACrL,CACF,CACA,MAAM+yB,WAAmB1T,EAAa,CACpC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,aAAc,CAAC,WAAY,WAAY,QAAQ,CAAC,CACtE,CACF,CACA,MAAMc,WAAiB3T,EAAa,CAClC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,WAAY,CAAC,WAAY,SAAS,CAAC,CACzD,CACF,CACA,MAAMe,WAAa3T,EAAa,CAC9B,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,MAAM,CAC5B,CACF,CACA,MAAMgB,WAAoBzV,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,aAAa,EACjC,KAAK,OAASna,GAAgB/X,EAAW,OAAQ,CAAC,OAAQ,SAAU,MAAO,aAAa,CAAC,CAC3F,CACF,CACA,MAAMmzB,WAAyB/T,EAAc,CAC3C,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,kBAAkB,CACxC,CACA,CAACre,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAI,IAAI,IAAI,KAAKA,EAAQ,EAAE,KAAI,EAAG,MAAM,KAAK,EAAE,OAAOt8G,GAAKA,EAAE,SAAS,GAAG,CAAC,EAAE,IAAIA,GAAKA,EAAE,MAAM,IAAK,CAAC,CAAC,CAAC,CACpH,CACF,CACA,MAAMi8H,WAAc3V,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,QAAS,EAAI,EACjC,KAAK,cAAgB,IACvB,CACF,CACA,MAAMmB,WAAe5T,EAAS,CAC5B,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,QAAQ,CAC9B,CACF,CACA,MAAMoB,WAAe7V,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,SAAU,EAAI,EAClC,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,UAAY,KACjB,KAAK,UAAY,KACjB,KAAK,eAAiB,KACtB,KAAK,SAAW,KAChB,KAAK,oBAAsB,KAC3B,KAAK,eAAiB,KACtB,KAAK,IAAM,IAAIrU,CACjB,CACF,CACA,MAAM0V,WAAiB9V,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,UAAU,EAC9B,KAAK,MAAQna,GAAgB/X,EAAW,MAAO,CAAC,YAAa,UAAU,CAAC,CAC1E,CACF,CACA,MAAMwzB,WAAiC/T,EAAS,CAC9C,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,0BAA0B,CAChD,CACF,CACA,MAAMuB,WAA6B/T,EAAS,CAC1C,YAAY1f,EAAY,CACtB,MAAMkyB,GAAc,sBAAsB,CAC5C,CACF,CACA,MAAMwB,WAAoBjW,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,cAAe,EAAI,EACvC,KAAK,yBAA2B,KAChC,KAAK,qBAAuB,KAC5B,KAAK,MAAQ,KACb,KAAK,KAAO,IACd,CACF,CACA,MAAMyB,WAAelW,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,SAAU,EAAI,EAClC,KAAK,QAAU,KACf,KAAK,QAAU,KACf,KAAK,MAAQ,KACb,KAAK,MAAQ,IAAIrU,CACnB,CACF,CACA,MAAM+V,WAAoBvU,EAAa,CACrC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,cAAe,CAAC,IAAK,GAAG,CAAC,CAC/C,CACF,CACA,MAAM2B,WAAoBpU,EAAS,CACjC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,aAAa,CACnC,CACF,CACA,MAAM4B,WAAevU,EAAc,CACjC,YAAYvf,EAAY,CACtB,MAAMkyB,GAAc,SAAU,EAAG,GAAK,GAAK,CAAC,CAC9C,CACF,CACA,MAAM6B,WAAgBzU,EAAa,CACjC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,SAAS,CAC/B,CACF,CACA,MAAM8B,WAAoBzU,EAAc,CACtC,YAAYvf,EAAY,CACtB,MAAMkyB,GAAc,cAAe,EAAG,GAAK,GAAK,CAAC,CACnD,CACF,CACA,MAAM+B,WAAaxW,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,OAAQ,EAAI,EAChC,KAAK,WAAa,KAClB,KAAK,WAAa,KAClB,KAAK,gBAAkB,KACvB,KAAK,UAAY,KACjB,KAAK,MAAQ,KACb,KAAK,OAAS,KACd,KAAK,UAAY,KACjB,KAAK,IAAM,KACX,KAAK,OAAS,KACd,KAAK,IAAM,KACX,KAAK,UAAY,IAAIrU,EACrB,KAAK,UAAY,IAAIA,CACvB,CACF,CACA,MAAMqW,WAAczW,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,QAAS,EAAI,EACjC,KAAK,IAAM,IACb,CACF,CACA,MAAMiC,WAAwB/U,EAAc,CAC1C,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,iBAAiB,EACrC,KAAK,cAAgBna,GAAgB/X,EAAW,cAAe,CAAC,IAAK,SAAU,WAAY,oBAAqB,QAAS,SAAU,WAAY,SAAU,QAAS,oBAAqB,OAAQ,qBAAsB,YAAY,CAAC,CACpO,CACF,CACA,MAAMo0B,WAAoB/U,EAAa,CACrC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,cAAe,CAAC,MAAO,MAAO,KAAM,YAAa,KAAK,CAAC,CAC7E,CACF,CACA,MAAMmC,WAAyB5U,EAAS,CACtC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,kBAAkB,CACxC,CACF,CACA,MAAMoC,WAAe7W,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,SAAU,EAAI,EAClC,KAAK,KAAOlyB,EAAW,KAAOA,EAAW,KAAK,KAAI,EAAK,GACvD,KAAK,SAAW,KAChB,KAAK,IAAM,IACb,CACF,CACA,MAAMu0B,WAAqBlV,EAAa,CACtC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,eAAgB,CAAC,UAAW,qBAAsB,qBAAqB,CAAC,CAC9F,CACF,CACA,MAAMsC,WAAsBnV,EAAa,CACvC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,gBAAiB,CAAC,YAAa,UAAU,CAAC,CAChE,CACF,CACA,MAAMuC,WAAchV,EAAS,CAC3B,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,OAAO,CAC7B,CACF,CACA,MAAMwC,WAAuBjV,EAAS,CACpC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,SAAS,CAC/B,CACF,CACA,MAAMyC,WAA0BlX,CAAU,CACxC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,aAAc,EAAI,EACtC,KAAK,QAAU,KACf,KAAK,gBAAkB,KACvB,KAAK,YAAc,IACrB,CACF,CACA,MAAM0C,WAAwBvV,EAAa,CACzC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,kBAAmB,CAAC,QAAS,QAAQ,CAAC,CAC5D,CACF,CACA,MAAM2C,WAAgBvV,EAAa,CACjC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,SAAS,CAC/B,CACF,CACA,MAAM4C,WAAerX,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,QAAQ,EAC5B,KAAK,MAAQxa,GAAW,CACtB,KAAM1X,EAAW,MACjB,aAAc,EACd,SAAU,GAAK,IAAM,CAC3B,CAAK,EACD,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,GAAKA,EAAW,IAAM,EAC7B,CACF,CACA,MAAM+0B,WAAoBtX,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,aAAa,EACjC,KAAK,KAAOlyB,EAAW,MAAQ,GAC/B,KAAK,GAAKA,EAAW,IAAM,GAC3B,KAAK,cAAgBA,EAAW,cAAgB,EAClD,CACA,IAAI,cAAe,CACjB,MAAMzrF,EAAS,CAAA,EACTygH,EAAe,oBACfC,EAAe,KAAK,cAC1B,QAASvkH,KAASukH,EAAa,MAAM,GAAG,EAAE,IAAI99H,GAAKA,EAAE,KAAI,CAAE,EAAE,OAAO,OAAO,EACzEuZ,EAAQA,EAAM,MAAM,IAAK,CAAC,EAAE,IAAIvZ,GAAK,CACnC,MAAMuhD,EAAQvhD,EAAE,MAAM69H,CAAY,EAClC,OAAKt8E,EAGE,SAASA,EAAM,CAAC,EAAG,EAAE,EAFnB,CAGX,CAAC,EACGhoC,EAAM,SAAW,GACnBA,EAAM,KAAKA,EAAM,CAAC,CAAC,EAErB6D,EAAO,KAAK7D,CAAK,EAEnB,OAAO1e,GAAO,KAAM,eAAgBuiB,CAAM,CAC5C,CACF,CACA,MAAM2gH,WAAgB9V,EAAc,CAClC,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,SAAS,CAC/B,CACA,CAACre,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAI,KAAKA,EAAQ,EAAE,KAAI,EAAG,MAAM,KAAK,EAAE,OAAOt8G,GAAKA,GAAK,CAAC,YAAa,QAAS,QAAS,OAAQ,aAAc,QAAS,UAAU,EAAE,SAASA,CAAC,CAAC,CAC7J,CACF,CACA,MAAMg+H,WAAkB7V,EAAa,CACnC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,WAAW,CACjC,CACF,CACA,MAAMkD,WAAkB/V,EAAa,CACnC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,YAAa,CAAC,oBAAqB,KAAM,KAAK,CAAC,CACrE,CACF,CACA,MAAMmD,WAAwB5X,CAAU,CACtC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,WAAY,EAAI,EACpC,KAAK,MAAQ,KACb,KAAK,IAAM,KACX,KAAK,YAAc,KACnB,KAAK,YAAc,IAAIrU,EACvB,KAAK,gBAAkB,IAAIA,EAC3B,KAAK,WAAa,IAAIA,CACxB,CACF,CACA,MAAMyX,WAAyB7V,EAAS,CACtC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,kBAAkB,CACxC,CACF,CACA,MAAMqD,WAAoBjW,EAAa,CACrC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,aAAa,CACnC,CACF,CACA,MAAMsD,WAAgBnW,EAAa,CACjC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,UAAW,CAAC,YAAa,YAAa,SAAU,QAAQ,CAAC,CAC/E,CACF,CACA,MAAMuD,WAA0BnW,EAAa,CAC3C,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,mBAAmB,CACzC,CACF,CACA,MAAMwD,WAAwBrW,EAAa,CACzC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,kBAAmB,CAAC,OAAQ,aAAa,CAAC,CAChE,CACF,CACA,MAAMyD,WAAyBlW,EAAS,CACtC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,kBAAkB,CACxC,CACF,CACA,MAAM0D,WAAoBnW,EAAS,CACjC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,aAAa,CACnC,CACF,CACA,MAAM2D,WAAYxW,EAAa,CAC7B,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,MAAO,CAAC,oBAAqB,OAAQ,SAAS,CAAC,CACrE,CACF,CACA,MAAM4D,WAAqBrY,CAAU,CACnC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,eAAgB,EAAI,EACxC,KAAK,KAAOna,GAAgB/X,EAAW,KAAM,CAAC,MAAO,MAAO,MAAO,MAAM,CAAC,EAC1E,KAAK,YAAc,KACnB,KAAK,UAAY,KACjB,KAAK,SAAW,KAChB,KAAK,IAAM,IACb,CACF,CACA,MAAM+1B,WAAe1W,EAAa,CAChC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,SAAU,CAAC,WAAY,OAAO,CAAC,CACrD,CACF,CACA,MAAM8D,WAAczW,EAAc,CAChC,YAAYvf,EAAY,CACtB,MAAMkyB,GAAc,QAAS,EAAG,GAAK,EAAI,CAAC,CAC5C,CACF,CACA,MAAM+D,WAAmBxW,EAAS,CAChC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,YAAY,CAClC,CACF,CACA,MAAMgE,WAAe5W,EAAa,CAChC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,QAAQ,CAC9B,CACF,CACA,MAAMiE,WAAkB7W,EAAa,CACnC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,WAAW,CACjC,CACF,CACA,MAAMkE,WAAY3Y,CAAU,CAC1B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,MAAO,EAAI,EAC/B,KAAK,KAAO,KACZ,KAAK,UAAY,KACjB,KAAK,GAAK,KACV,KAAK,IAAM,IACb,CACF,CACA,MAAMmE,WAAmB5Y,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,MAAO,EAAI,EAC/B,KAAK,OAAS,IAAIrU,EAClB,KAAK,YAAc,IAAIA,CACzB,CACF,CACA,MAAMyY,WAAmB7Y,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,aAAc,EAAI,EACtC,KAAK,IAAM,IACb,CACF,CACA,MAAMqE,WAAuB9Y,CAAU,CACrC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,UAAW,EAAI,EACnC,KAAK,MAAQ,KACb,KAAK,SAAW,IAClB,CACF,CACA,MAAMsE,WAAkB/Y,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,YAAa,EAAI,EACrC,KAAK,QAAU,IAAIrU,CACrB,CACF,CACA,MAAM4Y,WAAapX,EAAa,CAC9B,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,OAAQ,CAAC,SAAU,WAAW,CAAC,CACrD,CACF,CACA,MAAMwE,WAAqBjX,EAAS,CAClC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,cAAc,CACpC,CACF,CACA,MAAMyE,WAAcpX,EAAc,CAChC,YAAYvf,EAAY,CACtB,MAAMkyB,GAAc,QAAS,EAAG,GAAK,GAAK,CAAC,CAC7C,CACF,CACA,MAAM0E,WAAiBtX,EAAa,CAClC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,UAAU,CAChC,CACF,CACA,MAAM2E,WAAmBzX,EAAc,CACrC,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,YAAY,CAClC,CACF,CACA,MAAM4E,WAAuBvX,EAAc,CACzC,YAAYvf,EAAY,CACtB,MAAMkyB,GAAc,iBAAkB,KAAM,GAAK,GAAK,GAAK,GAAK,CAAC,CACnE,CACF,CACA,MAAM6E,WAAmBtZ,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,aAAc,EAAI,EACtC,KAAK,YAAc,IACrB,CACF,CACA,MAAM8E,WAAevZ,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,SAAU,EAAI,EAClC,KAAK,GAAK,KACV,KAAK,KAAO,KACZ,KAAK,IAAM,IACb,CACF,CACA,MAAM+E,WAAkB3X,EAAa,CACnC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,WAAW,CACjC,CACF,CACA,MAAMgF,WAAkBzZ,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,YAAa,EAAI,EACrC,KAAK,IAAM,IACb,CACF,CACA,MAAMiF,WAAkB9X,EAAa,CACnC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,YAAa,CAAC,OAAQ,OAAQ,OAAQ,OAAO,CAAC,CACpE,CACF,CACA,MAAMkF,WAAgB9X,EAAa,CACjC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,SAAS,CAC/B,CACA,CAACre,EAAS,GAAI,CACR,KAAKJ,EAAQ,IAAM,MAGvB,KAAKA,EAAQ,EAAI,KAAKA,EAAQ,EAAE,KAAI,EAAG,MAAM,KAAK,EAAE,OAAOt8G,GAAK,CAAC,SAAU,WAAY,WAAY,OAAQ,MAAM,EAAE,SAASA,CAAC,CAAC,EAChI,CACF,CACA,MAAMkgI,WAAmB5Z,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,YAAY,EAChC,KAAK,EAAIxa,GAAW,CAClB,KAAM1X,EAAW,EACjB,aAAc,gBACd,SAAU,GAAK,EACrB,CAAK,EACD,KAAK,EAAI0X,GAAW,CAClB,KAAM1X,EAAW,EACjB,aAAc,gBACd,SAAU,GAAK,EACrB,CAAK,CACH,CACF,CACA,MAAMs3B,WAAkBhY,EAAa,CACnC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,WAAW,CACjC,CACA,CAACre,EAAS,GAAI,CACZ,MAAM0jB,EAAU,KAAK9jB,EAAQ,EAAE,KAAI,EAAG,MAAM,KAAK,EAAE,IAAIt8G,GAAK,SAASA,EAAG,EAAE,CAAC,EACrEod,EAAS,CAAA,EACf,QAAShhB,EAAI,EAAGmF,EAAK6+H,EAAQ,OAAQhkI,EAAImF,EAAInF,GAAK,EAChDghB,EAAO,KAAKgjH,EAAQ,MAAMhkI,EAAGA,EAAI,CAAC,CAAC,EAErC,KAAKkgH,EAAQ,EAAIl/F,CACnB,CACF,CACA,MAAMijH,WAAmBnY,EAAa,CACpC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,aAAc,CAAC,UAAW,kBAAmB,gBAAgB,CAAC,CACpF,CACF,CACA,MAAMuF,WAA2BpY,EAAa,CAC5C,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,qBAAsB,CAAC,OAAQ,cAAe,sBAAuB,uBAAwB,cAAc,CAAC,CAClI,CACF,CACA,MAAMwF,WAAanY,EAAc,CAC/B,YAAYvf,EAAY,CACtB,MAAMkyB,GAAc,OAAQ,EAAG,GAAK,EAAK,CAC3C,CACF,CACA,MAAMyF,WAAYla,CAAU,CAC1B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,MAAO,EAAI,EAC/B,KAAK,KAAOlyB,EAAW,MAAQ,GAC/B,KAAK,YAAc,KACnB,KAAK,SAAW,KAChB,KAAK,IAAM,KACX,KAAK,WAAa,KAClB,KAAK,UAAY,KACjB,KAAK,WAAa,KAClB,KAAK,OAAS,KACd,KAAK,IAAM,IACb,CACF,CACA,MAAM43B,WAAYna,CAAU,CAC1B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,MAAO,EAAI,EAC/B,KAAK,KAAOlyB,EAAW,MAAQ,GAC/B,KAAK,oBAAsB,KAC3B,KAAK,YAAc,KACnB,KAAK,YAAc,KACnB,KAAK,QAAU,KACf,KAAK,WAAa,KAClB,KAAK,SAAW,KAChB,KAAK,YAAc,KACnB,KAAK,WAAa,KAClB,KAAK,WAAa,KAClB,KAAK,KAAO,KACZ,KAAK,SAAW,KAChB,KAAK,aAAe,KACpB,KAAK,YAAc,KACnB,KAAK,YAAc,KACnB,KAAK,aAAe,KACpB,KAAK,OAAS,KACd,KAAK,QAAU,KACf,KAAK,kBAAoB,KACzB,KAAK,IAAM,IACb,CACF,CACA,MAAM63B,WAAapa,CAAU,CAC3B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,OAAQ,EAAI,EAChC,KAAK,IAAM,KACX,KAAK,YAAc,KACnB,KAAK,kBAAoB,KACzB,KAAK,KAAO,IACd,CACF,CACA,MAAM4F,WAAoBra,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,cAAe,EAAI,EACvC,KAAK,kBAAoB,KACzB,KAAK,OAAS,KACd,KAAK,YAAc,KACnB,KAAK,iBAAmB,KACxB,KAAK,iBAAmB,KACxB,KAAK,aAAe,KACpB,KAAK,kBAAoB,KACzB,KAAK,MAAQ,KACb,KAAK,iBAAmB,IAC1B,CACF,CACA,MAAM6F,WAA0BtY,EAAS,CACvC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,mBAAmB,CACzC,CACF,CACA,MAAM8F,WAAuB1Y,EAAa,CACxC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,SAAS,CAC/B,CACF,CACA,MAAM+F,WAA0BxY,EAAS,CACvC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,mBAAmB,CACzC,CACF,CACA,MAAMgG,WAAiB7Y,EAAa,CAClC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,WAAY,CAAC,WAAY,WAAY,oBAAqB,SAAU,QAAQ,CAAC,CACnG,CACF,CACA,MAAMiG,WAAgB1a,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,UAAW,EAAI,EACnC,KAAK,iBAAmB,KACxB,KAAK,MAAQ,KACb,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,YAAc,KACnB,KAAK,iBAAmB,KACxB,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,UAAY,KACjB,KAAK,WAAa,KAClB,KAAK,mBAAqB,KAC1B,KAAK,OAAS,KACd,KAAK,SAAW,KAChB,KAAK,IAAM,KACX,KAAK,OAAS,IAAIrU,EAClB,KAAK,aAAe,IAAIA,EACxB,KAAK,IAAM,IAAIA,EACf,KAAK,IAAM,IAAIA,EACf,KAAK,GAAK,IAAIA,EACd,KAAK,UAAY,IAAIA,EACrB,KAAK,UAAY,IAAIA,EACrB,KAAK,IAAM,IAAIA,CACjB,CACF,CACA,MAAMua,WAAc3Y,EAAS,CAC3B,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,OAAO,CAC7B,CACF,CACA,MAAMmG,WAAyB5Y,EAAS,CACtC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,kBAAkB,CACxC,CACF,CACA,MAAMoG,WAAqBjZ,EAAa,CACtC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,eAAgB,CAAC,aAAc,WAAW,CAAC,CACjE,CACF,CACA,MAAMqG,WAAoBjZ,EAAa,CACrC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,aAAa,CACnC,CACF,CACA,MAAMsG,WAAiBlZ,EAAa,CAClC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,UAAU,CAChC,CACF,CACA,MAAMuG,WAAWhb,CAAU,CACzB,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,KAAM,EAAI,EAC9B,KAAK,KAAOlyB,EAAW,MAAQ,GAC/B,KAAK,YAAc,KACnB,KAAK,SAAW,KAChB,KAAK,IAAM,KACX,KAAK,WAAa,KAClB,KAAK,UAAY,KACjB,KAAK,OAAS,KACd,KAAK,IAAM,IACb,CACF,CACA,MAAM04B,WAActZ,EAAc,CAChC,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,OAAO,CAC7B,CACA,CAACre,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAI,KAAKA,EAAQ,EAAE,MAAM,IAAK,CAAC,EAAE,IAAI/iG,GAASA,EAAM,MAAM,GAAG,EAAE,IAAIvZ,GAAK,SAASA,EAAE,KAAI,EAAI,EAAE,CAAC,CAAC,EAAE,OAAOuZ,GAASA,EAAM,MAAMvZ,GAAK,CAAC,MAAMA,CAAC,CAAC,CAAC,EAAE,IAAIuZ,IACzJA,EAAM,SAAW,GACnBA,EAAM,KAAKA,EAAM,CAAC,CAAC,EAEdA,EACR,CACH,CACF,CACA,MAAMioH,WAAevZ,EAAc,CACjC,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,QAAQ,CAC9B,CACA,CAACre,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAI,KAAKA,EAAQ,EAAE,KAAI,EACpC,MAAMp2G,EAAI,SAAS,KAAKo2G,EAAQ,EAAG,EAAE,EACjC,CAAC,MAAMp2G,CAAC,GAAKA,GAAK,IACpB,KAAKo2G,EAAQ,EAAIp2G,EAErB,CACF,CACA,MAAMu7H,WAAiBxZ,EAAc,CACnC,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,UAAU,CAChC,CACA,CAACre,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAI,KAAKA,EAAQ,EAAE,KAAI,EAAG,MAAM,KAAK,CACpD,CACF,CACA,MAAMolB,WAAezZ,EAAc,CACjC,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,QAAQ,CAC9B,CACA,CAACre,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAI,KAAKA,EAAQ,EAAE,KAAI,GAChC,KAAKA,EAAQ,EAAE,YAAW,EAAG,WAAW,KAAK,GAAK,8BAA8B,KAAK,KAAKA,EAAQ,CAAC,IACrGtiH,EAAK,gCAAgC,CAEzC,CACF,CACA,MAAM2nI,WAAqBzZ,EAAa,CACtC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,eAAgB,CAAC,SAAU,QAAQ,CAAC,CAC1D,CACF,CACA,MAAM6G,WAAmB1Z,EAAa,CACpC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,aAAc,CAAC,OAAQ,SAAU,OAAQ,QAAQ,CAAC,CACxE,CACF,CACA,MAAM8G,WAAsBvb,CAAU,CACpC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,SAAU,EAAI,EAClC,KAAK,YAAc,KACnB,KAAK,QAAU,KACf,KAAK,WAAa,IACpB,CACF,CACA,MAAM+G,WAAoB5Z,EAAa,CACrC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,cAAe,CAAC,MAAO,MAAM,CAAC,CACpD,CACF,CACA,MAAMgH,WAAiB7Z,EAAa,CAClC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,WAAY,CAAC,SAAU,QAAS,cAAe,QAAS,SAAS,CAAC,CACxF,CACF,CACA,MAAMiH,WAAoB1b,CAAU,CAClC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,cAAe,EAAI,EACvC,KAAK,eAAiB,KACtB,KAAK,YAAc,IACrB,CACF,CACA,MAAMkH,WAAe3b,CAAU,CAC7B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,QAAQ,EAC5B,KAAK,KAAOna,GAAgB/X,EAAW,KAAM,CAAC,oBAAqB,KAAM,KAAK,CAAC,CACjF,CACF,CACA,MAAMq5B,WAAkB/Z,EAAa,CACnC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,WAAW,CACjC,CACF,CACA,MAAMoH,WAAkB/Z,EAAc,CACpC,YAAYvf,EAAY,CACtB,MAAMkyB,GAAc,YAAa,EAAG,GAAK,EAAI,CAC/C,CACF,CACA,MAAMqH,WAAqBla,EAAa,CACtC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,eAAgB,CAAC,OAAQ,WAAY,MAAO,MAAO,KAAK,CAAC,CAC/E,CACF,CACA,MAAMsH,WAAkBla,EAAa,CACnC,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,WAAW,CACjC,CACF,CACA,MAAMuH,WAAoBla,EAAc,CACtC,YAAYvf,EAAY,CACtB,MAAMkyB,GAAc,cAAe,IAAK,GAAK,GAAK,GAAK,GAAK,GAAG,CACjE,CACF,CACA,MAAMwH,WAAuBja,EAAS,CACpC,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,gBAAgB,CACtC,CACF,CACA,MAAMyH,WAAela,EAAS,CAC5B,YAAYzf,EAAY,CACtB,MAAMkyB,GAAc,QAAQ,CAC9B,CACF,CACA,MAAM0H,WAAwBnc,CAAU,CACtC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,WAAY,EAAI,EACpC,KAAK,KAAO,KACZ,KAAK,SAAW,KAChB,KAAK,UAAY,KACjB,KAAK,IAAM,KACX,KAAK,IAAM,IACb,CACF,CACA,MAAM2H,WAAkBxa,EAAa,CACnC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,YAAa,CAAC,QAAS,QAAS,cAAe,SAAS,CAAC,CAC/E,CACF,CACA,MAAM4H,WAAWza,EAAa,CAC5B,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,KAAM,CAAC,OAAQ,SAAU,SAAU,SAAU,SAAU,KAAK,CAAC,CACnF,CACF,CACA,MAAM6H,WAAsBtc,CAAU,CACpC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,eAAe,EACnC,KAAK,WAAaxa,GAAW,CAC3B,KAAM1X,EAAW,WACjB,aAAc,EACd,SAAU,GAAK,GAAK,CAC1B,CAAK,CACH,CACF,CACA,MAAMg6B,WAAcvc,CAAU,CAC5B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,QAAS,EAAI,EACjC,KAAK,KAAO,IAAIrU,CAClB,CACF,CACA,MAAMoc,WAAkBxc,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,YAAa,EAAI,EACrC,KAAK,YAAc,KACnB,KAAK,QAAU,KACf,KAAK,SAAW,KAChB,KAAK,QAAU,KACf,KAAK,SAAW,KAChB,KAAK,OAAS,KACd,KAAK,WAAa,IACpB,CACF,CACA,MAAM9tE,WAAai7D,EAAa,CAC9B,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,OAAQ,CAAC,OAAQ,UAAW,WAAY,WAAY,QAAS,MAAO,YAAa,SAAU,MAAO,WAAW,CAAC,CACpI,CACF,CACA,MAAMgI,WAAY5a,EAAa,CAC7B,YAAYtf,EAAY,CACtB,MAAMkyB,GAAc,KAAK,CAC3B,CACF,CACA,MAAMiI,WAAwB9a,EAAa,CACzC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,WAAY,CAAC,YAAa,WAAY,aAAc,SAAS,CAAC,CACpF,CACF,CACA,MAAMkI,WAAmChb,EAAc,CACrD,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,4BAA4B,CAClD,CACA,CAACre,EAAS,GAAI,CACZ,KAAKJ,EAAQ,EAAI,KAAKA,EAAQ,EAAE,KAAI,EAAG,MAAM,KAAK,EAAE,OAAOt8G,GAAK,CAAC,WAAY,UAAU,EAAE,SAASA,CAAC,CAAC,CACtG,CACF,CACA,MAAMkjI,WAA4Bhb,EAAa,CAC7C,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,sBAAuB,CAAC,0BAA2B,sBAAuB,mBAAoB,YAAY,CAAC,CACjI,CACF,CACA,MAAMoI,WAAgBjb,EAAa,CACjC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,CAAC,CAC3E,CACF,CACA,MAAMqI,WAAuB9c,CAAU,CACrC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,gBAAgB,EACpC,KAAK,YAAcna,GAAgB/X,EAAW,YAAa,CAAC,OAAQ,QAAS,QAAQ,CAAC,EACtF,KAAK,YAAc+X,GAAgB/X,EAAW,YAAa,CAAC,OAAQ,OAAO,CAAC,EAC5E,KAAK,YAAc+X,GAAgB/X,EAAW,YAAa,CAAC,SAAU,UAAU,CAAC,CACnF,CACF,CACA,MAAMw6B,WAA0B/c,CAAU,CACxC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,oBAAqB,EAAI,EAC7C,KAAK,eAAiB,KACtB,KAAK,gBAAkB,KACvB,KAAK,qBAAuB,KAC5B,KAAK,aAAe,KACpB,KAAK,QAAU,KACf,KAAK,eAAiB,KACtB,KAAK,UAAY,KACjB,KAAK,kBAAoB,KACzB,KAAK,aAAe,IACtB,CACF,CACA,MAAMuI,WAAkBhd,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,YAAa,EAAI,EACrC,KAAK,KAAOlyB,EAAW,KAAOA,EAAW,KAAK,KAAI,EAAK,GACvD,KAAK,SAAW,KAChB,KAAK,IAAM,IACb,CACF,CACA,MAAM06B,WAAmBrb,EAAa,CACpC,YAAYrf,EAAY,CACtB,MAAMkyB,GAAc,aAAc,CAAC,WAAY,QAAS,YAAa,QAAS,MAAM,CAAC,CACvF,CACF,CACA,MAAMyI,WAAevb,EAAc,CACjC,YAAYpf,EAAY,CACtB,MAAMkyB,GAAc,QAAQ,CAC9B,CACA,CAACre,EAAS,GAAI,CACZ,MAAM+mB,EAAO,KAAKnnB,EAAQ,EAAE,MAAM,IAAK,CAAC,EAAE,IAAIt8G,GAAK,SAASA,EAAE,KAAI,EAAI,EAAE,CAAC,EACzE,GAAIyjI,EAAK,KAAKzjI,GAAK,MAAMA,CAAC,CAAC,EAAG,CAC5B,KAAKs8G,EAAQ,EAAI,CAAC,EAAG,CAAC,EACtB,MACF,CACImnB,EAAK,SAAW,GAClBA,EAAK,KAAKA,EAAK,CAAC,CAAC,EAEnB,KAAKnnB,EAAQ,EAAImnB,CACnB,CACF,CACA,MAAMC,WAAYpd,CAAU,CAC1B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,MAAO,EAAI,EAC/B,KAAK,IAAM,IAAIrU,EACf,KAAK,IAAM,IAAIA,CACjB,CACF,CACA,MAAMid,WAAYrd,CAAU,CAC1B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,MAAO,EAAI,EAC/B,KAAK,QAAU,IACjB,CACF,CACA,MAAM6I,WAAYtd,CAAU,CAC1B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,MAAO,EAAI,EAC/B,KAAK,MAAQ,KACb,KAAK,IAAM,IACb,CACF,CACA,MAAM8I,WAAYvd,CAAU,CAC1B,YAAYzd,EAAY,CACtB,MAAMkyB,GAAc,MAAO,EAAI,EAC/B,KAAK,KAAOlyB,EAAW,KAAOA,EAAW,KAAK,KAAI,EAAK,GACvD,KAAK,YAAc,KACnB,KAAK,UAAY,KACjB,KAAK,SAAW,KAChB,KAAK,IAAM,IACb,CACF,CACA,MAAMi7B,EAAgB,CACpB,OAAQ7jB,EAAe,EAAE7kH,EAAMytG,EAAY,CACzC,GAAI,OAAO,OAAOi7B,GAAiB1oI,CAAI,EACrC,OAAO0oI,GAAgB1oI,CAAI,EAAEytG,CAAU,CAG3C,CACA,OAAO,QAAQmP,EAAO,CACpB,OAAO,IAAIgjB,GAAQhjB,CAAK,CAC1B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIijB,GAASjjB,CAAK,CAC3B,CACA,OAAO,eAAeA,EAAO,CAC3B,OAAO,IAAIkjB,GAAeljB,CAAK,CACjC,CACA,OAAO,gBAAgBA,EAAO,CAC5B,OAAO,IAAImjB,GAAgBnjB,CAAK,CAClC,CACA,OAAO,eAAeA,EAAO,CAC3B,OAAO,IAAIojB,GAAepjB,CAAK,CACjC,CACA,OAAO,qBAAqBA,EAAO,CACjC,OAAO,IAAIqjB,GAAqBrjB,CAAK,CACvC,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAIsjB,GAAWtjB,CAAK,CAC7B,CACA,OAAO,oBAAoBA,EAAO,CAChC,OAAO,IAAIujB,GAAoBvjB,CAAK,CACtC,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIwjB,GAAMxjB,CAAK,CACxB,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIyjB,GAAYzjB,CAAK,CAC9B,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI0jB,GAAI1jB,CAAK,CACtB,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI2jB,GAAY3jB,CAAK,CAC9B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAI4jB,GAAW5jB,CAAK,CAC7B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI6jB,GAAS7jB,CAAK,CAC3B,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI8jB,GAAK9jB,CAAK,CACvB,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAI+jB,GAAY/jB,CAAK,CAC9B,CACA,OAAO,iBAAiBA,EAAO,CAC7B,OAAO,IAAIgkB,GAAiBhkB,CAAK,CACnC,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIikB,GAAMjkB,CAAK,CACxB,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIkkB,GAAOlkB,CAAK,CACzB,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAImkB,GAAOnkB,CAAK,CACzB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIokB,GAASpkB,CAAK,CAC3B,CACA,OAAO,yBAAyBA,EAAO,CACrC,OAAO,IAAIqkB,GAAyBrkB,CAAK,CAC3C,CACA,OAAO,qBAAqBA,EAAO,CACjC,OAAO,IAAIskB,GAAqBtkB,CAAK,CACvC,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIukB,GAAYvkB,CAAK,CAC9B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIwkB,GAAOxkB,CAAK,CACzB,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIykB,GAAYzkB,CAAK,CAC9B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAI0kB,GAAY1kB,CAAK,CAC9B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI2kB,GAAO3kB,CAAK,CACzB,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAI4kB,GAAQ5kB,CAAK,CAC1B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAI6kB,GAAY7kB,CAAK,CAC9B,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI8kB,GAAK9kB,CAAK,CACvB,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAI+kB,GAAM/kB,CAAK,CACxB,CACA,OAAO,gBAAgBA,EAAO,CAC5B,OAAO,IAAIglB,GAAgBhlB,CAAK,CAClC,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIilB,GAAYjlB,CAAK,CAC9B,CACA,OAAO,iBAAiBA,EAAO,CAC7B,OAAO,IAAIklB,GAAiBllB,CAAK,CACnC,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAImlB,GAAOnlB,CAAK,CACzB,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAIolB,GAAaplB,CAAK,CAC/B,CACA,OAAO,cAAcA,EAAO,CAC1B,OAAO,IAAIqlB,GAAcrlB,CAAK,CAChC,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIslB,GAAMtlB,CAAK,CACxB,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIulB,GAAevlB,CAAK,CACjC,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAIwlB,GAAkBxlB,CAAK,CACpC,CACA,OAAO,gBAAgBA,EAAO,CAC5B,OAAO,IAAIylB,GAAgBzlB,CAAK,CAClC,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAI0lB,GAAQ1lB,CAAK,CAC1B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI2lB,GAAO3lB,CAAK,CACzB,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAI4lB,GAAY5lB,CAAK,CAC9B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAI+lB,GAAQ/lB,CAAK,CAC1B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIgmB,GAAUhmB,CAAK,CAC5B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIimB,GAAUjmB,CAAK,CAC5B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIkmB,GAAgBlmB,CAAK,CAClC,CACA,OAAO,iBAAiBA,EAAO,CAC7B,OAAO,IAAImmB,GAAiBnmB,CAAK,CACnC,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIomB,GAAYpmB,CAAK,CAC9B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIqmB,GAAQrmB,CAAK,CAC1B,CACA,OAAO,kBAAkBA,EAAO,CAC9B,OAAO,IAAIsmB,GAAkBtmB,CAAK,CACpC,CACA,OAAO,gBAAgBA,EAAO,CAC5B,OAAO,IAAIumB,GAAgBvmB,CAAK,CAClC,CACA,OAAO,iBAAiBA,EAAO,CAC7B,OAAO,IAAIwmB,GAAiBxmB,CAAK,CACnC,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIymB,GAAYzmB,CAAK,CAC9B,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI0mB,GAAI1mB,CAAK,CACtB,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAI2mB,GAAa3mB,CAAK,CAC/B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI4mB,GAAO5mB,CAAK,CACzB,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAI6mB,GAAM7mB,CAAK,CACxB,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAI8mB,GAAW9mB,CAAK,CAC7B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI+mB,GAAO/mB,CAAK,CACzB,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIgnB,GAAUhnB,CAAK,CAC5B,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAIinB,GAAIjnB,CAAK,CACtB,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAIknB,GAAWlnB,CAAK,CAC7B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAImnB,GAAWnnB,CAAK,CAC7B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIonB,GAAepnB,CAAK,CACjC,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIqnB,GAAUrnB,CAAK,CAC5B,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAIsnB,GAAKtnB,CAAK,CACvB,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAIunB,GAAavnB,CAAK,CAC/B,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIwnB,GAAMxnB,CAAK,CACxB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIynB,GAASznB,CAAK,CAC3B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAI0nB,GAAW1nB,CAAK,CAC7B,CACA,OAAO,eAAeA,EAAO,CAC3B,OAAO,IAAI2nB,GAAe3nB,CAAK,CACjC,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAI4nB,GAAW5nB,CAAK,CAC7B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI6nB,GAAO7nB,CAAK,CACzB,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI8nB,GAAU9nB,CAAK,CAC5B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI+nB,GAAU/nB,CAAK,CAC5B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIgoB,GAAUhoB,CAAK,CAC5B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIioB,GAAQjoB,CAAK,CAC1B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAIkoB,GAAWloB,CAAK,CAC7B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAImoB,GAAUnoB,CAAK,CAC5B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAIqoB,GAAWroB,CAAK,CAC7B,CACA,OAAO,mBAAmBA,EAAO,CAC/B,OAAO,IAAIsoB,GAAmBtoB,CAAK,CACrC,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAIuoB,GAAKvoB,CAAK,CACvB,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAIwoB,GAAIxoB,CAAK,CACtB,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAIyoB,GAAIzoB,CAAK,CACtB,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI0oB,GAAK1oB,CAAK,CACvB,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAI2oB,GAAY3oB,CAAK,CAC9B,CACA,OAAO,kBAAkBA,EAAO,CAC9B,OAAO,IAAI4oB,GAAkB5oB,CAAK,CACpC,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAI6oB,GAAe7oB,CAAK,CACjC,CACA,OAAO,kBAAkBA,EAAO,CAC9B,OAAO,IAAI8oB,GAAkB9oB,CAAK,CACpC,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI+oB,GAAS/oB,CAAK,CAC3B,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAIgpB,GAAQhpB,CAAK,CAC1B,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIipB,GAAMjpB,CAAK,CACxB,CACA,OAAO,iBAAiBA,EAAO,CAC7B,OAAO,IAAIkpB,GAAiBlpB,CAAK,CACnC,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAImpB,GAAanpB,CAAK,CAC/B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIopB,GAAYppB,CAAK,CAC9B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIqpB,GAASrpB,CAAK,CAC3B,CACA,OAAO,GAAGA,EAAO,CACf,OAAO,IAAIspB,GAAGtpB,CAAK,CACrB,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIupB,GAAMvpB,CAAK,CACxB,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIwpB,GAAOxpB,CAAK,CACzB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIypB,GAASzpB,CAAK,CAC3B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI0pB,GAAO1pB,CAAK,CACzB,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAI2pB,GAAa3pB,CAAK,CAC/B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAI4pB,GAAW5pB,CAAK,CAC7B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI6pB,GAAc7pB,CAAK,CAChC,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAI8pB,GAAY9pB,CAAK,CAC9B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI+pB,GAAS/pB,CAAK,CAC3B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIgqB,GAAYhqB,CAAK,CAC9B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIiqB,GAAOjqB,CAAK,CACzB,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIkqB,GAAUlqB,CAAK,CAC5B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAImqB,GAAUnqB,CAAK,CAC5B,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAIoqB,GAAapqB,CAAK,CAC/B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIqqB,GAAUrqB,CAAK,CAC5B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIsqB,GAAYtqB,CAAK,CAC9B,CACA,OAAO,eAAeA,EAAO,CAC3B,OAAO,IAAIuqB,GAAevqB,CAAK,CACjC,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIwqB,GAAOxqB,CAAK,CACzB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIyqB,GAAgBzqB,CAAK,CAClC,CACA,OAAO,cAAcA,EAAO,CAC1B,OAAO,IAAI4qB,GAAc5qB,CAAK,CAChC,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI0qB,GAAU1qB,CAAK,CAC5B,CACA,OAAO,GAAGA,EAAO,CACf,OAAO,IAAI2qB,GAAG3qB,CAAK,CACrB,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAI6qB,GAAM7qB,CAAK,CACxB,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI8qB,GAAU9qB,CAAK,CAC5B,CACA,OAAO,KAAKA,EAAO,CACjB,OAAO,IAAI/qD,GAAK+qD,CAAK,CACvB,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI+qB,GAAI/qB,CAAK,CACtB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIgrB,GAAgBhrB,CAAK,CAClC,CACA,OAAO,2BAA2BA,EAAO,CACvC,OAAO,IAAIirB,GAA2BjrB,CAAK,CAC7C,CACA,OAAO,oBAAoBA,EAAO,CAChC,OAAO,IAAIkrB,GAAoBlrB,CAAK,CACtC,CACA,OAAO,QAAQA,EAAO,CACpB,OAAO,IAAImrB,GAAQnrB,CAAK,CAC1B,CACA,OAAO,eAAeA,EAAO,CAC3B,OAAO,IAAIorB,GAAeprB,CAAK,CACjC,CACA,OAAO,kBAAkBA,EAAO,CAC9B,OAAO,IAAIqrB,GAAkBrrB,CAAK,CACpC,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIsrB,GAAUtrB,CAAK,CAC5B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAIurB,GAAWvrB,CAAK,CAC7B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAIwrB,GAAOxrB,CAAK,CACzB,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI0rB,GAAI1rB,CAAK,CACtB,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI2rB,GAAI3rB,CAAK,CACtB,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI4rB,GAAI5rB,CAAK,CACtB,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI6rB,GAAI7rB,CAAK,CACtB,CACF,CAKA,MAAM+rB,GAAuB7jB,GAAa,cAAc,GACxD,MAAM8jB,WAAsB1d,CAAU,CACpC,YAAYzd,EAAY,CACtB,MAAMk7B,GAAsB,gBAAiB,EAAI,EACjD,KAAK,eAAiB,IAAIrd,EAC1B,KAAK,cAAgB,IAAIA,EACzB,KAAK,cAAgB,IAAIA,CAC3B,CACF,CACA,MAAMud,WAA6B3d,CAAU,CAC3C,YAAYzd,EAAY,CACtB,MAAMk7B,GAAsB,sBAAsB,EAClD,KAAK,GAAKl7B,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMq7B,WAA8B5d,CAAU,CAC5C,YAAYzd,EAAY,CACtB,MAAMk7B,GAAsB,uBAAuB,EACnD,KAAK,GAAKl7B,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMs7B,WAAkBhc,EAAa,CACnC,YAAYtf,EAAY,CACtB,MAAMk7B,GAAsB,WAAW,EACvC,KAAK,GAAKl7B,EAAW,IAAM,GAC3B,KAAK,MAAQA,EAAW,OAAS,GACjC,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,OAASA,EAAW,QAAU,GACnC,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMu7B,WAAoBjc,EAAa,CACrC,YAAYtf,EAAY,CACtB,MAAMk7B,GAAsB,aAAa,EACzC,KAAK,GAAKl7B,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMw7B,WAAmBlc,EAAa,CACpC,YAAYtf,EAAY,CACtB,MAAMk7B,GAAsB,YAAY,EACxC,KAAK,GAAKl7B,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAMy7B,WAAoBnc,EAAa,CACrC,YAAYtf,EAAY,CACtB,MAAMk7B,GAAsB,aAAa,EACzC,KAAK,GAAKl7B,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM07B,WAA2Bpc,EAAa,CAC5C,YAAYtf,EAAY,CACtB,MAAMk7B,GAAsB,KAAK,EACjC,KAAK,GAAKl7B,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM27B,WAAoBrc,EAAa,CACrC,YAAYtf,EAAY,CACtB,MAAMk7B,GAAsB,aAAa,EACzC,KAAK,GAAKl7B,EAAW,IAAM,GAC3B,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAMA,EAAW,KAAO,GAC7B,KAAK,QAAUA,EAAW,SAAW,EACvC,CACF,CACA,MAAM47B,WAAuBne,CAAU,CACrC,YAAYzd,EAAY,CACtB,MAAMk7B,GAAsB,iBAAkB,EAAI,EAClD,KAAK,gBAAkBl7B,EAAW,iBAAmB,GACrD,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,qBAAuB,KAC5B,KAAK,sBAAwB,KAC7B,KAAK,UAAY,KACjB,KAAK,WAAa,KAClB,KAAK,YAAc,KACnB,KAAK,YAAc,IACrB,CACF,CACA,MAAM67B,WAAsBpe,CAAU,CACpC,YAAYzd,EAAY,CACtB,MAAMk7B,GAAsB,gBAAiB,EAAI,EACjD,KAAK,gBAAkBl7B,EAAW,iBAAmB,GACrD,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,IAAM,IACb,CACF,CACA,MAAM87B,WAAsBre,CAAU,CACpC,YAAYzd,EAAY,CACtB,MAAMk7B,GAAsB,gBAAiB,EAAI,EACjD,KAAK,gBAAkBl7B,EAAW,iBAAmB,GACrD,KAAK,KAAOA,EAAW,MAAQ,GAC/B,KAAK,YAAc,KACnB,KAAK,IAAM,IACb,CACF,CACA,MAAM+7B,EAAuB,CAC3B,OAAQ3kB,EAAe,EAAE7kH,EAAMytG,EAAY,CACzC,GAAI,OAAO,OAAO+7B,GAAwBxpI,CAAI,EAC5C,OAAOwpI,GAAuBxpI,CAAI,EAAEytG,CAAU,CAGlD,CACA,OAAO,cAAcmP,EAAO,CAC1B,OAAO,IAAIgsB,GAAchsB,CAAK,CAChC,CACA,OAAO,qBAAqBA,EAAO,CACjC,OAAO,IAAIisB,GAAqBjsB,CAAK,CACvC,CACA,OAAO,sBAAsBA,EAAO,CAClC,OAAO,IAAIksB,GAAsBlsB,CAAK,CACxC,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAImsB,GAAUnsB,CAAK,CAC5B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIosB,GAAYpsB,CAAK,CAC9B,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAIqsB,GAAWrsB,CAAK,CAC7B,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIssB,GAAYtsB,CAAK,CAC9B,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAIusB,GAAmBvsB,CAAK,CACrC,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIwsB,GAAYxsB,CAAK,CAC9B,CACA,OAAO,eAAeA,EAAO,CAC3B,OAAO,IAAIysB,GAAezsB,CAAK,CACjC,CACA,OAAO,cAAcA,EAAO,CAC1B,OAAO,IAAI0sB,GAAc1sB,CAAK,CAChC,CACA,OAAO,cAAcA,EAAO,CAC1B,OAAO,IAAI2sB,GAAc3sB,CAAK,CAChC,CACF,CAMA,MAAM6sB,GAAiB3kB,GAAa,SAAS,GAC7C,MAAM4kB,WAAsBre,EAAU,CACpC,YAAY5d,EAAY,CACtB,MAAMg8B,GAAgB,OAAQh8B,CAAU,CAC1C,CACA,CAACuV,EAAa,GAAI,CAChB,MAAO,EACT,CACF,CACA,MAAM2mB,WAAiBze,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMg8B,GAAgB,WAAY,EAAI,EACtC,KAAK,KAAO,KACZ,KAAK,UAAY,IACnB,CACA,CAAChmB,EAAQ,EAAE/U,EAAO,CAChB,MAAM1uG,EAAO0uG,EAAM6U,EAAS,GACxBvjH,IAAS,QAAU0uG,EAAM4U,EAAY,IAAMmmB,IAAkBzpI,IAAS,aAAe0uG,EAAM4U,EAAY,IAAMwB,GAAa,UAAU,MACtI,KAAK9kH,CAAI,EAAI0uG,GAEf,KAAKiS,EAAY,EAAEjS,CAAK,CAC1B,CACF,CACA,MAAMk7B,EAAkB,CACtB,OAAQ/kB,EAAe,EAAE7kH,EAAMytG,EAAY,CACzC,GAAI,OAAO,OAAOm8B,GAAmB5pI,CAAI,EACvC,OAAO4pI,GAAkB5pI,CAAI,EAAEytG,CAAU,CAG7C,CACA,OAAO,SAASA,EAAY,CAC1B,OAAO,IAAIk8B,GAASl8B,CAAU,CAChC,CACA,OAAO,KAAKA,EAAY,CACtB,OAAO,IAAIi8B,GAAcj8B,CAAU,CACrC,CACF,CAMA,MAAMo8B,GAAmB/kB,GAAa,UAAU,GAChD,MAAMglB,WAAwB5e,CAAU,CACtC,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,kBAAmB,EAAI,EAC/C,KAAK,KAAO,YACZ,KAAK,SAAW,IAAIve,EAAe,CAAC,EACpC,KAAK,SAAW,KAChB,KAAK,cAAgB,KACrB,KAAK,WAAa,IAAIA,EAAe,CAAC,CACxC,CACF,CACA,MAAMye,WAAuBhd,EAAa,CACxC,YAAYtf,EAAY,CACtB,MAAMo8B,GAAkB,gBAAgB,EACxC,KAAK,KAAOrkB,GAAgB/X,EAAW,KAAM,CAAC,SAAU,UAAW,SAAS,CAAC,CAC/E,CACF,CACA,MAAMu8B,WAAwB9e,CAAU,CACtC,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,kBAAmB,EAAI,EAC/C,KAAK,eAAiB,IAAIve,EAAe,CAAC,CAC5C,CACF,CACA,MAAM2e,WAAoBld,EAAa,CACrC,YAAYtf,EAAY,CACtB,MAAMo8B,GAAkB,aAAa,EACrC,KAAK,KAAOrkB,GAAgB/X,EAAW,KAAM,CAAC,OAAQ,OAAQ,MAAO,OAAO,CAAC,CAC/E,CACF,CACA,MAAMy8B,WAAqBhf,CAAU,CACnC,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,eAAgB,EAAI,EAC5C,KAAK,YAAc,IAAIve,EAAe,CAAC,CACzC,CACF,CACA,MAAM6e,WAAwBtd,EAAc,CAC1C,YAAYpf,EAAY,CACtB,MAAMo8B,GAAkB,iBAAiB,CAC3C,CACF,CACA,MAAMO,WAAYrd,EAAa,CAC7B,YAAYtf,EAAY,CACtB,MAAMo8B,GAAkB,KAAK,CAC/B,CACF,CACA,MAAMQ,WAAiBnf,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,WAAY,EAAI,EACxC,KAAK,KAAO1kB,GAAW,CACrB,KAAM1X,EAAW,KACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,IAAM,IAAI0mH,EAAe,CAAC,CACjC,CACF,CACA,MAAMgf,WAAYvd,EAAa,CAC7B,YAAYtf,EAAY,CACtB,MAAMo8B,GAAkB,KAAK,CAC/B,CACF,CACA,MAAMU,WAAiBrf,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,WAAY,EAAI,EACxC,KAAK,IAAM,IAAIve,EAAe,CAAC,CACjC,CACF,CACA,MAAMkf,WAA0Btf,CAAU,CACxC,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,SAAU,EAAI,EACtC,KAAK,KAAOp8B,EAAW,MAAQ,GAC/B,KAAK,KAAO,UACZ,KAAK,gBAAkB,KACvB,KAAK,gBAAkB,KACvB,KAAK,aAAe,KACpB,KAAK,gBAAkB,KACvB,KAAK,eAAiB,KACtB,KAAK,cAAgB,KACrB,KAAK,aAAe,KACpB,KAAK,UAAY,IACnB,CACF,CACA,MAAMg9B,WAA6Bvf,CAAU,CAC3C,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,YAAa,EAAI,EACzC,KAAK,OAAS,IAAIve,CACpB,CACF,CACA,MAAMof,WAAiB3d,EAAa,CAClC,YAAYtf,EAAY,CACtB,MAAMo8B,GAAkB,UAAU,CACpC,CACF,CACA,MAAMc,WAAsBzf,CAAU,CACpC,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,gBAAiB,EAAI,EAC7C,KAAK,SAAW,IAAIve,EAAe,CAAC,CACtC,CACF,CACA,MAAMsf,WAAc7d,EAAa,CAC/B,YAAYtf,EAAY,CACtB,MAAMo8B,GAAkB,OAAO,CACjC,CACF,CACA,MAAMgB,WAAmB3f,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,aAAc,EAAI,EAC1C,KAAK,KAAO1kB,GAAW,CACrB,KAAM1X,EAAW,KACjB,aAAc,EACd,SAAU7oG,GAAKA,IAAM,CAC3B,CAAK,EACD,KAAK,MAAQ,IAAI0mH,EAAe,EAAE,CACpC,CACF,CACA,MAAMwf,WAAsB/d,EAAa,CACvC,YAAYtf,EAAY,CACtB,MAAMo8B,GAAkB,eAAe,EACvC,KAAK,KAAOrkB,GAAgB/X,EAAW,KAAM,CAAC,OAAQ,OAAQ,MAAO,OAAO,CAAC,CAC/E,CACF,CACA,MAAMs9B,WAAuB7f,CAAU,CACrC,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,iBAAkB,EAAI,EAC9C,KAAK,cAAgB,IAAIve,EAAe,CAAC,CAC3C,CACF,CACA,MAAM0f,WAAqBje,EAAa,CACtC,YAAYtf,EAAY,CACtB,MAAMo8B,GAAkB,cAAc,EACtC,KAAK,KAAOrkB,GAAgB/X,EAAW,KAAM,CAAC,UAAW,WAAY,UAAW,QAAS,MAAM,CAAC,CAClG,CACF,CACA,MAAMw9B,WAAsB/f,CAAU,CACpC,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,gBAAiB,EAAI,EAC7C,KAAK,aAAe,IAAIve,EAAe,CAAC,CAC1C,CACF,CACA,MAAM4f,WAAoBne,EAAa,CACrC,YAAYtf,EAAY,CACtB,MAAMo8B,GAAkB,aAAa,EACrC,KAAK,KAAOrkB,GAAgB/X,EAAW,KAAM,CAAC,OAAQ,OAAQ,MAAO,OAAO,CAAC,CAC/E,CACF,CACA,MAAM09B,WAAqBjgB,CAAU,CACnC,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,eAAgB,EAAI,EAC5C,KAAK,YAAc,IAAIve,EAAe,CAAC,CACzC,CACF,CACA,MAAM8f,WAAiBlgB,CAAU,CAC/B,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,WAAY,EAAI,EACxC,KAAK,KAAOp8B,EAAW,KAAO,EAChC,CACF,CACA,MAAM49B,WAAkBngB,CAAU,CAChC,YAAYzd,EAAY,CACtB,MAAMo8B,GAAkB,YAAa,EAAI,EACzC,KAAK,SAAW,IAAIve,CACtB,CACF,CACA,MAAMggB,EAAmB,CACvB,OAAQzmB,EAAe,EAAE7kH,EAAMytG,EAAY,CACzC,GAAI,OAAO,OAAO69B,GAAoBtrI,CAAI,EACxC,OAAOsrI,GAAmBtrI,CAAI,EAAEytG,CAAU,CAG9C,CACA,OAAO,gBAAgBmP,EAAO,CAC5B,OAAO,IAAIktB,GAAgBltB,CAAK,CAClC,CACA,OAAO,eAAeA,EAAO,CAC3B,OAAO,IAAImtB,GAAentB,CAAK,CACjC,CACA,OAAO,gBAAgBA,EAAO,CAC5B,OAAO,IAAIotB,GAAgBptB,CAAK,CAClC,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIqtB,GAAYrtB,CAAK,CAC9B,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAIstB,GAAattB,CAAK,CAC/B,CACA,OAAO,gBAAgBA,EAAO,CAC5B,OAAO,IAAIutB,GAAgBvtB,CAAK,CAClC,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAIwtB,GAAIxtB,CAAK,CACtB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIytB,GAASztB,CAAK,CAC3B,CACA,OAAO,IAAIA,EAAO,CAChB,OAAO,IAAI0tB,GAAI1tB,CAAK,CACtB,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI2tB,GAAS3tB,CAAK,CAC3B,CACA,OAAO,OAAOA,EAAO,CACnB,OAAO,IAAI4tB,GAAkB5tB,CAAK,CACpC,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAI6tB,GAAqB7tB,CAAK,CACvC,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAI8tB,GAAS9tB,CAAK,CAC3B,CACA,OAAO,cAAcA,EAAO,CAC1B,OAAO,IAAI+tB,GAAc/tB,CAAK,CAChC,CACA,OAAO,MAAMA,EAAO,CAClB,OAAO,IAAIguB,GAAMhuB,CAAK,CACxB,CACA,OAAO,WAAWA,EAAO,CACvB,OAAO,IAAIiuB,GAAWjuB,CAAK,CAC7B,CACA,OAAO,cAAcA,EAAO,CAC1B,OAAO,IAAIkuB,GAAcluB,CAAK,CAChC,CACA,OAAO,eAAeA,EAAO,CAC3B,OAAO,IAAImuB,GAAenuB,CAAK,CACjC,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAIouB,GAAapuB,CAAK,CAC/B,CACA,OAAO,cAAcA,EAAO,CAC1B,OAAO,IAAIquB,GAAcruB,CAAK,CAChC,CACA,OAAO,YAAYA,EAAO,CACxB,OAAO,IAAIsuB,GAAYtuB,CAAK,CAC9B,CACA,OAAO,aAAaA,EAAO,CACzB,OAAO,IAAIuuB,GAAavuB,CAAK,CAC/B,CACA,OAAO,SAASA,EAAO,CACrB,OAAO,IAAIwuB,GAASxuB,CAAK,CAC3B,CACA,OAAO,UAAUA,EAAO,CACtB,OAAO,IAAIyuB,GAAUzuB,CAAK,CAC5B,CACF,CAKA,MAAM2uB,GAAkBzmB,GAAa,UAAU,GAC/C,MAAM0mB,WAA4BtgB,CAAU,CAC1C,YAAYzd,EAAY,CACtB,MAAM89B,GAAiB,YAAa,EAAI,CAC1C,CACF,CACA,MAAME,EAAmB,CACvB,OAAQ5mB,EAAe,EAAE7kH,EAAMytG,EAAY,CACzC,GAAI,OAAO,OAAOg+B,GAAoBzrI,CAAI,EACxC,OAAOyrI,GAAmBzrI,CAAI,EAAEytG,CAAU,CAG9C,CACA,OAAO,UAAUA,EAAY,CAC3B,OAAO,IAAI+9B,GAAoB/9B,CAAU,CAC3C,CACF,CAKA,MAAMi+B,GAAmB5mB,GAAa,WAAW,GACjD,MAAM6mB,WAAmBzgB,CAAU,CACjC,YAAYzd,EAAY,CACtB,MAAMi+B,GAAkB,aAAc,EAAI,CAC5C,CACF,CACA,MAAME,EAAoB,CACxB,OAAQ/mB,EAAe,EAAE7kH,EAAMytG,EAAY,CACzC,GAAI,OAAO,OAAOm+B,GAAqB5rI,CAAI,EACzC,OAAO4rI,GAAoB5rI,CAAI,EAAEytG,CAAU,CAG/C,CACA,OAAO,WAAWA,EAAY,CAC5B,OAAO,IAAIk+B,GAAWl+B,CAAU,CAClC,CACF,CAMA,MAAMo+B,GAAY/mB,GAAa,IAAI,GACnC,MAAMgnB,WAAgB5gB,CAAU,CAC9B,YAAYzd,EAAY,CACtB,MAAMo+B,GAAW,MAAO,EAAI,EAC5B,KAAK,KAAOp+B,EAAW,MAAQ,GAC/B,KAAK,UAAYA,EAAW,WAAa,GACzC,KAAK,OAAS,KACd,KAAK,cAAgB,KACrB,KAAK,SAAW,KAChB,KAAK,UAAY,KACjB,KAAK,WAAa,IAAI6d,EACtB,KAAK,SAAW,IAClB,CACA,CAAC5H,EAAa,EAAEhV,EAAO,CACrB,MAAMqW,EAAKD,GAAapW,EAAM6U,EAAS,CAAC,EACxC,OAAOwB,GAAMrW,EAAM4U,EAAY,IAAMyB,EAAG,EAC1C,CACF,CACA,MAAMgnB,EAAa,CACjB,OAAQlnB,EAAe,EAAE7kH,EAAMytG,EAAY,CACzC,GAAI,OAAO,OAAOs+B,GAAc/rI,CAAI,EAClC,OAAO+rI,GAAa/rI,CAAI,EAAEytG,CAAU,CAGxC,CACA,OAAO,IAAIA,EAAY,CACrB,OAAO,IAAIq+B,GAAQr+B,CAAU,CAC/B,CACF,CAQA,MAAMu+B,GAAclnB,GAAa,MAAM,GACjCmnB,GAAY,OAAM,EAClBC,GAAe,IAAI,IAAI,CAAC,QAAS,OAAQ,cAAe,YAAa,eAAgB,aAAc,cAAe,SAAU,gBAAiB,cAAe,eAAgB,aAAc,iBAAkB,cAAe,UAAW,mBAAoB,oBAAqB,oBAAqB,eAAgB,WAAY,aAAc,kBAAmB,cAAe,iBAAkB,SAAU,eAAgB,4BAA6B,0BAA2B,eAAgB,eAAe,CAAC,EACpfC,GAAe,IAAI,IAAI,CAAC,CAAC,mBAAoB,YAAY,EAAG,CAAC,oBAAqB,aAAa,EAAG,CAAC,oBAAqB,aAAa,EAAG,CAAC,eAAgBvsI,GAASA,IAAU,OAAS,OAAS,QAAQ,EAAG,CAAC,4BAA6BA,GAAS,UAAU,KAAK,IAAI,EAAG,SAASA,EAAO,EAAE,EAAI,GAAG,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAG,CAAC,0BAA2BA,GAAS,UAAU,KAAK,IAAI,EAAG,SAASA,EAAO,EAAE,EAAI,GAAG,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAG,CAAC,eAAgB,EAAE,EAAG,CAAC,gBAAiB,EAAE,EAAG,CAAC,YAAa,CAACA,EAAOwsI,KAC9dxsI,EAAQwsI,EAAS,SAAW,KAAK,IAAI3mB,GAAe7lH,CAAK,CAAC,EACnDwtH,GAAgB,IAAOxtH,CAAK,EACpC,EAAG,CAAC,iBAAkBA,GAASwtH,GAAgB3H,GAAe7lH,CAAK,CAAC,CAAC,EAAG,CAAC,cAAeA,GAASwtH,GAAgB3H,GAAe7lH,CAAK,CAAC,CAAC,EAAG,CAAC,SAAUA,GAASwtH,GAAgB3H,GAAe7lH,CAAK,CAAC,CAAC,EAAG,CAAC,gBAAiBA,GAASwtH,GAAgB3H,GAAe7lH,CAAK,CAAC,CAAC,EAAG,CAAC,cAAeA,GAASwtH,GAAgB3H,GAAe7lH,CAAK,CAAC,CAAC,EAAG,CAAC,eAAgBA,GAASwtH,GAAgB3H,GAAe7lH,CAAK,CAAC,CAAC,EAAG,CAAC,aAAcA,GAASwtH,GAAgB3H,GAAe7lH,CAAK,CAAC,CAAC,EAAG,CAAC,cAAeA,GAASwtH,GAAgB3H,GAAe7lH,CAAK,CAAC,CAAC,EAAG,CAAC,cAAeA,GAASA,CAAK,EAAG,CAAC,iBAAkBA,GAASwtH,GAAgB3H,GAAe7lH,CAAK,CAAC,CAAC,CAAC,CAAC,EACnnBysI,GAAe,OACfC,GAAa,WACbC,GAAwB,SAC9B,SAASC,GAASC,EAAUtgH,EAAMugH,EAAU,CAC1C,MAAM16C,EAAQ,OAAO,OAAO,IAAI,EAChC,GAAI,CAACy6C,EACH,OAAOz6C,EAET,MAAMo6C,EAAW,OAAO,OAAO,IAAI,EACnC,SAAW,CAAC3jI,EAAK7I,CAAK,IAAK6sI,EAAS,MAAM,GAAG,EAAE,IAAItkH,GAAKA,EAAE,MAAM,IAAK,CAAC,CAAC,EAAG,CACxE,MAAM+zD,EAAUiwD,GAAa,IAAI1jI,CAAG,EACpC,GAAIyzE,IAAY,GACd,SAEF,IAAIywD,EAAW/sI,EACXs8E,IACFywD,EAAW,OAAOzwD,GAAY,SAAWA,EAAUA,EAAQt8E,EAAOwsI,CAAQ,GAExE3jI,EAAI,SAAS,OAAO,EACtBupF,EAAM,UAAYA,EAAM,UAAY,GAAGA,EAAMvpF,CAAG,CAAC,IAAIkkI,CAAQ,GAAKA,EAElE36C,EAAMvpF,EAAI,WAAW,aAAc,CAAC9G,EAAGiD,IAAMA,EAAE,aAAa,CAAC,EAAI+nI,CAErE,CASA,GARI36C,EAAM,YACRo9B,GAAc,CACZ,SAAUp9B,EAAM,WAChB,OAAQA,EAAM,YAAc,SAC5B,QAASA,EAAM,WAAa,SAC5B,KAAMo6C,EAAS,UAAY,CACjC,EAAOjgH,EAAMA,EAAKo2F,EAAW,EAAE,WAAYvwB,CAAK,EAE1C06C,GAAY16C,EAAM,eAAiBA,EAAM,gBAAkB,OAASA,EAAM,SAAU,CAGtF,MAAMmN,EAAWsmB,GAAezzB,EAAM,QAAQ,EAC9CA,EAAM,SAAWo7B,GAAgBjuB,EAAW,IAAuB,EACnEnN,EAAM,cAAgBo7B,GAAgB,KAAK,KAAK3H,GAAezzB,EAAM,aAAa,CAAC,EAAImN,EAAW,IAAe,CACnH,CACA,OAAIutC,GAAY16C,EAAM,WACpBA,EAAM,SAAW,QAAQA,EAAM,QAAQ,iCAEzC08B,GAAc18B,CAAK,EACZA,CACT,CACA,SAAS46C,GAAWzgH,EAAM,CACxB,OAAKA,EAAK,MAGHA,EAAK,MAAM,MAAM,GAAG,EAAE,OAAOhE,GAAK,CAAC,CAACA,EAAE,KAAI,CAAE,EAAE,IAAIA,GAAKA,EAAE,MAAM,IAAK,CAAC,EAAE,IAAI3iB,GAAKA,EAAE,KAAI,CAAE,CAAC,EAAE,OAAO,CAAC,CAACiD,EAAK7I,CAAK,KAC/G6I,IAAQ,eACV0jB,EAAKo2F,EAAW,EAAE,cAAc,IAAI3iH,CAAK,EAEpCssI,GAAa,IAAIzjI,CAAG,EAC5B,EAAE,IAAI6zH,GAAMA,EAAG,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAP1B,EAQX,CACA,MAAMuQ,GAAW,IAAI,IAAI,CAAC,OAAQ,MAAM,CAAC,EACzC,MAAMC,WAAoBzhB,EAAU,CAClC,YAAY5d,EAAYztG,EAAM,CAC5B,MAAMgsI,GAAahsI,CAAI,EACvB,KAAKisI,EAAS,EAAI,GAClB,KAAK,MAAQx+B,EAAW,OAAS,EACnC,CACA,CAACoT,EAAM,EAAEvkC,EAAS,CAChB,MAAMukC,EAAM,EAAEvkC,CAAO,EACrB,KAAK,MAAQswD,GAAW,IAAI,CAC9B,CACA,CAACnsB,EAAiB,GAAI,CACpB,MAAO,CAACosB,GAAS,IAAI,KAAKtpB,EAAS,CAAC,CACtC,CACA,CAACI,EAAO,EAAEnkH,EAAKktI,EAAW,GAAO,CAC1BA,EAMH,KAAKT,EAAS,EAAI,IALlBzsI,EAAMA,EAAI,WAAW8sI,GAAY,EAAE,EAC9B,KAAK,MAAM,SAAS,kBAAkB,IACzC9sI,EAAMA,EAAI,WAAW6sI,GAAc,GAAG,IAKtC7sI,IACF,KAAK0hH,EAAQ,GAAK1hH,EAEtB,CACA,CAACokH,EAAW,EAAE6J,EAASsf,EAAU,GAAM,CACrC,MAAMhmB,EAAU,OAAO,OAAO,IAAI,EAC5BO,EAAS,CACb,IAAK,IACL,OAAQ,IACR,KAAM,IACN,MAAO,GACb,EACI,IAAIrc,EAAa,KACjB,SAAW,CAACxiG,EAAK7I,CAAK,IAAK,KAAK,MAAM,MAAM,GAAG,EAAE,IAAIuoB,GAAKA,EAAE,MAAM,IAAK,CAAC,CAAC,EACvE,OAAQ1f,EAAG,CACT,IAAK,cACHs+G,EAAQ,SAAW7B,GAAYtlH,CAAK,EACpC,MACF,IAAK,YACHmnH,EAAQ,KAAOtB,GAAe7lH,CAAK,EACnC,MACF,IAAK,cACHmnH,EAAQ,OAASnnH,EACjB,MACF,IAAK,aACHmnH,EAAQ,QAAUnnH,EAClB,MACF,IAAK,iBACHmnH,EAAQ,cAAgBtB,GAAe7lH,CAAK,EAC5C,MACF,IAAK,SACH,MAAMqJ,EAASrJ,EAAM,MAAM,KAAK,EAAE,IAAI6lH,EAAc,EACpD,OAAQx8G,EAAO,OAAM,CACnB,IAAK,GACHq+G,EAAO,IAAMA,EAAO,OAASA,EAAO,KAAOA,EAAO,MAAQr+G,EAAO,CAAC,EAClE,MACF,IAAK,GACHq+G,EAAO,IAAMA,EAAO,OAASr+G,EAAO,CAAC,EACrCq+G,EAAO,KAAOA,EAAO,MAAQr+G,EAAO,CAAC,EACrC,MACF,IAAK,GACHq+G,EAAO,IAAMr+G,EAAO,CAAC,EACrBq+G,EAAO,OAASr+G,EAAO,CAAC,EACxBq+G,EAAO,KAAOA,EAAO,MAAQr+G,EAAO,CAAC,EACrC,MACF,IAAK,GACHq+G,EAAO,IAAMr+G,EAAO,CAAC,EACrBq+G,EAAO,KAAOr+G,EAAO,CAAC,EACtBq+G,EAAO,OAASr+G,EAAO,CAAC,EACxBq+G,EAAO,MAAQr+G,EAAO,CAAC,EACvB,KACd,CACU,MACF,IAAK,aACHq+G,EAAO,IAAM7B,GAAe7lH,CAAK,EACjC,MACF,IAAK,gBACH0nH,EAAO,OAAS7B,GAAe7lH,CAAK,EACpC,MACF,IAAK,cACH0nH,EAAO,KAAO7B,GAAe7lH,CAAK,EAClC,MACF,IAAK,eACH0nH,EAAO,MAAQ7B,GAAe7lH,CAAK,EACnC,MACF,IAAK,cACHqrG,EAAawa,GAAe7lH,CAAK,EACjC,KACV,CAGI,GADA6tH,EAAQ,SAAS1G,EAASO,EAAQrc,CAAU,EACxC,KAAKiW,EAAQ,EACfuM,EAAQ,UAAU,KAAKvM,EAAQ,CAAC,MAEhC,WAAWxS,KAAS,KAAKuT,EAAY,EAAC,EAAI,CACxC,GAAIvT,EAAM6U,EAAS,IAAM,QAAS,CAChCkK,EAAQ,UAAU/e,EAAMwS,EAAQ,CAAC,EACjC,QACF,CACAxS,EAAMkV,EAAW,EAAE6J,CAAO,CAC5B,CAEEsf,GACFtf,EAAQ,QAAO,CAEnB,CACA,CAAChJ,EAAO,EAAE+G,EAAgB,CACxB,MAAM3B,EAAW,CAAA,EAKjB,GAJA,KAAKxI,CAAM,EAAI,CACb,SAAAwI,CACN,EACI,KAAKjJ,EAAe,EAAE,EAAE,EACpBiJ,EAAS,SAAW,GAAK,CAAC,KAAK3I,EAAQ,EACzC,OAAOiF,GAAW,MAEpB,IAAIvmH,EACJ,OAAI,KAAKqsI,EAAS,EAChBrsI,EAAQ,KAAKshH,EAAQ,EAAI,KAAKA,EAAQ,EAAE,WAAWqrB,GAAuB;AAAA,CAAI,EAAI,OAElF3sI,EAAQ,KAAKshH,EAAQ,GAAK,OAErBiF,GAAW,QAAQ,CACxB,KAAM,KAAK5C,EAAS,EACpB,WAAY,CACV,KAAM,KAAK,KACX,MAAOipB,GAAS,KAAK,MAAO,KAAM,KAAKP,EAAS,CAAC,CACzD,EACM,SAAApiB,EACA,MAAAjqH,CACN,CAAK,CACH,CACF,CACA,MAAMyd,WAAUyvH,EAAY,CAC1B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,GAAG,EACrB,KAAK,KAAO4hB,GAAO5hB,EAAW,IAAI,GAAK,EACzC,CACF,CACA,MAAMnwF,WAAUwvH,EAAY,CAC1B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,GAAG,CACvB,CACA,CAACmW,EAAW,EAAE6J,EAAS,CACrBA,EAAQ,SAAS,CACf,OAAQ,MACd,CAAK,EACD,MAAM7J,EAAW,EAAE6J,CAAO,EAC1BA,EAAQ,QAAO,CACjB,CACF,CACA,MAAMuf,WAAaF,EAAY,CAC7B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,MAAM,CAC1B,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,MAAM/yF,EAAM,MAAMgsF,EAAO,EAAE+G,CAAc,EACnC,CACJ,KAAAnF,CACN,EAAQ5tF,EACJ,OAAK4tF,GAGLA,EAAK,KAAO,MACZA,EAAK,WAAW,MAAQ,CAAC,SAAS,EAC3B5tF,GAJE0tF,GAAW,KAKtB,CACF,CACA,MAAM8mB,WAAWH,EAAY,CAC3B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,IAAI,CACxB,CACA,CAAC8W,EAAK,GAAI,CACR,MAAO;AAAA,CACT,CACA,CAACX,EAAW,EAAE6J,EAAS,CACrBA,EAAQ,UAAU;AAAA,CAAI,CACxB,CACA,CAAChJ,EAAO,EAAE+G,EAAgB,CACxB,OAAOrF,GAAW,QAAQ,CACxB,KAAM,IACZ,CAAK,CACH,CACF,CACA,MAAM+mB,WAAaJ,EAAY,CAC7B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,MAAM,CAC1B,CACA,CAACgX,EAAO,EAAE+G,EAAgB,CACxB,MAAM3B,EAAW,CAAA,EAKjB,GAJA,KAAKxI,CAAM,EAAI,CACb,SAAAwI,CACN,EACI,KAAKjJ,EAAe,EAAE,EAAE,EACpBiJ,EAAS,SAAW,EACtB,OAAO1D,GAAW,QAAQ,CACxB,KAAM,MACN,WAAY,CACV,MAAO,CAAC,SAAS,EACjB,MAAO,CAAA,CACjB,EACQ,MAAO,KAAKjF,EAAQ,GAAK,EACjC,CAAO,EAEH,GAAI2I,EAAS,SAAW,EAAG,CACzB,MAAMnb,EAAQmb,EAAS,CAAC,EACxB,GAAInb,EAAM,YAAY,MAAM,SAAS,SAAS,EAC5C,OAAOyX,GAAW,QAAQzX,CAAK,CAEnC,CACA,OAAOyX,GAAW,QAAQ,CACxB,KAAM,MACN,WAAY,CACV,MAAO,CAAC,SAAS,EACjB,MAAO,CAAA,CACf,EACM,SAAA0D,CACN,CAAK,CACH,CACF,CACA,MAAMsjB,WAAUL,EAAY,CAC1B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,GAAG,CACvB,CACA,CAACmW,EAAW,EAAE6J,EAAS,CACrBA,EAAQ,SAAS,CACf,QAAS,QACf,CAAK,EACD,MAAM7J,EAAW,EAAE6J,CAAO,EAC1BA,EAAQ,QAAO,CACjB,CACF,CACA,MAAM2f,WAAWN,EAAY,CAC3B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,IAAI,CACxB,CACF,CACA,MAAM4/B,WAAWP,EAAY,CAC3B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,IAAI,CACxB,CACF,CACA,MAAM6/B,WAAUR,EAAY,CAC1B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,GAAG,CACvB,CACA,CAACmW,EAAW,EAAE6J,EAAS,CACrB,MAAM7J,EAAW,EAAE6J,EAAS,EAAK,EACjCA,EAAQ,UAAU;AAAA,CAAI,EACtBA,EAAQ,QAAO,EACfA,EAAQ,QAAO,CACjB,CACA,CAAClJ,EAAK,GAAI,CAER,OADiB,KAAKlC,EAAU,EAAC,EAAGJ,EAAY,EAAC,EACpC,GAAG,EAAE,IAAM,KACf,MAAMsC,EAAK,EAAC,EAEd,MAAMA,EAAK,EAAC,EAAK;AAAA,CAC1B,CACF,CACA,MAAMgpB,WAAaT,EAAY,CAC7B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,MAAM,CAC1B,CACF,CACA,MAAM+/B,WAAYV,EAAY,CAC5B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,KAAK,CACzB,CACF,CACA,MAAMggC,WAAYX,EAAY,CAC5B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,KAAK,CACzB,CACF,CACA,MAAMigC,WAAWZ,EAAY,CAC3B,YAAYr/B,EAAY,CACtB,MAAMA,EAAY,IAAI,CACxB,CACF,CACA,MAAMkgC,EAAe,CACnB,OAAQ9oB,EAAe,EAAE7kH,EAAMytG,EAAY,CACzC,GAAI,OAAO,OAAOkgC,GAAgB3tI,CAAI,EACpC,OAAO2tI,GAAe3tI,CAAI,EAAEytG,CAAU,CAG1C,CACA,OAAO,EAAEA,EAAY,CACnB,OAAO,IAAIpwF,GAAEowF,CAAU,CACzB,CACA,OAAO,EAAEA,EAAY,CACnB,OAAO,IAAInwF,GAAEmwF,CAAU,CACzB,CACA,OAAO,KAAKA,EAAY,CACtB,OAAO,IAAIu/B,GAAKv/B,CAAU,CAC5B,CACA,OAAO,GAAGA,EAAY,CACpB,OAAO,IAAIw/B,GAAGx/B,CAAU,CAC1B,CACA,OAAO,KAAKA,EAAY,CACtB,OAAO,IAAIy/B,GAAKz/B,CAAU,CAC5B,CACA,OAAO,EAAEA,EAAY,CACnB,OAAO,IAAI0/B,GAAE1/B,CAAU,CACzB,CACA,OAAO,GAAGA,EAAY,CACpB,OAAO,IAAI2/B,GAAG3/B,CAAU,CAC1B,CACA,OAAO,GAAGA,EAAY,CACpB,OAAO,IAAI4/B,GAAG5/B,CAAU,CAC1B,CACA,OAAO,EAAEA,EAAY,CACnB,OAAO,IAAI6/B,GAAE7/B,CAAU,CACzB,CACA,OAAO,KAAKA,EAAY,CACtB,OAAO,IAAI8/B,GAAK9/B,CAAU,CAC5B,CACA,OAAO,IAAIA,EAAY,CACrB,OAAO,IAAI+/B,GAAI//B,CAAU,CAC3B,CACA,OAAO,IAAIA,EAAY,CACrB,OAAO,IAAIggC,GAAIhgC,CAAU,CAC3B,CACA,OAAO,GAAGA,EAAY,CACpB,OAAO,IAAIigC,GAAGjgC,CAAU,CAC1B,CACF,CAYA,MAAMmgC,GAAiB,CACrB,OAAQlF,GACR,WAAYc,GACZ,SAAUI,GACV,UAAW0B,GACX,UAAWG,GACX,WAAYG,GACZ,SAAUhO,GACV,IAAKmO,GACL,MAAO4B,EACT,EAKA,MAAME,EAAiB,CACrB,YAAY1iB,EAAM,CAChB,KAAK,YAAcA,CACrB,CACA,CAACtG,EAAe,EAAE7kH,EAAMytG,EAAY,CAClC,OAAO,IAAI4d,GAAU,KAAK,YAAarrH,EAAMytG,CAAU,CACzD,CACF,CAUA,MAAMqgC,WAAa5iB,CAAU,CAC3B,YAAYpW,EAAK,CACf,MAAM,GAAI,OAAQ,OAAO,OAAO,IAAI,CAAC,EACrC,KAAK,QAAU,KACf,KAAK2N,EAAI,EAAI3N,CACf,CACA,CAAC2O,EAAQ,EAAE/U,EAAO,CAChB,YAAK,QAAUA,EACR,EACT,CACA,CAAC4S,EAAS,GAAI,CACZ,MAAMA,EAAS,EAAC,EACZ,KAAK,QAAQ,oBAAoBgZ,KACnC,KAAK7X,EAAI,EAAE,IAAIuB,GAAO,KAAK,OAAO,EAClC,KAAK,QAAQ,SAASC,EAAkB,EAAE,KAAKxB,EAAI,CAAC,EACpD,KAAK,QAAQ,SAASA,EAAI,EAAI,KAAKA,EAAI,EAE3C,CACF,CACA,MAAMsrB,WAAc7iB,CAAU,CAC5B,aAAc,CACZ,MAAM,GAAI,GAAI,OAAO,OAAO,IAAI,CAAC,CACnC,CACA,CAACzH,EAAQ,EAAE9hH,EAAG,CACZ,MAAO,EACT,CACF,CACA,MAAMqsI,EAAQ,CACZ,YAAYC,EAAgB,KAAM,CAChC,KAAK,gBAAkB,CAAA,EACvB,KAAK,iBAAmB,EACxB,KAAK,mBAAqB,IAAI,IAC9B,KAAK,YAAc,IAAI,IACvB,KAAK,UAAY,KAAK,IAAI,GAAG,OAAO,OAAOnpB,EAAY,EAAE,IAAI,CAAC,CAC5D,GAAAvuE,CACN,IAAUA,CAAE,CAAC,EACT,KAAK,kBAAoB03F,GAAiB,IAAIJ,GAAiB,EAAE,KAAK,SAAS,CACjF,CACA,UAAU/4B,EAAK,CACb,OAAO,IAAIg5B,GAAKh5B,CAAG,CACrB,CACA,MAAM,CACJ,SAAAo5B,EACA,KAAAluI,EACA,WAAAytG,EACA,UAAA0gC,EACA,SAAAC,CACJ,EAAK,CACD,MAAMC,EAAkBF,IAAc,KAQtC,GAPIE,IACF,KAAK,gBAAgB,KAAK,KAAK,iBAAiB,EAChD,KAAK,kBAAoB,KAAK,iBAAiBF,CAAS,GAEtDC,GACF,KAAK,oBAAoBA,CAAQ,EAE/B,OAAO,OAAO3gC,EAAY+V,EAAa,EAAG,CAC5C,MAAM8qB,EAAeV,GAAe,SAC9BW,EAAU9gC,EAAW+V,EAAa,EACxC,IAAIgrB,EAAW,KACf,SAAW,CAACzpB,EAAInI,CAAK,IAAK,OAAO,QAAQ2xB,CAAO,EAE9C,GADgB,KAAK,mBAAmBxpB,CAAE,IAC1BupB,EAAc,CAC5BE,EAAW,CACT,IAAK5xB,CACjB,EACU,KACF,CAEE4xB,EACF/gC,EAAW+V,EAAa,EAAIgrB,EAE5B,OAAO/gC,EAAW+V,EAAa,CAEnC,CAEA,MAAMr3F,EADiB,KAAK,mBAAmB+hH,CAAQ,IACzBrpB,EAAe,EAAE7kH,EAAMytG,CAAU,GAAK,IAAIsgC,GACxE,OAAI5hH,EAAK62F,EAAa,KACpB,KAAK,oBAEHqrB,GAAmBD,GAAYjiH,EAAK62F,EAAa,EAAC,KACpD72F,EAAK40F,EAAQ,EAAI,CACf,aAAcstB,EACd,SAAAD,EACA,WAAYjiH,EAAK62F,EAAa,EAAC,CACvC,GAEW72F,CACT,CACA,cAAe,CACb,OAAO,KAAK,iBAAmB,CACjC,CACA,iBAAiBsiH,EAAQ,CACvB,IAAI1pB,EAAK,KAAK,YAAY,IAAI0pB,CAAM,EACpC,GAAI1pB,EACF,OAAOA,EAET,SAAW,CAAC/kH,EAAM,CAChB,MAAA66C,CACN,CAAK,IAAK,OAAO,QAAQiqE,EAAY,EAC/B,GAAIjqE,EAAM4zF,CAAM,EAAG,CAEjB,GADA1pB,EAAK6oB,GAAe5tI,CAAI,EACpB+kH,EACF,YAAK,YAAY,IAAI0pB,EAAQ1pB,CAAE,EACxBA,EAET,KACF,CAEF,OAAAA,EAAK,IAAI8oB,GAAiB,EAAE,KAAK,SAAS,EAC1C,KAAK,YAAY,IAAIY,EAAQ1pB,CAAE,EACxBA,CACT,CACA,oBAAoBqpB,EAAU,CAC5B,SAAW,CACT,OAAA9/F,EACA,MAAA1uC,CACN,IAASwuI,EAAU,CACb,MAAMD,EAAY,KAAK,iBAAiBvuI,CAAK,EAC7C,KAAK,mBAAmB,oBAAoB0uC,EAAQpnC,EAAO,EAAE,KAAKinI,CAAS,CAC7E,CACF,CACA,mBAAmB7/F,EAAQ,CACzB,GAAI,CAACA,EACH,OAAO,KAAK,kBAEd,MAAMogG,EAAc,KAAK,mBAAmB,IAAIpgG,CAAM,EACtD,OAAIogG,GAAa,OAAS,EACjBA,EAAY,GAAG,EAAE,GAE1B9vI,EAAK,6BAA6B0vC,CAAM,GAAG,EACpC,KACT,CACA,MAAMhhC,EAAM,CACV,KAAM,CACJ,aAAAqhI,EACA,SAAAP,EACA,WAAAQ,CACN,EAAQthI,EACAqhI,IACF,KAAK,kBAAoB,KAAK,gBAAgB,IAAG,GAEnDP,GAAU,QAAQ,CAAC,CACjB,OAAA9/F,CACN,IAAU,CACJ,KAAK,mBAAmB,IAAIA,CAAM,EAAE,IAAG,CACzC,CAAC,EACGsgG,GACF,KAAK,kBAET,CACF,CAOA,MAAMC,WAAkBvhC,EAAc,CACpC,YAAY2gC,EAAgB,KAAMvB,EAAW,GAAO,CAClD,MAAK,EACL,KAAK,SAAW,IAAIsB,GAAQC,CAAa,EACzC,KAAK,OAAS,CAAA,EACd,KAAK,YAAc,CACjB,cAAe,IAAI,GACzB,EACI,KAAK,KAAO,IAAI,IAChB,KAAK,SAAW,KAAK,SAAS,UAAU,KAAK,IAAI,EACjD,KAAK,WAAa9gC,GAAmB,QACrC,KAAK,YAAc,QACnB,KAAK,OAAS,SACd,KAAK,UAAYu/B,CACnB,CACA,MAAMp/H,EAAM,CAEV,GADA,KAAK,SAASA,CAAI,EACd,KAAK,aAAe6/F,GAAmB,QAG3C,YAAK,SAASmU,EAAS,EAAC,EACjB,KAAK,SAAS,OACvB,CACA,OAAO13C,EAAM,CAEX,GADAA,EAAOA,EAAK,QAAQ,KAAK,OAAQp6D,GAASA,EAAM,MAAM,CAAC,EAAI,GAAG,EAC1D,KAAK,WAAa,KAAK,SAASixG,EAAiB,EAAC,EAAI,CACxD,KAAK,SAASkD,EAAO,EAAE/5C,EAAM,KAAK,SAAS,EAC3C,MACF,CACI,KAAK,YAAY,KAAKA,CAAI,GAG9B,KAAK,SAAS+5C,EAAO,EAAE/5C,EAAK,KAAI,CAAE,CACpC,CACA,QAAQA,EAAM,CACZ,KAAK,SAAS+5C,EAAO,EAAE/5C,CAAI,CAC7B,CACA,cAAc6jC,EAAY+e,EAAS,CACjC,IAAI2hB,EAAY,KACZC,EAAW,KACf,MAAMU,EAAe,OAAO,OAAO,EAAE,EACrC,SAAW,CACT,KAAA9uI,EACA,MAAAJ,CACN,IAAS6tG,EACH,GAAIztG,IAAS,QACNmuI,EAGHvvI,EAAK,2CAA2C4tH,CAAO,GAAG,EAF1D2hB,EAAYvuI,UAILI,EAAK,WAAW,QAAQ,EAAG,CACpC,MAAMsuC,EAAStuC,EAAK,UAAU,CAAe,EAC7CouI,IAAa,CAAA,EACbA,EAAS,KAAK,CACZ,OAAA9/F,EACA,MAAA1uC,CACV,CAAS,CACH,KAAO,CACL,MAAMoB,EAAIhB,EAAK,QAAQ,GAAG,EAC1B,GAAIgB,IAAM,GACR8tI,EAAa9uI,CAAI,EAAIJ,MAChB,CACL,MAAM2uI,EAAUO,EAAatrB,EAAa,IAAM,OAAO,OAAO,IAAI,EAC5D,CAACuB,EAAIpX,CAAQ,EAAI,CAAC3tG,EAAK,MAAM,EAAGgB,CAAC,EAAGhB,EAAK,MAAMgB,EAAI,CAAC,CAAC,EACrD47G,EAAQ2xB,EAAQxpB,CAAE,IAAM,OAAO,OAAO,IAAI,EAChDnI,EAAMjP,CAAQ,EAAI/tG,CACpB,CACF,CAEF,MAAO,CAACuuI,EAAWC,EAAUU,CAAY,CAC3C,CACA,kBAAkB9uI,EAAM4uI,EAAY,CAClC,MAAM5tI,EAAIhB,EAAK,QAAQ,GAAG,EAC1B,OAAIgB,IAAM,GACD,CAAChB,EAAM,IAAI,EAEb,CAACA,EAAK,UAAUgB,EAAI,CAAC,EAAG4tI,EAAa,GAAK5uI,EAAK,UAAU,EAAGgB,CAAC,CAAC,CACvE,CACA,eAAewrH,EAAS/e,EAAYY,EAAS,CAC3C,KAAM,CAAC8/B,EAAWC,EAAUW,CAAa,EAAI,KAAK,cAActhC,EAAY+e,CAAO,EAC7E,CAACxsH,EAAMkuI,CAAQ,EAAI,KAAK,kBAAkB1hB,EAAS,KAAK,SAAS,cAAc,EAC/ErgG,EAAO,KAAK,SAAS,MAAM,CAC/B,SAAA+hH,EACA,KAAAluI,EACA,WAAY+uI,EACZ,UAAAZ,EACA,SAAAC,CACN,CAAK,EAED,GADAjiH,EAAKo2F,EAAW,EAAI,KAAK,YACrBlU,EAAS,CACXliF,EAAKm1F,EAAS,EAAC,EACX,KAAK,SAASmC,EAAQ,EAAEt3F,CAAI,GAC9BA,EAAKg4F,EAAM,EAAE,KAAK,IAAI,EAExBh4F,EAAK00F,EAAM,EAAE,KAAK,QAAQ,EAC1B,MACF,CACA,KAAK,OAAO,KAAK,KAAK,QAAQ,EAC9B,KAAK,SAAW10F,CAClB,CACA,aAAansB,EAAM,CACjB,MAAMmsB,EAAO,KAAK,SAClB,GAAIA,EAAKy2F,EAAW,EAAC,GAAM,OAAOz2F,EAAK+0F,EAAQ,GAAM,SAAU,CAC7D,MAAMp5D,EAAS,IAAI+mF,GACnB/mF,EAAO,YAAc,KAAK,YAC1B,MAAMokD,EAAOpkD,EAAO,MAAM37B,EAAK+0F,EAAQ,CAAC,EACxC/0F,EAAK+0F,EAAQ,EAAI,KACjB/0F,EAAKs3F,EAAQ,EAAEvX,CAAI,CACrB,CACA//E,EAAKm1F,EAAS,EAAC,EACf,KAAK,SAAW,KAAK,OAAO,IAAG,EAC3B,KAAK,SAASmC,EAAQ,EAAEt3F,CAAI,GAC9BA,EAAKg4F,EAAM,EAAE,KAAK,IAAI,EAExBh4F,EAAK00F,EAAM,EAAE,KAAK,QAAQ,CAC5B,CACA,QAAQ3gH,EAAM,CACZ,KAAK,WAAaA,CACpB,CACF,CAWA,MAAM8uI,EAAW,CACf,YAAY1hI,EAAM,CAChB,GAAI,CACF,KAAK,KAAO,IAAIuhI,GAAS,EAAG,MAAMG,GAAW,gBAAgB1hI,CAAI,CAAC,EAClE,MAAM2hI,EAAS,IAAIlR,GAAO,KAAK,IAAI,EACnC,KAAK,KAAOkR,EAAO,KAAI,EACvB,KAAK,YAAc,IAAIzP,GAAY,KAAK,KAAMyP,EAAO,SAAS,EAC9D,KAAK,KAAK1sB,EAAW,EAAE,SAAW,KAAK,IACzC,OAAS1iG,EAAG,CACVjhB,EAAK,uDAAuDihB,CAAC,EAAE,CACjE,CACF,CACA,SAAU,CACR,MAAO,CAAC,EAAE,KAAK,MAAQ,KAAK,KAC9B,CACA,oBAAqB,CACnB,MAAMqvH,EAAW,KAAK,KAAK1qB,EAAQ,EAAC,EACpC,OAAO,IAAI,QAAQ,CAAC1vE,EAASC,IAAW,CACtC,MAAMo6F,EAAgB,IAAM,CAC1B,GAAI,CACF,MAAMvvI,EAAQsvI,EAAS,KAAI,EACvBtvI,EAAM,KACRk1C,EAAQl1C,EAAM,KAAK,EAEnB,WAAWuvI,EAAe,CAAC,CAE/B,OAAStvH,EAAG,CACVk1B,EAAOl1B,CAAC,CACV,CACF,EACA,WAAWsvH,EAAe,CAAC,CAC7B,CAAC,CACH,CACA,MAAM,cAAe,CACnB,GAAI,CACF,KAAK,MAAQ,MAAM,KAAK,mBAAkB,EAC1C,KAAK,KAAO,KAAK,MAAM,SAAS,IAAIhrI,GAAK,CACvC,KAAM,CACJ,MAAAsG,EACA,OAAAC,CACV,EAAYvG,EAAE,WAAW,MACjB,MAAO,CAAC,EAAG,EAAG,SAASsG,EAAO,EAAE,EAAG,SAASC,EAAQ,EAAE,CAAC,CACzD,CAAC,CACH,OAAS,EAAG,CACV9L,EAAK,0CAA0C,CAAC,EAAE,CACpD,CACF,CACA,eAAestF,EAAW,CACxB,OAAO,KAAK,KAAKA,CAAS,CAC5B,CACA,MAAM,aAAc,CAClB,OAAK,KAAK,OACR,MAAM,KAAK,aAAY,EAElB,KAAK,KAAK,MACnB,CACA,UAAUh2D,EAAQ,CAChB,KAAK,KAAKqsF,EAAW,EAAE,OAASrsF,CAClC,CACA,SAAS6xF,EAAO,CACd,KAAK,KAAKxF,EAAW,EAAE,WAAa,IAAIgE,GAAWwB,CAAK,EACxD,MAAMqnB,EAAe,CAAA,EACrB,QAASpoB,KAAY,KAAK,KAAKzE,EAAW,EAAE,cAC1CyE,EAAW9B,GAAY8B,CAAQ,EAClB,KAAK,KAAKzE,EAAW,EAAE,WAAW,KAAKyE,CAAQ,GAE1DooB,EAAa,KAAKpoB,CAAQ,EAG9B,OAAIooB,EAAa,OAAS,EACjBA,EAEF,IACT,CACA,YAAYrnB,EAAOtB,EAAoB,CACrC,KAAK,KAAKlE,EAAW,EAAE,WAAW,IAAIwF,EAAOtB,CAAkB,CACjE,CACA,MAAM,UAAW,CACV,KAAK,OACR,MAAM,KAAK,aAAY,EAEzB,MAAM1vE,EAAQ,KAAK,MACnB,YAAK,MAAQ,KACNA,CACT,CACA,cAAc0oF,EAAS,CACrB,OAAO,KAAK,YAAY,UAAUA,CAAO,CAC3C,CACA,OAAO,gBAAgBnyH,EAAM,CAC3B,OAAQA,EAAK,IAAI,UAAU,EAA0BA,EAAK,SAAS,KAAK,EAAE,EAA3CA,EAAK,IAAI,SAAS,CACnD,CACA,OAAO,kBAAkB+hI,EAAI,CAC3B,GAAI,CAACA,GAAM,OAAOA,GAAO,SACvB,OAAO,KAET,GAAI,CACF,IAAInjC,EAAO,IAAI2iC,GAAUlB,GAAgB,EAAI,EAAE,MAAM0B,CAAE,EACvD,GAAI,CAAC,CAAC,OAAQ,OAAO,EAAE,SAASnjC,EAAKqX,EAAS,CAAC,EAAG,CAChD,MAAM+rB,EAAU3B,GAAe,KAAK,EAAE,EACtC2B,EAAQ3uB,EAAY,EAAEzU,CAAI,EAC1BA,EAAOojC,CACT,CACA,MAAMthI,EAASk+F,EAAKuY,EAAO,EAAC,EAC5B,GAAI,CAACz2G,EAAO,QACV,OAAO,KAET,KAAM,CACJ,KAAAq4G,CACR,EAAUr4G,EACE,CACJ,WAAAy/F,CACR,EAAU4Y,EACJ,OAAI5Y,IACFA,EAAW,QAAUA,EAAW,MAAM,OAAO8hC,GAAQ,CAACA,EAAK,WAAW,KAAK,CAAC,EAC5E9hC,EAAW,IAAM,QAEZ,CACL,KAAA4Y,EACA,IAAKna,EAAKqY,EAAK,EAAC,CACxB,CACI,OAAS1kG,EAAG,CACVjhB,EAAK,wDAAwDihB,CAAC,EAAE,CAClE,CACA,OAAO,IACT,CACF,CAuBA,MAAM2vH,EAAkB,CACtB,OAAO,cAAcv+B,EAAY,CAC/B,OAAO,QAAQ,IAAI,CAACA,EAAW,cAAc,UAAU,EAAGA,EAAW,UAAU,aAAa,EAAGA,EAAW,cAAc,gBAAgB,EAAGA,EAAW,cAAc,SAAS,EAAGA,EAAW,cAAc,aAAa,EAAGA,EAAW,cAAc,uBAAuB,CAAC,CAAC,EAAE,KAAK,CAAC,CAACuF,EAAUi5B,EAAaj+B,EAAgBryG,EAASm7G,EAAazxF,CAAqB,KAAO,CAC3W,WAAAooF,EACA,QAASA,EAAW,YAAY,QAChC,SAAUuF,aAAoBxuG,EAAOwuG,EAAWxuG,EAAK,MACrD,YAAAynI,EACA,eAAAj+B,EACA,QAAAryG,EACA,YAAAm7G,EACA,sBAAAzxF,CACN,GAAQ9G,IACFnjB,EAAK,mBAAmBmjB,CAAM,IAAI,EAC3B,KACR,CACH,CACA,aAAa,OAAO7Z,EAAMoB,EAAKomI,EAAmBz8C,EAAW08C,EAAeC,EAAcC,EAAe9+B,EAAS,CAChH,MAAM7kB,EAAYyjD,EAAgB,MAAM,KAAK,cAAcznI,EAAMoB,EAAKomI,EAAkB,UAAU,EAAI,KACtG,OAAOA,EAAkB,WAAW,OAAO,KAAM,UAAW,CAACxnI,EAAMoB,EAAKomI,EAAmBz8C,EAAW08C,EAAeC,EAAcC,EAAe3jD,EAAW6kB,CAAO,CAAC,CACvK,CACA,OAAO,QAAQ7oG,EAAMoB,EAAKomI,EAAmBz8C,EAAW08C,EAAgB,GAAOC,EAAe,KAAMC,EAAgB,KAAM3jD,EAAY,KAAM6kB,EAAU,KAAM,CAC1J,MAAMhoG,EAAOb,EAAK,WAAWoB,CAAG,EAChC,GAAI,EAAEP,aAAgBf,GACpB,OAEF,IAAIilE,EAAUlkE,EAAK,IAAI,SAAS,EAEhC,GADAkkE,EAAUA,aAAmBplE,EAAOolE,EAAQ,KAAO,KAC/C4iE,GAAiB,CAACA,EAAc,IAAIpyI,GAAewvE,GAAS,YAAW,CAAE,CAAC,EAC5E,OAAO,KAET,KAAM,CACJ,SAAAupC,EACA,WAAAvF,CACN,EAAQy+B,EACEn5F,EAAKjtC,aAAed,EAAMc,EAAI,WAAa,SAAS2pF,EAAU,YAAW,CAAE,GAC3E68C,EAAa,CACjB,KAAA5nI,EACA,IAAAoB,EACA,KAAAP,EACA,QAAAkkE,EACA,GAAA12B,EACA,kBAAAm5F,EACA,cAAAC,EACA,aAAAC,EACA,gBAAiB,CAACD,GAAiBn5B,EAAS,IAAI,iBAAiB,IAAM,GACvE,UAAAtqB,EACA,iBAAkB+kB,EAAW,iBAC7B,QAAAF,CACN,EACI,OAAQ9jC,EAAO,CACb,IAAK,OACH,OAAO,IAAI8iE,GAAeD,CAAU,EACtC,IAAK,OACH,OAAO,IAAIE,GAAeF,CAAU,EACtC,IAAK,SACH,IAAIG,EAAYviI,GAAuB,CACrC,KAAA3E,EACA,IAAK,IACf,CAAS,EAED,OADAknI,EAAYA,aAAqBpoI,EAAOooI,EAAU,KAAO,KACjDA,EAAS,CACf,IAAK,KACH,OAAO,IAAIC,GAAqBJ,CAAU,EAC5C,IAAK,MACH,OAAO,IAAIK,GAAuBL,CAAU,EAC9C,IAAK,KACH,OAAO,IAAIM,GAAuBN,CAAU,EAC9C,IAAK,MACH,OAAO,IAAIO,GAA0BP,CAAU,CAC3D,CACQ,OAAAlxI,EAAK,oCAAoCqxI,CAAS,qCAA0C,EACrF,IAAIK,GAAiBR,CAAU,EACxC,IAAK,QACH,OAAO,IAAIS,GAAgBT,CAAU,EACvC,IAAK,WACH,OAAO,IAAIU,GAAmBV,CAAU,EAC1C,IAAK,OACH,OAAO,IAAIW,GAAeX,CAAU,EACtC,IAAK,SACH,OAAO,IAAIY,GAAiBZ,CAAU,EACxC,IAAK,SACH,OAAO,IAAIa,GAAiBb,CAAU,EACxC,IAAK,WACH,OAAO,IAAIc,GAAmBd,CAAU,EAC1C,IAAK,UACH,OAAO,IAAIe,GAAkBf,CAAU,EACzC,IAAK,QACH,OAAO,IAAIgB,GAAgBhB,CAAU,EACvC,IAAK,MACH,OAAO,IAAIiB,GAAcjB,CAAU,EACrC,IAAK,YACH,OAAO,IAAIkB,GAAoBlB,CAAU,EAC3C,IAAK,YACH,OAAO,IAAImB,GAAoBnB,CAAU,EAC3C,IAAK,WACH,OAAO,IAAIoB,GAAmBpB,CAAU,EAC1C,IAAK,YACH,OAAO,IAAIqB,GAAoBrB,CAAU,EAC3C,IAAK,QACH,OAAO,IAAIsB,GAAgBtB,CAAU,EACvC,IAAK,iBACH,OAAO,IAAIuB,GAAyBvB,CAAU,EAChD,IAAK,YACH,OAAO,IAAIwB,GAAoBxB,CAAU,EAC3C,IAAK,SACH,OAAO,IAAIyB,GAAiBzB,CAAU,EACxC,IAAK,QACH,OAAO,IAAI0B,GAAgB1B,CAAU,EACvC,QACE,OAAKH,GAID/wI,EAHGquE,EAGE,kCAAkCA,CAAO,sCAFzC,8CAEmF,EAGrF,IAAIwkE,GAAW3B,CAAU,CACxC,CACE,CACA,aAAa,cAAc5nI,EAAMoB,EAAK2nG,EAAY,CAChD,GAAI,CACF,MAAMygC,EAAY,MAAMxpI,EAAK,gBAAgBoB,CAAG,EAChD,GAAI,EAAEooI,aAAqB1pI,GACzB,MAAO,GAET,MAAM+oG,EAAU2gC,EAAU,OAAO,GAAG,EACpC,GAAI3gC,aAAmBvoG,EACrB,GAAI,CACF,OAAO,MAAMyoG,EAAW,cAAc,eAAgB,CAACF,CAAO,CAAC,CACjE,OAAS3kG,EAAI,CACX1N,GAAK,iDAAiD0N,CAAE,IAAI,CAC9D,CAEF,GAAIslI,EAAU,IAAI,MAAM,EACtB,MAAO,GAET,MAAMC,EAAW,MAAM1gC,EAAW,UAAU,UAAU,EACtD,QAAS/kB,EAAY,EAAGA,EAAYylD,EAAUzlD,IAAa,CACzD,MAAMtlF,EAAO,MAAMqqG,EAAW,QAAQ/kB,CAAS,EACzC0lD,EAAc,MAAM3gC,EAAW,OAAOrqG,EAAM,aAAa,EAC/D,UAAWirI,KAAYD,EACrB,GAAIC,aAAoBrpI,GAAO4B,GAAYynI,EAAUvoI,CAAG,EACtD,OAAO4iF,CAGb,CACF,OAAS9/E,EAAI,CACXxN,EAAK,mBAAmBwN,CAAE,IAAI,CAChC,CACA,MAAO,EACT,CACA,OAAO,eAAewlI,EAAa1pI,EAAMsvB,EAA4B,CACnE,GAAI,CAACA,EACH,OAAA54B,EAAK,sGAAsG,EACpG,KAET,IAAIkzI,EACJ,SAAW,CACT,SAAAC,EACA,OAAApsH,CACN,IAASisH,EACEjsH,IAGLmsH,IAAkB,IAAI,IACtBA,EAAc,IAAIC,EAAU/yB,GAAYr5F,EAAQzd,CAAI,CAAC,GAEvD,OAAO4pI,CACT,CACA,aAAa,mBAAmBjpC,EAAW3gG,EAAM4xF,EAAM83C,EAAaE,EAAezgC,EAAS,CAC1F,IAAI2gC,EACJ,MAAM94F,EAAW,CAAA,EACX,CACJ,2BAAA1hB,CACN,EAAQqxE,EAAU,QACd,UAAWopC,KAAcL,EACvB,GAAI,CAAAK,EAAW,QAGf,OAAQA,EAAW,eAAc,CAC/B,KAAK70I,GAAqB,SACxB,GAAI,CAAC40I,EAAa,CAChB,MAAMxqC,EAAW,IAAIx/F,EAAKE,CAAI,EAC9Bs/F,EAAS,UAAU,WAAY,WAAW,EAC1CA,EAAS,UAAU,OAAQ,MAAM,EACjCA,EAAS,UAAU,UAAW,OAAO,EACrCA,EAAS,UAAU,WAAY,iBAAiB,EAChDwqC,EAAc9pI,EAAK,mBAAkB,EACrCmpG,EAAQ,IAAI2gC,EAAa,CACvB,KAAMxqC,CACpB,CAAa,CACH,CACAtuD,EAAS,KAAKs3F,GAAmB,oBAAoBtoI,EAAM+pI,EAAY5gC,EAAS,CAC9E,UAAAxI,EACA,KAAA/O,EACA,YAAAk4C,CACZ,CAAW,CAAC,EACF,MACF,KAAK50I,GAAqB,UACpB60I,EAAW,WACb/4F,EAAS,KAAK83F,GAAoB,oBAAoB9oI,EAAM+pI,EAAY5gC,CAAO,CAAC,EAEhFn4D,EAAS,KAAK63F,GAAc,oBAAoB7oI,EAAM+pI,EAAY5gC,CAAO,CAAC,EAE5E,MACF,KAAKj0G,GAAqB,IACxB87C,EAAS,KAAK63F,GAAc,oBAAoB7oI,EAAM+pI,EAAY5gC,CAAO,CAAC,EAC1E,MACF,KAAKj0G,GAAqB,MACxB,MAAMs3F,EAAQl9D,EAA6B,MAAMs6G,GAAe,IAAIG,EAAW,QAAQ,EAAI,KAC3F,GAAIv9C,GAAO,YAAa,CACtB,KAAM,CACJ,YAAAlvC,EACA,YAAAu6D,CACd,EAAgBrrB,EACJ,GAAIqrB,EAAa,CACf,MAAMmyB,EAAWhqI,EAAK,mBAAkB,EACxCmpG,EAAQ,IAAI6gC,EAAU,CACpB,KAAMnyB,CACtB,CAAe,EACDv6D,EAAY,KAAK,IAAI,QAAS0sF,CAAQ,CACxC,CACA,MAAMx3C,EAAWhG,EAAM,SAAWxsF,EAAK,mBAAkB,EACzDmpG,EAAQ,IAAI3W,EAAU,CACpB,KAAMl1C,CACpB,CAAa,EACDkvC,EAAM,YAAc,KACpBA,EAAM,kBAAoB,KAC1BA,EAAM,YAAc,KACpBA,EAAM,kBAAoB,IAC5B,CACAx7C,EAAS,KAAKk4F,GAAgB,oBAAoBlpI,EAAM+pI,EAAY5gC,EAAS,CAC3E,MAAA3c,CACZ,CAAW,CAAC,EACF,MACF,KAAKt3F,GAAqB,UACxB87C,EAAS,KAAKk4F,GAAgB,oBAAoBlpI,EAAM+pI,EAAY5gC,EAAS,CAAA,CAAE,CAAC,EAChF,KACV,CAEI,MAAO,CACL,aAAc,MAAM,QAAQ,IAAIn4D,CAAQ,GAAG,KAAI,CACrD,CACE,CACA,aAAa,oBAAoBw2F,EAAmB7mC,EAAW/O,EAAM83C,EAAaE,EAAe,CAC/F,GAAI,CAACF,EACH,OAAO,KAET,KAAM,CACJ,QAAAxyI,EACA,KAAA8I,CACN,EAAQ2gG,EACE3vD,EAAW,CAAA,EACjB,UAAW+4F,KAAcL,EACvB,GAAI,CAAAK,EAAW,QAGf,OAAQA,EAAW,eAAc,CAC/B,KAAK70I,GAAqB,SACxB87C,EAAS,KAAKs3F,GAAmB,yBAAyBd,EAAmBxnI,EAAM+pI,EAAY,CAC7F,UAAAppC,EACA,KAAA/O,EACA,iBAAkB16F,CAC9B,CAAW,CAAC,EACF,MACF,KAAKhC,GAAqB,UACpB60I,EAAW,WACb/4F,EAAS,KAAK83F,GAAoB,yBAAyBtB,EAAmBxnI,EAAM+pI,EAAY,CAC9F,iBAAkB7yI,CAChC,CAAa,CAAC,EAEF85C,EAAS,KAAK63F,GAAc,yBAAyBrB,EAAmBxnI,EAAM+pI,EAAY,CACxF,iBAAkB7yI,CAChC,CAAa,CAAC,EAEJ,MACF,KAAKhC,GAAqB,IACxB87C,EAAS,KAAK63F,GAAc,yBAAyBrB,EAAmBxnI,EAAM+pI,EAAY,CACxF,iBAAkB7yI,CAC9B,CAAW,CAAC,EACF,MACF,KAAKhC,GAAqB,MACxB,MAAMs3F,EAAQt1F,EAAQ,2BAA6B,MAAM0yI,GAAe,IAAIG,EAAW,QAAQ,EAAI,KACnG,GAAIv9C,GAAO,YAAa,CACtB,KAAM,CACJ,YAAAlvC,EACA,kBAAAg6D,EACA,YAAAO,EACA,kBAAAH,CACd,EAAgBlrB,EACEgG,EAAW8kB,GAAqB,IAAInsF,GAAWmyB,EAAaA,EAAY,MAAM,GAChFu6D,GAAeH,IACjBllB,EAAS,KAAK,IAAI,QAASklB,GAAqBG,CAAW,EAE7DrrB,EAAM,SAAWgG,EACjBhG,EAAM,YAAc,KACpBA,EAAM,kBAAoB,KAC1BA,EAAM,YAAc,KACpBA,EAAM,kBAAoB,IAC5B,CACAx7C,EAAS,KAAKk4F,GAAgB,yBAAyB1B,EAAmBxnI,EAAM+pI,EAAY,CAC1F,MAAAv9C,EACA,iBAAkBt1F,CAC9B,CAAW,CAAC,EACF,MACF,KAAKhC,GAAqB,UACxB87C,EAAS,KAAKk4F,GAAgB,yBAAyB1B,EAAmBxnI,EAAM+pI,EAAY,CAC1F,iBAAkB7yI,CAC9B,CAAW,CAAC,EACF,KACV,CAEI,OAAO,QAAQ,IAAI85C,CAAQ,CAC7B,CACF,CACA,SAASi5F,GAAYr2H,EAAOs2H,EAAe,IAAI,kBAAkB,CAAC,EAAG,CACnE,GAAI,CAAC,MAAM,QAAQt2H,CAAK,EACtB,OAAOs2H,EAET,MAAMh7B,EAAWg7B,GAAgB,IAAI,kBAAkB,CAAC,EACxD,OAAQt2H,EAAM,OAAM,CAClB,IAAK,GACH,OAAO,KACT,IAAK,GACH,OAAA2M,GAAgB,KAAK,WAAW3M,EAAO,EAAGs7F,EAAU,CAAC,EAC9CA,EACT,IAAK,GACH,OAAA3uF,GAAgB,IAAI,WAAW3M,EAAO,EAAGs7F,EAAU,CAAC,EAC7CA,EACT,IAAK,GACH,OAAA3uF,GAAgB,KAAK,WAAW3M,EAAO,EAAGs7F,EAAU,CAAC,EAC9CA,EACT,QACE,OAAOg7B,CACb,CACA,CACA,SAASC,GAAiBv2H,EAAOspG,EAAe,KAAM,CACpD,OAAOtpG,GAAS,MAAM,KAAKA,EAAO3X,GAAKA,EAAI,GAAG,GAAKihH,CACrD,CACA,SAASktB,GAAcvpI,EAAMhG,EAAM,CACjC,MAAMwvI,EAAaxpI,EAAK,SAAS,YAAY,EAC7C,GAAI,CAAC8F,GAAc0jI,EAAY,IAAI,GAAKA,EAAW,SAAW,GAAKA,EAAW,OAAS,EAAI,EACzF,OAAO,KAET,MAAMC,EAAgB,IAAI,aAAaD,EAAW,MAAM,EACxD,QAASvxI,EAAI,EAAGmF,EAAKosI,EAAW,OAAQvxI,EAAImF,EAAInF,GAAK,EAAG,CACtD,KAAM,CAACiE,EAAIC,EAAIE,EAAIE,EAAID,EAAIE,EAAIktI,EAAIC,CAAE,EAAIH,EAAW,MAAMvxI,EAAGA,EAAI,CAAC,EAC5Dk6B,EAAO,KAAK,IAAIj2B,EAAIG,EAAIC,EAAIotI,CAAE,EAC9B59G,EAAO,KAAK,IAAI5vB,EAAIG,EAAIC,EAAIotI,CAAE,EAC9Bt3G,EAAO,KAAK,IAAIj2B,EAAII,EAAIC,EAAImtI,CAAE,EAC9Bt3G,EAAO,KAAK,IAAIl2B,EAAII,EAAIC,EAAImtI,CAAE,EACpC,GAAI3vI,IAAS,OAASm4B,EAAOn4B,EAAK,CAAC,GAAK8xB,EAAO9xB,EAAK,CAAC,GAAKo4B,EAAOp4B,EAAK,CAAC,GAAKq4B,EAAOr4B,EAAK,CAAC,GACvF,OAAO,KAETyvI,EAAc,IAAI,CAACt3G,EAAME,EAAMvG,EAAMuG,EAAMF,EAAMC,EAAMtG,EAAMsG,CAAI,EAAGn6B,CAAC,CACvE,CACA,OAAOwxI,CACT,CACA,SAASG,GAAmB5vI,EAAMg1B,EAAM9zB,EAAQ,CAC9C,MAAMa,EAASnI,GAAc,MAAK,EAClC+E,GAAK,wBAAwBq2B,EAAM9zB,EAAQa,CAAM,EACjD,KAAM,CAACo2B,EAAMC,EAAMtG,EAAMuG,CAAI,EAAIt2B,EACjC,GAAIo2B,IAASrG,GAAQsG,IAASC,EAC5B,MAAO,CAAC,EAAG,EAAG,EAAG,EAAGr4B,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAEtC,MAAMwT,GAAUxT,EAAK,CAAC,EAAIA,EAAK,CAAC,IAAM8xB,EAAOqG,GACvC1kB,GAAUzT,EAAK,CAAC,EAAIA,EAAK,CAAC,IAAMq4B,EAAOD,GAC7C,MAAO,CAAC5kB,EAAQ,EAAG,EAAGC,EAAQzT,EAAK,CAAC,EAAIm4B,EAAO3kB,EAAQxT,EAAK,CAAC,EAAIo4B,EAAO3kB,CAAM,CAChF,CACA,SAASo8H,GAA6BtlI,EAAMpB,EAAQ2mI,EAAa,GAAO,CACtE3mI,EAAO,KAAK,GAAGyF,GAAerE,EAAK,CAAC,CAAC,CAAC,IAAIqE,GAAerE,EAAK,CAAC,CAAC,CAAC,IAAI,EACrE,QAAStM,EAAI,EAAGmF,EAAKmH,EAAK,OAAQtM,EAAImF,EAAInF,GAAK,EAC7C,GAAI,MAAMsM,EAAKtM,CAAC,CAAC,EACfkL,EAAO,KAAK,GAAGyF,GAAerE,EAAKtM,EAAI,CAAC,CAAC,CAAC,IAAI2Q,GAAerE,EAAKtM,EAAI,CAAC,CAAC,CAAC,IAAI,MACxE,CACL,MAAM8xI,EAAQxlI,EAAK,MAAMtM,EAAGA,EAAI,CAAC,EACjCkL,EAAO,KAAK,GAAG4mI,EAAM,IAAInhI,EAAc,EAAE,KAAK,GAAG,CAAC,IAAI,CACxD,CAEEkhI,GAAcvlI,EAAK,SAAW,GAChCpB,EAAO,KAAK,GAAGyF,GAAerE,EAAK,CAAC,CAAC,CAAC,IAAIqE,GAAerE,EAAK,CAAC,CAAC,CAAC,IAAI,CAEzE,CACA,MAAMmkI,EAAW,CACf,WAAa,KACb,IAAM,OACN,YAAY/uH,EAAQ,CAClB,KAAM,CACJ,kBAAAgtH,EACA,KAAA3mI,EACA,aAAA6mI,EACA,IAAAtmI,EACA,QAAA2jE,EACA,KAAA/kE,CACN,EAAQwa,EACE+wF,EAAYm8B,GAAc,IAAItmI,CAAG,EACnCmqG,GACF1qG,EAAK,IAAI,SAAU0qG,CAAS,EAE9B,KAAK,SAAS1qG,EAAK,IAAI,GAAG,CAAC,EAC3B,KAAK,YAAYA,EAAK,IAAI,UAAU,CAAC,EACrC,KAAK,oBAAoBA,EAAK,IAAI,GAAG,CAAC,EACtC,KAAK,SAASA,EAAK,IAAI,GAAG,CAAC,EAC3B,KAAK,aAAaA,EAAK,SAAS,MAAM,CAAC,EACvC,KAAK,SAASA,EAAK,SAAS,GAAG,CAAC,EAChC,KAAK,eAAeA,CAAI,EACxB,KAAK,cAAcA,CAAI,EACvB,KAAKgqI,GAAoB7qI,EAAMa,CAAI,EACnC,MAAMiqI,EAAKjqI,EAAK,IAAI,IAAI,EACxB,KAAK,6BAA6BiqI,CAAE,EACpC,KAAK,YAAYA,EAAIjqI,CAAI,EACzB,KAAK,IAAM2Z,EAAO,eAAela,EAAMka,EAAO,IAAM,KACpD,KAAK,SAAW,CAAA,EACZ,KAAK,YACP,KAAK,SAAS,KAAK,KAAK,UAAU,EAEpC,MAAMuwH,EAAW,CAAC,EAAE,KAAK,MAAQr1I,GAAe,QAC1Cs1I,EAAkB,CAAC,EAAE,KAAK,MAAQt1I,GAAe,gBAsBvD,GArBA,KAAK,KAAO,CACV,eAAgBH,GAAewvE,GAAS,aAAa,EACrD,gBAAiB,KAAK,MACtB,YAAa,KAAK,YAClB,MAAO,KAAK,MACZ,gBAAiB,KAAK,gBACtB,YAAa,KAAK,YAClB,SAAU,KAAK,SACf,YAAa,KAAK,UAClB,cAAe,CAAC,CAAC,KAAK,WACtB,GAAIvqD,EAAO,GACX,iBAAkB,KAAK,iBACvB,GAAI,KAAK,IACT,KAAM,KAAK,UACX,QAAAuqD,EACA,aAAc,GACd,SAAU,CAAC,EAAE,KAAK,MAAQrvE,GAAe,UACzC,OAAQq1I,GAAYC,EACpB,WAAY,GACZ,aAAc,EACpB,EACQxD,EAAkB,eAAgB,CACpC,IAAIn9B,EAAexpG,EAAK,IAAI,cAAc,EAC1C,KAAK,KAAK,aAAewpG,EAAe,OAAO,UAAUA,CAAY,GAAKA,GAAgB,EAAIA,EAAe,GAC7Gm9B,EAAkB,eAAe,sBAAsBhtH,EAAO,QAAS6vF,EAAc,KAAK,GAAG,CAC/F,CACA,GAAI7vF,EAAO,cAAe,CACxB,MAAM0pF,EAAOrjG,EAAK,IAAI,MAAM,EAC5B,GAAI,MAAM,QAAQqjG,CAAI,EAAG,CACvB,MAAM+mC,EAAS,CAAA,EACf,UAAW9mC,KAAOD,EACZC,aAAe7jG,GACjB2qI,EAAO,KAAK9mC,EAAI,UAAU,EAG1B8mC,EAAO,SAAW,IACpB,KAAK,KAAK,OAASA,EAEvB,CACA,KAAK,KAAK,QAAUpjI,GAAe7H,EAAMa,EAAMhL,EAAyB,EACxE,KAAK,KAAK,UAAY,KAAK,oBAAoBgL,CAAI,EACnD,KAAK,KAAK,UAAY2Z,EAAO,SAC/B,CACA,MAAM0wH,EAAKrqI,EAAK,IAAI,IAAI,EACpBqqI,aAAcvrI,IAChB,KAAK,KAAK,GAAKurI,EAAG,MAEpB,KAAK,4BAA8B1wH,EAAO,iBAAiB,2BAC3D,KAAK,kBAAoB,KACzB,KAAK,iBAAmB,EAC1B,CACA,8BAA+B,CAC7B,MAAO,CACL,OAAQ,IAAI4U,GACZ,aAAc,GACd,eAAgB,EACtB,CACE,CACA,SAASmkC,EAAOS,EAAM,CACpB,MAAO,CAAC,EAAET,EAAQS,EACpB,CACA,YAAYm3E,EAAQC,EAAS,CAC3B,GAAI,CACF,MAAA73E,CACN,EAAQ,KACJ,OAAI43E,IAAW,OACTC,IAAY,OACd,OAEEA,EACK73E,EAAQ,GAEVA,EAAQ,GAAyB79D,GAAe,MAErDy1I,GACF53E,GAAS79D,GAAe,MACpB01I,EACK73E,EAAQ,IAAyB79D,GAAe,OAElD69D,EAAQ,GAAyB79D,GAAe,SAEzD69D,GAAS,IACL63E,EACK73E,EAAQ,GAEVA,EAAQ79D,GAAe,MAChC,CACA,YAAY69D,EAAO,CACjB,MAAO,CAAC,KAAK,SAASA,EAAO79D,GAAe,SAAS,GAAK,CAAC,KAAK,SAAS69D,EAAO79D,GAAe,MAAM,CACvG,CACA,aAAa69D,EAAO,CAClB,OAAO,KAAK,SAASA,EAAO79D,GAAe,KAAK,GAAK,CAAC,KAAK,SAAS69D,EAAO79D,GAAe,MAAM,GAAK,CAAC,KAAK,SAAS69D,EAAO79D,GAAe,SAAS,CACrJ,CACA,aAAakU,EAAmByhI,EAAc,CAC5C,MAAMF,EAASvhI,GAAmB,IAAI,KAAK,KAAK,EAAE,GAAG,OACrD,OAAIuhI,IAAW,OACN,CAACA,EAEH,KAAK,UAAY,CAAC,KAAK,SAAS,KAAK,MAAOz1I,GAAe,MAAM,CAC1E,CACA,cAAckU,EAAmB,CAC/B,MAAMwhI,EAAUxhI,GAAmB,IAAI,KAAK,KAAK,EAAE,GAAG,QACtD,OAAIwhI,IAAY,OACP,CAACA,EAEH,KAAK,SACd,CACA,wBAAwBE,EAAWC,EAAc,KAAM,CACrD,OAAOD,EAAY,CAAC,KAAK,KAAK,WAAa,CAACC,GAAa,IAAI,KAAK,KAAK,EAAE,CAC3E,CACA,IAAI,UAAW,CACb,OAAI,KAAK,KAAK,aAAe,KACpB,GAEL,KAAK,QAAU,EACV,GAEF,KAAK,YAAY,KAAK,KAAK,CACpC,CACA,IAAI,WAAY,CAId,OAHI,KAAK,KAAK,aAAe,MAGzB,KAAK,QAAU,EACV,GAEF,KAAK,aAAa,KAAK,KAAK,CACrC,CACA,mBAAmBnmI,EAAM,CACvB,MAAM9N,EAAM,OAAO8N,GAAS,SAAWxB,GAAkBwB,CAAI,EAAI,GAC3DojF,EAAMlxF,GAAOmxF,GAAKnxF,CAAG,EAAE,MAAQ,MAAQ,MAAQ,MACrD,MAAO,CACL,IAAAA,EACA,IAAAkxF,CACN,CACE,CACA,qBAAqBhuE,EAAQ,CAC3B,KAAM,CACJ,KAAA3Z,EACA,kBAAA2mI,CACN,EAAQhtH,EACEgxH,EAAoBhmI,GAAuB,CAC/C,KAAA3E,EACA,IAAK,IACX,CAAK,GAAK2mI,EAAkB,SAAS,IAAI,IAAI,EACzC,KAAK,mBAAqB,OAAOgE,GAAsB,SAAWA,EAAoB,GACtF,KAAK,KAAK,sBAAwB1pC,GAAuB,KAAK,kBAAkB,CAClF,CACA,SAASgJ,EAAO,CACd,KAAK,OAAS,KAAK,mBAAmBA,CAAK,CAC7C,CACA,YAAY2gC,EAAU,CACpB,KAAK,UAAY,KAAK,mBAAmBA,CAAQ,CACnD,CACA,oBAAoBC,EAAkB,CACpC,KAAK,iBAAmB,OAAOA,GAAqB,SAAWA,EAAmB,IACpF,CACA,SAASn4E,EAAO,CACd,KAAK,MAAQ,OAAO,UAAUA,CAAK,GAAKA,EAAQ,EAAIA,EAAQ,EACxD,KAAK,MAAQ79D,GAAe,WAAa,KAAK,YAAY,OAAS,eACrE,KAAK,OAASA,GAAe,UAEjC,CACA,QAAQs+D,EAAM,CACZ,OAAO,KAAK,SAAS,KAAK,MAAOA,CAAI,CACvC,CACA,aAAa23E,EAAW,CACtB,KAAK,UAAY5kI,GAAiB4kI,EAAW,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,CAC3D,CACA,SAAS/3H,EAAO,CACd,KAAK,MAAQq2H,GAAYr2H,CAAK,CAChC,CACA,eAAeg4H,EAAa,CAE1B,GADA,KAAK,YAAc,CAAC,OAAQ,MAAM,EAC9B,MAAM,QAAQA,CAAW,GAAKA,EAAY,SAAW,EACvD,QAAS9yI,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMtB,EAAMo0I,EAAY9yI,CAAC,EACzB,GAAItB,aAAemI,EACjB,OAAQnI,EAAI,KAAI,CACd,IAAK,OACH,SACF,IAAK,SACL,IAAK,SACL,IAAK,UACL,IAAK,YACL,IAAK,cACL,IAAK,OACL,IAAK,aACL,IAAK,eACL,IAAK,QACH,KAAK,YAAYsB,CAAC,EAAItB,EAAI,KAC1B,QACd,CAEQd,EAAK,gCAAgCc,CAAG,EAAE,CAC5C,CAEJ,CACA,YAAYq0I,EAAIhrI,EAAM,CACpB,KAAK,SAAW,EAChB,IAAIwI,EAAQwiI,aAAc/rI,EAAO+rI,EAAG,IAAI,GAAG,GAAK,EAAIhrI,EAAK,IAAI,QAAQ,GAAK,EACtE,OAAO,UAAUwI,CAAK,GAAKA,IAAU,IACvCA,GAAS,IACLA,EAAQ,IACVA,GAAS,KAEPA,EAAQ,KAAO,IACjB,KAAK,SAAWA,GAGtB,CACA,6BAA6BwiI,EAAI,CAC3BA,aAAc/rI,GAChB,KAAK,YAAcmqI,GAAY4B,EAAG,SAAS,IAAI,EAAG,IAAI,EACtD,KAAK,gBAAkB5B,GAAY4B,EAAG,SAAS,IAAI,EAAG,IAAI,GAE1D,KAAK,YAAc,KAAK,gBAAkB,IAE9C,CACA,eAAe/b,EAAa,CAE1B,GADA,KAAK,YAAc,IAAIgc,GACjBhc,aAAuBhwH,EAG7B,GAAIgwH,EAAY,IAAI,IAAI,EAAG,CACzB,MAAMjvH,EAAOivH,EAAY,IAAI,IAAI,EACjC,GAAIjvH,aAAgBf,EAAM,CACxB,MAAMisI,EAAWlrI,EAAK,IAAI,MAAM,GAC5B,CAACkrI,GAAYlqI,GAAOkqI,EAAU,QAAQ,KACxC,KAAK,YAAY,SAASlrI,EAAK,IAAI,GAAG,EAAG,KAAK,SAAS,EACvD,KAAK,YAAY,SAASA,EAAK,IAAI,GAAG,CAAC,EACvC,KAAK,YAAY,aAAaA,EAAK,SAAS,GAAG,CAAC,EAEpD,CACF,SAAWivH,EAAY,IAAI,QAAQ,EAAG,CACpC,MAAMvlH,EAAQulH,EAAY,SAAS,QAAQ,EACvC,MAAM,QAAQvlH,CAAK,IACjBA,EAAM,QAAU,GAClB,KAAK,YAAY,0BAA0BA,EAAM,CAAC,CAAC,EACnD,KAAK,YAAY,wBAAwBA,EAAM,CAAC,CAAC,EACjD,KAAK,YAAY,SAASA,EAAM,CAAC,EAAG,KAAK,SAAS,EAC9CA,EAAM,SAAW,GACnB,KAAK,YAAY,aAAaA,EAAM,CAAC,EAAG,EAAI,GAErCA,EAAM,SAAW,GAC1B,KAAK,YAAY,SAAS,CAAC,EAGjC,MACE,KAAK,YAAY,SAAS,CAAC,CAE/B,CACA,cAAc1J,EAAM,CAClB,MAAMmrI,EAAmBnrI,EAAK,IAAI,IAAI,EACtC,GAAI,EAAEmrI,aAA4BlsI,GAChC,OAEF,MAAMmsI,EAAwBD,EAAiB,IAAI,GAAG,EACtD,GAAIC,aAAiC5pI,GAAY,CAC/C,KAAK,WAAa4pI,EAClB,MACF,CACA,GAAI,EAAEA,aAAiCnsI,GACrC,OAEF,MAAM2W,EAAK5V,EAAK,IAAI,IAAI,EACxB,GAAI,EAAE4V,aAAc9W,GAClB,OAEF,MAAMgkG,EAAasoC,EAAsB,IAAIx1H,EAAG,IAAI,EAChDktF,aAAsBthG,KACxB,KAAK,WAAashG,EAEtB,CACAknC,GAAoB7qI,EAAMa,EAAM,CAC9B,GAAIA,EAAK,IAAI,IAAI,EACf,GAAI,CACF,KAAK,IAAM2mF,GAAwBxnF,EAAMa,EAAK,IAAI,IAAI,EAAG,IAAI,CAC/D,OAASqD,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAERxN,EAAK,wBAAwBwN,CAAE,EAAE,CACnC,CAEJ,CACA,MAAM,cAAcg0G,EAAMvU,EAAY,CACpC,MAAMljF,EAAY,MAAMkjF,EAAW,KAAK,SAAS,WAAW,EAC5D,OAAIljF,GACF,MAAMw3F,GAAa,KAAKx3F,EAAWy3F,EAAMz3F,EAAU,IAAI,EAElDA,CACT,CACA,IAAI,yBAA0B,CAC5B,MAAO,EACT,CACA,MAAM,gBAAgBkgF,EAAW/O,EAAMnlF,EAAQ7C,EAAmB,CAChE,KAAM,CACJ,aAAAsiI,EACA,GAAA79F,EACA,KAAAxzC,CACN,EAAQ,KAAK,KACT,IAAI8oG,EAAa,KAAK,WACtB,MAAMwoC,EAAmB,CAAC,EAAED,GAAgBz/H,EAAS1X,GAAoB,UAAY,CAAC,KAAK,yBAA2B0X,EAAS1X,GAAoB,oBACnJ,GAAIo3I,IAAqB,KAAK,QAAU,GAAK,KAAK,SAAW,GAC3D,YAAK,KAAK,aAAe,GAClB,KAAK,6BAA4B,EAE1C,GAAI,CAACxoC,EAAY,CACf,GAAI,CAACwoC,EACH,OAAO,KAAK,6BAA4B,EAE1CxoC,EAAa,IAAIzrF,GAAa,GAAI,IAAIpY,CAAM,CAC9C,CACA,MAAMssI,EAAiBzoC,EAAW,KAC5BljF,EAAY,MAAM,KAAK,cAAclc,GAA8Bo/F,CAAU,EAC7E9zE,EAAO/oB,GAAWslI,EAAe,SAAS,MAAM,EAAG,CAAC,EAAG,EAAG,KAAK,MAAO,KAAK,MAAM,CAAC,EAClFrwI,EAAS6K,GAAawlI,EAAe,SAAS,QAAQ,EAAG9nI,EAAe,EACxEjK,EAAYowI,GAAmB5vI,EAAMg1B,EAAM9zB,CAAM,EACjD4zB,EAAS,IAAIP,GACbG,EAAkB,KAAK,IAC7B,OAAIA,IAAoB,QACtBI,EAAO,MAAM15B,EAAI,wBAAyB,CAAC,KAAMs5B,CAAe,CAAC,EAEnEI,EAAO,MAAM15B,EAAI,gBAAiB,CAACo4C,EAAIxzC,EAAMR,EAAW0B,EAAQowI,CAAgB,CAAC,EACjF,MAAMxrC,EAAU,gBAAgB,CAC9B,OAAQgD,EACR,KAAA/R,EACA,UAAAnxE,EACA,aAAckP,EACd,iBAAkB,KAAK,iBAC7B,CAAK,EACDA,EAAO,MAAM15B,EAAI,cAAe,CAAA,CAAE,EAC9Bs5B,IAAoB,QACtBI,EAAO,MAAM15B,EAAI,iBAAkB,CAAA,CAAE,EAEvC,KAAK,MAAK,EACH,CACL,OAAA05B,EACA,aAAc,GACd,eAAgBw8G,CACtB,CACE,CACA,MAAM,KAAKxrC,EAAW/O,EAAMhoF,EAAmBu/F,EAAS,CACtD,OAAO,IACT,CACA,IAAI,qBAAsB,CACxB,MAAO,EACT,CACA,IAAI,gBAAiB,CACnB,MAAO,EACT,CACA,MAAM,mBAAmBxI,EAAW/O,EAAMsG,EAAS,CACjD,GAAI,CAAC,KAAK,WACR,OAEF,MAAMz3E,EAAY,MAAM,KAAK,cAAcjc,GAA6B,KAAK,UAAU,EACjFk9D,EAAO,CAAA,EACP19D,EAAS,CAAA,EACf,IAAIqoI,EAAiB,IACjBC,EAAiB,IACjBC,EAAgB,KACpB,MAAMvlD,EAAO,CACX,YAAa,KAAK,SAClB,MAAO,GACP,QAAQhuF,EAAOumB,EAAM,CACnB,UAAWla,KAAQrM,EAAM,MACnBqM,EAAK,MAAQ,SAGjBgnI,EAAiB,KAAK,IAAIA,EAAgBhnI,EAAK,UAAU,CAAC,CAAC,EAC3DinI,EAAiB,KAAK,IAAIA,EAAgBjnI,EAAK,UAAU,CAAC,CAAC,EAC3DrB,EAAO,KAAKqB,EAAK,GAAG,EAChBA,EAAK,SACPq8D,EAAK,KAAK19D,EAAO,KAAK,EAAE,EAAE,SAAS,EACnCA,EAAO,OAAS,GAGtB,CACN,EAiBI,GAhBA,MAAM28F,EAAU,eAAe,CAC7B,OAAQ,KAAK,WACb,KAAA/O,EACA,UAAAnxE,EACA,qBAAsB,GACtB,eAAgB,GAChB,KAAAumE,EACA,QAAAkR,CACN,CAAK,EACD,KAAK,MAAK,EACNm0C,IAAmB,MACrBE,EAAgB,CAACF,EAAgBC,CAAc,GAE7CtoI,EAAO,QACT09D,EAAK,KAAK19D,EAAO,KAAK,EAAE,EAAE,SAAS,EAEjC09D,EAAK,OAAS,GAAKA,EAAK,CAAC,EAAG,CAC9B,MAAM0qE,EAAiB,KAAK,WAAW,KACjCv8G,EAAO/oB,GAAWslI,EAAe,SAAS,MAAM,EAAG,IAAI,EACvDrwI,EAAS6K,GAAawlI,EAAe,SAAS,QAAQ,EAAG,IAAI,EACnE,KAAK,KAAK,aAAe,KAAK,gBAAgBG,EAAe18G,EAAM9zB,CAAM,EACzE,KAAK,KAAK,YAAc2lE,CAC1B,CACF,CACA,gBAAgBtuC,EAAQvD,EAAM9zB,EAAQ,CACpC,KAAM,CACJ,KAAAlB,CACN,EAAQ,KAAK,KACTg1B,IAAS,CAAC,EAAG,EAAG,EAAG,CAAC,EACpB9zB,IAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC5B,MAAM1B,EAAYowI,GAAmB5vI,EAAMg1B,EAAM9zB,CAAM,EACvD1B,EAAU,CAAC,GAAKQ,EAAK,CAAC,EACtBR,EAAU,CAAC,GAAKQ,EAAK,CAAC,EACtB,MAAMZ,EAAIm5B,EAAO,MAAK,EACtB,OAAA55B,GAAK,eAAeS,EAAGI,CAAS,EAChCb,GAAK,eAAeS,EAAG8B,CAAM,EACtB9B,CACT,CACA,gBAAiB,CACf,OAAI,KAAK,KAAK,OACL,CACL,GAAI,KAAK,KAAK,GACd,QAAS,KAAK,KAAK,QACnB,KAAM,KAAK,KAAK,UAChB,YAAa,KAAK,KAAK,YACvB,UAAW,KAAK,KAAK,gBACrB,KAAM,GACN,OAAQ,KAAK,KAAK,OAClB,KAAM,KAAK,KAAK,UAChB,SAAU,KAAK,QACvB,EAEW,IACT,CACA,OAAQ,CACN,UAAWggB,KAAU,KAAK,SACxBA,EAAO,MAAK,CAEhB,CACA,oBAAoBpZ,EAAM,CACxB,GAAI,CAACA,EAAK,IAAI,GAAG,GAAK,CAACA,EAAK,IAAI,QAAQ,EACtC,OAAAnK,EAAK,uDAAuD,EACrD,GAET,GAAI,CAACmK,EAAK,IAAI,QAAQ,EACpB,OAAO+C,GAAkB/C,EAAK,IAAI,GAAG,CAAC,EAExC,MAAM2rI,EAAY,CAAA,EACd3rI,EAAK,IAAI,GAAG,GACd2rI,EAAU,QAAQ5oI,GAAkB/C,EAAK,IAAI,GAAG,CAAC,CAAC,EAEpD,IAAI4rI,EAAW5rI,EACf,MAAM8E,EAAU,IAAItE,GAIpB,IAHIR,EAAK,OACP8E,EAAQ,IAAI9E,EAAK,KAAK,EAEjB4rI,EAAS,IAAI,QAAQ,IAC1BA,EAAWA,EAAS,IAAI,QAAQ,EAC5B,IAAEA,aAAoB3sI,IAAS2sI,EAAS,OAAS9mI,EAAQ,IAAI8mI,EAAS,KAAK,KAG3EA,EAAS,OACX9mI,EAAQ,IAAI8mI,EAAS,KAAK,EAExBA,EAAS,IAAI,GAAG,GAClBD,EAAU,QAAQ5oI,GAAkB6oI,EAAS,IAAI,GAAG,CAAC,CAAC,EAG1D,OAAOD,EAAU,KAAK,GAAG,CAC3B,CACA,iBAAiBE,EAAQC,EAAOnF,EAAmBt5B,EAAU,GAAO,CAClE,GAAMw+B,aAAkB5sI,EAGxB,OAAM6sI,aAAiBrsI,IACrBqsI,EAAQ/nC,GAAS,iBAAiB8nC,EAAO,IAAI,IAAI,EAAG,EAAI,GAEnDC,aAAiBrsI,EAAMknI,EAAkB,QAAQ,6BAA6BmF,EAAOz+B,CAAO,EAAI,MACzG,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,KAAK,CAAC,CAC7C,CACA,IAAI,QAAS,CACX,OAAO,KAAK,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,KAAK,CAAC,CAC7C,CACF,CACA,MAAM49B,EAAsB,CAC1B,MAAQ,EACR,SAAW,EACX,MAAQl2I,GAA0B,MAClC,UAAY,CAAC,CAAC,EACd,uBAAyB,EACzB,qBAAuB,EACvB,SAAS2M,EAAO1H,EAAO,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,CACnC,GAAI0H,aAAiB5C,EAAM,CACzB,KAAK,MAAQ,EACb,MACF,CACA,GAAI,OAAO4C,GAAU,SAAU,CAC7B,GAAIA,EAAQ,EAAG,CACb,KAAK,SAAWA,EAChB,MAAM6gG,GAAYvoG,EAAK,CAAC,EAAIA,EAAK,CAAC,GAAK,EACjCojB,GAAapjB,EAAK,CAAC,EAAIA,EAAK,CAAC,GAAK,EACpCuoG,EAAW,GAAKnlF,EAAY,IAAM1b,EAAQ6gG,GAAY7gG,EAAQ0b,KAChEvnB,EAAK,oDAAoD6L,CAAK,EAAE,EAChEA,EAAQ,EAEZ,CACA,KAAK,MAAQA,CACf,CACF,CACA,SAASunF,EAAO,CACd,GAAMA,aAAiBnqF,EAGvB,OAAQmqF,EAAM,KAAI,CAChB,IAAK,IACH,KAAK,MAAQl0F,GAA0B,MACvC,MACF,IAAK,IACH,KAAK,MAAQA,GAA0B,OACvC,MACF,IAAK,IACH,KAAK,MAAQA,GAA0B,QACvC,MACF,IAAK,IACH,KAAK,MAAQA,GAA0B,MACvC,MACF,IAAK,IACH,KAAK,MAAQA,GAA0B,UACvC,KAGR,CACE,CACA,aAAakiG,EAAW80C,EAAa,GAAO,CAC1C,GAAI,MAAM,QAAQ90C,CAAS,EAAG,CAC5B,IAAI+0C,EAAU,GACVC,EAAW,GACf,UAAWnlI,KAAWmwF,EAEpB,GADoB,CAACnwF,GAAW,EAIrBA,EAAU,IACnBmlI,EAAW,QAJK,CAChBD,EAAU,GACV,KACF,CAIE/0C,EAAU,SAAW,GAAK+0C,GAAW,CAACC,GACxC,KAAK,UAAYh1C,EACb80C,GACF,KAAK,SAASjtI,EAAK,IAAI,GAAG,CAAC,GAG7B,KAAK,MAAQ,CAEjB,MAAWm4F,IACT,KAAK,MAAQ,EAEjB,CACA,0BAA0Bi1C,EAAQ,CAC5B,OAAO,UAAUA,CAAM,IACzB,KAAK,uBAAyBA,EAElC,CACA,wBAAwBA,EAAQ,CAC1B,OAAO,UAAUA,CAAM,IACzB,KAAK,qBAAuBA,EAEhC,CACF,CACA,MAAMC,WAAyBzD,EAAW,CACxC,YAAY/uH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,CACN,EAAQ2Z,EACJ,GAAI3Z,EAAK,IAAI,KAAK,EAAG,CACnB,MAAMosI,EAASpsI,EAAK,OAAO,KAAK,EAChC,KAAK,KAAK,UAAYosI,aAAkB3sI,EAAM2sI,EAAO,SAAQ,EAAK,KAClE,MAAMC,EAAKrsI,EAAK,IAAI,IAAI,EACxB,KAAK,KAAK,UAAYqsI,aAAcvtI,EAAOutI,EAAG,KAAO13I,GAAoB,KAC3E,CACA,IAAI23I,EAAW,KACf,GAAI,KAAK,KAAK,YAAc33I,GAAoB,MAAO,CACrD,MAAM+L,EAASV,EAAK,IAAI,KAAK,EAC7B,KAAK,SAASU,EAAO,IAAI,GAAG,CAAC,EAC7B,KAAK,KAAK,SAAW,KAAK,OAC1B,KAAK,YAAYA,EAAO,IAAI,UAAU,CAAC,EACvC,KAAK,KAAK,YAAc,KAAK,UACxBA,EAAO,IAAI,cAAc,GAG5B,KAAK,gBAAgBA,EAAO,IAAI,cAAc,CAAC,EAC/C,KAAK,KAAK,aAAe,KAAK,cAH9B,KAAK,KAAK,aAAe,KAKtBA,EAAO,IAAI,GAAG,GAGjB,KAAK,oBAAoBA,EAAO,IAAI,GAAG,CAAC,EACxC,KAAK,KAAK,iBAAmB,KAAK,kBAHlC,KAAK,KAAK,iBAAmB,KAK/B4rI,EAAW5rI,EAAO,OAAO,OAAO,EAC3BA,EAAO,IAAI,GAAG,GAGjB,KAAK,SAASA,EAAO,SAAS,GAAG,CAAC,EAClC,KAAK,KAAK,MAAQ,KAAK,OAHvB,KAAK,KAAK,MAAQ,IAKtB,MACE,KAAK,KAAK,SAAW,KAAK,OAC1B,KAAK,gBAAgBV,EAAK,IAAI,cAAc,CAAC,EAC7C,KAAK,KAAK,aAAe,KAAK,aAC9BssI,EAAWtsI,EAAK,OAAO,OAAO,EACzBA,EAAK,IAAI,GAAG,IACf,KAAK,KAAK,MAAQ,MAGtB,KAAK,KAAK,SAAWssI,aAAoB7sI,EAAM6sI,EAAS,SAAQ,EAAK,KACjEtsI,EAAK,IAAI,IAAI,IACf,KAAK,KAAK,SAAWimI,GAAW,kBAAkBjmI,EAAK,IAAI,IAAI,CAAC,EAEpE,CACA,gBAAgBusI,EAAc,CAC5B,KAAK,aAAe,OAAOA,GAAiB,SAAWA,EAAe,IACxE,CACA,sBAAsB,CACpB,KAAAptI,EACA,MAAAwqF,EACA,YAAA6iD,EACA,UAAAC,EACA,UAAAC,EACA,YAAArqC,EACA,UAAAsqC,EACA,eAAAC,CACJ,EAAK,CACD,MAAM59G,EAAO,KAAK,KAAK,KAAOr7B,GAAU,MAAK,EACvCwP,EAAS,CAAC,GAAG,EACfwmF,GACFxmF,EAAO,KAAKwmF,CAAK,EAEf6iD,GACFrpI,EAAO,KAAK,GAAGqpI,EAAY,CAAC,CAAC,IAAIA,EAAY,CAAC,CAAC,IAAIA,EAAY,CAAC,CAAC,KAAK,EAEpEC,GACFtpI,EAAO,KAAK,GAAGspI,EAAU,CAAC,CAAC,IAAIA,EAAU,CAAC,CAAC,IAAIA,EAAU,CAAC,CAAC,KAAK,EAElE,MAAMI,EAAc,KAAK,KAAK,YAAc,aAAa,KAAK,CAAC,KAAK,UAAU,CAAC,EAAG,KAAK,UAAU,CAAC,EAAG,KAAK,UAAU,CAAC,EAAG,KAAK,UAAU,CAAC,EAAG,KAAK,UAAU,CAAC,EAAG,KAAK,UAAU,CAAC,EAAG,KAAK,UAAU,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,CAAC,EACtN,QAAS50I,EAAI,EAAGmF,EAAKyvI,EAAY,OAAQ50I,EAAImF,EAAInF,GAAK,EAAG,CACvD,MAAMosD,EAASuoF,EAAezpI,EAAQ0pI,EAAY,SAAS50I,EAAGA,EAAI,CAAC,CAAC,EACpEU,GAAK,gBAAgB,GAAG0rD,EAAQr1B,CAAI,CACtC,CACA7rB,EAAO,KAAK,GAAG,EACf,MAAM2pI,EAAW,IAAI7tI,EAAKE,CAAI,EACxB4jG,EAAuB,IAAI9jG,EAAKE,CAAI,EAC1C4jG,EAAqB,UAAU,UAAW,MAAM,EAChD,MAAMgqC,EAAmB,IAAI11H,GAAalU,EAAO,KAAK,GAAG,EAAG4/F,CAAoB,EAChF+pC,EAAS,IAAI,MAAOC,CAAgB,EACpC,MAAMC,EAAS,IAAI/tI,EAAKE,CAAI,EACxButI,GACFM,EAAO,UAAU,KAAMN,CAAS,EAElCM,EAAO,YAAY,KAAM3qC,CAAW,EACpC2qC,EAAO,YAAY,KAAML,CAAS,EAClC,MAAMM,EAAY,IAAIhuI,EAAKE,CAAI,EAC/B8tI,EAAU,IAAI,MAAOD,CAAM,EAC3B,MAAMptH,EAAY,IAAI3gB,EAAKE,CAAI,EAC/BygB,EAAU,IAAI,YAAaqtH,CAAS,EACpCrtH,EAAU,IAAI,UAAWktH,CAAQ,EACjC,MAAMvB,EAAiB,IAAItsI,EAAKE,CAAI,EACpCosI,EAAe,IAAI,YAAa3rH,CAAS,EACzC2rH,EAAe,IAAI,OAAQv8G,CAAI,EAC/B,KAAK,WAAa,IAAI3X,GAAa,kBAAmBk0H,CAAc,EACpE,KAAK,SAAS,KAAK,KAAK,WAAYwB,CAAgB,CACtD,CACA,aAAa,oBAAoB5tI,EAAM+pI,EAAY5gC,EAAS3uF,EAAQ,CAClE,MAAMuzH,EAAgBhE,EAAW,MAAQ/pI,EAAK,mBAAkB,EAC1DguI,EAAK,MAAM,KAAK,0BAA0BjE,EAAY/pI,EAAMwa,CAAM,EACxE,IAAIyzH,EACJ,GAAID,EAAI,CACN,MAAME,EAAQluI,EAAK,mBAAkB,EACrCiuI,EAAiB,KAAK,cAAclE,EAAY/pI,EAAM,CACpD,MAAAkuI,CACR,CAAO,EACD/kC,EAAQ,IAAI+kC,EAAO,CACjB,KAAMF,CACd,CAAO,CACH,MACEC,EAAiB,KAAK,cAAclE,EAAY/pI,EAAM,CAAA,CAAE,EAEtD,OAAO,UAAU+pI,EAAW,YAAY,GAC1CkE,EAAe,IAAI,eAAgBlE,EAAW,YAAY,EAE5D5gC,EAAQ,IAAI4kC,EAAe,CACzB,KAAME,CACZ,CAAK,EACD,MAAME,EAAS,CACb,IAAKJ,CACX,EACU,CACJ,MAAAK,CACN,EAAQrE,EACJ,GAAIqE,EAAO,CACT,GAAIA,EAAM,QACR,OAAAH,EAAe,OAAO,OAAO,EAC7BA,EAAe,OAAO,UAAU,EAChCA,EAAe,OAAO,IAAI,EACnBE,EAET,MAAMhB,EAAWiB,EAAM,MAAQpuI,EAAK,mBAAkB,EACtDouI,EAAM,OAASL,EACf,MAAMM,EAAYhG,GAAgB,cAAc+F,EAAOpuI,CAAI,EAC3D,OAAAmpG,EAAQ,IAAIgkC,EAAU,CACpB,KAAMkB,CACd,CAAO,EACDJ,EAAe,aAAa,WAAY5qI,GAAuB+qI,EAAM,QAAQ,CAAC,EAC9EH,EAAe,IAAI,QAASd,CAAQ,EAC7B,CAACgB,EAAQ,CACd,IAAKhB,CACb,CAAO,CACH,CACA,OAAOgB,CACT,CACA,aAAa,yBAAyB3G,EAAmBxnI,EAAM+pI,EAAYvvH,EAAQ,CACjF,MAAMwzH,EAAK,MAAM,KAAK,0BAA0BjE,EAAY/pI,EAAMwa,CAAM,EAClEyzH,EAAiB,KAAK,cAAclE,EAAY/pI,EAAMguI,EAAK,CAC/D,GAAAA,CACN,EAAQ,EAAE,EACAM,EAAgB,IAAI,KAAK,UAAU,YAAY,CACnD,KAAML,EACN,KAAAjuI,EACA,kBAAAwnI,EACA,iBAAkBhtH,EAAO,gBAC/B,CAAK,EACD,OAAIuvH,EAAW,MACbuE,EAAc,IAAMA,EAAc,aAAevE,EAAW,KAEvDuE,CACT,CACF,CACA,MAAMlG,WAAyBmB,EAAW,CACxC,YAAY/uH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,EACA,kBAAAwnI,CACN,EAAQhtH,EACEpV,EAAO,KAAK,KAClB,KAAK,iBAAmBoV,EAAO,gBAC3BpV,EAAK,YAAc,SACrBA,EAAK,UAAY,KAAK,oBAAoBvE,CAAI,GAE5CuE,EAAK,UAAY,SACnBA,EAAK,QAAUyC,GAAe7H,EAAMa,EAAMhL,EAAyB,GAErE,IAAI04I,EAAa/oI,GAAuB,CACtC,KAAA3E,EACA,IAAK,IACL,SAAU,EAChB,CAAK,EACDuE,EAAK,WAAa,KAAK,iBAAiBmpI,CAAU,EAClD,MAAMC,EAAoBhpI,GAAuB,CAC/C,KAAA3E,EACA,IAAK,KACL,SAAU,EAChB,CAAK,EAED,GADAuE,EAAK,kBAAoB,KAAK,iBAAiBopI,CAAiB,EAC5DD,IAAe,QAAa/G,EAAkB,YAAa,CAC7D,MAAMvgI,EAAO,KAAK,OAAO,IACrBA,IACF,KAAK,iBAAmB,GACxB7B,EAAK,WAAampI,EAAa/G,EAAkB,YAAY,SAASvgI,CAAI,EAE9E,CACIsnI,IAAe,QAAanpI,EAAK,oBAAsB,OACzDA,EAAK,WAAaA,EAAK,mBAEzBA,EAAK,gBAAkBxB,GAAkB/C,EAAK,IAAI,IAAI,GAAK,EAAE,EAC7D,KAAK,qBAAqB2Z,CAAM,EAChCpV,EAAK,gBAAkB,KAAK,kBAAoBA,EAAK,aAAe,QAAaA,EAAK,aAAe,KACrG,MAAM2iI,EAAYviI,GAAuB,CACvC,KAAA3E,EACA,IAAK,IACX,CAAK,EACDuE,EAAK,UAAY2iI,aAAqBpoI,EAAOooI,EAAU,KAAO,KAC9D,MAAM71C,EAAiB1sF,GAAuB,CAC5C,KAAA3E,EACA,IAAK,IACX,CAAK,EACK4tI,EAAoBjH,EAAkB,SAAS,IAAI,IAAI,EACvDkH,EAAsB,KAAK,YAAY,KAAK,IAAI,WAAW,EACjE,KAAK,gBAAkB,CACrB,eAAAx8C,EACA,kBAAAu8C,EACA,oBAAAC,EACA,gBAAiB5uI,EAAK,MAAM,CAC1B,KAAAE,EACA,UAAW,CAACkyF,EAAgBw8C,EAAqBD,CAAiB,EAClE,cAAe,EACvB,CAAO,CACP,EACIrpI,EAAK,WAAaI,GAAuB,CACvC,KAAA3E,EACA,IAAK,IACX,CAAK,GACG,CAAC,OAAO,UAAUuE,EAAK,UAAU,GAAKA,EAAK,WAAa,KAC1DA,EAAK,WAAa,GAEpBA,EAAK,SAAW,KAAK,aAAazP,GAAoB,QAAQ,EAC9DyP,EAAK,SAAW,KAAK,aAAazP,GAAoB,QAAQ,EAC9DyP,EAAK,SAAW,KAAK,aAAazP,GAAoB,QAAQ,EAC9DyP,EAAK,OAAS,KAAK,SAASA,EAAK,gBAAiB1P,GAAe,MAAM,GAAK,KAAK,SAAS0P,EAAK,gBAAiB1P,GAAe,MAAM,CACvI,CACA,iBAAiBi5I,EAAW,CAC1B,GAAI,MAAM,QAAQA,CAAS,EAAG,CAC5B,MAAMzpI,EAAMypI,EAAU,IAAItpI,GAAQ,KAAK,iBAAiBA,CAAI,CAAC,EAAE,OAAOA,GAAQA,IAAS,IAAI,EAC3F,OAAOH,EAAI,OAAS,EAAIA,EAAM,IAChC,KAAO,IAAIypI,aAAqBhvI,EAC9B,OAAOgvI,EAAU,KACZ,GAAI,OAAOA,GAAc,SAC9B,OAAO/qI,GAAkB+qI,CAAS,EAEpC,OAAO,IACT,CACA,aAAa36E,EAAM,CACjB,MAAO,CAAC,EAAE,KAAK,KAAK,WAAaA,EACnC,CACA,YAAYT,EAAO,CACjB,MAAO,EACT,CACA,aAAa3pD,EAAmBglI,EAAa,CAC3C,OAAIA,EACK,KAAK,SAEP,MAAM,aAAahlI,EAAmBglI,CAAW,GAAK,CAAC,KAAK,SAAS,KAAK,MAAOl5I,GAAe,MAAM,CAC/G,CACA,kBAAkBkU,EAAmB,CACnC,IAAIK,EAAWL,GAAmB,IAAI,KAAK,KAAK,EAAE,GAAG,SACrD,OAAIK,IAAa,SACfA,EAAW,KAAK,UAEXA,IAAa,EAAI3F,GAAkB0F,GAAkBC,EAAU,KAAK,MAAO,KAAK,MAAM,CAC/F,CACA,kCAAkCL,EAAmB,CACnD,IAAIK,EAAWL,GAAmB,IAAI,KAAK,KAAK,EAAE,GAAG,SAIrD,GAHIK,IAAa,SACfA,EAAW,KAAK,UAEd,CAAC,KAAK,iBAAmB,CAAC,KAAK,YACjC,MAAO,GAET,MAAMpP,EAAOoP,IAAa,GAAKA,IAAa,IAAM,OAAO,KAAK,KAAK,IAAI,KAAK,MAAM,MAAQ,OAAO,KAAK,MAAM,IAAI,KAAK,KAAK,MAC1H,IAAI3S,EAAM,GAIV,GAHI,KAAK,kBACPA,EAAM,GAAG6qG,GAAY,KAAK,gBAAiB,EAAI,CAAC,IAAItnG,CAAI,OAEtD,KAAK,YAAa,CACpB,MAAMg0I,EAAc,KAAK,YAAY,OAAS,EAC9Cv3I,GAAO,GAAGu3I,CAAW,MAAM1sC,GAAY,KAAK,YAAa,EAAK,CAAC,IAAItnG,CAAI,KACzE,CACA,OAAOvD,CACT,CACA,MAAM,gBAAgBqpG,EAAW/O,EAAMnlF,EAAQ7C,EAAmB,CAChE,GAAI6C,EAAS1X,GAAoB,mBAAqB,EAAE,gBAAgBozI,KAA8B,CAAC,KAAK,KAAK,QAAU,CAAC,KAAK,KAAK,aAAc,CAClJ,MAAM1gI,EAAO,KAAK,6BAA4B,EAC9C,OAAAA,EAAK,aAAe,GACbA,CACT,CACA,GAAI,CAAC,KAAK,SACR,OAAO,MAAM,gBAAgBk5F,EAAW/O,EAAMnlF,EAAQ7C,CAAiB,EAEzE,MAAMuoE,EAAU,MAAM,KAAK,eAAewuB,EAAW/O,EAAMnlF,EAAQ7C,CAAiB,EACpF,GAAI,KAAK,YAAcuoE,IAAY,KACjC,OAAO,MAAM,gBAAgBwuB,EAAW/O,EAAMnlF,EAAQ7C,CAAiB,EAEzE,MAAM+lB,EAAS,IAAIP,GACnB,GAAI,CAAC,KAAK,oBAAsB+iD,IAAY,KAC1C,MAAO,CACL,OAAAxiD,EACA,aAAc,GACd,eAAgB,EACxB,EAEI,MAAMw8G,EAAmB,CAAC,EAAE,KAAK,KAAK,cAAgB1/H,EAAS1X,GAAoB,SAC7EgH,EAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC1B8zB,EAAO,CAAC,EAAG,EAAG,KAAK,MAAO,KAAK,MAAM,EACrCx1B,EAAYowI,GAAmB,KAAK,KAAK,KAAM56G,EAAM9zB,CAAM,EAC3DwzB,EAAkB,KAAK,IACzBA,IAAoB,QACtBI,EAAO,MAAM15B,EAAI,wBAAyB,CAAC,KAAMs5B,CAAe,CAAC,EAEnEI,EAAO,MAAM15B,EAAI,gBAAiB,CAAC,KAAK,KAAK,GAAI,KAAK,KAAK,KAAMoE,EAAW,KAAK,kBAAkBuP,CAAiB,EAAGuiI,CAAgB,CAAC,EACxI,MAAMlyH,EAAS,IAAI/B,GAAai6D,CAAO,EACvC,aAAMwuB,EAAU,gBAAgB,CAC9B,OAAA1mF,EACA,KAAA23E,EACA,UAAW,KAAK,gBAAgB,gBAChC,aAAcjiE,CACpB,CAAK,EACDA,EAAO,MAAM15B,EAAI,cAAe,CAAA,CAAE,EAC9Bs5B,IAAoB,QACtBI,EAAO,MAAM15B,EAAI,iBAAkB,CAAA,CAAE,EAEhC,CACL,OAAA05B,EACA,aAAc,GACd,eAAgBw8G,CACtB,CACE,CACA,WAAWliI,EAAU,CACnB,MAAM4hI,EAAK,IAAI/rI,EAAK,IAAI,EACxB,OAAImK,GACF4hI,EAAG,IAAI,IAAK5hI,CAAQ,EAEtB4hI,EAAG,WAAW,KAAM1B,GAAiB,KAAK,WAAW,CAAC,EACtD0B,EAAG,WAAW,KAAM1B,GAAiB,KAAK,eAAe,CAAC,EACnD0B,EAAG,KAAO,EAAIA,EAAK,IAC5B,CACA,eAAejiI,EAAmB/I,EAAM,CAAC,CACzC,SAASA,EAAMnJ,EAAOsI,EAAMmpG,EAAS,CACnC,KAAM,CACJ,KAAMn+C,EACN,IAAKugD,CACX,EAAQ3lG,GAAkB/E,EAAM,KAAK,IAAKb,CAAI,EAC1C,GAAI,CAACgrD,EACHnqD,EAAK,IAAI,IAAKnJ,CAAK,UACV,CAACyxG,EAAQ,IAAIoC,CAAS,EAAG,CAClC,MAAMujC,EAAgB9jF,EAAW,MAAK,EACtC,OAAA8jF,EAAc,IAAI,IAAKp3I,CAAK,EAC5ByxG,EAAQ,IAAIoC,EAAW,CACrB,KAAMujC,CACd,CAAO,EACMA,CACT,CACA,OAAO,IACT,CACA,MAAM,KAAKnuC,EAAW/O,EAAMhoF,EAAmBu/F,EAAS,CACtD,MAAMquB,EAAe5tH,GAAmB,IAAI,KAAK,KAAK,EAAE,EAClD2pD,EAAQ,KAAK,YAAYikE,GAAc,OAAQA,GAAc,OAAO,EAC1E,IAAI9/H,EAAQ8/H,GAAc,MACxBvtH,EAAWutH,GAAc,SAC3B,GAAI9/H,IAAU,KAAK,KAAK,YAAcA,IAAU,OAAW,CACzD,GAAI,CAAC,KAAK,kBAAoBuS,IAAa,QAAaspD,IAAU,OAChE,OAEF77D,IAAU,KAAK,KAAK,UACtB,CACA,GAAIuS,IAAa,QAAa,CAAC,KAAK,kBAAoB,MAAM,QAAQvS,CAAK,GAAK,MAAM,QAAQ,KAAK,KAAK,UAAU,GAAKoG,GAAapG,EAAO,KAAK,KAAK,UAAU,GAAK67D,IAAU,OAC5K,OAEEtpD,IAAa,SACfA,EAAW,KAAK,UAElB,IAAI05F,EAAa,KACjB,GAAI,CAAC,KAAK,mBACRA,EAAa,MAAM,KAAK,eAAehD,EAAW/O,EAAM78F,GAAoB,KAAM6U,CAAiB,EAC/F+5F,IAAe,MAAQpwC,IAAU,QACnC,OAGJ,IAAIw7E,EAAkB,GAClBprC,GAAY,kBACdorC,EAAkB,GAClBprC,EAAa,MAEf,KAAM,CACJ,KAAA3jG,CACN,EAAQ2gG,EACEquC,EAAehvI,EAAK,WAAW,KAAK,GAAG,EAC7C,GAAI,EAAEgvI,aAAwBlvI,GAC5B,OAEF,MAAMe,EAAO,IAAIf,EAAKE,CAAI,EAC1B,SAAW,CAACO,EAAK0uI,CAAM,IAAKD,EAAa,cAAa,EAChDzuI,IAAQ,MACVM,EAAK,IAAIN,EAAK0uI,CAAM,EAGxB,GAAI17E,IAAU,SACZ1yD,EAAK,IAAI,IAAK0yD,CAAK,EACfowC,IAAe,MAAQ,CAACorC,GAAiB,CAC3C,MAAMf,EAAKgB,EAAa,OAAO,IAAI,EAC/BhB,GACFntI,EAAK,IAAI,KAAMmtI,CAAE,CAErB,CAEF,MAAMkB,EAAM,CACV,KAAM,KAAK,KAAK,UAChB,MAAAx3I,CACN,EACUo3I,EAAgB,KAAK,SAASjuI,EAAM,MAAM,QAAQnJ,CAAK,EAAIA,EAAM,IAAI2L,EAAsB,EAAIA,GAAuB3L,CAAK,EAAGsI,EAAMmpG,CAAO,EACjJ,KAAK,eAAev/F,EAAmBklI,GAAiBjuI,CAAI,EAC5D,MAAMsuI,EAAU,KAAK,WAAWllI,CAAQ,EASxC,GARIklI,GACFtuI,EAAK,IAAI,KAAMsuI,CAAO,EAExBhmC,EAAQ,IAAI,KAAK,IAAK,CACpB,KAAMtoG,EACN,IAAAquI,EACA,gBAAAH,CACN,CAAK,EACGprC,IAAe,KAAM,CACvB,MAAMyrC,EAASpvI,EAAK,mBAAkB,EAChCqvI,EAAK,IAAIvvI,EAAKE,CAAI,EACxBa,EAAK,IAAI,KAAMwuI,CAAE,EACjBA,EAAG,IAAI,IAAKD,CAAM,EAClB,MAAM3uH,EAAY,KAAK,uBAAuBzgB,CAAI,EAChDosI,EAAiB,IAAItsI,EAAKE,CAAI,EAChCosI,EAAe,UAAU,UAAW,MAAM,EAC1CA,EAAe,IAAI,YAAa3rH,CAAS,EACzC,MAAMoP,EAAO5lB,EAAW,MAAQ,EAAI,CAAC,EAAG,EAAG,KAAK,MAAO,KAAK,MAAM,EAAI,CAAC,EAAG,EAAG,KAAK,OAAQ,KAAK,KAAK,EACpGmiI,EAAe,IAAI,OAAQv8G,CAAI,EAC/B,MAAM+9G,EAAmB,IAAI11H,GAAayrF,EAAYyoC,CAAc,EAC9DkD,EAAiB,KAAK,kBAAkB1lI,CAAiB,EAC3D0lI,IAAmBhrI,IACrB8nI,EAAe,IAAI,SAAUkD,CAAc,EAE7CnmC,EAAQ,IAAIimC,EAAQ,CAClB,KAAMxB,EACN,IAAK,KACL,gBAAiB,EACzB,CAAO,CACH,CACA/sI,EAAK,IAAI,IAAK,KAAKiJ,GAAmB,CAAE,EAAE,CAC5C,CACA,MAAM,eAAe62F,EAAW/O,EAAMnlF,EAAQ7C,EAAmB,CAC/D,GAAI,KAAK,KAAK,SACZ,OAAO,KAET,MAAM4tH,EAAe5tH,GAAmB,IAAI,KAAK,KAAK,EAAE,EACxD,IAAIlS,EAAOuS,EAKX,GAJIutH,IACF9/H,EAAQ8/H,EAAa,gBAAkBA,EAAa,MACpDvtH,EAAWutH,EAAa,UAEtBvtH,IAAa,QAAavS,IAAU,QAAa,CAAC,KAAK,mBACrD,CAAC,KAAK,kBAAoB,KAAK,YACjC,OAAO,KAGX,MAAM67B,EAAS,KAAK,kCAAkC3pB,CAAiB,EACvE,GAAIlS,IAAU,SACZA,EAAQ,KAAK,KAAK,WACd,CAACA,GACH,MAAO,aAAa67B,CAAM,QAc9B,GAXI,MAAM,QAAQ77B,CAAK,GAAKA,EAAM,SAAW,IAC3CA,EAAQA,EAAM,CAAC,GAEjBd,GAAO,OAAOc,GAAU,SAAU,kCAAkC,EACpEA,EAAQA,EAAM,QAAO,EACjB,KAAK,KAAK,QAIZA,EAHe,KAAK,KAAK,QAAQ,KAAK,CAAC,CACrC,YAAA63I,CACR,IAAY73I,IAAU63I,CAAW,GACX,cAAgB73I,GAE9BA,IAAU,GACZ,MAAO,aAAa67B,CAAM,QAExBtpB,IAAa,SACfA,EAAW,KAAK,UAElB,IAAIulI,EAAY,GACZrsC,EACA,KAAK,KAAK,WACZA,EAAQzrG,EAAM,MAAM,UAAU,EAAE,IAAIorG,GAAQA,EAAK,UAAU,KAAK,CAAC,EACjE0sC,EAAYrsC,EAAM,QAElBA,EAAQ,CAACzrG,EAAM,QAAQ,WAAY,EAAE,EAAE,UAAU,KAAK,CAAC,EAEzD,MAAM+3I,EAAiB,EACjBC,EAAkB,EACxB,GAAI,CACF,MAAOC,EACP,OAAQC,CACd,EAAQ,MACA3lI,IAAa,IAAMA,IAAa,OAClC,CAAC0lI,EAAYC,CAAW,EAAI,CAACA,EAAaD,CAAU,GAEjD,KAAK,qBACR,KAAK,KAAK,sBAAwB7tC,GAAuB,KAAK,mBAAqB,qBAAqB,GAE1G,IAAIzqC,EAAO,MAAM+wE,GAAiB,aAAaznC,EAAW/O,EAAM,KAAK,KAAK,sBAAuB,KAAK,gBAAgB,eAAe,EACjI45C,EAAmBv0C,EAAU8L,EACjC,MAAM8sC,EAAe,CAAA,EACrB,IAAIC,EAAgB,GACpB,UAAWhtC,KAAQK,EAAO,CACxB,MAAM4sC,EAAgB14E,EAAK,aAAayrC,CAAI,EACxCitC,EAAc,OAAS,IACzBD,EAAgB,IAElBD,EAAa,KAAKE,EAAc,KAAK,EAAE,CAAC,CAC1C,CACA,GAAID,GAAiBrjI,EAAS1X,GAAoB,KAChD,MAAO,CACL,gBAAiB,EACzB,EAEI,GAAI+6I,GAAiB,KAAK,4BAA6B,CACrD,MAAM3sI,EAAa,KAAK,KAAK,KAAO,YAAc,aAC5C6sI,EAAkB,IAAIxtC,GAAgB7B,EAAU,KAAMx9F,CAAU,EAChEsd,GAAYuvH,EAAgB,oBAAoB7sC,EAAM,KAAK,EAAE,CAAC,EAC9D8sC,GAAUxvH,GAAU,OAAO,MAAM,EACvC,GAAI,KAAK,gBAAgB,gBAAgB,IAAI,MAAM,EAAG,CACpD,MAAMyvH,GAAU,KAAK,gBAAgB,gBAAgB,IAAI,MAAM,EAC/D,SAAW,CAAC3vI,GAAK0uI,EAAM,IAAKgB,GAAQ,cAAa,EAC/CC,GAAQ,IAAI3vI,GAAK0uI,EAAM,CAE3B,MACE,KAAK,gBAAgB,gBAAgB,IAAI,OAAQgB,EAAO,EAE1D,MAAMr/E,EAAWo/E,EAAgB,SAAS,KAC1C34E,EAAO,MAAM+wE,GAAiB,aAAaznC,EAAW/O,EAAM,CAC1D,SAAAhhC,EACA,SAAU,CAClB,EAASnwC,EAAS,EACZ,QAAS3nB,GAAI,EAAGmF,GAAK4xI,EAAa,OAAQ/2I,GAAImF,GAAInF,KAChD+2I,EAAa/2I,EAAC,EAAIwK,GAAoB6/F,EAAMrqG,EAAC,CAAC,EAEhD,MAAMq3I,GAAyB,OAAO,OAAO,OAAO,OAAO,IAAI,EAAG,KAAK,KAAK,qBAAqB,EACjG,KAAK,KAAK,sBAAsB,SAAW,EAC3C,KAAK,KAAK,sBAAsB,SAAWv/E,EAC3C,CAAC46E,EAAmBv0C,EAAU8L,CAAU,EAAI,KAAK,iBAAiB6sC,EAAc,EAAIH,EAAgBE,EAAa,EAAID,EAAiBh4I,EAAO2/D,EAAMm4E,CAAS,EAC5J,KAAK,KAAK,sBAAwBW,EACpC,MACO,KAAK,6BACRz5I,EAAK,wFAAwF,EAE/F,CAAC80I,EAAmBv0C,EAAU8L,CAAU,EAAI,KAAK,iBAAiB6sC,EAAc,EAAIH,EAAgBE,EAAa,EAAID,EAAiBh4I,EAAO2/D,EAAMm4E,CAAS,EAE9J,IAAIrvC,EAAU9oC,EAAK,QACf,MAAM8oC,CAAO,EACfA,EAAUtrG,GAAkBkuG,EAE5B5C,EAAU,KAAK,IAAItrG,GAAkBkuG,EAAY,KAAK,IAAI5C,CAAO,EAAIlJ,CAAQ,EAE/E,MAAMm5C,EAAkB,KAAK,IAAI,KAAK,OAAOR,EAAc34C,GAAY,CAAC,EAAGw4C,CAAc,EACnF/gG,EAAY,KAAK,KAAK,cAC5B,GAAI,CACF,OAAQ2hG,EACR,QAASC,CACf,EAAQj5E,EACA,MAAMg5E,CAAU,GAAK,MAAMC,CAAW,GAAK,CAACD,GAAc,CAACC,GAC7DD,EAA+C,KAAkD,IACjGC,EAAwD,KAExDA,EAAc,KAAK,IAAIA,CAAW,EAEpC,MAAM5sC,GAAUksC,GAAeS,EAAaC,GAAer5C,GAAY,EAAIq5C,EAAcr5C,EACzF,GAAI,KAAK,KAAK,UACZ,OAAO,KAAK,wBAAwBu0C,EAAmBqE,EAAcx4E,EAAM4/B,EAAU04C,EAAYC,EAAalhG,EAAWghG,EAAiBU,EAAiBjwC,EAAS4C,EAAYn5F,CAAiB,EAEnM,GAAI,KAAK,KAAK,KACZ,OAAO,KAAK,mBAAmB4hI,EAAmBn0E,EAAMw4E,EAAa,CAAC,EAAG54C,EAAU04C,EAAYjsC,EAAQh1D,EAAW+5C,GAAK0a,EAAM,CAAC,CAAC,EAAE,MAAQ,MAAOv5F,CAAiB,EAEnK,MAAM2mI,EAAgB7sC,EACtB,GAAIh1D,IAAc,GAAKA,EAAY,EACjC,MAAO,aAAanb,CAAM,MAAQi4G,EAAoB,YAAY/hI,GAAeimI,CAAe,CAAC,IAAIjmI,GAAe8mI,CAAa,CAAC,QAAQlpI,GAAawoI,EAAa,CAAC,CAAC,CAAC,gBAEzK,MAAMW,EAAW,CACf,MAAO,CACb,EACUC,EAAe,KAAK,YAAYZ,EAAa,CAAC,EAAGx4E,EAAM4/B,EAAU04C,EAAYjhG,EAAW8hG,EAAUd,EAAiBa,CAAa,EACtI,MAAO,aAAah9G,CAAM,MAAQi4G,EAAoB,mBAAmBiF,CAAY,WACvF,CACA,aAAa,aAAa9vC,EAAW/O,EAAM8+C,EAAgBjwH,EAAW,CACpE,MAAMwX,EAAe,IAAI7I,GACnByiE,EAAe,CACnB,KAAM,KACN,OAAQ,CACN,OAAO,IACT,CACN,EACU,CACJ,SAAAjhC,EACA,SAAAqmC,CACN,EAAQy5C,EACJ,aAAM/vC,EAAU,cAAclgF,EAAW,CAACmwC,GAAYjxD,EAAK,IAAIixD,CAAQ,EAAGqmC,CAAQ,EAAG,KAAMh/D,EAAc25D,EAAMC,EAAc,IAAI,EAC1HA,EAAa,IACtB,CACA,cAAcnwB,EAAMrK,EAAM,CACxB,OAAO,KAAK,WAAWA,EAAK,cAAcqK,CAAI,EAAE,IAAI/nE,GAAKA,EAAE,KAAK,CAAC,EAAI,GACvE,CACA,iBAAiB6I,EAAQD,EAAOm/D,EAAMrK,EAAMm4E,EAAW,CACrD,GAAI,CACF,SAAAv4C,CACN,EAAQ,KAAK,KAAK,sBACV8L,GAAc9L,GAAY,IAAwC,KACpE05C,EAAgB,KAAK,MAAMnuI,EAASugG,CAAU,EAChD,GAAI,CAAC9L,EAAU,CACb,MAAM25C,EAAqBl0I,GAAK,KAAK,MAAMA,EAAI,GAAG,EAAI,IACtD,GAAI8yI,IAAc,GAAI,CACpB,MAAMqB,EAAY,KAAK,cAAcnvE,EAAMrK,CAAI,EAC/C4/B,EAAW25C,EAAmB,KAAK,IAAIpuI,EAA2C,KAAOD,EAAQsuI,CAAS,CAAC,EAC3GF,EAAgB,CAClB,KAAO,CACL,MAAMxtC,EAAQzhC,EAAK,MAAM,UAAU,EAC7BovE,EAAc,CAAA,EACpB,UAAWhuC,KAAQK,EAAO,CACxB,MAAMpsC,EAAUM,EAAK,aAAayrC,CAAI,EAAE,KAAK,EAAE,EACzC7pC,EAAS5B,EAAK,cAAcN,CAAO,EACnChpC,EAAYspC,EAAK,iBAAiBN,CAAO,EAC/C+5E,EAAY,KAAK,CACf,KAAM/5E,EACN,OAAAkC,EACA,UAAAlrC,CACZ,CAAW,CACH,CACA,MAAMgjH,EAAWC,GAAS,CACxB,IAAIpB,EAAc,EAClB,UAAWxmC,KAAS0nC,EAAa,CAC/B,MAAMv4H,EAAS,KAAK,WAAW,KAAM8+C,EAAM25E,EAAOzuI,EAAO6mG,CAAK,EAE9D,GADAwmC,GAAer3H,EAAO,OAASy4H,EAC3BpB,EAAcptI,EAChB,MAAO,EAEX,CACA,MAAO,EACT,EAEA,IADAmuI,EAAgB,KAAK,IAAIA,EAAenB,CAAS,IACpC,CAGX,GAFAzsC,EAAavgG,EAASmuI,EACtB15C,EAAW25C,EAAmB7tC,EAA+C,IAAK,EAC9EguC,EAAS95C,CAAQ,EAAG,CACtB05C,IACA,QACF,CACA,KACF,CACF,CACA,KAAM,CACJ,SAAA//E,EACA,UAAA2xC,CACR,EAAU,KAAK,KAAK,sBACd,KAAK,mBAAqBD,GAAwB,CAChD,SAAArL,EACA,SAAArmC,EACA,UAAA2xC,CACR,CAAO,CACH,CACA,MAAO,CAAC,KAAK,mBAAoBtL,EAAUz0F,EAASmuI,CAAa,CACnE,CACA,YAAYjvE,EAAMrK,EAAM4/B,EAAU04C,EAAYjhG,EAAW8hG,EAAUS,EAAUC,EAAU,CACrF,IAAIpuG,EACJ,GAAI4L,IAAc,EAAG,CACnB,MAAMnsC,EAAQ,KAAK,cAAcm/D,EAAMrK,CAAI,EAAI4/B,EAC/Cn0D,GAAS6sG,EAAaptI,GAAS,CACjC,SAAWmsC,IAAc,EAAG,CAC1B,MAAMnsC,EAAQ,KAAK,cAAcm/D,EAAMrK,CAAI,EAAI4/B,EAC/Cn0D,EAAQ6sG,EAAaptI,EAAQ0uI,CAC/B,MACEnuG,EAAQmuG,EAEV,MAAME,EAAW1nI,GAAeq5B,EAAQ0tG,EAAS,KAAK,EACtD,OAAAA,EAAS,MAAQ1tG,EACjBouG,EAAWznI,GAAeynI,CAAQ,EAC3B,GAAGC,CAAQ,IAAID,CAAQ,QAAQ7pI,GAAaq6D,CAAI,CAAC,MAC1D,CACA,uBAAuB1hE,EAAM,CAC3B,KAAM,CACJ,eAAAkyF,EACA,oBAAAw8C,EACA,kBAAAD,CACN,EAAQ,KAAK,gBACH79E,EAAW,KAAK,KAAK,uBAAuB,SAClD,GAAI,CAACA,EACH,OAAOshC,GAAkBpyF,EAAK,MAEhC,UAAW2gB,IAAa,CAACyxE,EAAgBw8C,CAAmB,EAC1D,GAAIjuH,aAAqB3gB,EAAM,CAC7B,MAAMsxI,EAAY3wH,EAAU,IAAI,MAAM,EACtC,GAAI2wH,aAAqBtxI,GAAQsxI,EAAU,IAAIxgF,CAAQ,EACrD,OAAOnwC,CAEX,CAEF,GAAIguH,aAA6B3uI,EAAM,CACrC,MAAMuxI,EAAe5C,EAAkB,IAAI,MAAM,EACjD,GAAI4C,aAAwBvxI,GAAQuxI,EAAa,IAAIzgF,CAAQ,EAAG,CAC9D,MAAM0gF,EAAc,IAAIxxI,EAAKE,CAAI,EACjCsxI,EAAY,IAAI1gF,EAAUygF,EAAa,OAAOzgF,CAAQ,CAAC,EACvD,MAAM2gF,EAAmB,IAAIzxI,EAAKE,CAAI,EACtC,OAAAuxI,EAAiB,IAAI,OAAQD,CAAW,EACjCxxI,EAAK,MAAM,CAChB,KAAAE,EACA,UAAW,CAACuxI,EAAkBr/C,CAAc,EAC5C,cAAe,EACzB,CAAS,CACH,CACF,CACA,OAAOA,GAAkBpyF,EAAK,KAChC,CACA,gBAAiB,CACf,OAAO,IACT,CACF,CACA,MAAMkoI,WAA6BI,EAAiB,CAClD,YAAY5tH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,CACN,EAAQ2Z,EACA3Z,EAAK,IAAI,KAAK,IAChB,KAAK,OAASnL,GAAe,OAC7B,KAAK,KAAK,OAAS,GACnBgB,EAAK,4BAA4B,GAEnC,KAAK,KAAK,aAAe,KAAK,KAAK,UAAY,CAAC,KAAK,KAAK,OAC1D,KAAK,SAAW,GACZ,OAAO,KAAK,KAAK,YAAe,WAClC,KAAK,KAAK,WAAa,IAEzB,IAAIg4C,EAAYlpC,GAAuB,CACrC,KAAA3E,EACA,IAAK,GACX,CAAK,GACG,CAAC,OAAO,UAAU6tC,CAAS,GAAKA,EAAY,GAAKA,EAAY,KAC/DA,EAAY,MAEd,KAAK,KAAK,cAAgBA,EAC1B,IAAI8iG,EAAgBhsI,GAAuB,CACzC,KAAA3E,EACA,IAAK,QACX,CAAK,GACG,CAAC,OAAO,UAAU2wI,CAAa,GAAKA,EAAgB,KACtDA,EAAgB,GAElB,KAAK,KAAK,OAASA,EACnB,KAAK,KAAK,UAAY,KAAK,aAAa77I,GAAoB,SAAS,EACrE,KAAK,KAAK,KAAO,KAAK,aAAaA,GAAoB,IAAI,GAAK,CAAC,KAAK,KAAK,WAAa,CAAC,KAAK,KAAK,UAAY,CAAC,KAAK,aAAaA,GAAoB,UAAU,GAAK,KAAK,KAAK,SAAW,EAC1L,KAAK,KAAK,YAAc,KAAK,aAAaA,GAAoB,WAAW,EACzE,KAAM,CACJ,QAAAoS,CACN,EAAQ,KAAK,KACT,GAAI,CAACA,EACH,OAEF,MAAM0pI,EAAa,qEACnB,IAAIC,EAAqB,GACzB,MAAMC,EAAU5pI,EAAQ,IAAI,QAAQ,EAClC6pI,EAAa7pI,EAAQ,IAAI,WAAW,GAClC4pI,GAAS,SAAW,GAAKC,GAAY,SAAW,GAAKH,EAAW,KAAKE,EAAQ,CAAC,CAAC,GAAKF,EAAW,KAAKG,EAAW,CAAC,CAAC,GAAKD,GAAS,SAAW,GAAKC,GAAY,SAAW,GAAKH,EAAW,KAAKG,EAAW,CAAC,CAAC,GAAKA,GAAY,SAAW,GAAKD,GAAS,SAAW,GAAKF,EAAW,KAAKE,EAAQ,CAAC,CAAC,KAC9RD,EAAqB,IAEvB,MAAMG,EAAiB,CAAA,EACnBF,GACFE,EAAe,KAAK,GAAGF,CAAO,EAE5BC,GACFC,EAAe,KAAK,GAAGD,CAAU,EAE/BF,IACF3pI,EAAQ,OAAO,WAAW,EAC1BA,EAAQ,IAAI,SAAU8pI,CAAc,GAEtC,UAAWC,KAAgBD,EAAgB,CACzC,MAAM93I,EAAI+3I,EAAa,MAAML,CAAU,EACvC,GAAI,CAAC13I,EACH,SAEF,MAAMg4I,EAASh4I,EAAE,CAAC,IAAM,OACxB,IAAIqyD,EAASryD,EAAE,CAAC,EAChB,MAAMmH,EAAM,SAASkrD,EAAQ,EAAE,EAK/B,GAJI,CAAC,MAAMlrD,CAAG,GAAK,KAAK,MAAM,KAAK,MAAMA,CAAG,CAAC,EAAI,IAAMnH,EAAE,CAAC,EAAE,SAC1DqyD,GAAU2lF,EAASluC,GAAcC,IAAa5iG,CAAG,GAAKkrD,GAExD,KAAK,KAAK,eAAiBA,EACvB,CAACslF,EACH,MAEF,GAAIK,EAAQ,CACN,aAAa,KAAK3lF,CAAM,GAC1B,KAAK,KAAK,aAAe,iBACzB,KAAK,KAAK,SAAW,KAAK,KAAKA,CAAM,EAAI,EAAI,IAE7C,KAAK,KAAK,aAAe,OAE3B,KACF,CACA,KAAK,KAAK,aAAe,OACzB,KAAK,KAAK,SAAW,KAAK,KAAKA,CAAM,EAAI,EAAI,GAC7C,KACF,CACF,CACA,IAAI,gBAAiB,CACnB,MAAO,CAAC,CAAC,KAAK,YAAc,CAAC,KAAK,gBACpC,CACA,mBAAmBo/E,EAAmBn0E,EAAMqK,EAAMu1B,EAAU10F,EAAOmhG,EAAQh1D,EAAWsjG,EAAOpoI,EAAmB,CAC9G,MAAMqoI,EAAY1vI,EAAQ,KAAK,KAAK,OAC9BgxB,EAAS,KAAK,kCAAkC3pB,CAAiB,EACjEsoI,EAAQ76E,EAAK,iBAAiBqK,CAAI,EAAE,IAAI,CAAC,CAAC7+D,EAAOF,CAAG,IAAM,CAC9D,MAAMwsD,EAAQuS,EAAK,UAAU7+D,EAAOF,CAAG,EACvC,MAAO,CACL,MAAAwsD,EACA,MAAO,KAAK,cAAcA,EAAOkI,CAAI,EAAI4/B,CACjD,CACI,CAAC,EACG+6C,GACFE,EAAM,QAAO,EAEf,MAAMrB,EAAYoB,EAAYC,EAAM,OACpC,IAAIC,EAAS,EACTzjG,IAAc,EAChByjG,GAAU,KAAK,OAAO5vI,EAAQsuI,IAAc,EAAIoB,EAAU,EAAIA,EACrDvjG,IAAc,IACvByjG,GAAU5vI,EAAQsuI,GAEpB,MAAMrtI,EAAM,CAAA,EACZ,IAAI4uI,EAAgB,EACpB,QAASt5I,EAAI,EAAGmF,EAAKi0I,EAAM,OAAQp5I,EAAImF,EAAInF,IAAK,CAC9C,KAAM,CACJ,MAAAq2D,EACA,MAAOyrC,CACf,EAAUs3C,EAAMp5I,CAAC,EACLgqC,EAAQhqC,IAAM,GAAKm5I,EAAYr3C,GAAc,EAAIq3C,GAAaG,EAAgBx3C,GAAc,EAClGp3F,EAAI,KAAK,GAAGiG,GAAeq5B,CAAK,CAAC,UAAUz7B,GAAa8nD,CAAK,CAAC,MAAM,EACpEijF,EAAgBx3C,CAClB,CACA,MAAMy3C,EAAe7uI,EAAI,KAAK,GAAG,EACjC,MAAO,aAAa+vB,CAAM,MAAQi4G,EAAoB,YAAY/hI,GAAe0oI,CAAM,CAAC,IAAI1oI,GAAei6F,CAAM,CAAC,OAAO2uC,CAAY,WACvI,CACA,wBAAwB7G,EAAmBroC,EAAO9rC,EAAM4/B,EAAU10F,EAAOC,EAAQksC,EAAWuiG,EAAUC,EAAU/wC,EAAS4C,EAAYn5F,EAAmB,CACtJ,MAAMpG,EAAM,CAAA,EACNmsI,EAAaptI,EAAQ,EAAI0uI,EACzBT,EAAW,CACf,MAAO,CACb,EACI,QAAS13I,EAAI,EAAGmF,EAAKklG,EAAM,OAAQrqG,EAAImF,EAAInF,IAAK,CAC9C,MAAMgqG,EAAOK,EAAMrqG,CAAC,EACdyf,EAAS,KAAK,WAAWuqF,EAAMzrC,EAAM4/B,EAAU04C,CAAU,EAC/D,QAASzkI,EAAI,EAAGyQ,EAAKpD,EAAO,OAAQrN,EAAIyQ,EAAIzQ,IAAK,CAC/C,MAAMlS,EAAQuf,EAAOrN,CAAC,EAChBw4F,EAAS5qG,IAAM,GAAKoS,IAAM,EAAI,CAACgmI,GAAYnuC,EAAa5C,GAAW,CAAC4C,EAC1Ev/F,EAAI,KAAK,KAAK,YAAYxK,EAAOq+D,EAAM4/B,EAAU10F,EAAOmsC,EAAW8hG,EAAUS,EAAUvtC,CAAM,CAAC,CAChG,CACF,CACA,MAAMnwE,EAAS,KAAK,kCAAkC3pB,CAAiB,EACjE6mI,EAAejtI,EAAI,KAAK;AAAA,CAAI,EAClC,MAAO,aAAa+vB,CAAM,MAAQi4G,EAAoB,cAAc/hI,GAAejH,CAAM,CAAC,OAAOiuI,CAAY,WAC/G,CACA,WAAW3tC,EAAMzrC,EAAM4/B,EAAU10F,EAAO6mG,EAAQ,GAAI,CAClDtG,EAAOsG,EAAM,MAAQtG,EACrB,MAAM7pC,EAASmwC,EAAM,QAAU/xC,EAAK,cAAcyrC,CAAI,EACtD,GAAI7pC,EAAO,QAAU,EACnB,MAAO,CAAC6pC,CAAI,EAEd,MAAM/0E,EAAYq7E,EAAM,WAAa/xC,EAAK,iBAAiByrC,CAAI,EACzDlyF,EAAQqmF,EAAW,IACnB1+E,EAAS,CAAA,EACf,IAAI+5H,EAA4B,GAC9BC,EAA0B,GAC1BnyB,EAAe,GACfoyB,EAAa,EACbC,EAAe,EACjB,QAAS35I,EAAI,EAAGmF,EAAKg7D,EAAO,OAAQngE,EAAImF,EAAInF,IAAK,CAC/C,KAAM,CAAC+J,EAAOF,CAAG,EAAIorB,EAAUj1B,CAAC,EAC1Bq2D,EAAQ8J,EAAOngE,CAAC,EAChB8hG,EAAazrC,EAAM,MAAQv+C,EAC7Bu+C,EAAM,UAAY,IAChBsjF,EAAe73C,EAAar4F,GAC9BgW,EAAO,KAAKuqF,EAAK,UAAU0vC,EAAY3vI,CAAK,CAAC,EAC7C2vI,EAAa3vI,EACb4vI,EAAe73C,EACf03C,EAA4B,GAC5BlyB,EAAe,KAEfqyB,GAAgB73C,EAChB03C,EAA4BzvI,EAC5B0vI,EAA0B5vI,EAC1By9G,EAAetnH,GAER25I,EAAe73C,EAAar4F,EACjC+vI,IAA8B,IAChC/5H,EAAO,KAAKuqF,EAAK,UAAU0vC,EAAYD,CAAuB,CAAC,EAC/DC,EAAaD,EACbz5I,EAAIsnH,EAAe,EACnBkyB,EAA4B,GAC5BG,EAAe,IAEfl6H,EAAO,KAAKuqF,EAAK,UAAU0vC,EAAY3vI,CAAK,CAAC,EAC7C2vI,EAAa3vI,EACb4vI,EAAe73C,GAGjB63C,GAAgB73C,CAEpB,CACA,OAAI43C,EAAa1vC,EAAK,QACpBvqF,EAAO,KAAKuqF,EAAK,UAAU0vC,CAAU,CAAC,EAEjCj6H,CACT,CACA,MAAM,mBAAmBooF,EAAW/O,EAAMsG,EAAS,CACjD,MAAM,MAAM,mBAAmByI,EAAW/O,EAAMsG,CAAO,EACvD,MAAMx2B,EAAO,KAAK,KAAK,YACvB,GAAI,CAACA,EACH,OAEF,MAAMgxE,EAAUhxE,EAAK,KAAK;AAAA,CAAI,EAC9B,GAAIgxE,IAAY,KAAK,KAAK,WACxB,OAEF,MAAMC,EAAQD,EAAQ,WAAW,8BAA+B,CAACE,EAAIx4I,IAAOA,EAAK,KAAKA,CAAE,GAAK,MAAM,EAC/F,IAAI,OAAO,QAAQu4I,CAAK,OAAO,EAAE,KAAK,KAAK,KAAK,UAAU,IAC5D,KAAK,KAAK,YAAc,KAAK,KAAK,WAAW,MAAM;AAAA,CAAI,EAE3D,CACA,gBAAiB,CACf,MAAO,CACL,GAAI,KAAK,KAAK,GACd,MAAO,KAAK,KAAK,WACjB,aAAc,KAAK,KAAK,mBAAqB,GAC7C,UAAW,KAAK,KAAK,UACrB,SAAU,KAAK,KAAK,SACpB,UAAW,KAAK,KAAK,OACrB,KAAM,KAAK,KAAK,KAChB,SAAU,CAAC,KAAK,KAAK,SACrB,OAAQ,KAAK,KAAK,OAClB,KAAM,KAAK,KAAK,UAChB,KAAM,KAAK,KAAK,KAChB,QAAS,KAAK,KAAK,QACnB,KAAM,KAAK,KAAK,UAChB,YAAa,KAAK,KAAK,YACvB,UAAW,KAAK,KAAK,gBACrB,SAAU,KAAK,SACf,eAAgB,KAAK,KAAK,eAC1B,gBAAiB,CAAC,CAAC,KAAK,KAAK,aAC7B,KAAM,MACZ,CACE,CACF,CACA,MAAM1K,WAA+BG,EAAiB,CACpD,YAAY5tH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAK,kBAAoB,KACzB,KAAK,oBAAsB,KAC3B,MAAMq4H,EAAU,KAAK,aAAal9I,GAAoB,KAAK,EACzDm9I,EAAe,KAAK,aAAan9I,GAAoB,UAAU,EACjE,KAAK,KAAK,SAAW,CAACk9I,GAAW,CAACC,EAClC,KAAK,KAAK,YAAcD,GAAW,CAACC,EACpC,KAAK,KAAK,WAAaA,EACvB,KAAK,KAAK,cAAgB,GAC1B,KAAK,KAAK,aAAe,GACzB,KAAK,KAAK,OAAS,GACf,KAAK,KAAK,SACZ,KAAK,iBAAiBt4H,CAAM,EACnB,KAAK,KAAK,YACnB,KAAK,oBAAoBA,CAAM,EACtB,KAAK,KAAK,WACnB,KAAK,mBAAmBA,CAAM,EAE9B9jB,EAAK,kDAAkD,CAE3D,CACA,IAAI,yBAA0B,CAC5B,OAAO,KAAK,KAAK,UAAY,KAAK,KAAK,WACzC,CACAq8I,GAA8BpyC,EAAW/O,EAAMnlF,EAAQ7C,EAAmBK,EAAU05F,EAAY,CAC9F,GAAI,CAACA,EACH,OAAO,KAAK,6BAA4B,EAE1C,MAAMqvC,EAAkB,KAAK,WACvBC,EAAcrsI,GAAa+8F,EAAW,KAAK,SAAS,QAAQ,EAAGr/F,EAAe,EAChF2F,GACF05F,EAAW,KAAK,IAAI,SAAU,KAAK,kBAAkB/5F,CAAiB,CAAC,EAEzE,KAAK,WAAa+5F,EAClB,MAAM1rE,EAAe,MAAM,gBAAgB0oE,EAAW/O,EAAMnlF,EAAQ7C,CAAiB,EACrF,YAAK,WAAaopI,EAClBrvC,EAAW,KAAK,IAAI,SAAUsvC,CAAW,EAClCh7G,CACT,CACA,MAAM,gBAAgB0oE,EAAW/O,EAAMnlF,EAAQ7C,EAAmB,CAChE,GAAI,KAAK,KAAK,WACZ,OAAO,MAAM,gBAAgB+2F,EAAW/O,EAAMnlF,EAAQ,GAAO7C,CAAiB,EAEhF,GAAI6C,EAAS1X,GAAoB,SAAW0X,EAAS1X,GAAoB,oBAAsB,KAAK,KAAK,UAAY,KAAK,KAAK,aAAc,CAC3I,MAAMm+I,EAAgB,CAACj7G,EAAcngC,IAAS,CAC5C,MAAM+xB,EAAQoO,EAAa,QAAQ,QAAQhiC,EAAI,eAAe,EAC1D4zB,IAAU,IACZoO,EAAa,UAAUpO,CAAK,EAAE,KAAK/xB,CAAI,CAE3C,EACM80H,EAAU,MAAM,KAAKmmB,GAA8BpyC,EAAW/O,EAAMnlF,EAAQ7C,EAAmB,KAAM,KAAK,iBAAiB,EACjIspI,EAActmB,EAAQ,OAAQ,SAAS,EACvC,MAAMumB,EAAY,MAAM,KAAKJ,GAA8BpyC,EAAW/O,EAAMnlF,EAAQ7C,EAAmB,KAAM,KAAK,mBAAmB,EACrI,OAAAspI,EAAcC,EAAU,OAAQ,WAAW,EAC3CvmB,EAAQ,OAAO,UAAUumB,EAAU,MAAM,EACzCvmB,EAAQ,eAAiBumB,EAAU,aACnCvmB,EAAQ,iBAAmBumB,EAAU,eAC9BvmB,CACT,CACA,IAAIl1H,EAAQ,KACRuS,EAAW,KACf,GAAIL,EAAmB,CACrB,MAAM4tH,EAAe5tH,EAAkB,IAAI,KAAK,KAAK,EAAE,EACvDlS,EAAQ8/H,EAAeA,EAAa,MAAQ,KAC5CvtH,EAAWutH,EAAeA,EAAa,SAAW,IACpD,CACA,OAAI9/H,IAAU,MAAQ,KAAK,WAClB,MAAM,gBAAgBipG,EAAW/O,EAAMnlF,EAAQ7C,CAAiB,GAEzElS,IAAU,KAAK,KAAK,SAAW,KAAK,KAAK,aAAe,KAAK,KAAK,YAAc,KAAK,KAAK,aAAe,KAAK,KAAK,YAC5G,KAAKq7I,GAA8BpyC,EAAW/O,EAAMnlF,EAAQ7C,EAAmBK,EAAUvS,EAAQ,KAAK,kBAAoB,KAAK,mBAAmB,EAC3J,CACA,MAAM,KAAKipG,EAAW/O,EAAMhoF,EAAmBu/F,EAAS,CACtD,GAAI,KAAK,KAAK,SAAU,CACtB,KAAK,cAAcxI,EAAW/O,EAAMhoF,EAAmBu/F,CAAO,EAC9D,MACF,CACI,KAAK,KAAK,aACZ,KAAK,iBAAiBxI,EAAW/O,EAAMhoF,EAAmBu/F,CAAO,CAErE,CACA,MAAM,cAAcxI,EAAW/O,EAAMhoF,EAAmBu/F,EAAS,CAC/D,GAAI,CAACv/F,EACH,OAEF,MAAM4tH,EAAe5tH,EAAkB,IAAI,KAAK,KAAK,EAAE,EACjD2pD,EAAQ,KAAK,YAAYikE,GAAc,OAAQA,GAAc,OAAO,EAC1E,IAAIvtH,EAAWutH,GAAc,SAC3B9/H,EAAQ8/H,GAAc,MACxB,GAAIvtH,IAAa,QAAaspD,IAAU,SAClC77D,IAAU,QAGO,KAAK,KAAK,aAAe,KAAK,KAAK,cACnCA,GACnB,OAGJ,IAAImJ,EAAO8/F,EAAU,KAAK,WAAW,KAAK,GAAG,EAC7C,GAAI,EAAE9/F,aAAgBf,GACpB,OAEFe,EAAOA,EAAK,MAAK,EACboJ,IAAa,SACfA,EAAW,KAAK,UAEdvS,IAAU,SACZA,EAAQ,KAAK,KAAK,aAAe,KAAK,KAAK,aAE7C,MAAMw3I,EAAM,CACV,KAAM,KAAK,KAAK,UAChB,MAAOx3I,EAAQ,KAAK,KAAK,YAAc,EAC7C,EACUI,EAAO6H,EAAK,IAAIjI,EAAQ,KAAK,aAAe,KAAK,EACvD,KAAK,SAASmJ,EAAM/I,EAAM6oG,EAAU,KAAMwI,CAAO,EACjDtoG,EAAK,IAAI,KAAM/I,CAAI,EACnB+I,EAAK,IAAI,IAAK,KAAKiJ,GAAmB,CAAE,EAAE,EACtCypD,IAAU,QACZ1yD,EAAK,IAAI,IAAK0yD,CAAK,EAErB,MAAM47E,EAAU,KAAK,WAAWllI,CAAQ,EACpCklI,GACFtuI,EAAK,IAAI,KAAMsuI,CAAO,EAExBhmC,EAAQ,IAAI,KAAK,IAAK,CACpB,KAAMtoG,EACN,IAAAquI,EACA,gBAAiB,EACvB,CAAK,CACH,CACA,MAAM,iBAAiBvuC,EAAW/O,EAAMhoF,EAAmBu/F,EAAS,CAClE,GAAI,CAACv/F,EACH,OAEF,MAAM4tH,EAAe5tH,EAAkB,IAAI,KAAK,KAAK,EAAE,EACjD2pD,EAAQ,KAAK,YAAYikE,GAAc,OAAQA,GAAc,OAAO,EAC1E,IAAIvtH,EAAWutH,GAAc,SAC3B9/H,EAAQ8/H,GAAc,MACxB,GAAIvtH,IAAa,QAAaspD,IAAU,SAClC77D,IAAU,QAGO,KAAK,KAAK,aAAe,KAAK,KAAK,cACnCA,GACnB,OAGJ,IAAImJ,EAAO8/F,EAAU,KAAK,WAAW,KAAK,GAAG,EAC7C,GAAI,EAAE9/F,aAAgBf,GACpB,OAEFe,EAAOA,EAAK,MAAK,EACbnJ,IAAU,SACZA,EAAQ,KAAK,KAAK,aAAe,KAAK,KAAK,aAEzCuS,IAAa,SACfA,EAAW,KAAK,UAElB,MAAMilI,EAAM,CACV,KAAM,KAAK,KAAK,UAChB,MAAOx3I,EAAQ,KAAK,KAAK,YAAc,EAC7C,EACUI,EAAO6H,EAAK,IAAIjI,EAAQ,KAAK,aAAe,KAAK,EACnDA,GACF,KAAK,SAASmJ,EAAM/I,EAAM6oG,EAAU,KAAMwI,CAAO,EAEnDtoG,EAAK,IAAI,KAAM/I,CAAI,EACnB+I,EAAK,IAAI,IAAK,KAAKiJ,GAAmB,CAAE,EAAE,EACtCypD,IAAU,QACZ1yD,EAAK,IAAI,IAAK0yD,CAAK,EAErB,MAAM47E,EAAU,KAAK,WAAWllI,CAAQ,EACpCklI,GACFtuI,EAAK,IAAI,KAAMsuI,CAAO,EAExBhmC,EAAQ,IAAI,KAAK,IAAK,CACpB,KAAMtoG,EACN,IAAAquI,EACA,gBAAiB,EACvB,CAAK,CACH,CACA,6BAA6B10H,EAAQvY,EAAM,CACzC,KAAM,CACJ,MAAAM,EACA,OAAAC,CACN,EAAQ,KACEqtB,EAAO,CAAC,EAAG,EAAGttB,EAAOC,CAAM,EAE3By0F,EAAW,KAAK,IAAI10F,EAAOC,CAAM,EADpB,GAEnB,IAAIsoE,EAAS7nE,EACThB,IAAS,SACX6oE,EAAU,CACR,MAAO,KAAQmsB,EACf,OAAQ,KAAQA,CACxB,EACMh0F,EAAO,KACEhB,IAAS,QAClB6oE,EAAU,CACR,MAAO,KAAQmsB,EACf,OAAQ,KAAQA,CACxB,EACMh0F,EAAO,KAEPtM,GAAY,oDAAoDsL,CAAI,EAAE,EAExE,MAAMmxI,EAAS3pI,IAAgBlH,EAAQuoE,EAAQ,OAAS,CAAC,EACnDuoE,EAAS5pI,IAAgBjH,EAASsoE,EAAQ,QAAU,CAAC,EACrD64B,EAAa,mBAAmB1M,CAAQ,WAAWm8C,CAAM,IAAIC,CAAM,QAAQpwI,CAAI,YAC/E2gG,EAAuB,IAAI9jG,EAAK0a,EAAO,IAAI,EACjDopF,EAAqB,IAAI,WAAY,CAAC,EACtCA,EAAqB,UAAU,UAAW,MAAM,EAChDA,EAAqB,UAAU,OAAQ,SAAS,EAChDA,EAAqB,IAAI,OAAQ/zE,CAAI,EACrC+zE,EAAqB,IAAI,SAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EACrDA,EAAqB,IAAI,SAAUD,EAAW,MAAM,EACpD,MAAMljF,EAAY,IAAI3gB,EAAK0a,EAAO,IAAI,EAChC68C,EAAO,IAAIv3D,EAAK0a,EAAO,IAAI,EACjC68C,EAAK,IAAI,YAAa,KAAK,gBAAgB,EAC3C52C,EAAU,IAAI,OAAQ42C,CAAI,EAC1BusC,EAAqB,IAAI,YAAanjF,CAAS,EAC/C,KAAK,kBAAoB,IAAIvI,GAAayrF,EAAYC,CAAoB,EAC1E,KAAK,SAAS,KAAK,KAAK,iBAAiB,CAC3C,CACA,gBAAgB/iG,EAAM,CACpB,MAAMmrI,EAAmBnrI,EAAK,IAAI,IAAI,EACtC,GAAI,EAAEmrI,aAA4BlsI,GAChC,OAAO,KAET,MAAMwzI,EAAmBtH,EAAiB,IAAI,GAAG,EACjD,GAAI,EAAEsH,aAA4BxzI,GAChC,OAAO,KAET,UAAWS,KAAO+yI,EAAiB,UACjC,GAAI/yI,IAAQ,MACV,OAAOA,EAGX,OAAO,IACT,CACA,2BAA2BspB,EAAO0pH,EAAKvzI,EAAM,CAC3C,GAAI,OAAO,UAAU6pB,CAAK,GAAKA,GAAS,GAAKA,EAAQ0pH,EAAI,OAAQ,CAC/D,MAAM77I,EAAQ,KAAK,iBAAiBsI,EAAK,WAAWuzI,EAAI1pH,CAAK,CAAC,CAAC,EAC/D,GAAI,OAAOnyB,GAAU,SACnB,OAAOA,CAEX,CACA,OAAO,IACT,CACA,YAAYmJ,EAAM2yI,EAASD,EAAKvzI,EAAM,CACpC,GAAI,CAAC,MAAM,QAAQuzI,CAAG,EACpB,OAAO,KAET,MAAME,EAAe,IAAI,IACzB,IAAIjiC,EAAe,KACnB,MAAMkiC,EAAc7yI,EAAK,IAAI,QAAQ,EAC/BqjG,EAAOwvC,aAAuB5zI,EAAO4zI,EAAY,IAAI,MAAM,EAAI,KACrE,GAAI,MAAM,QAAQxvC,CAAI,EACpB,QAASprG,EAAI,EAAGmF,EAAK,KAAK,IAAIimG,EAAK,OAAQqvC,EAAI,MAAM,EAAGz6I,EAAImF,EAAInF,IAAK,CACnE,MAAMqrG,EAAMD,EAAKprG,CAAC,EACdqrG,aAAe7jG,GAAO4B,GAAYiiG,EAAK,KAAK,GAAG,IACjDqN,EAAe14G,GAEjB,MAAM66I,EAAU3zI,EAAK,WAAWmkG,CAAG,EACnC,GAAI,EAAEwvC,aAAmB7zI,GACvB,SAEE6zI,IAAY9yI,IACd2wG,EAAe14G,GAEjB,MAAM86I,EAAa,KAAK,gBAAgBD,CAAO,EAC3C,OAAOC,GAAe,UAAY,CAACH,EAAa,IAAIG,CAAU,GAChEH,EAAa,IAAIG,EAAY96I,CAAC,CAElC,MACSy6I,EAAI,SAAW,GAAK,OAAOC,GAAY,WAChDhiC,EAAe,EACfiiC,EAAa,IAAID,EAAS,CAAC,GAE7B,MAAO,CACL,aAAAhiC,EACA,IAAA+hC,EACA,aAAAE,CACN,CACE,CACA,gBAAgBvnH,EAAO2nH,EAAS7zI,EAAM,CACpC,GAAI,CAAC6zI,GAAW,OAAO3nH,GAAU,UAAYA,IAAU,MACrD,OAAOA,EAET,GAAIA,IAAU,KAAK,aAAc,CAC/B,MAAMqjH,EAAc,KAAK,2BAA2BsE,EAAQ,aAAcA,EAAQ,IAAK7zI,CAAI,EAC3F,GAAIuvI,IAAgB,KAClB,OAAOA,CAEX,CACA,GAAIsE,EAAQ,aAAa,IAAI3nH,CAAK,EAAG,CACnC,MAAMqjH,EAAc,KAAK,2BAA2BsE,EAAQ,aAAa,IAAI3nH,CAAK,EAAG2nH,EAAQ,IAAK7zI,CAAI,EACtG,GAAIuvI,IAAgB,KAClB,OAAOA,CAEX,CACA,MAAM1lH,EAAQ,SAASqC,EAAO,EAAE,EAChC,OAAI,OAAO,UAAUrC,CAAK,GAAK,OAAOA,CAAK,IAAMqC,GACxC,KAAK,2BAA2BrC,EAAOgqH,EAAQ,IAAK7zI,CAAI,GAAKksB,CAGxE,CACA,iBAAiB1R,EAAQ,CACvB,MAAMs5H,EAAmBt5H,EAAO,KAAK,IAAI,IAAI,EAC7C,IAAI84H,EAAmBQ,aAA4Bh0I,EAAOg0I,EAAiB,IAAI,GAAG,EAAI,KAChFR,aAA4BxzI,IAChCwzI,EAAmB,MAErB,MAAMS,EAAU,KAAK,iBAAiBv5H,EAAO,KAAK,IAAI,IAAI,CAAC,EACvD,OAAOu5H,GAAY,WACrB,KAAK,KAAK,WAAaA,GAEzB,MAAMC,EAAM,KAAK,KAAK,aAAe,MAAQ,KAAK,KAAK,aAAe,MAAQ,KAAK,KAAK,WAAa,MAC/FC,EAAeX,EAAmB,CAAC,GAAGA,EAAiB,QAAO,CAAE,EAAI,CAAA,EAC1E,GAAIW,EAAa,SAAW,EAC1BA,EAAa,KAAK,MAAOD,CAAG,UACnBC,EAAa,SAAW,EAC7BA,EAAa,CAAC,IAAM,MACtBA,EAAa,KAAKD,CAAG,EAErBC,EAAa,QAAQ,KAAK,UAEnBA,EAAa,SAASD,CAAG,EAClCC,EAAa,OAAS,EACtBA,EAAa,KAAK,MAAOD,CAAG,MACvB,CACL,MAAME,EAAWD,EAAa,KAAKnyI,GAAKA,IAAM,KAAK,EACnDmyI,EAAa,OAAS,EACtBA,EAAa,KAAK,MAAOC,CAAQ,CACnC,CACA,MAAMV,EAAUS,EAAa,CAAC,EAC9B,KAAK,aAAeT,EACpB,MAAMD,EAAM/tI,GAAuB,CACjC,KAAMgV,EAAO,KACb,IAAK,KACX,CAAK,EACKq5H,EAAU,KAAK,YAAYr5H,EAAO,KAAMg5H,EAASD,EAAK/4H,EAAO,IAAI,EACvE,KAAK,KAAK,YAAc,KAAK,gBAAgBg5H,EAASK,EAASr5H,EAAO,IAAI,EACtE,CAACy5H,EAAa,SAAS,KAAK,KAAK,UAAU,GAAK,KAAK,KAAK,aAAe,KAAK,KAAK,cACrF,KAAK,KAAK,WAAa,OAEzB,KAAK,KAAK,WAAa,KAAK,gBAAgB,KAAK,KAAK,WAAYJ,EAASr5H,EAAO,IAAI,EACtF,KAAK,KAAK,kBAAoB,KAAK,gBAAgB,KAAK,KAAK,kBAAmBq5H,EAASr5H,EAAO,IAAI,EACpG,MAAM25H,EAAoBb,GAAkB,IAAIE,CAAO,EACvD,KAAK,kBAAoBW,aAA6B9xI,GAAa8xI,EAAoB,KACvF,MAAMC,EAAsBd,GAAkB,IAAI,KAAK,EACvD,KAAK,oBAAsBc,aAA+B/xI,GAAa+xI,EAAsB,KACzF,KAAK,kBACP,KAAK,SAAS,KAAK,KAAK,iBAAiB,EAEzC,KAAK,6BAA6B55H,EAAQ,OAAO,EAE/C,KAAK,qBACP,KAAK,SAAS,KAAK,KAAK,mBAAmB,EAE7C,KAAK,kBAAoB,KAAK,iBAC1B,KAAK,KAAK,oBAAsB,OAClC,KAAK,KAAK,kBAAoB,MAElC,CACA,oBAAoBA,EAAQ,CAC1B,KAAK,KAAK,YAAc,KACxB,MAAMk5H,EAAcl5H,EAAO,KAAK,IAAI,QAAQ,EAC5C,GAAIk5H,aAAuB5zI,EAAM,CAC/B,KAAK,OAAS0a,EAAO,KAAK,OAAO,QAAQ,EACzC,MAAM65H,EAAmBX,EAAY,IAAI,GAAG,EACxCW,aAA4B10I,IAC9B,KAAK,KAAK,WAAa,KAAK,iBAAiB00I,CAAgB,EAEjE,CACA,MAAMrI,EAAmBxxH,EAAO,KAAK,IAAI,IAAI,EAC7C,GAAI,EAAEwxH,aAA4BlsI,GAChC,OAEF,MAAMwzI,EAAmBtH,EAAiB,IAAI,GAAG,EACjD,GAAI,EAAEsH,aAA4BxzI,GAChC,OAEF,IAAI0zI,EAAU,KACd,UAAWjzI,KAAO+yI,EAAiB,UACjC,GAAI/yI,IAAQ,MAAO,CACjBizI,EAAUjzI,EACV,KACF,CAEF,KAAK,aAAeizI,EACpB,MAAMD,EAAM/tI,GAAuB,CACjC,KAAMgV,EAAO,KACb,IAAK,KACX,CAAK,EACKq5H,EAAU,KAAK,YAAYr5H,EAAO,KAAMg5H,EAASD,EAAK/4H,EAAO,IAAI,EACvE,KAAK,KAAK,YAAc,KAAK,gBAAgBg5H,EAASK,EAASr5H,EAAO,IAAI,EAC1E,KAAK,KAAK,WAAa,KAAK,gBAAgB,KAAK,KAAK,WAAYq5H,EAASr5H,EAAO,IAAI,EACtF,KAAK,KAAK,kBAAoB,KAAK,gBAAgB,KAAK,KAAK,kBAAmBq5H,EAASr5H,EAAO,IAAI,EACpG,MAAM25H,EAAoBb,EAAiB,IAAIE,CAAO,EACtD,KAAK,kBAAoBW,aAA6B9xI,GAAa8xI,EAAoB,KACvF,MAAMC,EAAsBd,EAAiB,IAAI,KAAK,EACtD,KAAK,oBAAsBc,aAA+B/xI,GAAa+xI,EAAsB,KACzF,KAAK,kBACP,KAAK,SAAS,KAAK,KAAK,iBAAiB,EAEzC,KAAK,6BAA6B55H,EAAQ,MAAM,EAE9C,KAAK,qBACP,KAAK,SAAS,KAAK,KAAK,mBAAmB,EAE7C,KAAK,kBAAoB,KAAK,iBAC1B,KAAK,KAAK,oBAAsB,OAClC,KAAK,KAAK,kBAAoB,MAElC,CACA,mBAAmBA,EAAQ,CACzB,KAAM,CACJ,KAAA3Z,EACA,kBAAA2mI,CACN,EAAQhtH,EACJ,GAAI,CAAC3Z,EAAK,IAAI,GAAG,GAAK,CAACA,EAAK,IAAI,IAAI,GAAK,CAAC,KAAK,KAAK,gBAAiB,CACnEnK,EAAK,4DAA4D,EACjE,MACF,CACA,KAAK,KAAK,cAAgB,CAACmK,EAAK,IAAI,GAAG,GAAK,CAACA,EAAK,IAAI,IAAI,EAC1D+sG,GAAQ,oBAAoB,CAC1B,SAAU/sG,EACV,UAAW,KAAK,KAChB,WAAY2mI,EAAkB,QAC9B,eAAgBA,EAAkB,WACxC,CAAK,CACH,CACA,gBAAiB,CACf,IAAIvlI,EAAO,SACPgyI,EACJ,OAAI,KAAK,KAAK,UACZhyI,EAAO,WACPgyI,EAAe,KAAK,KAAK,aAChB,KAAK,KAAK,cACnBhyI,EAAO,cACPgyI,EAAe,KAAK,KAAK,aAEpB,CACL,GAAI,KAAK,KAAK,GACd,MAAO,KAAK,KAAK,YAAc,MAC/B,aAAc,KAAK,KAAK,kBACxB,aAAAA,EACA,SAAU,CAAC,KAAK,KAAK,SACrB,KAAM,KAAK,KAAK,UAChB,KAAM,KAAK,KAAK,KAChB,OAAQ,KAAK,KAAK,OAClB,QAAS,KAAK,KAAK,QACnB,KAAM,KAAK,KAAK,UAChB,YAAa,KAAK,KAAK,YACvB,UAAW,KAAK,KAAK,gBACrB,SAAU,KAAK,SACf,KAAAhyI,CACN,CACE,CACA,IAAI,kBAAmB,CACrB,MAAMpB,EAAO,IAAIf,EACjB,OAAAe,EAAK,UAAU,WAAY,cAAc,EACzCA,EAAK,UAAU,OAAQ,cAAc,EACrCA,EAAK,UAAU,UAAW,cAAc,EACxCA,EAAK,UAAU,WAAY,sBAAsB,EAC1CtJ,GAAO,KAAM,mBAAoBsJ,CAAI,CAC9C,CACF,CACA,MAAMqnI,WAA+BE,EAAiB,CACpD,YAAY5tH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,CACN,EAAQwa,EACJ,KAAK,QAAU3Z,EAAK,SAAS,GAAG,EAChC,KAAK,WAAa,MAAM,QAAQ,KAAK,OAAO,GAAK,KAAK,QAAQ,OAAS,EACvE,KAAK,KAAK,QAAU,CAAA,EACpB,MAAM3J,EAAUsO,GAAuB,CACrC,KAAA3E,EACA,IAAK,KACX,CAAK,EACD,GAAI,MAAM,QAAQ3J,CAAO,EACvB,QAAS,EAAI,EAAG+G,EAAK/G,EAAQ,OAAQ,EAAI+G,EAAI,IAAK,CAChD,MAAMqvH,EAASttH,EAAK,WAAW9I,EAAQ,CAAC,CAAC,EACnCo9I,EAAgB,MAAM,QAAQhnB,CAAM,EAC1C,KAAK,KAAK,QAAQ,CAAC,EAAI,CACrB,YAAa,KAAK,iBAAiBgnB,EAAgBt0I,EAAK,WAAWstH,EAAO,CAAC,CAAC,EAAIA,CAAM,EACtF,aAAc,KAAK,iBAAiBgnB,EAAgBt0I,EAAK,WAAWstH,EAAO,CAAC,CAAC,EAAIA,CAAM,CACjG,CACM,CAEF,GAAI,CAAC,KAAK,WACJ,OAAO,KAAK,KAAK,YAAe,SAClC,KAAK,KAAK,WAAa,CAAC,KAAK,KAAK,UAAU,EAE5C,KAAK,KAAK,aAAe,CAAA,MAEtB,CACL,KAAK,KAAK,WAAa,CAAA,EACvB,MAAMrvH,EAAK,KAAK,KAAK,QAAQ,OAC7B,UAAWnF,KAAK,KAAK,QACf,OAAO,UAAUA,CAAC,GAAKA,GAAK,GAAKA,EAAImF,GACvC,KAAK,KAAK,WAAW,KAAK,KAAK,KAAK,QAAQnF,CAAC,EAAE,WAAW,CAGhE,CACI,KAAK,KAAK,QAAQ,SAAW,GAAK,KAAK,KAAK,WAAW,OAAS,IAClE,KAAK,KAAK,QAAU,KAAK,KAAK,WAAW,IAAIpB,IAAU,CACrD,YAAaA,EACb,aAAcA,CACtB,EAAQ,GAEJ,KAAK,KAAK,MAAQ,KAAK,aAAa/B,GAAoB,KAAK,EAC7D,KAAK,KAAK,YAAc,KAAK,aAAaA,GAAoB,WAAW,EACzE,KAAK,SAAW,EAClB,CACA,gBAAiB,CACf,MAAMsM,EAAO,KAAK,KAAK,MAAQ,WAAa,UACtCvK,EAAQ,KAAK,KAAK,WAAW,OAAS,EAAI,KAAK,KAAK,WAAW,CAAC,EAAI,KAC1E,MAAO,CACL,GAAI,KAAK,KAAK,GACd,MAAAA,EACA,aAAc,KAAK,KAAK,kBACxB,SAAU,CAAC,KAAK,KAAK,SACrB,KAAM,KAAK,KAAK,UAChB,KAAM,KAAK,KAAK,KAChB,SAAU,KAAK,KAAK,WAAW,OAC/B,kBAAmB,KAAK,KAAK,YAC7B,OAAQ,KAAK,KAAK,OAClB,QAAS,KAAK,KAAK,QACnB,MAAO,KAAK,KAAK,QACjB,KAAM,KAAK,KAAK,UAChB,YAAa,KAAK,KAAK,YACvB,UAAW,KAAK,KAAK,gBACrB,SAAU,KAAK,SACf,KAAAuK,CACN,CACE,CACA,eAAe2H,EAAmB/I,EAAM,CACtC,GAAI,CAAC,KAAK,WACR,OAEF,IAAIE,EAAS6I,GAAmB,IAAI,KAAK,KAAK,EAAE,GAAG,MAC9C,MAAM,QAAQ7I,CAAM,IACvBA,EAAS,CAACA,CAAM,GAElB,MAAMwzI,EAAU,CAAA,EACV,CACJ,QAAAr9I,CACN,EAAQ,KAAK,KACT,QAAS4B,EAAI,EAAGoS,EAAI,EAAGjN,EAAK/G,EAAQ,OAAQ4B,EAAImF,EAAInF,IAC9C5B,EAAQ4B,CAAC,EAAE,cAAgBiI,EAAOmK,CAAC,IACrCqpI,EAAQ,KAAKz7I,CAAC,EACdoS,GAAK,GAGTrK,EAAK,IAAI,IAAK0zI,CAAO,CACvB,CACA,MAAM,eAAe5zC,EAAW/O,EAAMnlF,EAAQ7C,EAAmB,CAC/D,GAAI,KAAK,KAAK,MACZ,OAAO,MAAM,eAAe+2F,EAAW/O,EAAMnlF,EAAQ7C,CAAiB,EAExE,IAAI+iH,EAAe1iH,EACnB,MAAMutH,EAAe5tH,GAAmB,IAAI,KAAK,KAAK,EAAE,EAKxD,GAJI4tH,IACFvtH,EAAWutH,EAAa,SACxB7K,EAAgB6K,EAAa,OAE3BvtH,IAAa,QAAa0iH,IAAkB,QAAa,CAAC,KAAK,iBACjE,OAAO,KAELA,IAAkB,OACpBA,EAAgB,KAAK,KAAK,WAChB,MAAM,QAAQA,CAAa,IACrCA,EAAgB,CAACA,CAAa,GAEhC,MAAM8iB,EAAiB,EACjBC,EAAkB,EACxB,GAAI,CACF,MAAOC,EACP,OAAQC,CACd,EAAQ,MACA3lI,IAAa,IAAMA,IAAa,OAClC,CAAC0lI,EAAYC,CAAW,EAAI,CAACA,EAAaD,CAAU,GAEtD,MAAMH,EAAY,KAAK,KAAK,QAAQ,OAC9BgF,EAAe,CAAA,EACrB,QAAS17I,EAAI,EAAGA,EAAI02I,EAAW12I,IAAK,CAClC,KAAM,CACJ,YAAAy2I,CACR,EAAU,KAAK,KAAK,QAAQz2I,CAAC,EACnB6zH,EAAc,SAAS4iB,CAAW,GACpCiF,EAAa,KAAK17I,CAAC,CAEvB,CACK,KAAK,qBACR,KAAK,KAAK,sBAAwBgpG,GAAuB,KAAK,mBAAqB,qBAAqB,GAE1G,MAAMzqC,EAAO,MAAM+wE,GAAiB,aAAaznC,EAAW/O,EAAM,KAAK,KAAK,sBAAuB,KAAK,gBAAgB,eAAe,EACvI,IAAI45C,EACA,CACF,SAAAv0C,CACN,EAAQ,KAAK,KAAK,sBACd,GAAKA,EAeHu0C,EAAoB,KAAK,uBAfZ,CACb,MAAMzoC,GAAc6sC,EAAcH,GAAkBD,EACpD,IAAInsC,EAAY,GACZ3rG,EACJ,SAAW,CACT,aAAA+8I,CACR,IAAW,KAAK,KAAK,QAAS,CACtB,MAAMlyI,EAAQ,KAAK,cAAckyI,EAAcp9E,CAAI,EAC/C90D,EAAQ8gG,IACVA,EAAY9gG,EACZ7K,EAAQ+8I,EAEZ,CACA,CAACjJ,EAAmBv0C,CAAQ,EAAI,KAAK,iBAAiB8L,EAAY4sC,EAAa,EAAID,EAAiBh4I,EAAO2/D,EAAM,EAAE,CACrH,CAGA,MAAM0rC,EAAa9L,EAA6C,KAC1Di6C,GAAYnuC,EAAa9L,GAAY,EACrCy9C,EAAuB,KAAK,MAAM9E,EAAc7sC,CAAU,EAChE,IAAI4xC,EAAa,EACjB,GAAIH,EAAa,OAAS,EAAG,CAC3B,MAAMI,EAAW,KAAK,IAAI,GAAGJ,CAAY,EACnCK,EAAW,KAAK,IAAI,GAAGL,CAAY,EACzCG,EAAa/mI,GAAUinI,EAAWH,EAAuB,EAAG,EAAGE,CAAQ,CACzE,CACA,MAAMjyI,EAAM,KAAK,IAAIgyI,EAAaD,EAAuB,EAAGlF,CAAS,EAC/DhsI,EAAM,CAAC,YAAa,OAAOmsI,CAAU,IAAIC,CAAW,SAAS,EACnE,GAAI4E,EAAa,OAAQ,CACvBhxI,EAAI,KAAK,+BAA+B,EACxC,UAAWqmB,KAAS2qH,EACdG,GAAc9qH,GAASA,EAAQlnB,GACjCa,EAAI,KAAK,KAAKosI,GAAe/lH,EAAQ8qH,EAAa,GAAK5xC,CAAU,IAAI4sC,CAAU,IAAI5sC,CAAU,OAAO,CAG1G,CACAv/F,EAAI,KAAK,KAAMgoI,EAAmB,aAAaoE,CAAW,KAAK,EAC/D,MAAMY,EAAW,CACf,MAAO,CACb,EACI,QAAS13I,EAAI67I,EAAY77I,EAAI6J,EAAK7J,IAAK,CACrC,KAAM,CACJ,aAAA27I,CACR,EAAU,KAAK,KAAK,QAAQ37I,CAAC,EACjBg8I,EAAWh8I,IAAM67I,EAAazD,EAAW,EAC/C1tI,EAAI,KAAK,KAAK,YAAYixI,EAAcp9E,EAAM4/B,EAAU04C,EAAY,EAAGa,EAAUd,EAAiB,CAAC3sC,EAAa+xC,CAAQ,CAAC,CAC3H,CACA,OAAAtxI,EAAI,KAAK,UAAU,EACZA,EAAI,KAAK;AAAA,CAAI,CACtB,CACF,CACA,MAAM2kI,WAAkCC,EAAiB,CACvD,iBAAmB,GACnB,YAAY5tH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAK,KAAK,WAAa,KACvB,KAAK,KAAK,aAAe,KAAK,KAAK,SACnC,KAAK,KAAK,OAAS,CAAC,KAAK,KAAK,YAChC,CACA,gBAAiB,CACf,MAAO,CACL,GAAI,KAAK,KAAK,GACd,MAAO,KACP,KAAM,KAAK,KAAK,UAChB,KAAM,WACZ,CACE,CACF,CACA,MAAMstH,WAAuBkF,EAAiB,CAC5C,YAAYxyH,EAAQ,CAElB,MAAMA,CAAM,EACZ,KAAK,KAAK,SAAW,GACrB,KAAK,KAAK,aAAe,KAAK,KAAK,SACnC,KAAK,KAAK,OAAS,GACnB,KAAM,CACJ,KAAA3Z,CACN,EAAQ2Z,EACA,KAAK,KAAK,cACZ,KAAK,KAAK,KAAO,UAEjB,KAAK,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,KAAK,CAAC,EAAI,GACxC,KAAK,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,KAAK,CAAC,EAAI,GACxC,KAAK,KAAK,KAAO3Z,EAAK,IAAI,MAAM,EAAIA,EAAK,IAAI,MAAM,EAAE,KAAO,QAE1DA,EAAK,IAAI,OAAO,GAClB,KAAK,KAAK,MAAQA,EAAK,IAAI,OAAO,GAAK,KACvC,KAAK,KAAK,WAAaA,EAAK,IAAI,YAAY,GAAK,OAEjD,KAAK,KAAK,MAAQ,KAClB,KAAK,KAAK,WAAa,KAE3B,CACF,CACA,MAAMgnI,WAAuB0B,EAAW,CACtC,YAAY/uH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,kBAAA2mI,CACN,EAAQhtH,EACJ,KAAK,KAAK,OAAS,GACnB,MAAM6vH,EAAaD,GAAcvpI,EAAM,KAAK,SAAS,EACjDwpI,IACF,KAAK,KAAK,WAAaA,GAEzB,KAAK,KAAK,cAAgB,KAAK,KAAK,MACpCz8B,GAAQ,oBAAoB,CAC1B,SAAU/sG,EACV,UAAW,KAAK,KAChB,WAAY2mI,EAAkB,QAC9B,eAAgBA,EAAkB,WACxC,CAAK,CACH,CACA,IAAI,qBAAsB,CACxB,MAAO,EACT,CACF,CACA,MAAMa,WAAwBkB,EAAW,CACvC,YAAY/uH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,CACN,EAAQ2Z,EACJ,KAAK,KAAK,OAAS,IACf,KAAK,QAAU,GAAK,KAAK,SAAW,KACtC,KAAK,KAAK,KAAO,MAEnB,IAAIu6H,EAAal0I,EAAK,IAAI,QAAQ,EAClC,GAAI,CAACk0I,EAAY,CACfr+I,EAAK,8DAA8D,EACnE,MACF,CACA,KAAK,KAAK,WAAaqQ,GAAiBguI,EAAW,SAAS,MAAM,EAAG,IAAI,EACzE,KAAK,KAAK,aAAeA,EAAW,IAAI,cAAc,GAAK,GAC3D,MAAM7H,EAAK6H,EAAW,IAAI,IAAI,EAgB9B,GAfIlzI,GAAOqrI,EAAI13I,GAAoB,KAAK,IACtCu/I,EAAaA,EAAW,IAAI,KAAK,GAE9BA,EAAW,IAAI,GAAG,GAGrB,KAAK,oBAAoBA,EAAW,IAAI,GAAG,CAAC,EAC5C,KAAK,KAAK,iBAAmB,KAAK,kBAHlC,KAAK,KAAK,iBAAmB,KAK1BA,EAAW,IAAI,GAAG,GAGrB,KAAK,SAASA,EAAW,SAAS,GAAG,CAAC,EACtC,KAAK,KAAK,MAAQ,KAAK,OAHvB,KAAK,KAAK,MAAQ,KAKhB,CAAC,KAAK,SAAU,CAClB,MAAMC,EAAcD,EAAW,IAAI,GAAG,EAClC,KAAK,YAAYC,CAAW,GAC9B,KAAK,SAASA,CAAW,CAE7B,CACA,KAAK,SAASD,EAAW,IAAI,GAAG,CAAC,EACjC,KAAK,KAAK,SAAW,KAAK,OAC1B,KAAK,YAAYA,EAAW,IAAI,UAAU,CAAC,EAC3C,KAAK,KAAK,YAAc,KAAK,UACzBA,EAAW,IAAI,IAAI,IACrB,KAAK,KAAK,SAAWjO,GAAW,kBAAkBiO,EAAW,IAAI,IAAI,CAAC,GAExE,KAAK,KAAK,KAAO,CAAC,CAACl0I,EAAK,IAAI,MAAM,CACpC,CACA,OAAO,cAAckpI,EAAY/pI,EAAMixC,EAAS,CAC9C,KAAM,CACJ,cAAAgkG,EACA,KAAAp6I,EACA,OAAA0G,CACN,EAAQwoI,EACEqE,EAAQ6G,GAAiB,IAAIn1I,EAAKE,CAAI,EAC5C,OAAAouI,EAAM,eAAe,OAAQzuI,EAAK,IAAI,OAAO,CAAC,EAC9CyuI,EAAM,eAAe,UAAWzuI,EAAK,IAAI,OAAO,CAAC,EACjDyuI,EAAM,eAAe,OAAQ,EAAK,EAClCA,EAAM,WAAW,OAAQvzI,CAAI,EAC7BuzI,EAAM,IAAI,SAAU7sI,CAAM,EACnB6sI,CACT,CACA,aAAa,0BAA0BrE,EAAY/pI,EAAMwa,EAAQ,CAC/D,OAAO,IACT,CACF,CACA,MAAM8tH,WAA2B0E,EAAiB,CAChD,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAK,KAAK,aAAe,KAAK,KAAK,SACnC,KAAK,KAAK,WAAa,CAAC,KAAK,KAAK,OAClC,KAAK,KAAK,OAAS,GACnB,KAAM,CACJ,kBAAAgtH,EACA,KAAAxnI,CACN,EAAQwa,EAGJ,GAFA,KAAK,qBAAqBA,CAAM,EAChC,KAAK,eAAiB,CAAC,CAAC,KAAK,WACzB,KAAK,eAAgB,CACvB,KAAM,CACJ,UAAA+nF,EACA,SAAAtL,CACR,EAAUiL,GAAsB,KAAK,WAAYliG,EAAMwnI,EAAkB,qBAAqB,EACxF,KAAK,KAAK,sBAAsB,UAAYjlC,EAC5C,KAAK,KAAK,sBAAsB,SAAWtL,GAAY,EACzD,KAAO,CACL,KAAK,KAAK,sBAAsB,WAAa,GAC7C,KAAM,CACJ,UAAAsL,EACA,SAAAtL,CACR,EAAU,KAAK,KAAK,sBACd,GAAI,KAAK,UAAU,IAAK,CACtB,KAAK,KAAK,YAAc,KAAK,UAAU,IAAI,MAAM,UAAU,EAAE,IAAI6L,GAAQA,EAAK,QAAO,CAAE,EACvF,KAAM,CACJ,OAAA1vE,EACA,KAAAvD,EACA,OAAA9zB,CACV,EAAYymG,GAAgB,qBAAqB,KAAK,UAAW,KAAK,SAAUvL,CAAQ,EAChF,KAAK,KAAK,aAAe,KAAK,gBAAgB7jE,EAAQvD,EAAM9zB,CAAM,CACpE,CACA,GAAI,KAAK,4BAA6B,CACpC,MAAMmnG,EAAc1oF,EAAO,KAAK,IAAI,IAAI,EAClCw1H,EAAkB,IAAIxtC,GAAgBxiG,EAAM,YAAY,EAC9D,KAAK,WAAagwI,EAAgB,iBAAiB,KAAK,UAAU,IAAK,KAAK,UAAW,KAAK,SAAU/4C,EAAUsL,EAAWW,CAAW,EACtI,KAAK,SAAS,KAAK,KAAK,UAAU,CACpC,MACExsG,EAAK,4FAA4F,CAErG,CACF,CACA,IAAI,gBAAiB,CACnB,OAAO,KAAK,cACd,CACA,OAAO,cAAcqzI,EAAY/pI,EAAM,CACrC,MAAAkuI,EACA,GAAAF,CACJ,EAAK,CACD,KAAM,CACJ,MAAAp6H,EACA,KAAA7J,EACA,SAAAktF,EACA,cAAAg+C,EACA,KAAAp6I,EACA,SAAAoP,EACA,KAAAirI,EACA,MAAAx9I,CACN,EAAQqyI,EACEoL,EAAWF,GAAiB,IAAIn1I,EAAKE,CAAI,EAC/Cm1I,EAAS,eAAe,OAAQx1I,EAAK,IAAI,OAAO,CAAC,EACjDw1I,EAAS,eAAe,UAAWx1I,EAAK,IAAI,UAAU,CAAC,EACvDw1I,EAAS,IAAIF,EAAgB,IAAM,eAAgB,KAAKnrI,GAAoBC,CAAI,CAAC,EAAE,EAC/EkrI,GACFE,EAAS,OAAO,IAAI,EAEtBA,EAAS,WAAW,OAAQt6I,CAAI,EAChC,MAAMu6I,EAAK,SAASn+C,CAAQ,OAAOkL,GAAYvuF,EAAO,EAAI,CAAC,GAO3D,GANAuhI,EAAS,IAAI,KAAMC,CAAE,EACrBD,EAAS,aAAa,WAAY9xI,GAAuB3L,CAAK,CAAC,EAC/Dy9I,EAAS,eAAe,IAAK,CAAC,EAC9BA,EAAS,eAAe,SAAU,CAAC,EAAG,EAAG,CAAC,CAAC,EAC3CA,EAAS,YAAY,SAAUlrI,CAAQ,EACvCkrI,EAAS,aAAa,IAAK9xI,GAAuB6xI,CAAI,CAAC,EACnDhH,GAASF,EAAI,CACf,MAAMprI,EAAI,IAAI9C,EAAKE,CAAI,EACvBm1I,EAAS,IAAI,KAAMvyI,CAAC,EACpBA,EAAE,IAAI,IAAKsrI,GAASF,CAAE,CACxB,CACA,OAAOmH,CACT,CACA,aAAa,0BAA0BpL,EAAY/pI,EAAMwa,EAAQ,CAC/D,KAAM,CACJ,YAAAsvH,EACA,UAAAnpC,EACA,KAAA/O,CACN,EAAQp3E,EACE,CACJ,MAAA5G,EACA,SAAAqjF,EACA,KAAAp8F,EACA,SAAAoP,EACA,MAAAvS,CACN,EAAQqyI,EACJ,GAAI,CAACn2H,EACH,OAAO,KAET,MAAM6M,EAAY,IAAI3gB,EAAKE,CAAI,EACzBq3D,EAAO,IAAIv3D,EAAKE,CAAI,EAC1B,GAAI8pI,EACFzyE,EAAK,IAAI,OAAQyyE,CAAW,MACvB,CACL,MAAMxqC,GAAW,IAAIx/F,EAAKE,CAAI,EAC9Bs/F,GAAS,UAAU,WAAY,WAAW,EAC1CA,GAAS,UAAU,OAAQ,MAAM,EACjCA,GAAS,UAAU,UAAW,OAAO,EACrCA,GAAS,UAAU,WAAY,iBAAiB,EAChDjoC,EAAK,IAAI,OAAQioC,EAAQ,CAC3B,CACA7+E,EAAU,IAAI,OAAQ42C,CAAI,EAC1B,MAAMg+E,EAAO,MAAMjN,GAAiB,aAAaznC,EAAW/O,EAAM,CAChE,SAAU,OACV,SAAAqF,CACN,EAAOx2E,CAAS,EACN,CAAC1jB,EAAIC,EAAIE,EAAIE,CAAE,EAAIvC,EACzB,IAAIm+E,EAAI97E,EAAKH,EACTqhB,EAAIhhB,EAAKJ,EACTiN,EAAW,MAAQ,IACrB,CAAC+uE,EAAG56D,CAAC,EAAI,CAACA,EAAG46D,CAAC,GAEhB,MAAMmqB,EAAQzrG,EAAM,MAAM;AAAA,CAAI,EACxBkZ,EAAQqmF,EAAW,IACzB,IAAI04C,EAAa,KACjB,MAAME,EAAe,CAAA,EACrB,QAAS/sC,MAAQK,EAAO,CACtB,MAAMpsC,GAAUs+E,EAAK,aAAavyC,EAAI,EACtC,GAAI/rC,GAAQ,OAAS,EACnB,OAAO,KAET+rC,GAAO/rC,GAAQ,KAAK,EAAE,EACtB84E,EAAa,KAAK/sC,EAAI,EACtB,IAAIO,EAAY,EAChB,MAAMpqC,EAASo8E,EAAK,cAAcvyC,EAAI,EACtC,UAAW3zC,KAAS8J,EAClBoqC,GAAal0C,EAAM,MAAQv+C,EAE7B++H,EAAa,KAAK,IAAIA,EAAYtsC,CAAS,CAC7C,CACA,MAAMC,EAASqsC,EAAa32D,EAAIA,EAAI22D,EAAa,EACjD,IAAIpsC,EAAS,EACb,MAAMR,EAA+C,KAAQ9L,EACvDq+C,GAAgD,KAAkD,KAASr+C,EAC3G24C,EAAc7sC,EAAaI,EAAM,OACnCysC,EAAcxxH,IAChBmlF,EAASnlF,EAAIwxH,GAEf,MAAMpsC,EAAS,KAAK,IAAIF,EAAQC,CAAM,EAChCE,EAAcxM,EAAWuM,EAC/B,IAAIjqC,GAAYg8E,GAASx5I,EACzB,OAAQkO,EAAQ,CACd,IAAK,GACHlO,EAAS,CAAC,EAAG,EAAG,EAAG,CAAC,EACpBw5I,GAAU,CAAC16I,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGm+E,EAAG56D,CAAC,EACjCm7C,GAAa,CAAC1+D,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAIy6I,CAAU,EAC3C,MACF,IAAK,IACHv5I,EAAS,CAAC,EAAG,EAAG,GAAI,CAAC,EACrBw5I,GAAU,CAAC16I,EAAK,CAAC,EAAG,CAACA,EAAK,CAAC,EAAGm+E,EAAG56D,CAAC,EAClCm7C,GAAa,CAAC1+D,EAAK,CAAC,EAAG,CAACA,EAAK,CAAC,EAAIy6I,CAAU,EAC5C,MACF,IAAK,KACHv5I,EAAS,CAAC,GAAI,EAAG,EAAG,EAAE,EACtBw5I,GAAU,CAAC,CAAC16I,EAAK,CAAC,EAAG,CAACA,EAAK,CAAC,EAAGm+E,EAAG56D,CAAC,EACnCm7C,GAAa,CAAC,CAAC1+D,EAAK,CAAC,EAAG,CAACA,EAAK,CAAC,EAAIy6I,CAAU,EAC7C,MACF,IAAK,KACHv5I,EAAS,CAAC,EAAG,GAAI,EAAG,CAAC,EACrBw5I,GAAU,CAAC,CAAC16I,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGm+E,EAAG56D,CAAC,EAClCm7C,GAAa,CAAC,CAAC1+D,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAIy6I,CAAU,EAC5C,KACR,CACI,MAAMtxI,GAAS,CAAC,IAAK,GAAGjI,EAAO,KAAK,GAAG,CAAC,UAAW,GAAGw5I,GAAQ,KAAK,GAAG,CAAC,UAAW,KAAM,GAAGpzC,GAAYvuF,EAAO,EAAI,CAAC,GAAI,cAAcnK,GAAeg6F,CAAW,CAAC,KAAK,EACrKz/F,GAAO,KAAK,GAAGu1D,GAAW,KAAK,GAAG,CAAC,QAAQlyD,GAAawoI,EAAa,CAAC,CAAC,CAAC,MAAM,EAC9E,MAAMnsC,GAASj6F,GAAes5F,CAAU,EACxC,QAASjqG,GAAI,EAAGmF,GAAK4xI,EAAa,OAAQ/2I,GAAImF,GAAInF,KAAK,CACrD,MAAMgqG,EAAO+sC,EAAa/2I,EAAC,EAC3BkL,GAAO,KAAK,MAAM0/F,EAAM,QAAQr8F,GAAay7F,CAAI,CAAC,MAAM,CAC1D,CACA9+F,GAAO,KAAK,KAAM,GAAG,EACrB,MAAM2/F,GAAa3/F,GAAO,KAAK;AAAA,CAAI,EAC7B4/F,GAAuB,IAAI9jG,EAAKE,CAAI,EAC1C,OAAA4jG,GAAqB,IAAI,WAAY,CAAC,EACtCA,GAAqB,UAAU,UAAW,MAAM,EAChDA,GAAqB,UAAU,OAAQ,SAAS,EAChDA,GAAqB,IAAI,OAAQ/oG,CAAI,EACrC+oG,GAAqB,IAAI,YAAanjF,CAAS,EAC/CmjF,GAAqB,IAAI,SAAU,CAAC,EAAG,EAAG,EAAG,EAAG,CAAC/oG,EAAK,CAAC,EAAG,CAACA,EAAK,CAAC,CAAC,CAAC,EAC5D,IAAIqd,GAAayrF,GAAYC,EAAoB,CAC1D,CACF,CACA,MAAM2kC,WAAuByE,EAAiB,CAC5C,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,CACN,EAAQwa,EACJ,KAAK,KAAK,aAAe,KAAK,KAAK,SACnC,KAAK,KAAK,OAAS,GACnB,MAAMg7H,EAAkB1uI,GAAWjG,EAAK,SAAS,GAAG,EAAG,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAInE,GAHA,KAAK,KAAK,gBAAkBrH,GAAK,cAAcg8I,CAAe,EAC9D,KAAK,eAAe30I,EAAK,SAAS,IAAI,CAAC,EACvC,KAAK,KAAK,YAAc,KAAK,YACzB,CAAC,KAAK,WAAY,CACpB,MAAMwsI,EAAclD,GAAiB,KAAK,MAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EACpDjnC,EAAcriG,EAAK,IAAI,IAAI,EAC3B40I,EAAgBxL,GAAYppI,EAAK,SAAS,IAAI,EAAG,IAAI,EACrDysI,EAAYnD,GAAiBsL,CAAa,EAC1CjI,EAAYF,EAAYpqC,EAAc,KACtC2rC,EAAc,KAAK,YAAY,OAAS,EAC5C6G,EAAe,EAAI7G,EACfh/G,EAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,EAAI6lH,EAAc,KAAK,KAAK,gBAAgB,CAAC,EAAIA,EAAc,KAAK,KAAK,gBAAgB,CAAC,EAAIA,EAAc,KAAK,KAAK,gBAAgB,CAAC,EAAIA,CAAY,EAC3Ll8I,GAAK,UAAU,KAAK,UAAWq2B,CAAI,IACtC,KAAK,UAAYA,GAEnB,KAAK,sBAAsB,CACzB,KAAA7vB,EACA,MAAO,GAAG6uI,CAAW,KACrB,YAAAxB,EACA,UAAAC,EACA,YAAApqC,EACA,UAAAsqC,EACA,eAAgB,CAACxpI,EAAQkhD,KACvBlhD,EAAO,KAAK,GAAGwxI,EAAgB,CAAC,CAAC,IAAIA,EAAgB,CAAC,CAAC,KAAM,GAAGA,EAAgB,CAAC,CAAC,IAAIA,EAAgB,CAAC,CAAC,KAAM,GAAG,EAC1G,CAACtwF,EAAO,CAAC,EAAI2pF,EAAa3pF,EAAO,CAAC,EAAI2pF,EAAa3pF,EAAO,CAAC,EAAI2pF,EAAa3pF,EAAO,CAAC,EAAI2pF,CAAW,EAEpH,CAAO,CACH,CACF,CACF,CACA,MAAMrG,WAAyBwE,EAAiB,CAC9C,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,CACN,EAAQwa,EAGJ,GAFA,KAAK,KAAK,aAAe,KAAK,KAAK,SACnC,KAAK,KAAK,OAAS,GACf,CAAC,KAAK,WAAY,CACpB,MAAM6yH,EAAclD,GAAiB,KAAK,MAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EACpDjnC,EAAcriG,EAAK,IAAI,IAAI,EAC3B40I,EAAgBxL,GAAYppI,EAAK,SAAS,IAAI,EAAG,IAAI,EACrDysI,EAAYnD,GAAiBsL,CAAa,EAC1CjI,EAAYF,EAAYpqC,EAAc,KAC5C,GAAI,KAAK,YAAY,QAAU,GAAK,CAACoqC,EACnC,OAEF,KAAK,sBAAsB,CACzB,KAAAttI,EACA,MAAO,GAAG,KAAK,YAAY,KAAK,KAChC,YAAAqtI,EACA,UAAAC,EACA,YAAApqC,EACA,UAAAsqC,EACA,eAAgB,CAACxpI,EAAQkhD,IAAW,CAClC,MAAMxoD,EAAIwoD,EAAO,CAAC,EAAI,KAAK,YAAY,MAAQ,EACzCvoD,EAAIuoD,EAAO,CAAC,EAAI,KAAK,YAAY,MAAQ,EACzC3iD,EAAQ2iD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAI,KAAK,YAAY,MACjD1iD,EAAS0iD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAI,KAAK,YAAY,MACxD,OAAAlhD,EAAO,KAAK,GAAGtH,CAAC,IAAIC,CAAC,IAAI4F,CAAK,IAAIC,CAAM,KAAK,EACzC8qI,EACFtpI,EAAO,KAAK,GAAG,EAEfA,EAAO,KAAK,GAAG,EAEV,CAACkhD,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,CACpD,CACR,CAAO,CACH,CACF,CACF,CACA,MAAMujF,WAAyBuE,EAAiB,CAC9C,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,CACN,EAAQwa,EACJ,GAAI,CAAC,KAAK,WAAY,CACpB,MAAM6yH,EAAclD,GAAiB,KAAK,MAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EACpDjnC,EAAcriG,EAAK,IAAI,IAAI,EAC3B40I,EAAgBxL,GAAYppI,EAAK,SAAS,IAAI,EAAG,IAAI,EACrDysI,EAAYnD,GAAiBsL,CAAa,EAC1CjI,EAAYF,EAAYpqC,EAAc,KAC5C,GAAI,KAAK,YAAY,QAAU,GAAK,CAACoqC,EACnC,OAEF,MAAMqI,EAAwB,EAAI,EAAI,KAAK,IAAI,KAAK,GAAM,CAAM,EAChE,KAAK,sBAAsB,CACzB,KAAA31I,EACA,MAAO,GAAG,KAAK,YAAY,KAAK,KAChC,YAAAqtI,EACA,UAAAC,EACA,YAAApqC,EACA,UAAAsqC,EACA,eAAgB,CAACxpI,EAAQkhD,IAAW,CAClC,MAAMroD,EAAKqoD,EAAO,CAAC,EAAI,KAAK,YAAY,MAAQ,EAC1CpoD,EAAKooD,EAAO,CAAC,EAAI,KAAK,YAAY,MAAQ,EAC1CnoD,EAAKmoD,EAAO,CAAC,EAAI,KAAK,YAAY,MAAQ,EAC1CloD,EAAKkoD,EAAO,CAAC,EAAI,KAAK,YAAY,MAAQ,EAC1C0wF,EAAO/4I,GAAME,EAAKF,GAAM,EACxBg5I,EAAO/4I,GAAME,EAAKF,GAAM,EACxBg5I,GAAW/4I,EAAKF,GAAM,EAAI84I,EAC1BI,GAAW/4I,EAAKF,GAAM,EAAI64I,EAChC,OAAA3xI,EAAO,KAAK,GAAG4xI,CAAI,IAAI54I,CAAE,KAAM,GAAG44I,EAAOE,CAAO,IAAI94I,CAAE,IAAID,CAAE,IAAI84I,EAAOE,CAAO,IAAIh5I,CAAE,IAAI84I,CAAI,KAAM,GAAG94I,CAAE,IAAI84I,EAAOE,CAAO,IAAIH,EAAOE,CAAO,IAAIh5I,CAAE,IAAI84I,CAAI,IAAI94I,CAAE,KAAM,GAAG84I,EAAOE,CAAO,IAAIh5I,CAAE,IAAID,CAAE,IAAIg5I,EAAOE,CAAO,IAAIl5I,CAAE,IAAIg5I,CAAI,KAAM,GAAGh5I,CAAE,IAAIg5I,EAAOE,CAAO,IAAIH,EAAOE,CAAO,IAAI94I,CAAE,IAAI44I,CAAI,IAAI54I,CAAE,KAAM,GAAG,EAC1SswI,EACFtpI,EAAO,KAAK,GAAG,EAEfA,EAAO,KAAK,GAAG,EAEV,CAACkhD,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,CACpD,CACR,CAAO,CACH,CACF,CACF,CACA,MAAMwjF,WAA2BsE,EAAiB,CAChD,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,CACN,EAAQwa,EACJ,KAAK,KAAK,aAAe,KAAK,KAAK,SACnC,KAAK,KAAK,OAAS,GACnB,KAAK,KAAK,SAAW,KACf,gBAAgBmuH,KACpB,KAAK,eAAe9nI,EAAK,SAAS,IAAI,CAAC,EACvC,KAAK,KAAK,YAAc,KAAK,aAE/B,MAAMm1I,EAAcn1I,EAAK,SAAS,UAAU,EAC5C,GAAI,CAAC8F,GAAcqvI,EAAa,IAAI,EAClC,OAEF,MAAMC,EAAW,KAAK,KAAK,SAAW,aAAa,KAAKD,CAAW,EACnE,GAAI,CAAC,KAAK,WAAY,CACpB,MAAM3I,EAAclD,GAAiB,KAAK,MAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EACpDjnC,EAAcriG,EAAK,IAAI,IAAI,EACjC,IAAIysI,EAAYrD,GAAYppI,EAAK,SAAS,IAAI,EAAG,IAAI,EACrDysI,IAAcnD,GAAiBmD,CAAS,EACxC,IAAIjmD,EACAimD,EACE,KAAK,MACPjmD,EAAWimD,EAAU,MAAM,CAACrxI,EAAGnD,IAAMmD,IAAMoxI,EAAYv0I,CAAC,CAAC,EAAI,IAAM,IAEnEuuF,EAAW,IAGbA,EAAW,IAEb,MAAMwnD,EAAc,KAAK,YAAY,OAAS,EAC5C6G,EAAe,EAAI7G,EACfh/G,EAAOr7B,GAAU,MAAK,EAC5B,QAASsE,EAAI,EAAGmF,EAAKg4I,EAAS,OAAQn9I,EAAImF,EAAInF,GAAK,EACjDU,GAAK,gBAAgBy8I,EAASn9I,CAAC,EAAI48I,EAAcO,EAASn9I,EAAI,CAAC,EAAI48I,EAAcO,EAASn9I,CAAC,EAAI48I,EAAcO,EAASn9I,EAAI,CAAC,EAAI48I,EAAc7lH,CAAI,EAE9Ir2B,GAAK,UAAU,KAAK,UAAWq2B,CAAI,IACtC,KAAK,UAAYA,GAEnB,KAAK,sBAAsB,CACzB,KAAA7vB,EACA,MAAO,GAAG6uI,CAAW,KACrB,YAAAxB,EACA,YAAAnqC,EACA,UAAAoqC,EACA,UAAWA,EAAYpqC,EAAc,KACrC,eAAgB,CAACl/F,EAAQkhD,IAAW,CAClC,QAASpsD,EAAI,EAAGmF,EAAKg4I,EAAS,OAAQn9I,EAAImF,EAAInF,GAAK,EACjDkL,EAAO,KAAK,GAAGiyI,EAASn9I,CAAC,CAAC,IAAIm9I,EAASn9I,EAAI,CAAC,CAAC,IAAIA,IAAM,EAAI,IAAM,GAAG,EAAE,EAExE,OAAAkL,EAAO,KAAKqjF,CAAQ,EACb,CAACniC,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,CACpD,CACR,CAAO,CACH,CACF,CACF,CACA,MAAMyjF,WAA0BD,EAAmB,CAAA,CACnD,MAAME,WAAwBoE,EAAiB,CAAA,CAC/C,MAAMnE,WAAsBmE,EAAiB,CAC3C,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAK,KAAK,aAAe,KAAK,KAAK,SACnC,KAAK,KAAK,OAAS,GACnB,KAAM,CACJ,KAAA3Z,EACA,KAAAb,CACN,EAAQwa,EACJ,KAAK,KAAK,SAAW,CAAA,EACrB,KAAK,KAAK,WAAa,CAAC,KAAK,KAAK,OAClC,KAAK,KAAK,OAAS,GACnB,KAAK,KAAK,QAAU3Z,EAAK,IAAI,IAAI,GAAK,EACtC,MAAMq1I,EAAcr1I,EAAK,SAAS,SAAS,EAC3C,GAAK,MAAM,QAAQq1I,CAAW,EAG9B,WAAWC,KAAcD,EAAa,CACpC,GAAI,CAAC,MAAM,QAAQC,CAAU,EAC3B,SAEF,MAAMC,EAAU,IAAI,aAAaD,EAAW,MAAM,EAClD,KAAK,KAAK,SAAS,KAAKC,CAAO,EAC/B,QAASlrI,EAAI,EAAGyQ,EAAKw6H,EAAW,OAAQjrI,EAAIyQ,EAAIzQ,GAAK,EAAG,CACtD,MAAMxO,EAAIsD,EAAK,WAAWm2I,EAAWjrI,CAAC,CAAC,EACrCvO,EAAIqD,EAAK,WAAWm2I,EAAWjrI,EAAI,CAAC,CAAC,EACnC,OAAOxO,GAAM,UAAY,OAAOC,GAAM,WACxCy5I,EAAQlrI,CAAC,EAAIxO,EACb05I,EAAQlrI,EAAI,CAAC,EAAIvO,EAErB,CACF,CACA,GAAI,CAAC,KAAK,WAAY,CACpB,MAAM0wI,EAAclD,GAAiB,KAAK,MAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EACpDjnC,EAAcriG,EAAK,IAAI,IAAI,EAC3BguI,EAAc,KAAK,YAAY,OAAS,EAC5C6G,EAAe,EAAI7G,EACfh/G,EAAOr7B,GAAU,MAAK,EAC5B,UAAW4hJ,KAAW,KAAK,KAAK,SAC9B,QAASt9I,EAAI,EAAGmF,EAAKm4I,EAAQ,OAAQt9I,EAAImF,EAAInF,GAAK,EAChDU,GAAK,gBAAgB48I,EAAQt9I,CAAC,EAAI48I,EAAcU,EAAQt9I,EAAI,CAAC,EAAI48I,EAAcU,EAAQt9I,CAAC,EAAI48I,EAAcU,EAAQt9I,EAAI,CAAC,EAAI48I,EAAc7lH,CAAI,EAG5Ir2B,GAAK,UAAU,KAAK,UAAWq2B,CAAI,IACtC,KAAK,UAAYA,GAEnB,KAAK,sBAAsB,CACzB,KAAA7vB,EACA,MAAO,GAAG6uI,CAAW,KACrB,YAAAxB,EACA,YAAAnqC,EACA,eAAgB,CAACl/F,EAAQkhD,IAAW,CAClC,UAAWkxF,KAAW,KAAK,KAAK,SAAU,CACxC,QAASt9I,EAAI,EAAGmF,EAAKm4I,EAAQ,OAAQt9I,EAAImF,EAAInF,GAAK,EAChDkL,EAAO,KAAK,GAAGoyI,EAAQt9I,CAAC,CAAC,IAAIs9I,EAAQt9I,EAAI,CAAC,CAAC,IAAIA,IAAM,EAAI,IAAM,GAAG,EAAE,EAEtEkL,EAAO,KAAK,GAAG,CACjB,CACA,MAAO,CAACkhD,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,CACpD,CACR,CAAO,CACH,EACF,CACA,OAAO,cAAc6kF,EAAY/pI,EAAM,CACrC,MAAAkuI,EACA,GAAAF,CACJ,EAAK,CACD,KAAM,CACJ,cAAAiH,EACA,MAAArhI,EACA,KAAA7J,EACA,QAAA+S,EACA,MAAA2pF,EACA,SAAA4vC,EACA,KAAAx7I,EACA,SAAAoP,EACA,UAAA2tF,EACA,KAAAs9C,CACN,EAAQnL,EACEuM,EAAMrB,GAAiB,IAAIn1I,EAAKE,CAAI,EAY1C,GAXAs2I,EAAI,eAAe,OAAQ32I,EAAK,IAAI,OAAO,CAAC,EAC5C22I,EAAI,eAAe,UAAW32I,EAAK,IAAI,KAAK,CAAC,EAC7C22I,EAAI,IAAIrB,EAAgB,IAAM,eAAgB,KAAKnrI,GAAoBC,CAAI,CAAC,EAAE,EAC9EusI,EAAI,WAAW,OAAQz7I,CAAI,EAC3By7I,EAAI,WAAW,UAAWD,GAAU,QAAU5vC,GAAO,MAAM,EAC3D6vC,EAAI,eAAe,IAAK,CAAC,EACzBA,EAAI,YAAY,SAAUrsI,CAAQ,EAClCqsI,EAAI,aAAa,IAAKjzI,GAAuB6xI,CAAI,CAAC,EAC9CmB,GACFC,EAAI,UAAU,KAAM,cAAc,EAEhC1+C,EAAY,EAAG,CACjB,MAAMlhF,EAAK,IAAI5W,EAAKE,CAAI,EACxBs2I,EAAI,IAAI,KAAM5/H,CAAE,EAChBA,EAAG,IAAI,IAAKkhF,CAAS,CACvB,CAGA,GAFA0+C,EAAI,WAAW,IAAKnM,GAAiBv2H,CAAK,CAAC,EAC3C0iI,EAAI,YAAY,KAAMx5H,CAAO,EACzBkxH,GAAME,EAAO,CACf,MAAMtrI,EAAI,IAAI9C,EAAKE,CAAI,EACvBs2I,EAAI,IAAI,KAAM1zI,CAAC,EACfA,EAAE,IAAI,IAAKsrI,GAASF,CAAE,CACxB,CACA,OAAOsI,CACT,CACA,aAAa,0BAA0BvM,EAAY/pI,EAAMwa,EAAQ,CAC/D,GAAIuvH,EAAW,SACb,OAAO,KAAK,sCAAsCA,EAAY/pI,EAAMwa,CAAM,EAE5E,KAAM,CACJ,MAAA5G,EACA,KAAA/Y,EACA,MAAA4rG,EACA,UAAA7O,EACA,QAAA96E,CACN,EAAQitH,EACJ,GAAI,CAACn2H,EACH,OAAO,KAET,MAAM2iI,EAAmB,CAAC,GAAG3+C,CAAS,aAAc,GAAGuK,GAAYvuF,EAAO,EAAK,CAAC,EAAE,EAC9EkJ,IAAY,GACdy5H,EAAiB,KAAK,QAAQ,EAEhC,UAAWC,KAAW/vC,EAAM,MAC1BikC,GAA6B8L,EAASD,EAAkB,EAAI,EAE9DA,EAAiB,KAAK,GAAG,EACzB,MAAM5yC,EAAa4yC,EAAiB,KAAK;AAAA,CAAI,EACvC3yC,EAAuB,IAAI9jG,EAAKE,CAAI,EAM1C,GALA4jG,EAAqB,IAAI,WAAY,CAAC,EACtCA,EAAqB,UAAU,UAAW,MAAM,EAChDA,EAAqB,UAAU,OAAQ,SAAS,EAChDA,EAAqB,IAAI,OAAQ/oG,CAAI,EACrC+oG,EAAqB,IAAI,SAAUD,EAAW,MAAM,EAChD7mF,IAAY,EAAG,CACjB,MAAM2D,EAAY,IAAI3gB,EAAKE,CAAI,EACzB23F,EAAY,IAAI73F,EAAKE,CAAI,EACzBjF,EAAK,IAAI+E,EAAKE,CAAI,EACxBjF,EAAG,IAAI,KAAM+hB,CAAO,EACpB/hB,EAAG,UAAU,OAAQ,WAAW,EAChC48F,EAAU,IAAI,KAAM58F,CAAE,EACtB0lB,EAAU,IAAI,YAAak3E,CAAS,EACpCiM,EAAqB,IAAI,YAAanjF,CAAS,CACjD,CACA,OAAO,IAAIvI,GAAayrF,EAAYC,CAAoB,CAC1D,CACA,aAAa,sCAAsCmmC,EAAY/pI,EAAMwa,EAAQ,CAC3E,KAAM,CACJ,MAAA5G,EACA,KAAA/Y,EACA,SAAU,CACR,QAAA27I,CACR,EACM,QAAA15H,CACN,EAAQitH,EACJ,GAAI,CAACn2H,EACH,OAAO,KAET,MAAM2iI,EAAmB,CAAC,GAAGp0C,GAAYvuF,EAAO,EAAI,CAAC,GAAI,QAAQ,EACjE82H,GAA6B8L,EAASD,CAAgB,EACtDA,EAAiB,KAAK,KAAK,EAC3B,MAAM5yC,EAAa4yC,EAAiB,KAAK;AAAA,CAAI,EACvC3yC,EAAuB,IAAI9jG,EAAKE,CAAI,EAC1C4jG,EAAqB,IAAI,WAAY,CAAC,EACtCA,EAAqB,UAAU,UAAW,MAAM,EAChDA,EAAqB,UAAU,OAAQ,SAAS,EAChDA,EAAqB,IAAI,OAAQ/oG,CAAI,EACrC+oG,EAAqB,IAAI,SAAUD,EAAW,MAAM,EACpD,MAAMljF,EAAY,IAAI3gB,EAAKE,CAAI,EACzB23F,EAAY,IAAI73F,EAAKE,CAAI,EAC/BygB,EAAU,IAAI,YAAak3E,CAAS,EACpCiM,EAAqB,IAAI,YAAanjF,CAAS,EAC/C,MAAM1lB,EAAK,IAAI+E,EAAKE,CAAI,EACxB,OAAA23F,EAAU,IAAI,KAAM58F,CAAE,EACtBA,EAAG,UAAU,KAAM,UAAU,EACzB+hB,IAAY,IACd/hB,EAAG,IAAI,KAAM+hB,CAAO,EACpB/hB,EAAG,UAAU,OAAQ,WAAW,GAE3B,IAAImd,GAAayrF,EAAYC,CAAoB,CAC1D,CACF,CACA,MAAMklC,WAA4BkE,EAAiB,CACjD,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,CACN,EAAQwa,EAKJ,GAJA,KAAK,KAAK,WAAa,CAAC,KAAK,KAAK,OAClC,KAAK,KAAK,OAAS,GACnB,KAAK,KAAK,QAAU3Z,EAAK,IAAI,IAAI,GAAK,EACnB,KAAK,KAAK,WAAaupI,GAAcvpI,EAAM,IAAI,GAEhE,GAAI,CAAC,KAAK,WAAY,CACpB,MAAMysI,EAAYnD,GAAiB,KAAK,MAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EAClDqD,EAAY3sI,EAAK,IAAI,IAAI,EAC/B,KAAK,sBAAsB,CACzB,KAAAb,EACA,UAAAstI,EACA,UAAW,WACX,UAAAE,EACA,eAAgB,CAACxpI,EAAQkhD,KACvBlhD,EAAO,KAAK,GAAGkhD,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,CAAC,KAAM,GAAGA,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,CAAC,KAAM,GAAGA,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,CAAC,KAAM,GAAGA,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,CAAC,KAAM,GAAG,EACpI,CAACA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAE9D,CAAS,CACH,OAEA,KAAK,KAAK,SAAW,IAEzB,CACA,IAAI,qBAAsB,CACxB,MAAO,EACT,CACA,OAAO,cAAc6kF,EAAY/pI,EAAM,CACrC,MAAAkuI,EACA,GAAAF,CACJ,EAAK,CACD,KAAM,CACJ,MAAAp6H,EACA,KAAA7J,EACA,cAAAkrI,EACA,QAAAn4H,EACA,KAAAjiB,EACA,SAAAoP,EACA,KAAAirI,EACA,WAAA7K,CACN,EAAQN,EACE0M,EAAYxB,GAAiB,IAAIn1I,EAAKE,CAAI,EAYhD,GAXAy2I,EAAU,eAAe,OAAQ92I,EAAK,IAAI,OAAO,CAAC,EAClD82I,EAAU,eAAe,UAAW92I,EAAK,IAAI,WAAW,CAAC,EACzD82I,EAAU,IAAIxB,EAAgB,IAAM,eAAgB,KAAKnrI,GAAoBC,CAAI,CAAC,EAAE,EACpF0sI,EAAU,WAAW,OAAQ57I,CAAI,EACjC47I,EAAU,eAAe,IAAK,CAAC,EAC/BA,EAAU,eAAe,SAAU,CAAC,EAAG,EAAG,CAAC,CAAC,EAC5CA,EAAU,YAAY,SAAUxsI,CAAQ,EACxCwsI,EAAU,WAAW,aAAcpM,CAAU,EAC7CoM,EAAU,WAAW,IAAKtM,GAAiBv2H,CAAK,CAAC,EACjD6iI,EAAU,YAAY,KAAM35H,CAAO,EACnC25H,EAAU,aAAa,IAAKpzI,GAAuB6xI,CAAI,CAAC,EACpDhH,GAASF,EAAI,CACf,MAAMprI,EAAI,IAAI9C,EAAKE,CAAI,EACvBy2I,EAAU,IAAI,KAAM7zI,CAAC,EACrBA,EAAE,IAAI,IAAKsrI,GAASF,CAAE,CACxB,CACA,OAAOyI,CACT,CACA,aAAa,0BAA0B1M,EAAY/pI,EAAMwa,EAAQ,CAC/D,KAAM,CACJ,MAAA5G,EACA,KAAA/Y,EACA,SAAAw7I,EACA,QAAAv5H,CACN,EAAQitH,EACJ,GAAI,CAACn2H,EACH,OAAO,KAET,MAAM2iI,EAAmB,CAAC,GAAGp0C,GAAYvuF,EAAO,EAAI,CAAC,GAAI,QAAQ,EAC3D5P,EAAS,CAAA,EACf,UAAWwyI,KAAWH,EAAU,CAC9BryI,EAAO,OAAS,EAChBA,EAAO,KAAK,GAAGyF,GAAe+sI,EAAQ,CAAC,CAAC,CAAC,IAAI/sI,GAAe+sI,EAAQ,CAAC,CAAC,CAAC,IAAI,EAC3E,QAAS19I,EAAI,EAAGmF,EAAKu4I,EAAQ,OAAQ19I,EAAImF,EAAInF,GAAK,EAChDkL,EAAO,KAAK,GAAGyF,GAAe+sI,EAAQ19I,CAAC,CAAC,CAAC,IAAI2Q,GAAe+sI,EAAQ19I,EAAI,CAAC,CAAC,CAAC,IAAI,EAEjFkL,EAAO,KAAK,GAAG,EACfuyI,EAAiB,KAAKvyI,EAAO,KAAK;AAAA,CAAI,CAAC,CACzC,CACAuyI,EAAiB,KAAK,IAAI,EAC1B,MAAM5yC,EAAa4yC,EAAiB,KAAK;AAAA,CAAI,EACvC3yC,EAAuB,IAAI9jG,EAAKE,CAAI,EAC1C4jG,EAAqB,IAAI,WAAY,CAAC,EACtCA,EAAqB,UAAU,UAAW,MAAM,EAChDA,EAAqB,UAAU,OAAQ,SAAS,EAChDA,EAAqB,IAAI,OAAQ/oG,CAAI,EACrC+oG,EAAqB,IAAI,SAAUD,EAAW,MAAM,EACpD,MAAMljF,EAAY,IAAI3gB,EAAKE,CAAI,EACzB23F,EAAY,IAAI73F,EAAKE,CAAI,EAC/BygB,EAAU,IAAI,YAAak3E,CAAS,EACpCiM,EAAqB,IAAI,YAAanjF,CAAS,EAC/C,MAAM1lB,EAAK,IAAI+E,EAAKE,CAAI,EACxB,OAAA23F,EAAU,IAAI,KAAM58F,CAAE,EACtBA,EAAG,UAAU,KAAM,UAAU,EACzB+hB,IAAY,IACd/hB,EAAG,IAAI,KAAM+hB,CAAO,EACpB/hB,EAAG,UAAU,OAAQ,WAAW,GAE3B,IAAImd,GAAayrF,EAAYC,CAAoB,CAC1D,CACF,CACA,MAAMmlC,WAA4BiE,EAAiB,CACjD,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,CACN,EAAQwa,EAEJ,GADmB,KAAK,KAAK,WAAa4vH,GAAcvpI,EAAM,IAAI,GAEhE,GAAI,CAAC,KAAK,WAAY,CACpB,MAAMwsI,EAAclD,GAAiB,KAAK,MAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EACpDjnC,EAAcriG,EAAK,IAAI,IAAI,EACjC,KAAK,sBAAsB,CACzB,KAAAb,EACA,MAAO,iBACP,YAAAqtI,EACA,YAAAnqC,EACA,eAAgB,CAACl/F,EAAQkhD,KACvBlhD,EAAO,KAAK,GAAGkhD,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,EAAI,GAAG,KAAM,GAAGA,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,EAAI,GAAG,KAAM,GAAG,EAClF,CAACA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAE9D,CAAS,CACH,OAEA,KAAK,KAAK,SAAW,IAEzB,CACA,IAAI,qBAAsB,CACxB,MAAO,EACT,CACF,CACA,MAAM8jF,WAA2BgE,EAAiB,CAChD,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,CACN,EAAQwa,EAEJ,GADmB,KAAK,KAAK,WAAa4vH,GAAcvpI,EAAM,IAAI,GAEhE,GAAI,CAAC,KAAK,WAAY,CACpB,MAAMwsI,EAAclD,GAAiB,KAAK,MAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EACpDjnC,EAAcriG,EAAK,IAAI,IAAI,EACjC,KAAK,sBAAsB,CACzB,KAAAb,EACA,MAAO,aACP,YAAAqtI,EACA,YAAAnqC,EACA,eAAgB,CAACl/F,EAAQkhD,IAAW,CAClC,MAAMiY,GAAMjY,EAAO,CAAC,EAAIA,EAAO,CAAC,GAAK,EACrC,IAAIpiB,EAAQq6B,EACRzgE,EAAIwoD,EAAO,CAAC,EAChB,MAAMvoD,EAAIuoD,EAAO,CAAC,EACZwxF,EAAOxxF,EAAO,CAAC,EACrBlhD,EAAO,KAAK,GAAGtH,CAAC,IAAIC,EAAImmC,CAAK,IAAI,EACjC,GACEpmC,GAAK,EACLomC,EAAQA,IAAU,EAAIq6B,EAAK,EAC3Bn5D,EAAO,KAAK,GAAGtH,CAAC,IAAIC,EAAImmC,CAAK,IAAI,QAC1BpmC,EAAIg6I,GACb,OAAA1yI,EAAO,KAAK,GAAG,EACR,CAACkhD,EAAO,CAAC,EAAGvoD,EAAI,EAAIwgE,EAAIu5E,EAAM/5I,EAAI,EAAIwgE,CAAE,CACjD,CACV,CAAS,CACH,OAEA,KAAK,KAAK,SAAW,IAEzB,CACA,IAAI,qBAAsB,CACxB,MAAO,EACT,CACF,CACA,MAAM8rE,WAA4B+D,EAAiB,CACjD,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,CACN,EAAQwa,EAEJ,GADmB,KAAK,KAAK,WAAa4vH,GAAcvpI,EAAM,IAAI,GAEhE,GAAI,CAAC,KAAK,WAAY,CACpB,MAAMwsI,EAAclD,GAAiB,KAAK,MAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EACpDjnC,EAAcriG,EAAK,IAAI,IAAI,EACjC,KAAK,sBAAsB,CACzB,KAAAb,EACA,MAAO,aACP,YAAAqtI,EACA,YAAAnqC,EACA,eAAgB,CAACl/F,EAAQkhD,KACvBlhD,EAAO,KAAK,IAAIkhD,EAAO,CAAC,EAAIA,EAAO,CAAC,GAAK,CAAC,KAAUA,EAAO,CAAC,EAAIA,EAAO,CAAC,GAAK,CAAC,KAAM,IAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,GAAK,CAAC,KAAUA,EAAO,CAAC,EAAIA,EAAO,CAAC,GAAK,CAAC,KAAM,GAAG,EACxJ,CAACA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAE9D,CAAS,CACH,OAEA,KAAK,KAAK,SAAW,IAEzB,CACA,IAAI,qBAAsB,CACxB,MAAO,EACT,CACF,CACA,MAAMgkF,WAAwB8D,EAAiB,CAC7C2J,GAAqB,KACrB,YAAYn8H,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAK,KAAK,aAAe,KAAK,KAAK,SACnC,KAAK,KAAK,WAAa,CAAC,KAAK,KAAK,OAClC,KAAK,KAAK,OAAS,EACrB,CACA,wBAAwB8wH,EAAWC,EAAc,KAAM,CACrD,OAAID,GACG,KAAK,KAAK,aAGf,KAAKqL,KAAuB,KAAK,KAAK,aACtC,KAAK,KAAK,aAAe,IAClB,KAEL,KAAKA,KAAuB,OAC9B,KAAK,KAAK,aAAe,KAAKA,GAC9B,KAAKA,GAAqB,MAErB,CAACpL,GAAa,IAAI,KAAK,KAAK,EAAE,EACvC,CACA,OAAO,cAAcxB,EAAY/pI,EAAM,CACrC,MAAAkuI,EACA,GAAAF,CACJ,EAAK,CACD,KAAM,CACJ,KAAAjkI,EACA,cAAAkrI,EACA,KAAAp6I,EACA,SAAAoP,EACA,KAAAirI,CACN,EAAQnL,EACE6M,EAAQ3B,GAAiB,IAAIn1I,EAAKE,CAAI,EAS5C,GARA42I,EAAM,eAAe,OAAQj3I,EAAK,IAAI,OAAO,CAAC,EAC9Ci3I,EAAM,eAAe,UAAWj3I,EAAK,IAAI,OAAO,CAAC,EACjDi3I,EAAM,IAAI3B,EAAgB,IAAM,eAAgB,KAAKnrI,GAAoBC,CAAI,CAAC,EAAE,EAChF6sI,EAAM,WAAW,OAAQ/7I,CAAI,EAC7B+7I,EAAM,eAAe,IAAK,CAAC,EAC3BA,EAAM,eAAe,SAAU,CAAC,EAAG,EAAG,CAAC,CAAC,EACxCA,EAAM,YAAY,SAAU3sI,CAAQ,EACpC2sI,EAAM,aAAa,IAAKvzI,GAAuB6xI,CAAI,CAAC,EAChDhH,GAASF,EAAI,CACf,MAAMprI,EAAI,IAAI9C,EAAKE,CAAI,EACvB42I,EAAM,IAAI,KAAMh0I,CAAC,EACjBA,EAAE,IAAI,IAAKsrI,GAASF,CAAE,CACxB,CACA,OAAO4I,CACT,CACA,YAAaC,GAAqC9M,EAAY/pI,EAAM,CAClE,KAAM,CACJ,YAAA82I,EACA,MAAAljI,EACA,KAAA/Y,EACA,MAAAsoG,EACA,UAAAvL,CACN,EAAQmyC,EACJ,GAAI,CAACn2H,EACH,OAAO,KAET,MAAM2iI,EAAmB,CAAC,GAAG3+C,CAAS,aAAc,GAAGuK,GAAYvuF,EAAOkjI,CAAW,CAAC,EAAE,EACxF,UAAWh0C,KAAQK,EACjBunC,GAA6B5nC,EAAMyzC,EAAkB,EAAI,EAE3DA,EAAiB,KAAKO,EAAc,IAAM,GAAG,EAC7C,MAAMnzC,EAAa4yC,EAAiB,KAAK;AAAA,CAAI,EACvC3yC,EAAuB,IAAI9jG,EAAKE,CAAI,EAC1C,OAAA4jG,EAAqB,IAAI,WAAY,CAAC,EACtCA,EAAqB,UAAU,UAAW,MAAM,EAChDA,EAAqB,UAAU,OAAQ,SAAS,EAChDA,EAAqB,IAAI,OAAQ/oG,CAAI,EACrC+oG,EAAqB,IAAI,SAAUD,EAAW,MAAM,EAC7C,IAAIzrF,GAAayrF,EAAYC,CAAoB,CAC1D,CACA,aAAa,0BAA0BmmC,EAAY/pI,EAAMwa,EAAQ,CAC/D,GAAIuvH,EAAW,cACb,OAAO,KAET,GAAIA,EAAW,YACb,OAAO,KAAK8M,GAAqC9M,EAAY/pI,CAAI,EAEnE,KAAM,CACJ,SAAAiK,CACN,EAAQ8/H,EACE,CACJ,SAAAv3C,EACA,MAAAjwF,EACA,OAAAC,CACN,EAAQgY,EAAO,MACLiG,EAAY,IAAI3gB,EAAKE,CAAI,EACzB+2I,EAAU,IAAIj3I,EAAKE,CAAI,EAC7BygB,EAAU,IAAI,UAAWs2H,CAAO,EAChCA,EAAQ,IAAI,MAAOvkD,CAAQ,EAC3B,MAAMmR,EAAa,KAAKphG,CAAK,QAAQC,CAAM,oBACrCohG,EAAuB,IAAI9jG,EAAKE,CAAI,EAM1C,GALA4jG,EAAqB,IAAI,WAAY,CAAC,EACtCA,EAAqB,UAAU,UAAW,MAAM,EAChDA,EAAqB,UAAU,OAAQ,SAAS,EAChDA,EAAqB,IAAI,OAAQ,CAAC,EAAG,EAAGrhG,EAAOC,CAAM,CAAC,EACtDohG,EAAqB,IAAI,YAAanjF,CAAS,EAC3CxW,EAAU,CACZ,MAAMlO,EAASiO,GAAkBC,EAAU1H,EAAOC,CAAM,EACxDohG,EAAqB,IAAI,SAAU7nG,CAAM,CAC3C,CACA,OAAO,IAAImc,GAAayrF,EAAYC,CAAoB,CAC1D,CACF,CACA,MAAMulC,WAAiC6D,EAAiB,CACtD,YAAYxyH,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,kBAAAgtH,EACA,KAAA3mI,CACN,EAAQ2Z,EACEkyH,EAAS7rI,EAAK,IAAI,IAAI,EAC5B,KAAK,KAAK,aAAe,KAAK,KAAK,SACnC,KAAK,KAAK,OAAS,GACnB,KAAK,KAAK,OAAS,KAAK,iBAAiB6rI,EAAQ7rI,EAAK,OAAO,IAAI,EAAG2mI,CAAiB,EACrF,KAAK,KAAK,KAAO,IAAI5iC,GAAS8nC,CAAM,EAAE,aACtC,MAAM50I,EAAO+I,EAAK,IAAI,MAAM,EAC5B,KAAK,KAAK,KAAO/I,aAAgB6H,EAAOiE,GAAkB9L,EAAK,IAAI,EAAI,UACvE,MAAM01I,EAAY3sI,EAAK,IAAI,IAAI,EAC/B,KAAK,KAAK,UAAY,OAAO2sI,GAAc,UAAYA,GAAa,GAAKA,GAAa,EAAIA,EAAY,IACxG,CACF,CACA,MAAMwJ,WAAwBzN,EAAW,CACvC,MAAO0N,GAAsB,qBAC7B,YAAYz8H,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAK,KAAK,OAAS,EACrB,CACA,cAAc,CACZ,SAAA08H,EACA,UAAAC,EACA,SAAAzlD,EACA,YAAA0lD,EACA,UAAAC,EAAY,EAChB,EAAK7P,EAAmB,CACpB,KAAK,KAAK,OAAS,GACnB,KAAK,KAAK,UAAY,CACpB,OAAQ,KAAK,iBAAiB2P,EAAWD,EAAU1P,EAAmB6P,CAAS,EAC/E,SAAA3lD,EACA,YAAA0lD,CACN,CACE,CACA,OAAO,gBAAgBD,EAAWzlD,EAAU0lD,EAAc,KAAM,CAC9D,GAAI,OAAOA,GAAgB,UAAYJ,GAAgBC,GAAoB,KAAKG,CAAW,EACzF,OAAOA,EAET,MAAMn9H,EAAS2qF,GAAS,iBAAiBuyC,EAAU,IAAI,IAAI,CAAC,EACtDpyE,EAAU9qD,aAAkB5X,GAAa4X,EAAO,MAAM,IAAI,SAAS,EAAI,KAC7E,GAAI8qD,aAAmBplE,GAAQq3I,GAAgBC,GAAoB,KAAKlyE,EAAQ,IAAI,EAClF,OAAOA,EAAQ,KAGjB,OADY2sB,EAAS,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,YAAW,EACxC,CACT,IAAK,MACL,IAAK,MACH,MAAO,YACT,IAAK,OACH,MAAO,aACT,IAAK,MACH,MAAO,YACT,IAAK,MACH,MAAO,kBACT,IAAK,MACH,MAAO,aACT,IAAK,MACH,MAAO,YACT,IAAK,MACH,MAAO,YACT,IAAK,MACL,IAAK,MACH,MAAO,YACT,QACE,OAAO,IACf,CACE,CACF,CACA,MAAM03C,WAA4B4N,EAAgB,CAChD,YAAYx8H,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,EACA,kBAAAwnI,CACN,EAAQhtH,EACE23D,EAAUtxE,EAAK,IAAI,kBAAkB,EAC3C,GAAI,EAAEsxE,aAAmBryE,GACvB,OAEF,MAAMw3I,EAAQlO,GAAoBmO,GAAWplE,EAASnyE,CAAI,EAC1D,GAAI,CAACs3I,EAAO,CACV5gJ,EAAK,6CAA6C,EAClD,MACF,CACA,KAAK,cAAc4gJ,EAAO9P,CAAiB,CAC7C,CACA,MAAO+P,GAAWplE,EAASnyE,EAAM,CAC/B,MAAMw3I,EAAiBrlE,EAAQ,IAAI,gBAAgB,EACnD,GAAI,CAAC,MAAM,QAAQqlE,CAAc,EAC/B,OAAO,KAET,UAAWC,KAAaD,EAAgB,CACtC,MAAMjoC,EAASvvG,EAAK,WAAWy3I,CAAS,EACxC,GAAI,EAAEloC,aAAkBzvG,GACtB,SAEF,MAAM43I,EAAYnoC,EAAO,IAAI,WAAW,EACxC,GAAK,MAAM,QAAQmoC,CAAS,EAG5B,UAAWC,KAAeD,EAAW,CACnC,MAAMlqI,EAAWxN,EAAK,WAAW23I,CAAW,EAI5C,GAHI,EAAEnqI,aAAoB1N,IAGtB+B,GAAO2L,EAAS,IAAI,SAAS,EAAG,OAAO,EACzC,SAEF,MAAMoqI,EAAWpqI,EAAS,OAAO,OAAO,EAClC8pI,EAAQt3I,EAAK,WAAW43I,CAAQ,EAItC,GAHI,EAAEN,aAAiBx3I,IAGnB,CAAC8kG,GAAS,gBAAgB0yC,CAAK,EACjC,SAEF,KAAM,CACJ,SAAA5lD,CACV,EAAY,IAAIkT,GAAS0yC,CAAK,EAAE,aAClBF,EAAcJ,GAAgB,gBAAgBM,EAAO5lD,CAAQ,EACnE,GAAK0lD,EAGL,MAAO,CACL,SAAUQ,aAAoBt3I,EAAMs3I,EAAW,KAC/C,UAAWN,EACX,SAAA5lD,EACA,YAAA0lD,CACV,CACM,CACF,CACA,OAAO,IACT,CACF,CACA,MAAM/N,WAAyB2N,EAAgB,CAC7C,YAAYx8H,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,EACA,kBAAAwnI,CACN,EAAQhtH,EACE88H,EAAQjO,GAAiBkO,GAAW12I,EAAMb,CAAI,EAC/Cs3I,GAGL,KAAK,cAAcA,EAAO9P,CAAiB,CAC7C,CACA,MAAO+P,GAAW12I,EAAMb,EAAM,CAC5B,UAAWmI,KAAU,KAAK0vI,GAAkBh3I,CAAI,EAAG,CACjD,MAAMy2I,EAAQ,KAAKQ,GAAoB3vI,EAAO,IAAI,GAAG,EAAGnI,EAAM,IAAIqB,EAAQ,EAC1E,GAAIi2I,EACF,OAAOA,CAEX,CACA,OAAO,IACT,CACA,OAAQO,GAAkBh3I,EAAM,CAC9B,MAAMsH,EAAStH,EAAK,IAAI,GAAG,EACvBsH,aAAkBrI,GAAQ+B,GAAOsG,EAAO,IAAI,GAAG,EAAG,WAAW,GAAK,KAAK4vI,GAAc5vI,CAAM,IAC7F,MAAMA,GAER,MAAMF,EAAoBpH,EAAK,IAAI,IAAI,EACvC,GAAIoH,aAA6BnI,EAC/B,SAAW,CAAA,CAAGk4I,CAAE,IAAK/vI,EACf+vI,aAAcl4I,GAAQ+B,GAAOm2I,EAAG,IAAI,GAAG,EAAG,WAAW,GAAK,KAAKD,GAAcC,CAAE,IACjF,MAAMA,EAId,CACA,MAAOD,GAAc5vI,EAAQ,CAC3B,MAAMuuF,EAAYvuF,EAAO,IAAI,IAAI,EACjC,OAAOuuF,IAAc,QAAaA,IAAcjhG,GAA6B,gBAAkBihG,IAAcjhG,GAA6B,IAC5I,CACA,MAAOqiJ,GAAoBG,EAAWj4I,EAAMk4I,EAAM,CAChD,GAAI,EAAED,aAAqBn4I,GACzB,OAAO,KAET,MAAMilE,EAAUkzE,EAAU,IAAI,GAAG,EACjC,GAAIp2I,GAAOkjE,EAAS,IAAI,EACtB,OAAO,KAAKozE,GAAeF,EAAU,IAAI,GAAG,EAAGj4I,CAAI,EAErD,GAAI6B,GAAOkjE,EAAS,IAAI,EAAG,CACzB,MAAMqzE,EAAaH,EAAU,IAAI,GAAG,EACpC,GAAI,MAAM,QAAQG,CAAU,EAC1B,UAAWh3I,KAAOg3I,EAAY,CAC5B,GAAIh3I,aAAed,EAAK,CACtB,GAAI43I,EAAK,IAAI92I,CAAG,EACd,SAEF82I,EAAK,IAAI92I,CAAG,CACd,CACA,MAAMk2I,EAAQ,KAAKQ,GAAoB93I,EAAK,WAAWoB,CAAG,EAAGpB,EAAMk4I,CAAI,EACvE,GAAIZ,EACF,OAAOA,CAEX,CAEJ,CACA,OAAO,IACT,CACA,MAAOa,GAAeE,EAAMr4I,EAAM,CAChC,GAAI,EAAEq4I,aAAgBv4I,IAAS,CAAC+B,GAAOw2I,EAAK,IAAI,GAAG,EAAG,KAAK,EACzD,OAAO,KAET,MAAMC,EAAUD,EAAK,OAAO,GAAG,EACzBjzI,EAAOpF,EAAK,WAAWs4I,CAAO,EAC9BC,EAAkBF,EAAK,IAAI,IAAI,EACrC,IAAIG,EAAe,OAAOD,GAAoB,SAAWA,EAAkB,KACvEpB,EAAWzlD,EACf,GAAItsF,aAAgB/C,GAAY,CAC9B80I,EAAY/xI,EAAK,KACjB,MAAMtN,EAAOugJ,EAAK,IAAI,GAAG,EAEzB,GADA3mD,EAAW,OAAO55F,GAAS,SAAW8L,GAAkB9L,CAAI,EAAI,GAC5D,CAAC0gJ,EAAc,CACjB,MAAMzzE,EAAU3/D,EAAK,KAAK,IAAI,SAAS,EACnC2/D,aAAmBplE,IACrB64I,EAAezzE,EAAQ,KAE3B,CACF,SAAW3/D,aAAgBtF,EAAM,CAC/B,GAAI,CAAC8kG,GAAS,gBAAgBx/F,CAAI,EAChC,OAAO,KAET+xI,EAAY/xI,EACX,CACC,SAAAssF,CACR,EAAU,IAAIkT,GAASx/F,CAAI,EAAE,YACzB,KACE,QAAO,KAET,MAAMgyI,EAAcJ,GAAgB,gBAAgBG,EAAWzlD,EAAU8mD,CAAY,EACrF,OAAKpB,EAGE,CACL,SAAUkB,aAAmBh4I,EAAMg4I,EAAU,KAC7C,UAAAnB,EACA,SAAAzlD,EACA,YAAA0lD,CACN,EAPa,IAQX,CACF,CACA,MAAM9N,WAAwB0N,EAAgB,CAC5C,YAAYx8H,EAAQ,CAClB,MAAMA,CAAM,EACZ,KAAM,CACJ,KAAA3Z,EACA,KAAAb,EACA,kBAAAwnI,CACN,EAAQhtH,EACEi+H,EAAW53I,EAAK,OAAO,OAAO,EACpC,GAAI,EAAE43I,aAAoBn4I,GACxB,OAEF,IAAIo4I,EACJ,GAAI,CACFA,EAAQ14I,EAAK,MAAMy4I,CAAQ,CAC7B,OAASv0I,EAAI,CACX,GAAIA,aAAcW,GAChB,MAAMX,EAERxN,EAAK,qBAAqBwN,CAAE,IAAI,EAChC,MACF,CACI,EAAEw0I,aAAiBr2I,KAAe,CAACslG,GAAe+wC,EAAM,IAAI,GAGhE,KAAK,cAAc,CACjB,SAAUD,EACV,UAAWC,EAAM,KACjB,SAAU,YACV,YAAa,YACb,UAAW,EACjB,EAAOlR,CAAiB,CACtB,CACF,CAIA,MAAMmR,GAAS,CACb,IAAI,GAAI,CACN,OAAOphJ,GAAO,KAAM,IAAK,IAAI,WAAW,CAAC,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAE,CAAC,CAAC,CACvR,EACA,IAAI,GAAI,CACN,OAAOA,GAAO,KAAM,IAAK,IAAI,WAAW,CAAC,WAAY,WAAY,UAAW,YAAa,WAAY,WAAY,YAAa,UAAW,WAAY,YAAa,OAAQ,YAAa,WAAY,UAAW,YAAa,WAAY,WAAY,YAAa,UAAW,WAAY,WAAY,SAAU,WAAY,WAAY,UAAW,YAAa,WAAY,WAAY,YAAa,UAAW,WAAY,YAAa,QAAS,YAAa,WAAY,UAAW,YAAa,WAAY,WAAY,YAAa,UAAW,WAAY,WAAY,SAAU,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,YAAa,UAAW,WAAY,YAAa,SAAU,YAAa,WAAY,UAAW,YAAa,WAAY,WAAY,YAAa,UAAW,UAAU,CAAC,CAAC,CACnyB,CACF,EACA,SAASqhJ,GAAaxzI,EAAM2H,EAAQpU,EAAQ,CAC1C,IAAIkgJ,EAAK,WACP5qI,EAAK,WACLE,EAAK,YACL2qI,EAAK,UACP,MAAMr8E,EAAe9jE,EAAS,GAAK,IAC7BogJ,EAAS,IAAI,WAAWt8E,CAAY,EAC1C,IAAI3jE,EAAGoS,EACP,IAAKpS,EAAI,EAAGA,EAAIH,EAAQ,EAAEG,EACxBigJ,EAAOjgJ,CAAC,EAAIsM,EAAK2H,GAAQ,EAE3BgsI,EAAOjgJ,GAAG,EAAI,IACd,MAAM8J,EAAI65D,EAAe,EACrB3jE,EAAI8J,IACN9J,EAAI8J,GAENm2I,EAAOjgJ,GAAG,EAAIH,GAAU,EAAI,IAC5BogJ,EAAOjgJ,GAAG,EAAIH,GAAU,EAAI,IAC5BogJ,EAAOjgJ,GAAG,EAAIH,GAAU,GAAK,IAC7BogJ,EAAOjgJ,GAAG,EAAIH,GAAU,GAAK,IAC7BogJ,EAAOjgJ,GAAG,EAAIH,IAAW,GAAK,IAC9BG,GAAK,EACL,MAAMkgF,EAAI,IAAI,WAAW,EAAE,EACrB,CACJ,EAAAjnE,EACA,EAAArY,CACJ,EAAMi/I,GACJ,IAAK7/I,EAAI,EAAGA,EAAI2jE,GAAe,CAC7B,IAAKvxD,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAGpS,GAAK,EAC5BkgF,EAAE9tE,CAAC,EAAI6tI,EAAOjgJ,CAAC,EAAIigJ,EAAOjgJ,EAAI,CAAC,GAAK,EAAIigJ,EAAOjgJ,EAAI,CAAC,GAAK,GAAKigJ,EAAOjgJ,EAAI,CAAC,GAAK,GAEjF,IAAIkD,EAAI68I,EACN,EAAI5qI,EACJhS,EAAIkS,EACJvT,EAAIk+I,EACJriH,EACA98B,EACF,IAAKuR,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAG,CACnBA,EAAI,IACNurB,EAAI,EAAIx6B,EAAI,CAAC,EAAIrB,EACjBjB,EAAIuR,GACKA,EAAI,IACburB,EAAI77B,EAAI,EAAI,CAACA,EAAIqB,EACjBtC,EAAI,EAAIuR,EAAI,EAAI,IACPA,EAAI,IACburB,EAAI,EAAIx6B,EAAIrB,EACZjB,EAAI,EAAIuR,EAAI,EAAI,KAEhBurB,EAAIx6B,GAAK,EAAI,CAACrB,GACdjB,EAAI,EAAIuR,EAAI,IAEd,MAAM4T,EAAMlkB,EACVo+I,EAAYh9I,EAAIy6B,EAAI1kB,EAAE7G,CAAC,EAAI8tE,EAAEr/E,CAAC,EAAI,EAClCshG,EAASvhG,EAAEwR,CAAC,EACdtQ,EAAIqB,EACJA,EAAI,EACJ,EAAI,GAAK+8I,GAAa/9C,EAAS+9C,IAAc,GAAK/9C,GAAU,EAC5Dj/F,EAAI8iB,CACN,CACA+5H,EAAKA,EAAK78I,EAAI,EACdiS,EAAKA,EAAK,EAAI,EACdE,EAAKA,EAAKlS,EAAI,EACd68I,EAAKA,EAAKl+I,EAAI,CAChB,CACA,OAAO,IAAI,WAAW,CAACi+I,EAAK,IAAMA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,IAAM5qI,EAAK,IAAMA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,IAAME,EAAK,IAAMA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,IAAM2qI,EAAK,IAAMA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,GAAI,CAAC,CAChR,CAMA,SAASG,GAAa3hJ,EAAK,CACzB,GAAI,CACF,OAAOH,GAAmBG,CAAG,CAC/B,OAAS4M,EAAI,CACX,OAAAxN,EAAK,2BAA2BwN,CAAE,IAAI,EAC/B5M,CACT,CACF,CACA,MAAM4hJ,WAAyBtyC,EAAgB,CAC7C,KAAO,KACP,aAAa9uG,EAAM,CACjB,MAAMmsB,EAAO,MAAM,aAAansB,CAAI,EACpC,GAAImsB,GAAQnsB,IAAS,eACnB,WAAK,KAAOmsB,EACN,IAAI,MAAM,4BAA4B,CAEhD,CACF,CACA,MAAMk1H,EAAc,CAClB,YAAY/zI,EAAM,CAChB,GAAIA,EAAK,SACP,KAAK,KAAO,IAAIwhG,GAAgB,CAC9B,cAAe,EACvB,CAAO,EAAE,gBAAgBxhG,EAAK,QAAQ,EAAE,oBAC7B,CACL,MAAMw6C,EAAS,IAAIs5F,GAAiB,CAClC,cAAe,EACvB,CAAO,EACD,GAAI,CACFt5F,EAAO,gBAAgBx6C,EAAK,SAAS,CAAC,CACxC,MAAQ,CAAC,CACT,KAAK,KAAOw6C,EAAO,IACrB,CACF,CACA,SAAS34C,EAAM,CACb,GAAI,CAAC,KAAK,MAAQ,CAACA,EACjB,MAAO,GAET,MAAMgd,EAAO,KAAK,KAAK,WAAWjd,GAAaC,CAAI,EAAG,CAAC,EACvD,OAAKgd,EAGSA,EAAK,YACR,WAAa,QACfA,EAAK,SAAS,IAAIuiF,GAASyyC,GAAazyC,EAAM,WAAW,CAAC,EAE5DyyC,GAAah1H,EAAK,WAAW,EAN3B,EAOX,CACF,CAGA,MAAMm1H,EAAkB,CACtBC,GACA,KAAO,IACP,KAAO,IACP,KAAO,KACP,KAAO,KACPC,GAAc,KACdC,GAAQ,CAAA,EACRC,GAAc,CAAA,EACdC,GAA6B,GAC7BC,GAAqB,GACrB,YAAY3P,EAAY,CACtB,KAAKsP,GAActP,EACnB,MAAMM,EAAaN,EAAW,KAAK,WACnC,GAAI,CAACM,EAAY,CACf,CAAC,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,IAAI,EAAIN,EAAW,KAAK,KAC/D,MACF,CACA,QAASjxI,EAAI,EAAGmF,EAAKosI,EAAW,OAAQvxI,EAAImF,EAAInF,GAAK,EACnD,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMuxI,EAAWvxI,CAAC,CAAC,EAC7C,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMuxI,EAAWvxI,EAAI,CAAC,CAAC,EACjD,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMuxI,EAAWvxI,EAAI,CAAC,CAAC,EACjD,KAAK,KAAO,KAAK,IAAI,KAAK,KAAMuxI,EAAWvxI,EAAI,CAAC,CAAC,EAE/CuxI,EAAW,OAAS,IACtB,KAAKiP,GAAcjP,EAEvB,CACAsP,GAAYj9I,EAAGC,EAAG,CAChB,GAAI,KAAK,MAAQD,GAAK,KAAK,MAAQA,GAAK,KAAK,MAAQC,GAAK,KAAK,MAAQA,EACrE,MAAO,GAET,MAAM0tI,EAAa,KAAKiP,GACxB,GAAI,CAACjP,EACH,MAAO,GAET,GAAI,KAAKoP,IAA8B,EAAG,CACxC,MAAM3gJ,EAAI,KAAK2gJ,GACf,GAAI,EAAEpP,EAAWvxI,CAAC,GAAK4D,GAAK2tI,EAAWvxI,EAAI,CAAC,GAAK4D,GAAK2tI,EAAWvxI,EAAI,CAAC,GAAK6D,GAAK0tI,EAAWvxI,EAAI,CAAC,GAAK6D,GACnG,MAAO,GAET,KAAK88I,GAA6B,EACpC,CACA,QAAS3gJ,EAAI,EAAGmF,EAAKosI,EAAW,OAAQvxI,EAAImF,EAAInF,GAAK,EACnD,GAAI,EAAEuxI,EAAWvxI,CAAC,GAAK4D,GAAK2tI,EAAWvxI,EAAI,CAAC,GAAK4D,GAAK2tI,EAAWvxI,EAAI,CAAC,GAAK6D,GAAK0tI,EAAWvxI,EAAI,CAAC,GAAK6D,GACnG,YAAK88I,GAA6B3gJ,EAC3B,GAGX,MAAO,EACT,CACA,SAAS4D,EAAGC,EAAGwyD,EAAO,CACpB,OAAK,KAAKwqF,GAAYj9I,EAAGC,CAAC,GAItB,KAAK68I,GAAY,OAAS,IAC5B,KAAKD,GAAM,KAAK,KAAKC,GAAY,KAAK,EAAE,CAAC,EACzC,KAAKA,GAAY,OAAS,GAE5B,KAAKD,GAAM,KAAKpqF,CAAK,EACrB,KAAKuqF,GAAqB,GACnB,KATL,KAAK,kBAAiB,EACf,GASX,CACA,aAAaz2I,EAAM,CACb,KAAKy2I,IACP,KAAKF,GAAY,KAAKv2I,CAAI,CAE9B,CACA,mBAAoB,CACb,KAAKy2I,KAGV,KAAKA,GAAqB,GAC1B,KAAKF,GAAY,OAAS,EAC5B,CACA,SAAU,CACR,KAAKH,GAAY,KAAK,aAAe,KAAKE,GAAM,KAAK,EAAE,CACzD,CACF,CACA,MAAMK,GAAQ,GACd,MAAMC,EAAY,CAChBC,GAAgB,CAAA,EAChBC,GAAQ,CAAA,EACRC,GACAC,GACAC,GACAC,GACAC,GACAC,GACA,YAAY3Q,EAAa,CACvB,IAAI12G,EAAO,IACPC,EAAO,IACPtG,EAAO,KACPuG,EAAO,KACX,MAAMonH,EAAe,KAAKR,GAC1B,UAAW/P,KAAcL,EAAa,CACpC,GAAI,CAACK,EAAW,KAAK,YAAc,CAACA,EAAW,KAAK,KAClD,SAEF,MAAM1xC,EAAc,IAAI+gD,GAAkBrP,CAAU,EACpDuQ,EAAa,KAAKjiD,CAAW,EAC7BrlE,EAAO,KAAK,IAAIA,EAAMqlE,EAAY,IAAI,EACtCplE,EAAO,KAAK,IAAIA,EAAMolE,EAAY,IAAI,EACtC1rE,EAAO,KAAK,IAAIA,EAAM0rE,EAAY,IAAI,EACtCnlE,EAAO,KAAK,IAAIA,EAAMmlE,EAAY,IAAI,CACxC,CACA,KAAK2hD,GAAQhnH,EACb,KAAKknH,GAAQjnH,EACb,KAAKgnH,GAAQttH,EACb,KAAKwtH,GAAQjnH,EACb,KAAKknH,IAAcR,GAAQ,IAAMjtH,EAAOqG,GACxC,KAAKqnH,IAAcT,GAAQ,IAAM1mH,EAAOD,GACxC,UAAWolE,KAAeiiD,EAAc,CACtC,MAAMC,EAAO,KAAKC,GAAcniD,EAAY,KAAMA,EAAY,IAAI,EAC5DoiD,EAAO,KAAKD,GAAcniD,EAAY,KAAMA,EAAY,IAAI,EAC5Drf,GAAKyhE,EAAOF,GAAQX,GACpB,EAAI,KAAK,OAAOa,EAAOF,GAAQX,EAAK,EAC1C,QAAS9gJ,EAAIyhJ,EAAMzhJ,GAAKyhJ,EAAO,EAAIX,GAAO9gJ,GAAK8gJ,GAC7C,QAAS1uI,EAAI,EAAGA,GAAK8tE,EAAG9tE,KACrB,KAAK6uI,GAAMjhJ,EAAIoS,CAAC,IAAM,CAAA,GAAI,KAAKmtF,CAAW,CAGjD,CACF,CACAmiD,GAAc99I,EAAGC,EAAG,CAClB,MAAM7D,EAAI,KAAK,OAAO4D,EAAI,KAAKs9I,IAAS,KAAKI,EAAU,EACjDlvI,EAAI,KAAK,OAAOvO,EAAI,KAAKu9I,IAAS,KAAKG,EAAU,EACvD,OAAOvhJ,EAAIoS,EAAI0uI,EACjB,CACA,SAASv/I,EAAWkI,EAAOC,EAAQ2sD,EAAO,CACxC,MAAMzyD,EAAIrC,EAAU,CAAC,EAAIkI,EAAQ,EAC3B5F,EAAItC,EAAU,CAAC,EAAImI,EAAS,EAClC,GAAI9F,EAAI,KAAKs9I,IAASr9I,EAAI,KAAKu9I,IAASx9I,EAAI,KAAKu9I,IAASt9I,EAAI,KAAKw9I,GACjE,OAEF,MAAMG,EAAe,KAAKP,GAAM,KAAKS,GAAc99I,EAAGC,CAAC,CAAC,EACxD,GAAK29I,EAGL,UAAWjiD,KAAeiiD,EACxBjiD,EAAY,SAAS37F,EAAGC,EAAGwyD,CAAK,CAEpC,CACA,aAAalsD,EAAM,CACjB,UAAWo1F,KAAe,KAAKyhD,GAC7BzhD,EAAY,aAAap1F,CAAI,CAEjC,CACA,SAAU,CACR,UAAWo1F,KAAe,KAAKyhD,GAC7BzhD,EAAY,QAAO,CAEvB,CACF,CAIA,MAAMqiD,EAAO,CACX,YAAYC,EAAaC,EAAY,CACnC,KAAK,KAAOD,EAAc,EAC1B,KAAK,IAAMC,EAAa,CAC1B,CACA,IAAIC,EAAM,CACR,KAAK,MAAQA,EAAK,KAClB,KAAK,KAAOA,EAAK,GACnB,CACA,IAAIA,EAAM,CACR,KAAK,MAAQA,EAAK,KAClB,KAAK,KAAOA,EAAK,GACnB,CACA,WAAWC,EAAQ,CACjB,KAAK,IAAM,KAAK,MAAQA,EAAS,KAAK,MAAQ,GAAKA,EACnD,KAAK,KAAO,KAAK,OAASA,EAAS,CACrC,CACA,YAAYA,EAAQ,CAClB,IAAIrzG,EAAK2Y,EACL06F,EAAS,IACX16F,EAAO,KAAK,IACZ3Y,EAAM,KAAK,OAEXA,EAAM,KAAK,IACX2Y,EAAO,KAAK,MAEd06F,GAAU,GACV,KAAK,IAAMrzG,IAAQqzG,EAAS16F,GAAQ,GAAK06F,EACzC,KAAK,KAAO16F,IAAS06F,EAASrzG,GAAO,GAAKqzG,CAC5C,CACA,KAAM,CACJ,KAAK,KAAO,CAAC,KAAK,KAClB,KAAK,IAAM,CAAC,KAAK,GACnB,CACA,IAAID,EAAM,CACR,MAAME,GAAU,KAAK,MAAQ,IAAMF,EAAK,MAAQ,GAChD,IAAIG,GAAW,KAAK,OAAS,IAAMH,EAAK,OAAS,GAC7CE,EAAS,aACXC,GAAW,GAEb,KAAK,IAAMD,EAAS,EACpB,KAAK,KAAOC,EAAU,CACxB,CACA,OAAOtiJ,EAAOqU,EAAQ,CACpBrU,EAAMqU,CAAM,EAAI,KAAK,OAAS,GAAK,IACnCrU,EAAMqU,EAAS,CAAC,EAAI,KAAK,MAAQ,GAAK,IACtCrU,EAAMqU,EAAS,CAAC,EAAI,KAAK,MAAQ,EAAI,IACrCrU,EAAMqU,EAAS,CAAC,EAAI,KAAK,KAAO,IAChCrU,EAAMqU,EAAS,CAAC,EAAI,KAAK,MAAQ,GAAK,IACtCrU,EAAMqU,EAAS,CAAC,EAAI,KAAK,KAAO,GAAK,IACrCrU,EAAMqU,EAAS,CAAC,EAAI,KAAK,KAAO,EAAI,IACpCrU,EAAMqU,EAAS,CAAC,EAAI,KAAK,IAAM,GACjC,CACA,OAAO8tI,EAAM,CACX,KAAK,KAAOA,EAAK,KACjB,KAAK,IAAMA,EAAK,GAClB,CACF,CACA,MAAMI,GAA6B,CACjC,IAAI,GAAI,CACN,OAAO1jJ,GAAO,KAAM,IAAK,CAAC,IAAImjJ,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,SAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,U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,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAI,CAAC,EACphD,OAAS,IAAI,WAAW,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IA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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/suites-experimental/pdf-viewer/dist/document.pdf b/suites-experimental/pdf-viewer/dist/document.pdf new file mode 100644 index 000000000..2db4915a9 Binary files /dev/null and b/suites-experimental/pdf-viewer/dist/document.pdf differ diff --git a/suites-experimental/pdf-viewer/dist/index.html b/suites-experimental/pdf-viewer/dist/index.html new file mode 100644 index 000000000..ec976931b --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/index.html @@ -0,0 +1,19 @@ + + + + + + PDF Viewer + + + + +
+
+
+ +
+
+
+ + diff --git a/suites-experimental/pdf-viewer/dist/resources.txt b/suites-experimental/pdf-viewer/dist/resources.txt new file mode 100644 index 000000000..e43d368b4 --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/resources.txt @@ -0,0 +1,7 @@ +assets/index.css +assets/index.js +assets/index.js.map +assets/pdf.worker.js +assets/pdf.worker.js.map +document.pdf +index.html diff --git a/suites-experimental/pdf-viewer/index.html b/suites-experimental/pdf-viewer/index.html new file mode 100644 index 000000000..72d4b4674 --- /dev/null +++ b/suites-experimental/pdf-viewer/index.html @@ -0,0 +1,19 @@ + + + + + + PDF Viewer + + + +
+
+
+ +
+
+
+ + + diff --git a/suites-experimental/pdf-viewer/package-lock.json b/suites-experimental/pdf-viewer/package-lock.json new file mode 100644 index 000000000..f6f5dd171 --- /dev/null +++ b/suites-experimental/pdf-viewer/package-lock.json @@ -0,0 +1,1699 @@ +{ + "name": "pdf-viewer", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "pdf-viewer", + "version": "1.0.0", + "license": "SEE LICENSE IN ../../LICENSE", + "dependencies": { + "pdfjs-dist": "^6.3.289", + "speedometer-utils": "../../resources/shared" + }, + "devDependencies": { + "@fontsource/inter": "^5.2.5", + "@fontsource/source-code-pro": "^5.3.0", + "@fontsource/source-serif-4": "^5.2.5", + "pdfkit": "^0.20.2", + "vite": "^7.1.5" + } + }, + "../../resources/shared": { + "name": "speedometer-utils", + "version": "1.0.0" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@fontsource/inter": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.3.0.tgz", + "integrity": "sha512-RofMylZmjlJEfELXeNHFWBRcSs75rGU/6bV2S2jfnvv/3rPXPGe0LgUJTklcHZ9lM4OZmAVFhcJPnACfb91A3g==", + "dev": true, + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fontsource/source-code-pro": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource/source-code-pro/-/source-code-pro-5.3.0.tgz", + "integrity": "sha512-JxaCODU69HDS3mVra9u96nyBF911La6IvtGLgpQD+PZLxJ1i9IxooNfLR6Y37kx06IFjVGkvoUmg3WPwh/8gBg==", + "dev": true, + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fontsource/source-serif-4": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource/source-serif-4/-/source-serif-4-5.3.0.tgz", + "integrity": "sha512-yQz8xmIgMzks8zQbpuca3UYtjxK798XCyQAGdDXmzBgvV7sdoK6d0YvE9F9kiYxORCEMRBgGZDZsSYcXj5KvwA==", + "dev": true, + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@napi-rs/canvas": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-1.0.9.tgz", + "integrity": "sha512-QviPdJImDi/jMAvBfqaw+19BndMd/sizXVW3NnpMd3VJGz++QXkOHcP9kWR/smHG0hNjHeyuHFyrx/5lD0oNcQ==", + "license": "MIT", + "optional": true, + "workspaces": [ + "e2e/*" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/canvas-android-arm64": "1.0.9", + "@napi-rs/canvas-darwin-arm64": "1.0.9", + "@napi-rs/canvas-darwin-x64": "1.0.9", + "@napi-rs/canvas-linux-arm-gnueabihf": "1.0.9", + "@napi-rs/canvas-linux-arm64-gnu": "1.0.9", + "@napi-rs/canvas-linux-arm64-musl": "1.0.9", + "@napi-rs/canvas-linux-riscv64-gnu": "1.0.9", + "@napi-rs/canvas-linux-x64-gnu": "1.0.9", + "@napi-rs/canvas-linux-x64-musl": "1.0.9", + "@napi-rs/canvas-win32-arm64-msvc": "1.0.9", + "@napi-rs/canvas-win32-x64-msvc": "1.0.9" + } + }, + "node_modules/@napi-rs/canvas-android-arm64": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-1.0.9.tgz", + "integrity": "sha512-4LGXk2/0HVzE29K8SzML5WubgCp++B1FH3qgl35XmSZE+lLdr6P9VRQEnZ0MCLZMTSuJP41yyhtoiVNEuvrTIA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-darwin-arm64": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-1.0.9.tgz", + "integrity": "sha512-YNdfLBzY0W/Pep9fo2L6RmoNlNksnn05LRnX66W63R3ij58S25QOTcjdtEt2v8+PnCESzqZsYzUo+QPeIR44NA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-darwin-x64": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-1.0.9.tgz", + "integrity": "sha512-ceZQSknTEcy3dOXoekv59LTCkXjvnLsq+VW5PeNNDHEPQbRS5Ervkm1EaDa7WLAjiYWMLuSQTRTHao1dEX4prg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-1.0.9.tgz", + "integrity": "sha512-XhfI0Wwv4llhd6nnWDtY3kQKjq0r+y1i91PlJlJI24ag2U9WrnwbG1qS3+fDLEyouwEVFchiKkTEHozK+5iUNA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-gnu": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-1.0.9.tgz", + "integrity": "sha512-012oiYtKaE7i9oxc8q7nraT7kDOpLcaCmFLzVe9Ty34RHDdoDzbWLrVh827CNxYh/EADX1eSikA3ymLjo/nNuw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-musl": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-1.0.9.tgz", + "integrity": "sha512-Ls5UWYFFn63casTZEczbeyEg3vRDRkv9lscuGwfchtY5yLLQhgOB8SN4YGxmfJ5vTaBwZ2YUxBS3NtmjJmFXdA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-1.0.9.tgz", + "integrity": "sha512-hLKEGxV7ZiRHqndePTokgDMdBlo/rDfzg7P4p4QIv9pUhuYobnu3R2NIFLCRghG0nwfo+s2sw+c1xZFeCmEAsw==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-gnu": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-1.0.9.tgz", + "integrity": "sha512-6kaz3w0QMy77PDWk6rJ1ksIihdad3qzEyX2o2oGT8GwCaypfT5mhjr8buOO5hstyLxcWXDScuz56RsINLtBPIQ==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-musl": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-1.0.9.tgz", + "integrity": "sha512-xrGvmS3v55hmZ86ls/kBLVNMUTYio3f6Ik0DireemG994VfPAwiA3ZXA0Uf1bByctkB3NQ1Sfb+H5bkdUnnzfQ==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-win32-arm64-msvc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-1.0.9.tgz", + "integrity": "sha512-yjmVS3ArZeRVCP7jqbPq4rpZa/BhTeI7ELE2XqJg3snICQBDevLZyArxswHkiTnT34KRic33/4fLirrHI+SY8A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-win32-x64-msvc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-1.0.9.tgz", + "integrity": "sha512-QlSYQdMQslB81nlABo9wNfQ6npFhE7/O+saCZdqVGueGanyRk4jCogD5EwQenfP3kIq9e+mm6GreQBjX5MrA8g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.1.tgz", + "integrity": "sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.63.1.tgz", + "integrity": "sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.63.1.tgz", + "integrity": "sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.63.1.tgz", + "integrity": "sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.63.1.tgz", + "integrity": "sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.63.1.tgz", + "integrity": "sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.63.1.tgz", + "integrity": "sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.63.1.tgz", + "integrity": "sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.63.1.tgz", + "integrity": "sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.63.1.tgz", + "integrity": "sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.63.1.tgz", + "integrity": "sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.63.1.tgz", + "integrity": "sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.63.1.tgz", + "integrity": "sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.63.1.tgz", + "integrity": "sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.63.1.tgz", + "integrity": "sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.63.1.tgz", + "integrity": "sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.63.1.tgz", + "integrity": "sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.63.1.tgz", + "integrity": "sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.63.1.tgz", + "integrity": "sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.63.1.tgz", + "integrity": "sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.63.1.tgz", + "integrity": "sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.63.1.tgz", + "integrity": "sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.63.1.tgz", + "integrity": "sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.63.1.tgz", + "integrity": "sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.63.1.tgz", + "integrity": "sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/helpers": { + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", + "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fflate": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", + "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/linebreak/node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true, + "license": "MIT" + }, + "node_modules/pdfjs-dist": { + "version": "6.3.289", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-6.3.289.tgz", + "integrity": "sha512-ZHjSVpDa3D6izMq8/04lvkhkATUmL9px6ChPaXc1k6nU2Mrhlg1/7F0bdUqCwUjw3NsPTfPZsMDUU6ZIcRaeQw==", + "license": "Apache-2.0", + "engines": { + "node": ">=22.13.0 || >=24" + }, + "optionalDependencies": { + "@napi-rs/canvas": "^1.0.0" + } + }, + "node_modules/pdfkit": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.20.2.tgz", + "integrity": "sha512-Q/w03ICAQyXfHNfTsg1udp0ADerdBN0s7a6XSPL7J7Ro6ABnafoBOCDBstIO9U02mvzHEV8HrvFIw5iV5ejIRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/ciphers": "^1.3.0", + "@noble/hashes": "^1.8.0", + "fflate": "^0.8.3", + "fontkit": "^2.0.4", + "linebreak": "^1.1.0", + "png-js": "^2.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/png-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-2.0.0.tgz", + "integrity": "sha512-GdzJuUMc6ZSpxFJWVxtOH1bzYHym+TOnveqUjb+VJIbZWbZzyiRGFiKhbiielfpYbgMlhHVhsJ0FTazfuRFkMA==", + "dev": true, + "dependencies": { + "fflate": "^0.8.2" + } + }, + "node_modules/postcss": { + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.18", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.63.1.tgz", + "integrity": "sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.63.1", + "@rollup/rollup-android-arm64": "4.63.1", + "@rollup/rollup-darwin-arm64": "4.63.1", + "@rollup/rollup-darwin-x64": "4.63.1", + "@rollup/rollup-freebsd-arm64": "4.63.1", + "@rollup/rollup-freebsd-x64": "4.63.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.63.1", + "@rollup/rollup-linux-arm-musleabihf": "4.63.1", + "@rollup/rollup-linux-arm64-gnu": "4.63.1", + "@rollup/rollup-linux-arm64-musl": "4.63.1", + "@rollup/rollup-linux-loong64-gnu": "4.63.1", + "@rollup/rollup-linux-loong64-musl": "4.63.1", + "@rollup/rollup-linux-ppc64-gnu": "4.63.1", + "@rollup/rollup-linux-ppc64-musl": "4.63.1", + "@rollup/rollup-linux-riscv64-gnu": "4.63.1", + "@rollup/rollup-linux-riscv64-musl": "4.63.1", + "@rollup/rollup-linux-s390x-gnu": "4.63.1", + "@rollup/rollup-linux-x64-gnu": "4.63.1", + "@rollup/rollup-linux-x64-musl": "4.63.1", + "@rollup/rollup-openbsd-x64": "4.63.1", + "@rollup/rollup-openharmony-arm64": "4.63.1", + "@rollup/rollup-win32-arm64-msvc": "4.63.1", + "@rollup/rollup-win32-ia32-msvc": "4.63.1", + "@rollup/rollup-win32-x64-gnu": "4.63.1", + "@rollup/rollup-win32-x64-msvc": "4.63.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speedometer-utils": { + "resolved": "../../resources/shared", + "link": true + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0 || ^0.28.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/suites-experimental/pdf-viewer/package.json b/suites-experimental/pdf-viewer/package.json new file mode 100644 index 000000000..ed9a73767 --- /dev/null +++ b/suites-experimental/pdf-viewer/package.json @@ -0,0 +1,28 @@ +{ + "name": "pdf-viewer", + "private": true, + "version": "1.0.0", + "description": "A pdf.js document viewer workload for Speedometer.", + "type": "module", + "scripts": { + "generate:pdf": "node scripts/generate-pdf.mjs", + "analyze:pdf": "node scripts/analyze-pdf.mjs", + "predev": "npm run generate:pdf", + "dev": "vite", + "prebuild": "npm run generate:pdf", + "build": "vite build", + "preview": "vite preview" + }, + "license": "SEE LICENSE IN ../../LICENSE", + "dependencies": { + "pdfjs-dist": "^6.3.289", + "speedometer-utils": "../../resources/shared" + }, + "devDependencies": { + "@fontsource/inter": "^5.2.5", + "@fontsource/source-code-pro": "^5.3.0", + "@fontsource/source-serif-4": "^5.2.5", + "pdfkit": "^0.20.2", + "vite": "^7.1.5" + } +} diff --git a/suites-experimental/pdf-viewer/scripts/analyze-pdf.mjs b/suites-experimental/pdf-viewer/scripts/analyze-pdf.mjs new file mode 100644 index 000000000..94d39c0ac --- /dev/null +++ b/suites-experimental/pdf-viewer/scripts/analyze-pdf.mjs @@ -0,0 +1,209 @@ +// Dev tool. Loads public/document.pdf with pdfjs-dist in Node and reports what the +// fixture asks the renderer to do, to check a change to generate-pdf.mjs did what it +// was meant to. Exits non-zero on a filter outside pdf.js' free tier. +// +// Stream filters, shading and pattern types and the embedded font programs are not +// reachable through pdf.js' public API, so those come from a scan of the raw bytes. + +import fs from "node:fs"; +import path from "node:path"; +import * as pdfjs from "pdfjs-dist/legacy/build/pdf.mjs"; + +const ROOT = path.resolve(import.meta.dirname, ".."); +const DOCUMENT = path.join(ROOT, "public", "document.pdf"); + +const FREE_TIER_FILTERS = new Set(["FlateDecode", "DCTDecode", "ASCII85Decode", "ASCIIHexDecode", "LZWDecode", "RunLengthDecode", "Crypt"]); +const SHADING_TYPES = { 1: "function", 2: "axial", 3: "radial", 4: "free-form mesh", 5: "lattice mesh", 6: "coons patch", 7: "tensor patch" }; +const PATTERN_TYPES = { 1: "tiling", 2: "shading" }; +const FONT_FILE_KEYS = { FontFile: "Type 1", FontFile2: "TrueType", FontFile3: "CFF" }; + +function tally(source, pattern, transform = (value) => value) { + const counts = new Map(); + for (const match of source.matchAll(pattern)) { + const key = transform(match[1]); + counts.set(key, (counts.get(key) ?? 0) + 1); + } + return counts; +} + +function formatTally(counts, empty = "none") { + if (counts.size === 0) + return empty; + return [...counts] + .sort(([a], [b]) => String(a).localeCompare(String(b))) + .map(([key, count]) => `${key} x${count}`) + .join(", "); +} + +function scanRawBytes(bytes) { + const text = Buffer.from(bytes).toString("latin1"); + + const filters = new Map(); + for (const match of text.matchAll(/\/Filter\s*(\/[A-Za-z0-9]+|\[[^\]]*\])/g)) { + for (const name of match[1].match(/[A-Za-z0-9]+/g) ?? []) + filters.set(name, (filters.get(name) ?? 0) + 1); + } + + const fonts = new Map(); + for (const match of text.matchAll(/\/BaseFont\s*\/([A-Za-z0-9+\-_]+)/g)) + fonts.set(match[1], /^[A-Z]{6}\+/.test(match[1])); + + const embedded = new Map(); + for (const [key, label] of Object.entries(FONT_FILE_KEYS)) { + const count = text.split(`/${key} `).length - 1; + if (count) + embedded.set(label, count); + } + + return { + filters, + fonts, + embedded, + shadings: tally(text, /\/ShadingType\s+(\d+)/g, (value) => SHADING_TYPES[value] ?? `type ${value}`), + patterns: tally(text, /\/PatternType\s+(\d+)/g, (value) => PATTERN_TYPES[value] ?? `type ${value}`), + imageSMasks: (text.match(/\/SMask\s+\d+\s+\d+\s+R/g) ?? []).length, + luminositySMasks: (text.match(/\/S\s*\/Luminosity/g) ?? []).length, + blendModes: tally(text, /\/BM\s*\/([A-Za-z]+)/g), + transparencyGroups: (text.match(/\/S\s*\/Transparency/g) ?? []).length, + }; +} + +async function analyzePage(page) { + const operatorList = await page.getOperatorList(); + const viewport = page.getViewport({ scale: 1 }); + const annotations = await page.getAnnotations(); + const { styles } = await page.getTextContent(); + + let images = 0; + let clips = 0; + let dashes = 0; + const blendModes = new Set(); + const fonts = new Set(); + + for (let i = 0; i < operatorList.fnArray.length; i++) { + const args = operatorList.argsArray[i]; + switch (operatorList.fnArray[i]) { + case pdfjs.OPS.paintImageXObject: + case pdfjs.OPS.paintInlineImageXObject: + case pdfjs.OPS.paintImageMaskXObject: + images++; + break; + case pdfjs.OPS.clip: + case pdfjs.OPS.eoClip: + clips++; + break; + case pdfjs.OPS.setFont: + fonts.add(args[0]); + break; + case pdfjs.OPS.setDash: + if (args[0]?.length) + dashes++; + break; + case pdfjs.OPS.setGState: + for (const [key, value] of args[0] ?? []) { + if (key === "BM" && value) + blendModes.add(typeof value === "string" ? value : value?.name ?? "unknown"); + } + + break; + default: + break; + } + } + + return { + size: `${Math.round(viewport.width)}x${Math.round(viewport.height)}`, + ops: operatorList.fnArray.length, + images, + clips, + dashes, + fonts, + blendModes, + annotations, + styleNames: Object.keys(styles), + }; +} + +async function main() { + if (!fs.existsSync(DOCUMENT)) + throw new Error(`${path.relative(ROOT, DOCUMENT)} is missing. Run "npm run generate:pdf" first.`); + + const bytes = fs.readFileSync(DOCUMENT); + const raw = scanRawBytes(bytes); + // getDocument transfers the buffer to the worker, so hand it a copy. + const doc = await pdfjs.getDocument({ data: new Uint8Array(bytes), verbosity: pdfjs.VerbosityLevel.ERRORS }).promise; + + const pages = []; + for (let pageNumber = 1; pageNumber <= doc.numPages; pageNumber++) + pages.push(await analyzePage(await doc.getPage(pageNumber))); + + const outline = await doc.getOutline(); + const destinations = await doc.getDestinations(); + const metadata = await doc.getMetadata(); + const structureTree = await (await doc.getPage(3)).getStructTree(); + + let resolvedLinks = 0; + let brokenLinks = 0; + for (const page of pages) { + for (const annotation of page.annotations) { + if (annotation.subtype !== "Link") + continue; + const dest = typeof annotation.dest === "string" ? await doc.getDestination(annotation.dest) : annotation.dest; + if (dest) + resolvedLinks++; + else + brokenLinks++; + } + } + + const outlineLeaves = (outline ?? []).reduce((total, item) => total + 1 + (item.items?.length ?? 0), 0); + const offTier = [...raw.filters.keys()].filter((name) => !FREE_TIER_FILTERS.has(name)); + const ops = pages.map((page) => page.ops).sort((a, b) => a - b); + const allBlendModes = new Set(pages.flatMap((page) => [...page.blendModes])); + const allStyles = new Set(pages.flatMap((page) => page.styleNames)); + const totals = (key) => pages.reduce((sum, page) => sum + page[key], 0); + + console.log(`document ${path.relative(ROOT, DOCUMENT)} (${(bytes.length / 1024).toFixed(0)} KB)`); + console.log(`pages ${doc.numPages}, all ${pages[0].size} pt`); + console.log(`info ${metadata.info.Title} / created ${metadata.info.CreationDate} / ${metadata.info.Producer}`); + console.log(`tagged ${structureTree ? `yes (page 3 root: ${structureTree.role})` : "no"}`); + console.log(""); + console.log(`font programs ${formatTally(raw.embedded)}`); + for (const [name, isSubset] of raw.fonts) + console.log(` ${name}${isSubset ? " [subset]" : " [NOT SUBSET]"}`); + console.log(`pdf.js styles ${[...allStyles].sort().join(", ")}`); + console.log(""); + console.log(`filters ${formatTally(raw.filters)}`); + console.log(`off free tier ${offTier.length ? offTier.join(", ") : "none"}`); + console.log(`shadings ${formatTally(raw.shadings)}`); + console.log(`patterns ${formatTally(raw.patterns)}`); + console.log(`soft masks ${raw.imageSMasks} image SMask, ${raw.luminositySMasks} luminosity, ${raw.transparencyGroups} transparency groups`); + console.log(`blend modes ${formatTally(raw.blendModes)} (reaching the renderer: ${[...allBlendModes].sort().join(", ") || "none"})`); + console.log(""); + console.log(`image paints ${totals("images")}`); + console.log(`clips ${totals("clips")}`); + console.log(`dash changes ${totals("dashes")}`); + console.log(`annotations ${pages.reduce((sum, page) => sum + page.annotations.length, 0)} (${resolvedLinks} links resolve, ${brokenLinks} broken)`); + console.log(`outline ${outline?.length ?? 0} top-level items, ${outlineLeaves} total`); + console.log(`named dests ${destinations instanceof Map ? destinations.size : Object.keys(destinations).length}`); + console.log(`operators min ${ops[0]}, median ${ops[ops.length >> 1]}, max ${ops[ops.length - 1]}`); + console.log(""); + console.log("page ops images clips dashes fonts annots"); + pages.forEach((page, index) => { + const columns = [ + String(index + 1).padStart(4), + String(page.ops).padStart(5), + String(page.images).padStart(7), + String(page.clips).padStart(6), + String(page.dashes).padStart(7), + String(page.fonts.size).padStart(6), + String(page.annotations.length).padStart(7), + ]; + console.log(columns.join(" ")); + }); + + if (offTier.length || brokenLinks) + process.exitCode = 1; +} + +await main(); diff --git a/suites-experimental/pdf-viewer/scripts/generate-pdf.mjs b/suites-experimental/pdf-viewer/scripts/generate-pdf.mjs new file mode 100644 index 000000000..ede480b38 --- /dev/null +++ b/suites-experimental/pdf-viewer/scripts/generate-pdf.mjs @@ -0,0 +1,1165 @@ +// Builds public/document.pdf, the fixture the PDFViewer-PDFjs workload renders. See +// the README for what it covers and why. +// +// The output has to be byte-identical between builds so the committed dist/ does not +// churn, which is why every date in the info dict is pinned - PDFKit derives the file +// /ID from that dict, and CreationDate otherwise defaults to `new Date()`. + +import fs from "node:fs"; +import path from "node:path"; +import zlib from "node:zlib"; +import PDFDocument from "pdfkit"; + +const ROOT = path.resolve(import.meta.dirname, ".."); +const OUTPUT = path.join(ROOT, "public", "document.pdf"); + +const PAGE = { width: 612, height: 792 }; +const MARGIN = 54; +const CONTENT = { left: MARGIN, top: MARGIN, right: PAGE.width - MARGIN, bottom: PAGE.height - MARGIN }; +const CONTENT_WIDTH = CONTENT.right - CONTENT.left; + +const PAGE_COUNT = 24; +const TITLE = "Planetary Observation Review"; +const SUBTITLE = "Instrument baselines, thermal basin transects and launch window logistics"; + +const INK = "#1b1f24"; +const MUTED = "#5c6673"; +const HAIRLINE = "#c9d1d9"; +const ACCENT = "#0b6e8a"; +const ACCENT_WARM = "#c2570b"; +const PAPER_TINT = "#f2f5f7"; + +// Two fontkit subsetting constraints, both of which throw "Offset is outside the +// bounds of the DataView" if broken: use .woff and not the .woff2 alongside it, whose +// glyf transform fontkit mis-reconstructs for composite glyphs, and use a mono face +// without coding ligatures - the ligature glyphs a face like JetBrains Mono +// substitutes for "=>" or "++" fail the same way. +const FONT_FILES = { + Body: "@fontsource/source-serif-4/files/source-serif-4-latin-400-normal.woff", + Heading: "@fontsource/inter/files/inter-latin-700-normal.woff", + Mono: "@fontsource/source-code-pro/files/source-code-pro-latin-400-normal.woff", +}; + +const PHOTOS = { + earth: { file: "earth-apollo17.jpg", alt: "The full disc of the Earth photographed from Apollo 17." }, + earthrise: { file: "earthrise-apollo8.jpg", alt: "The Earth rising above the lunar horizon, photographed from Apollo 8." }, + launch: { file: "apollo11-launch.jpg", alt: "A Saturn V lifting off, with the exhaust plume filling the lower frame." }, + spring: { file: "grand-prismatic-spring.jpg", alt: "An aerial view of a hot spring, ringed by orange microbial mats." }, +}; + +const CHAPTERS = [ + { title: "Instrument Overview", topic: "detector response" }, + { title: "Calibration and Baselines", topic: "baseline drift" }, + { title: "Atmospheric Sampling", topic: "aerosol loading" }, + { title: "Thermal Basin Survey", topic: "basin discharge" }, + { title: "Launch Window Logistics", topic: "ascent corridors" }, + { title: "Appendix: Data Tables", topic: "tabulated residuals" }, +]; + +const MOTIF = ["text", "photo", "chart", "mixed"]; +const MOTIF_TITLES = { + text: "Summary", + photo: "Plates", + chart: "Measurements", + mixed: "Tabulated Results", +}; + +const WORDS = [ + "aerosol", + "albedo", + "altitude", + "ambient", + "analysis", + "aperture", + "apogee", + "array", + "ascent", + "atmosphere", + "azimuth", + "baseline", + "basin", + "bearing", + "calibration", + "caldera", + "canopy", + "cascade", + "channel", + "climate", + "cluster", + "composite", + "conduit", + "contour", + "corridor", + "coverage", + "crater", + "current", + "declination", + "density", + "deposit", + "detector", + "diameter", + "diffuse", + "dispersion", + "drift", + "dynamics", + "eclipse", + "elevation", + "emission", + "ensemble", + "envelope", + "epoch", + "equator", + "erosion", + "estimate", + "exposure", + "feature", + "filament", + "fissure", + "flux", + "forecast", + "fraction", + "fumarole", + "gradient", + "granular", + "gravity", + "harmonic", + "horizon", + "humidity", + "incident", + "inclination", + "injection", + "inlet", + "integral", + "interval", + "inversion", + "isotope", + "kernel", + "lattice", + "layer", + "lidar", + "limb", + "magnitude", + "mantle", + "margin", + "matrix", + "meridian", + "mesa", + "mineral", + "moisture", + "momentum", + "monitor", + "nadir", + "nominal", + "observation", + "occultation", + "opacity", + "orbit", + "outcrop", + "parallax", + "parameter", + "payload", + "penumbra", + "perigee", + "phase", + "plateau", + "plume", + "polarity", + "porosity", + "precision", + "pressure", + "profile", + "projection", + "quadrant", + "radiance", + "radius", + "reflectance", + "refraction", + "regolith", + "residual", + "resolution", + "response", + "ridge", + "runoff", + "salinity", + "sample", + "saturation", + "scatter", + "sediment", + "segment", + "sequence", + "series", + "shear", + "signature", + "silica", + "sinter", + "solstice", + "spectrum", + "stability", + "stratum", + "subsurface", + "survey", + "swath", + "telemetry", + "terrace", + "texture", + "thermal", + "threshold", + "tolerance", + "topography", + "trajectory", + "transect", + "transit", + "travertine", + "turbulence", + "umbra", + "uniform", + "validation", + "variance", + "vector", + "velocity", + "vent", + "viscosity", + "visibility", + "volume", + "vortex", + "wavelength", + "window", + "zenith", +]; + +const CITED = ["Bénard", "Kármán", "Poincaré", "Ångström", "Röntgen", "Møller", "Chandrasekhar", "Prandtl", "Coriolis", "Rayleigh"]; + +const CODE_LINES = [ + "export function residual(track, model) {", + " const window = track.samples.slice(-96);", + " const predicted = model.evaluate(window.map((s) => s.epoch));", + " let sum = 0;", + " for (let i = 0; i < window.length; i++)", + " sum += (window[i].radiance - predicted[i]) ** 2;", + " return Math.sqrt(sum / window.length);", + "}", +]; + +// Seeded, so the body copy and every chart datum are identical on every build. +function createRandom(seed) { + let state = seed >>> 0; + return () => { + state = (Math.imul(state, 1664525) + 1013904223) >>> 0; + return state / 4294967296; + }; +} + +function pick(random, list) { + return list[Math.floor(random() * list.length)]; +} + +function sentence(random, words = 14) { + const parts = []; + for (let i = 0; i < words; i++) + parts.push(pick(random, WORDS)); + if (words > 9) + parts.splice(Math.floor(words / 2), 0, `${pick(random, WORDS)},`); + const text = parts.join(" "); + return `${text[0].toUpperCase()}${text.slice(1)}.`; +} + +function paragraph(random, sentences = 5) { + const parts = []; + for (let i = 0; i < sentences; i++) + parts.push(sentence(random, 9 + Math.floor(random() * 10))); + return parts.join(" "); +} + +const CRC_TABLE = (() => { + const table = new Int32Array(256); + for (let n = 0; n < 256; n++) { + let c = n; + for (let k = 0; k < 8; k++) + c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1; + table[n] = c; + } + return table; +})(); + +function crc32(buffer) { + let c = -1; + for (const byte of buffer) + c = CRC_TABLE[(c ^ byte) & 0xff] ^ (c >>> 8); + return (c ^ -1) >>> 0; +} + +function pngChunk(type, data) { + const chunk = Buffer.alloc(data.length + 12); + chunk.writeUInt32BE(data.length, 0); + chunk.write(type, 4, "ascii"); + data.copy(chunk, 8); + chunk.writeUInt32BE(crc32(chunk.subarray(4, 8 + data.length)), 8 + data.length); + return chunk; +} + +// Minimal RGBA PNG encoder, so the one image with an alpha channel - which is how +// PDFKit is made to emit an /SMask - does not have to be a committed asset. +function encodePng(width, height, rgba) { + const stride = width * 4; + const raw = Buffer.alloc((stride + 1) * height); + for (let y = 0; y < height; y++) { + raw[y * (stride + 1)] = 0; + rgba.copy(raw, y * (stride + 1) + 1, y * stride, (y + 1) * stride); + } + const header = Buffer.alloc(13); + header.writeUInt32BE(width, 0); + header.writeUInt32BE(height, 4); + header[8] = 8; + header[9] = 6; + return Buffer.concat([Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]), pngChunk("IHDR", header), pngChunk("IDAT", zlib.deflateSync(raw, { level: 9 })), pngChunk("IEND", Buffer.alloc(0))]); +} + +// Alpha varies per pixel, so the SMask is a real image decode rather than a flat mask +// pdf.js could shortcut. +function buildSealOverlay(size = 512) { + const rgba = Buffer.alloc(size * size * 4); + const center = (size - 1) / 2; + for (let y = 0; y < size; y++) { + for (let x = 0; x < size; x++) { + const dx = (x - center) / center; + const dy = (y - center) / center; + const radius = Math.hypot(dx, dy); + const outerRing = Math.abs(radius - 0.94) < 0.018 ? 0.9 : 0; + const innerRing = Math.abs(radius - 0.82) < 0.01 ? 0.7 : 0; + const hatch = (x + y) % 26 < 3 ? 0.42 * Math.max(0, 1 - radius) : 0; + const glow = Math.max(0, 0.62 - radius) * 1.1; + const alpha = radius > 0.96 ? 0 : Math.min(1, Math.max(outerRing, innerRing, hatch, glow)); + const offset = (y * size + x) * 4; + rgba[offset] = 252; + rgba[offset + 1] = 250; + rgba[offset + 2] = 244; + rgba[offset + 3] = Math.round(alpha * 255); + } + } + return encodePng(size, size, rgba); +} + +// PDFKit exposes fill and stroke opacity but no blend mode, so reach into the page's +// ExtGState directly. +function setBlendMode(doc, mode) { + doc._blendModes ??= new Map(); + if (!doc._blendModes.has(mode)) { + const gstate = doc.ref({ Type: "ExtGState", BM: mode }); + gstate.end(); + doc._blendModes.set(mode, gstate); + } + doc.page.ext_gstates[`Bm${mode}`] = doc._blendModes.get(mode); + doc.addContent(`/Bm${mode} gs`); +} + +function appendArc(doc, cx, cy, r, from, to, move) { + const steps = Math.max(1, Math.ceil(Math.abs(to - from) / (Math.PI / 2))); + const delta = (to - from) / steps; + const handle = (4 / 3) * Math.tan(delta / 4) * r; + let angle = from; + if (move) + doc.moveTo(cx + r * Math.cos(angle), cy + r * Math.sin(angle)); + for (let i = 0; i < steps; i++) { + const next = angle + delta; + const x0 = cx + r * Math.cos(angle); + const y0 = cy + r * Math.sin(angle); + const x1 = cx + r * Math.cos(next); + const y1 = cy + r * Math.sin(next); + doc.bezierCurveTo(x0 - handle * Math.sin(angle), y0 + handle * Math.cos(angle), x1 + handle * Math.sin(next), y1 - handle * Math.cos(next), x1, y1); + angle = next; + } +} + +// The element has to be attached to its parent before `draw` is added, or PDFKit +// defers the closure and the drawing order stops matching the content stream. +function tagged(doc, parent, type, draw, options = {}) { + const element = doc.struct(type, options); + parent.add(element); + element.add(draw); + element.end(); + return element; +} + +function chapterOf(pageIndex) { + return CHAPTERS[Math.floor((pageIndex - 2) / MOTIF.length)]; +} + +function motifOf(pageIndex) { + return MOTIF[(pageIndex - 2) % MOTIF.length]; +} + +function pageTitle(pageIndex) { + return `${chapterOf(pageIndex).title} — ${MOTIF_TITLES[motifOf(pageIndex)]}`; +} + +// Zero-padded because PDFKit sorts its name tree with localeCompare while the PDF +// spec wants byte order, and readers binary-search the tree. Fixed-width lowercase +// ASCII keys are the one case where the two orderings agree. +function destinationOf(pageIndex) { + return `page-${String(pageIndex + 1).padStart(2, "0")}`; +} + +function drawRunningHead(doc, pageIndex) { + // The footer sits below the bottom margin, and PDFKit starts a new page for any + // text that does. Drop the margin for the duration. + const bottomMargin = doc.page.margins.bottom; + doc.page.margins.bottom = 0; + doc.markContent("Artifact"); + doc.font("Heading") + .fontSize(7.5) + .fillColor(MUTED) + .text(chapterOf(pageIndex).title.toUpperCase(), CONTENT.left, 34, { width: CONTENT_WIDTH * 0.7, lineBreak: false }); + doc.font("Mono") + .fontSize(7.5) + .text(`${pageIndex + 1} / ${PAGE_COUNT}`, CONTENT.left, 34, { width: CONTENT_WIDTH, align: "right", lineBreak: false }); + doc.moveTo(CONTENT.left, 48).lineTo(CONTENT.right, 48).lineWidth(0.5).stroke(HAIRLINE); + doc.moveTo(CONTENT.left, CONTENT.bottom + 12) + .lineTo(CONTENT.right, CONTENT.bottom + 12) + .lineWidth(0.5) + .stroke(HAIRLINE); + doc.font("Body") + .fontSize(8) + .fillColor(MUTED) + .text(TITLE, CONTENT.left, CONTENT.bottom + 20, { width: CONTENT_WIDTH, lineBreak: false }); + doc.endMarkedContent(); + doc.page.margins.bottom = bottomMargin; +} + +function drawPageHeading(doc, section, pageIndex) { + const chapter = chapterOf(pageIndex); + tagged(doc, section, "H2", () => { + doc.font("Mono") + .fontSize(8) + .fillColor(ACCENT) + .text(`SECTION ${CHAPTERS.indexOf(chapter) + 1}.${((pageIndex - 2) % MOTIF.length) + 1}`, CONTENT.left, 62, { characterSpacing: 1.4, lineBreak: false }); + doc.font("Heading") + .fontSize(17) + .fillColor(INK) + .text(pageTitle(pageIndex), CONTENT.left, 76, { width: CONTENT_WIDTH * 0.86 }); + }); + doc.moveTo(CONTENT.left, 108) + .lineTo(CONTENT.left + 64, 108) + .lineWidth(2) + .stroke(ACCENT_WARM); +} + +function drawFrontPage(doc, images, random) { + const section = doc.struct("Sect"); + doc.addStructure(section); + + const mastheadHeight = 210; + const photo = images.spring; + const scale = Math.max(PAGE.width / photo.width, mastheadHeight / photo.height); + + tagged( + doc, + section, + "Figure", + () => { + doc.save().rect(0, 0, PAGE.width, mastheadHeight).clip(); + doc.image(photo, (PAGE.width - photo.width * scale) / 2, (mastheadHeight - photo.height * scale) / 2, { width: photo.width * scale }); + doc.restore(); + }, + { alt: PHOTOS.spring.alt } + ); + + const scrim = doc.linearGradient(0, 0, 0, mastheadHeight); + scrim.stop(0, "#04070c", 0.15).stop(0.5, "#04070c", 0.62).stop(1, "#04070c", 0.92); + doc.rect(0, 0, PAGE.width, mastheadHeight).fill(scrim); + + tagged(doc, section, "H1", () => { + doc.font("Mono").fontSize(8.5).fillColor("#8fd0e4").text("OBSERVING SYSTEMS DIVISION — VOLUME 24", MARGIN, 108, { characterSpacing: 1.6, lineBreak: false }); + doc.font("Heading").fontSize(30).fillColor("#f7fafc").text(TITLE, MARGIN, 124, { width: CONTENT_WIDTH, lineGap: -3 }); + }); + tagged(doc, section, "P", () => { + doc.font("Body").fontSize(11).fillColor("#d3dce4").text(SUBTITLE, MARGIN, 172, { width: 400 }); + }); + + tagged(doc, section, "H2", () => { + doc.font("Mono").fontSize(8).fillColor(ACCENT).text("SUMMARY OF FINDINGS", CONTENT.left, 232, { characterSpacing: 1.4, lineBreak: false }); + }); + doc.moveTo(CONTENT.left, 246).lineTo(CONTENT.right, 246).lineWidth(0.75).stroke(HAIRLINE); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10) + .fillColor(INK) + .text(`${paragraph(random, 4)} ${paragraph(random, 3)}`, CONTENT.left, 258, { width: CONTENT_WIDTH, align: "justify", columns: 2, columnGap: 22, height: 96, ellipsis: true }); + }); + + tagged(doc, section, "H2", () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Key figures by transect", CONTENT.left, 372, { lineBreak: false }); + }); + const tableBottom = drawTable(doc, section, 388, random, { rows: 6 }); + + const halfWidth = (CONTENT_WIDTH - 24) / 2; + const figureTop = tableBottom + 26; + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Channel throughput", CONTENT.left, figureTop, { lineBreak: false }); + drawBarChart(doc, CONTENT.left, figureTop + 16, halfWidth, 96, random); + }, + { alt: "A bar chart of channel throughput, bars filled with a vertical gradient." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading") + .fontSize(9) + .fillColor(INK) + .text("Reference plate", CONTENT.left + halfWidth + 24, figureTop, { lineBreak: false }); + const plateX = CONTENT.left + halfWidth + 24; + const plateY = figureTop + 16; + const plateHeight = 108; + const cover = Math.max(halfWidth / images.earth.width, plateHeight / images.earth.height); + doc.save().rect(plateX, plateY, halfWidth, plateHeight).clip(); + doc.image(images.earth, plateX + (halfWidth - images.earth.width * cover) / 2, plateY + (plateHeight - images.earth.height * cover) / 2, { width: images.earth.width * cover }); + doc.restore(); + }, + { alt: PHOTOS.earth.alt } + ); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(9.5) + .fillColor(MUTED) + .text(`Figure 1 — ${sentence(random, 9)}`, CONTENT.left, figureTop + 130, { width: CONTENT_WIDTH }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10) + .fillColor(INK) + .text(paragraph(random, 3), CONTENT.left, figureTop + 154, { width: CONTENT_WIDTH, align: "justify", height: 712 - figureTop - 154, ellipsis: true }); + }); + + const band = doc.pattern([0, 0, 8, 8], 8, 8, "0 0 8 1.6 re f"); + doc.rect(CONTENT.left, 722, CONTENT_WIDTH, 8).fill([band, ACCENT]); + section.end(); +} + +function drawTableOfContents(doc, images, random) { + const section = doc.struct("Sect"); + doc.addStructure(section); + + const listWidth = 300; + const listRight = CONTENT.left + listWidth; + const asideLeft = listRight + 24; + const asideWidth = CONTENT.right - asideLeft; + + tagged(doc, section, "H1", () => { + doc.font("Heading").fontSize(24).fillColor(INK).text("Contents", CONTENT.left, 84, { lineBreak: false }); + }); + doc.moveTo(CONTENT.left, 120).lineTo(CONTENT.right, 120).lineWidth(1).stroke(HAIRLINE); + + const list = doc.struct("L"); + section.add(list); + + let y = 138; + let lastChapter = null; + for (let pageIndex = 2; pageIndex < PAGE_COUNT; pageIndex++) { + const chapter = chapterOf(pageIndex); + if (chapter !== lastChapter) { + lastChapter = chapter; + const item = doc.struct("LI"); + list.add(item); + tagged(doc, item, "Lbl", () => { + doc.font("Heading").fontSize(9.5).fillColor(ACCENT).text(chapter.title.toUpperCase(), CONTENT.left, y, { width: listWidth, characterSpacing: 0.5, lineBreak: false }); + }); + item.end(); + y += 18; + } + + const label = MOTIF_TITLES[motifOf(pageIndex)]; + const number = String(pageIndex + 1); + doc.font("Body").fontSize(11); + const labelWidth = doc.widthOfString(label); + const numberWidth = doc.widthOfString(number); + + const item = doc.struct("LI"); + list.add(item); + const link = doc.struct("Link"); + item.add(link); + link.add(() => { + doc.fillColor(INK).text(label, CONTENT.left + 18, y, { lineBreak: false }); + doc.fillColor(MUTED).text(number, listRight - numberWidth, y, { lineBreak: false }); + }); + doc.goTo(CONTENT.left + 18, y - 2, listWidth - 18, 14, destinationOf(pageIndex), { structParent: link }); + link.end(); + item.end(); + + doc.save().dash(1, { space: 2.5 }); + doc.moveTo(CONTENT.left + 26 + labelWidth, y + 8) + .lineTo(listRight - numberWidth - 6, y + 8) + .lineWidth(0.5) + .stroke(HAIRLINE); + doc.restore(); + y += 20; + } + list.end(); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Budget by subsystem", asideLeft, 138, { lineBreak: false }); + drawDonutChart(doc, asideLeft + asideWidth / 2, 220, 58, 30, random); + }, + { alt: "A donut chart of the instrument budget, split across five subsystems." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Launch record", asideLeft, 300, { lineBreak: false }); + doc.image(images.launch, asideLeft, 316, { fit: [asideWidth, 132], align: "center", valign: "center" }); + }, + { alt: PHOTOS.launch.alt } + ); + + tagged(doc, section, "P", () => { + doc.font("Body").fontSize(8.5).fillColor(MUTED).text(sentence(random, 10), asideLeft, 456, { width: asideWidth }); + }); + + doc.rect(asideLeft, 500, asideWidth, 92).fill(PAPER_TINT); + tagged(doc, section, "P", () => { + doc.font("Mono").fontSize(7.5).fillColor(INK); + ["transects", "samples", "epochs", "residual"].forEach((label, index) => { + doc.text(label.toUpperCase(), asideLeft + 10, 510 + index * 20, { lineBreak: false }); + doc.text((10 + random() * 900).toFixed(1), asideLeft + 10, 510 + index * 20, { width: asideWidth - 20, align: "right", lineBreak: false }); + }); + }); + + section.end(); +} + +function drawTextPage(doc, section, pageIndex, random) { + const chapter = chapterOf(pageIndex); + const intro = paragraph(random, 4); + const cap = intro[0]; + + tagged(doc, section, "P", () => { + doc.font("Body").fontSize(46).fillColor(ACCENT_WARM).text(cap, CONTENT.left, 122, { lineBreak: false }); + doc.font("Body") + .fontSize(11.5) + .fillColor(INK) + .text(intro.slice(1), CONTENT.left + 40, 126, { width: CONTENT_WIDTH - 40, align: "justify", height: 62, ellipsis: false }); + doc.font("Body").fontSize(11.5).text(paragraph(random, 3), CONTENT.left, 196, { width: CONTENT_WIDTH, align: "justify" }); + }); + + const quoteTop = 262; + doc.rect(CONTENT.left, quoteTop, CONTENT_WIDTH, 76).fill(PAPER_TINT); + doc.rect(CONTENT.left, quoteTop, 3, 76).fill(ACCENT); + tagged(doc, section, "BlockQuote", () => { + doc.font("Body") + .fontSize(14) + .fillColor(INK) + .text(`“The ${chapter.topic} term dominates every residual we could not otherwise explain — ${pick(random, WORDS)} and ${pick(random, WORDS)} alike.”`, CONTENT.left + 22, quoteTop + 14, { width: CONTENT_WIDTH - 44, align: "left" }); + doc.font("Heading") + .fontSize(8.5) + .fillColor(MUTED) + .text(`— ${pick(random, CITED)}, working note ${100 + Math.floor(random() * 800)}`, CONTENT.left + 22, quoteTop + 58, { lineBreak: false }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10.5) + .fillColor(INK) + .text(`${paragraph(random, 8)} ${paragraph(random, 8)} ${paragraph(random, 7)}`, CONTENT.left, quoteTop + 96, { + width: CONTENT_WIDTH, + align: "justify", + columns: 2, + columnGap: 22, + height: CONTENT.bottom - quoteTop - 96, + ellipsis: true, + }); + }); +} + +function drawPhotoPage(doc, section, pageIndex, random, images) { + const keys = ["spring", "launch", "earthrise", "earth"]; + // A different lead photo per page, so the four decodes are spread across the + // document rather than landing in whichever prefix gets rendered. + const primaryKey = keys[Math.floor((pageIndex - 3) / MOTIF.length) % keys.length]; + const primary = images[primaryKey]; + const cappedHeight = Math.min((CONTENT_WIDTH * primary.height) / primary.width, 250); + const cappedWidth = (cappedHeight * primary.width) / primary.height; + + tagged( + doc, + section, + "Figure", + () => { + doc.image(primary, CONTENT.left + (CONTENT_WIDTH - cappedWidth) / 2, 124, { width: cappedWidth }); + }, + { alt: PHOTOS[primaryKey].alt } + ); + + tagged(doc, section, "Caption", () => { + doc.font("Body") + .fontSize(9) + .fillColor(MUTED) + .text(`Plate ${pageIndex + 1}.1 — ${sentence(random, 11)}`, CONTENT.left, 132 + cappedHeight, { width: CONTENT_WIDTH }); + }); + + const rowTop = 170 + cappedHeight; + const halfWidth = (CONTENT_WIDTH - 18) / 2; + const secondaryKeys = keys.filter((key) => key !== primaryKey); + const left = images[secondaryKeys[0]]; + const right = images[secondaryKeys[1]]; + const leftHeight = Math.min((halfWidth * left.height) / left.width, 150); + const rightHeight = Math.min((halfWidth * right.height) / right.width, 150); + + tagged( + doc, + section, + "Figure", + () => { + doc.image(left, CONTENT.left, rowTop, { fit: [halfWidth, leftHeight], align: "center", valign: "center" }); + }, + { alt: PHOTOS[secondaryKeys[0]].alt } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.image(right, CONTENT.left + halfWidth + 18, rowTop, { fit: [halfWidth, rightHeight], align: "center", valign: "center" }); + // The seal is an RGBA PNG, so PDFKit emits it with an /SMask. + doc.image(images.seal, CONTENT.left + halfWidth + 18 + halfWidth / 2 - 55, rowTop + rightHeight / 2 - 55, { width: 110 }); + }, + { alt: PHOTOS[secondaryKeys[1]].alt } + ); + + const captionTop = rowTop + Math.max(leftHeight, rightHeight) + 10; + tagged(doc, section, "Caption", () => { + doc.font("Body") + .fontSize(9) + .fillColor(MUTED) + .text(`Plate ${pageIndex + 1}.2 — ${sentence(random, 8)}`, CONTENT.left, captionTop, { width: halfWidth }); + doc.font("Body") + .fontSize(9) + .fillColor(MUTED) + .text(`Plate ${pageIndex + 1}.3 — ${sentence(random, 8)} Survey seal applied.`, CONTENT.left + halfWidth + 18, captionTop, { width: halfWidth }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10.5) + .fillColor(INK) + .text(`${paragraph(random, 5)} ${paragraph(random, 5)}`, CONTENT.left, captionTop + 40, { width: CONTENT_WIDTH, align: "justify", height: CONTENT.bottom - captionTop - 40, ellipsis: true }); + }); +} + +function drawLineChart(doc, x, y, width, height, random) { + doc.rect(x, y, width, height).lineWidth(0.75).stroke(HAIRLINE); + for (let i = 1; i < 4; i++) { + const gridY = y + (height * i) / 4; + doc.save() + .dash(2, { space: 3 }) + .moveTo(x, gridY) + .lineTo(x + width, gridY) + .lineWidth(0.5) + .stroke(HAIRLINE) + .restore(); + } + + const dashes = [null, [4, 2], [1, 2]]; + const colors = [ACCENT, ACCENT_WARM, "#6b7f2f"]; + const points = 26; + for (let series = 0; series < 3; series++) { + doc.save(); + if (dashes[series]) + doc.dash(dashes[series][0], { space: dashes[series][1] }); + let value = 0.35 + series * 0.18; + for (let i = 0; i < points; i++) { + value = Math.min(0.95, Math.max(0.05, value + (random() - 0.5) * 0.16)); + const px = x + (width * i) / (points - 1); + const py = y + height - value * height; + if (i === 0) + doc.moveTo(px, py); + else + doc.lineTo(px, py); + } + doc.lineWidth(1.25).stroke(colors[series]); + doc.restore(); + } + + doc.font("Mono").fontSize(6.5).fillColor(MUTED); + for (let i = 0; i <= 4; i++) { + doc.text(String(2002 + i * 5), x + (width * i) / 4 - 10, y + height + 5, { lineBreak: false }); + doc.text(String(100 - i * 25), x - 24, y + (height * i) / 4 - 3, { width: 20, align: "right", lineBreak: false }); + } +} + +function drawBarChart(doc, x, y, width, height, random) { + const bars = 9; + const gap = 6; + const barWidth = (width - gap * (bars - 1)) / bars; + for (let i = 0; i < bars; i++) { + const value = 0.25 + random() * 0.72; + const barHeight = value * height; + const barX = x + i * (barWidth + gap); + const gradient = doc.linearGradient(barX, y + height - barHeight, barX, y + height); + gradient.stop(0, ACCENT).stop(1, "#9fd8e8"); + doc.rect(barX, y + height - barHeight, barWidth, barHeight).fill(gradient); + doc.font("Mono") + .fontSize(6) + .fillColor(MUTED) + .text(String(Math.round(value * 100)), barX, y + height + 4, { width: barWidth, align: "center", lineBreak: false }); + } + doc.moveTo(x, y + height) + .lineTo(x + width, y + height) + .lineWidth(0.75) + .stroke(HAIRLINE); +} + +function drawDonutChart(doc, cx, cy, outer, inner, random) { + const weights = []; + let total = 0; + for (let i = 0; i < 5; i++) { + const weight = 0.6 + random(); + weights.push(weight); + total += weight; + } + const palette = [ACCENT, ACCENT_WARM, "#6b7f2f", "#8a5bb0", "#3f4b57"]; + let angle = -Math.PI / 2; + weights.forEach((weight, index) => { + const next = angle + (weight / total) * Math.PI * 2; + const gradient = doc.radialGradient(cx, cy, inner, cx, cy, outer); + gradient.stop(0, "#ffffff").stop(0.35, palette[index]).stop(1, palette[index]); + appendArc(doc, cx, cy, outer, angle, next, true); + doc.lineTo(cx + inner * Math.cos(next), cy + inner * Math.sin(next)); + appendArc(doc, cx, cy, inner, next, angle, false); + doc.closePath().fill(gradient); + angle = next; + }); + doc.circle(cx, cy, inner).lineWidth(0.75).stroke("#ffffff"); +} + +function drawScatterPlot(doc, x, y, width, height, random) { + doc.rect(x, y, width, height).lineWidth(0.75).stroke(HAIRLINE); + doc.save().rect(x, y, width, height).clip(); + // Half the cloud is generated outside the frame on purpose, so the clip does work. + for (let i = 0; i < 220; i++) { + const px = x - width * 0.3 + random() * width * 1.6; + const py = y - height * 0.3 + random() * height * 1.6; + doc.circle(px, py, 1.4 + random() * 2.6) + .fillOpacity(0.35) + .fill(i % 3 === 0 ? ACCENT_WARM : ACCENT); + } + doc.fillOpacity(1); + doc.restore(); +} + +function drawChartPage(doc, section, pageIndex, random) { + const columnWidth = (CONTENT_WIDTH - 26) / 2; + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Radiance residual by epoch", CONTENT.left, 124, { lineBreak: false }); + drawLineChart(doc, CONTENT.left + 26, 140, CONTENT_WIDTH - 26, 150, random); + }, + { alt: "A line chart with three dashed series tracking radiance residuals." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Channel throughput", CONTENT.left, 322, { lineBreak: false }); + drawBarChart(doc, CONTENT.left, 338, columnWidth, 130, random); + }, + { alt: "A bar chart of channel throughput, bars filled with a vertical gradient." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading") + .fontSize(9) + .fillColor(INK) + .text("Budget by subsystem", CONTENT.left + columnWidth + 26, 322, { lineBreak: false }); + drawDonutChart(doc, CONTENT.left + columnWidth + 26 + columnWidth / 2, 404, 64, 34, random); + }, + { alt: "A donut chart of the instrument budget, split across five subsystems." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Sample dispersion", CONTENT.left, 500, { lineBreak: false }); + drawScatterPlot(doc, CONTENT.left, 516, columnWidth, 130, random); + }, + { alt: "A scatter plot of sample dispersion, clipped to its frame." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading") + .fontSize(9) + .fillColor(INK) + .text("Coverage band", CONTENT.left + columnWidth + 26, 500, { lineBreak: false }); + const stripe = doc.pattern([0, 0, 10, 10], 10, 10, "0 0 m 10 10 l 1.6 w S"); + doc.rect(CONTENT.left + columnWidth + 26, 516, columnWidth, 130).fill([stripe, ACCENT]); + doc.rect(CONTENT.left + columnWidth + 26, 516, columnWidth, 130) + .lineWidth(0.75) + .stroke(HAIRLINE); + }, + { alt: "A band filled with a diagonal hatch pattern, standing in for survey coverage." } + ); + + tagged(doc, section, "Caption", () => { + doc.font("Body") + .fontSize(9) + .fillColor(MUTED) + .text(`Figure ${pageIndex + 1} — ${sentence(random, 10)}`, CONTENT.left, 660, { width: CONTENT_WIDTH }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10) + .fillColor(INK) + .text(paragraph(random, 4), CONTENT.left, 686, { width: CONTENT_WIDTH, align: "justify", height: CONTENT.bottom - 686, ellipsis: true }); + }); +} + +function drawTable(doc, section, top, random, { rows = 11 } = {}) { + const columns = [150, 78, 78, 88, 110]; + const rowHeight = 19; + const headers = ["Transect", "Samples", "Mean", "Residual", "Confidence"]; + + doc.rect(CONTENT.left, top, CONTENT_WIDTH, rowHeight).fill(INK); + for (let i = 1; i < rows; i += 2) + doc.rect(CONTENT.left, top + rowHeight * i, CONTENT_WIDTH, rowHeight).fill(PAPER_TINT); + + const table = doc.struct("Table"); + section.add(table); + + const headerRow = doc.struct("TR"); + table.add(headerRow); + let x = CONTENT.left; + headers.forEach((header, index) => { + const cellX = x; + tagged( + doc, + headerRow, + "TH", + () => { + doc.font("Heading") + .fontSize(8) + .fillColor("#ffffff") + .text(header.toUpperCase(), cellX + 7, top + 6, { width: columns[index] - 14, align: index === 0 ? "left" : "right", characterSpacing: 0.5, lineBreak: false }); + }, + { scope: "Column" } + ); + x += columns[index]; + }); + headerRow.end(); + + for (let row = 1; row < rows; row++) { + const y = top + rowHeight * row; + const dataRow = doc.struct("TR"); + table.add(dataRow); + const samples = 40 + Math.floor(random() * 260); + const mean = 0.4 + random() * 4.2; + const residual = (random() - 0.5) * 1.4; + const values = [`${pick(random, WORDS)} ${row}`, String(samples), mean.toFixed(3), residual.toFixed(3), `± ${(0.02 + random() * 0.18).toFixed(3)}`]; + x = CONTENT.left; + values.forEach((value, index) => { + const cellX = x; + tagged(doc, dataRow, "TD", () => { + doc.font(index === 0 ? "Body" : "Mono") + .fontSize(index === 0 ? 9.5 : 8) + .fillColor(index === 3 && residual < 0 ? ACCENT_WARM : INK) + .text(value, cellX + 7, top + rowHeight * row + 6, { width: columns[index] - 14, align: index === 0 ? "left" : "right", lineBreak: false }); + }); + x += columns[index]; + }); + dataRow.end(); + doc.moveTo(CONTENT.left, y).lineTo(CONTENT.right, y).lineWidth(0.4).stroke(HAIRLINE); + } + table.end(); + + doc.rect(CONTENT.left, top, CONTENT_WIDTH, rowHeight * rows) + .lineWidth(0.75) + .stroke(HAIRLINE); + x = CONTENT.left; + for (let i = 0; i < columns.length - 1; i++) { + x += columns[i]; + doc.moveTo(x, top) + .lineTo(x, top + rowHeight * rows) + .lineWidth(0.4) + .stroke(HAIRLINE); + } + return top + rowHeight * rows; +} + +function drawMixedPage(doc, section, pageIndex, random, images) { + const tableBottom = drawTable(doc, section, 126, random); + + const codeTop = tableBottom + 22; + doc.roundedRect(CONTENT.left, codeTop, CONTENT_WIDTH, 108, 4).fill("#111820"); + tagged(doc, section, "Code", () => { + doc.font("Mono").fontSize(8).fillColor("#d8e2ea"); + CODE_LINES.forEach((line, index) => { + doc.text(line, CONTENT.left + 12, codeTop + 10 + index * 11.5, { lineBreak: false }); + }); + }); + + const bandTop = codeTop + 126; + const bandHeight = 104; + doc.save(); + setBlendMode(doc, "Multiply"); + doc.circle(CONTENT.left + 62, bandTop + 38, 34).fill(ACCENT); + doc.circle(CONTENT.left + 100, bandTop + 38, 34).fill(ACCENT_WARM); + setBlendMode(doc, "Screen"); + doc.circle(CONTENT.left + 81, bandTop + 62, 34).fill("#6b7f2f"); + doc.restore(); + + const thumbWidth = 128; + tagged( + doc, + section, + "Figure", + () => { + doc.image(images.earthrise, CONTENT.right - thumbWidth, bandTop, { fit: [thumbWidth, bandHeight], align: "center", valign: "center" }); + }, + { alt: PHOTOS.earthrise.alt } + ); + + const asideLeft = CONTENT.left + 148; + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10) + .fillColor(INK) + .text(paragraph(random, 3), asideLeft, bandTop, { width: CONTENT.right - thumbWidth - 16 - asideLeft, align: "left", height: bandHeight, ellipsis: true }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(9.5) + .fillColor(MUTED) + .text(`References: ${CITED.slice(0, 5).join(", ")}. Compiled for section ${CHAPTERS.indexOf(chapterOf(pageIndex)) + 1}.`, CONTENT.left, bandTop + bandHeight + 16, { width: CONTENT_WIDTH }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10) + .fillColor(INK) + .text(`${paragraph(random, 5)} ${paragraph(random, 5)}`, CONTENT.left, bandTop + bandHeight + 42, { width: CONTENT_WIDTH, align: "justify", height: CONTENT.bottom - bandTop - bandHeight - 42, ellipsis: true }); + }); +} + +function buildDocument() { + const doc = new PDFDocument({ + size: [PAGE.width, PAGE.height], + margin: MARGIN, + autoFirstPage: false, + tagged: true, + displayTitle: true, + lang: "en-US", + pdfVersion: "1.7", + info: { + Title: TITLE, + Author: "Speedometer", + Subject: SUBTITLE, + Keywords: "speedometer, pdf.js, benchmark fixture", + Creator: "Speedometer PDFViewer-PDFjs generate-pdf.mjs", + CreationDate: new Date(0), + ModDate: new Date(0), + }, + }); + + for (const [name, file] of Object.entries(FONT_FILES)) + doc.registerFont(name, fs.readFileSync(path.join(ROOT, "node_modules", file))); + + const images = { seal: doc.openImage(buildSealOverlay()) }; + for (const [key, photo] of Object.entries(PHOTOS)) + images[key] = doc.openImage(fs.readFileSync(path.join(ROOT, "assets", photo.file))); + + doc.addPage(); + doc.addNamedDestination(destinationOf(0)); + drawFrontPage(doc, images, createRandom(0x5eed0001)); + + doc.addPage(); + doc.addNamedDestination(destinationOf(1)); + drawTableOfContents(doc, images, createRandom(0x5eed0002)); + + for (let pageIndex = 2; pageIndex < PAGE_COUNT; pageIndex++) { + doc.addPage(); + doc.addNamedDestination(destinationOf(pageIndex)); + // Seeded per page so a page always renders the same content no matter how many + // pages the workload's complexity param asks for. + const random = createRandom(0x5eed0000 + pageIndex * 7919); + drawRunningHead(doc, pageIndex); + const section = doc.struct("Sect", { title: pageTitle(pageIndex) }); + doc.addStructure(section); + drawPageHeading(doc, section, pageIndex); + switch (motifOf(pageIndex)) { + case "text": + drawTextPage(doc, section, pageIndex, random); + break; + case "photo": + drawPhotoPage(doc, section, pageIndex, random, images); + break; + case "chart": + drawChartPage(doc, section, pageIndex, random); + break; + default: + drawMixedPage(doc, section, pageIndex, random, images); + } + section.end(); + } + + // The outline needs page refs, so it can only be built once every page exists. + doc.outline.addItem("Front page", { pageNumber: 0 }); + doc.outline.addItem("Contents", { pageNumber: 1 }); + CHAPTERS.forEach((chapter, index) => { + const item = doc.outline.addItem(chapter.title, { pageNumber: 2 + index * MOTIF.length, expanded: true }); + for (let offset = 0; offset < MOTIF.length; offset++) { + const pageIndex = 2 + index * MOTIF.length + offset; + if (pageIndex < PAGE_COUNT) + item.addItem(MOTIF_TITLES[motifOf(pageIndex)], { pageNumber: pageIndex }); + } + }); + + return doc; +} + +async function main() { + const doc = buildDocument(); + const chunks = []; + doc.on("data", (chunk) => chunks.push(chunk)); + const done = new Promise((resolve) => doc.on("end", resolve)); + doc.end(); + await done; + + const buffer = Buffer.concat(chunks); + fs.mkdirSync(path.dirname(OUTPUT), { recursive: true }); + fs.writeFileSync(OUTPUT, buffer); + console.log(`Wrote ${path.relative(ROOT, OUTPUT)}: ${PAGE_COUNT} pages, ${(buffer.length / 1024).toFixed(0)} KB`); +} + +await main(); diff --git a/suites-experimental/pdf-viewer/src/chrome.js b/suites-experimental/pdf-viewer/src/chrome.js new file mode 100644 index 000000000..a7c848314 --- /dev/null +++ b/suites-experimental/pdf-viewer/src/chrome.js @@ -0,0 +1,108 @@ +// The chrome Firefox puts around an embedded pdf.js, rebuilt here rather than taken +// from pdf.js' web/ viewer, which is a whole application and would drag in the render +// queue and the scroll, scale and find debounces the workload avoids. +// +// The buttons are inert: wiring zoom would mean rebuilding canvases mid-step. + +const TOOLBAR_GROUPS = [ + ["views-manager", "separator", "page-number"], + ["zoom-out", "zoom-level", "zoom-in"], + ["search", "separator", "highlight", "free-text", "ink", "separator", "download", "print", "secondary"], +]; + +const SIDEBAR_TABS = ["thumbnails", "outline", "attachments", "layers"]; + +function button(icon, label) { + const element = document.createElement("button"); + element.className = "pdf-toolbar-button"; + element.dataset.icon = icon; + element.type = "button"; + element.title = label; + element.setAttribute("aria-label", label); + return element; +} + +function separator() { + const element = document.createElement("span"); + element.className = "pdf-toolbar-separator"; + return element; +} + +function pageNumberField(pageCount) { + const wrapper = document.createElement("span"); + wrapper.className = "pdf-page-field"; + + const input = document.createElement("input"); + input.className = "pdf-page-input"; + input.type = "text"; + input.value = "1"; + input.readOnly = true; + input.setAttribute("aria-label", "Page"); + + const total = document.createElement("span"); + total.className = "pdf-page-total"; + total.textContent = `of ${pageCount}`; + + wrapper.append(input, total); + return wrapper; +} + +function zoomLevel(scale) { + const element = document.createElement("span"); + element.className = "pdf-zoom-level"; + element.textContent = `${Math.round(scale * 100)}%`; + return element; +} + +const TOOLBAR_LABELS = { + "views-manager": "Toggle sidebar", + "zoom-out": "Zoom out", + "zoom-in": "Zoom in", + search: "Find in document", + highlight: "Highlight", + "free-text": "Add text", + ink: "Draw", + download: "Save", + print: "Print", + secondary: "Tools", +}; + +export function buildToolbar(element, { pageCount, scale }) { + const groups = TOOLBAR_GROUPS.map((items, index) => { + const group = document.createElement("div"); + group.className = index === TOOLBAR_GROUPS.length - 1 ? "pdf-toolbar-group pdf-toolbar-group-end" : "pdf-toolbar-group"; + for (const item of items) { + if (item === "separator") + group.append(separator()); + else if (item === "page-number") + group.append(pageNumberField(pageCount)); + else if (item === "zoom-level") + group.append(zoomLevel(scale)); + else + group.append(button(item, TOOLBAR_LABELS[item])); + } + return group; + }); + element.replaceChildren(...groups); +} + +/** + * Returns the panel the thumbnails go into. Only the active tab's panel is populated, + * as in pdf.js' viewer, which builds the others the first time their tab is opened. + */ +export function buildSidebar(element) { + const strip = document.createElement("div"); + strip.className = "pdf-sidebar-tabs"; + for (const tab of SIDEBAR_TABS) { + const control = button(`view-${tab}`, `Show ${tab}`); + control.classList.add("pdf-sidebar-tab"); + control.classList.toggle("pdf-sidebar-tab-active", tab === "thumbnails"); + strip.append(control); + } + + const panel = document.createElement("div"); + panel.className = "pdf-thumbnails"; + + element.replaceChildren(strip, panel); + return panel; +} diff --git a/suites-experimental/pdf-viewer/src/main.js b/suites-experimental/pdf-viewer/src/main.js new file mode 100644 index 000000000..8514d9a5c --- /dev/null +++ b/suites-experimental/pdf-viewer/src/main.js @@ -0,0 +1,65 @@ +import { getDocument, GlobalWorkerOptions, VerbosityLevel } from "pdfjs-dist/build/pdf.mjs"; +import PdfWorker from "pdfjs-dist/build/pdf.worker.mjs?worker"; +import { BenchmarkConnector } from "speedometer-utils/benchmark.mjs"; +import { buildSidebar, buildToolbar } from "./chrome.js"; +import { PdfViewer } from "./viewer.js"; +import createSuites, { appName, appVersion } from "./workload-test.mjs"; + +const DOCUMENT_URL = "document.pdf"; + +// Pages wrap into a grid, so this constant alone decides how many fit per row. 0.67 is +// the tallest a US Letter page can be in the area the toolbar and sidebar leave over. +const PAGE_SCALE = 0.67; +const THUMBNAIL_WIDTH = 130; +const DEFAULT_OUTPUT_SCALE = 2; + +/** + * Pinned rather than read from devicePixelRatio, so the workload rasterises the same + * number of pixels everywhere. The harness only forwards params it knows about, so + * `pdfPixelRatio` has to be set on the suite's own url, not the harness url. + */ +function readOutputScale() { + const raw = new URLSearchParams(window.location.search).get("pdfPixelRatio"); + if (raw === null) + return DEFAULT_OUTPUT_SCALE; + const value = Number(raw); + if (!Number.isFinite(value) || value <= 0) { + console.error(`Invalid pdfPixelRatio param: '${raw}', expected a positive number.`); + return DEFAULT_OUTPUT_SCALE; + } + return value; +} + +// Everything that is not rendering happens before the app-ready message, and so +// outside every measured window: worker boot, the fetch, getDocument and every getPage. +async function main() { + GlobalWorkerOptions.workerPort = new PdfWorker(); + + const response = await fetch(new URL(DOCUMENT_URL, document.baseURI)); + if (!response.ok) + throw new Error(`Could not load ${DOCUMENT_URL}: ${response.status} ${response.statusText}`); + + const pdfDocument = await getDocument({ + data: await response.arrayBuffer(), + // Everything the document needs is embedded, so never substitute a local face. + useSystemFonts: false, + verbosity: VerbosityLevel.ERRORS, + }).promise; + + buildToolbar(document.getElementById("toolbar"), { pageCount: pdfDocument.numPages, scale: PAGE_SCALE }); + const thumbnails = buildSidebar(document.getElementById("sidebar")); + + const viewer = new PdfViewer({ pages: document.getElementById("viewer"), thumbnails }, pdfDocument, { + scale: PAGE_SCALE, + outputScale: readOutputScale(), + thumbnailWidth: THUMBNAIL_WIDTH, + }); + await viewer.layout(); + + new BenchmarkConnector(createSuites(viewer), appName, appVersion).connect(); +} + +main().catch((error) => { + console.error(error); + document.getElementById("viewer").textContent = `Failed to load the document: ${error.message}`; +}); diff --git a/suites-experimental/pdf-viewer/src/styles.css b/suites-experimental/pdf-viewer/src/styles.css new file mode 100644 index 000000000..df239eac1 --- /dev/null +++ b/suites-experimental/pdf-viewer/src/styles.css @@ -0,0 +1,248 @@ +html, +body { + margin: 0; + padding: 0; + background-color: #2a2a2e; + color: #f9f9fa; + font-family: system-ui, sans-serif; + font-size: 12px; +} + +.pdf-app { + display: flex; + flex-direction: column; + height: 100vh; +} + +.pdf-body { + display: flex; + flex: 1 1 auto; + min-height: 0; +} + +/* Toolbar */ + +.pdf-toolbar { + display: flex; + flex: 0 0 36px; + align-items: center; + gap: 8px; + padding: 0 6px; + background-color: #38383d; + border-bottom: 1px solid #0c0c0d; +} + +.pdf-toolbar-group { + display: flex; + align-items: center; + gap: 2px; +} + +.pdf-toolbar-group-end { + margin-left: auto; +} + +.pdf-toolbar-separator { + width: 1px; + height: 18px; + margin: 0 4px; + background-color: #5b5b60; +} + +.pdf-toolbar-button { + display: flex; + width: 26px; + height: 26px; + align-items: center; + justify-content: center; + padding: 0; + border: none; + border-radius: 3px; + background-color: transparent; + color: #f9f9fa; +} + +.pdf-toolbar-button::before { + display: block; + width: 16px; + height: 16px; + background-color: currentcolor; + content: ""; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; +} + +.pdf-page-field { + display: flex; + align-items: center; + gap: 6px; +} + +.pdf-page-input { + width: 30px; + padding: 3px 4px; + border: 1px solid #0c0c0d; + border-radius: 3px; + background-color: #2a2a2e; + color: #f9f9fa; + font: inherit; + text-align: end; +} + +.pdf-page-total, +.pdf-zoom-level { + min-width: 34px; + color: #cfcfd3; + text-align: center; +} + +/* Sidebar */ + +.pdf-sidebar { + display: flex; + flex: 0 0 200px; + flex-direction: column; + background-color: #313134; + border-right: 1px solid #0c0c0d; +} + +.pdf-sidebar-tabs { + display: flex; + flex: 0 0 auto; + gap: 2px; + padding: 4px 6px; + border-bottom: 1px solid #0c0c0d; +} + +.pdf-sidebar-tab-active { + background-color: #4b4b50; +} + +.pdf-thumbnails { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-items: center; + gap: 4px; + padding: 10px 0; + overflow-y: auto; +} + +.pdf-thumbnail { + display: flex; + flex: 0 0 auto; + flex-direction: column; + align-items: center; + gap: 2px; +} + +.pdf-thumbnail-box { + background-color: #ffffff; + box-shadow: 0 0 0 1px #0c0c0d; +} + +.pdf-thumbnail-canvas { + display: block; +} + +.pdf-thumbnail-label { + color: #cfcfd3; + font-size: 10px; +} + +/* Pages */ + +.pdf-viewer { + display: flex; + flex: 1 1 auto; + flex-wrap: wrap; + align-content: flex-start; + justify-content: center; + gap: 10px; + padding: 10px; + overflow-y: auto; +} + +.pdf-page { + flex: 0 0 auto; + background-color: #ffffff; + box-shadow: 0 1px 4px rgb(0 0 0 / 40%); +} + +.pdf-page-canvas { + display: block; +} + +/* Icons, from pdfjs-dist's web/images (Apache-2.0). */ + +.pdf-toolbar-button[data-icon="views-manager"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewsManagerToggle.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewsManagerToggle.svg); +} + +.pdf-toolbar-button[data-icon="zoom-out"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-zoomOut.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-zoomOut.svg); +} + +.pdf-toolbar-button[data-icon="zoom-in"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-zoomIn.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-zoomIn.svg); +} + +.pdf-toolbar-button[data-icon="search"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-search.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-search.svg); +} + +.pdf-toolbar-button[data-icon="highlight"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorHighlight.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorHighlight.svg); +} + +.pdf-toolbar-button[data-icon="free-text"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorFreeText.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorFreeText.svg); +} + +.pdf-toolbar-button[data-icon="ink"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorInk.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorInk.svg); +} + +.pdf-toolbar-button[data-icon="download"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-download.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-download.svg); +} + +.pdf-toolbar-button[data-icon="print"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-print.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-print.svg); +} + +.pdf-toolbar-button[data-icon="secondary"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-secondaryToolbarToggle.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-secondaryToolbarToggle.svg); +} + +.pdf-toolbar-button[data-icon="view-thumbnails"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewThumbnail.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewThumbnail.svg); +} + +.pdf-toolbar-button[data-icon="view-outline"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewOutline.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewOutline.svg); +} + +.pdf-toolbar-button[data-icon="view-attachments"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewAttachments.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewAttachments.svg); +} + +.pdf-toolbar-button[data-icon="view-layers"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewLayers.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewLayers.svg); +} diff --git a/suites-experimental/pdf-viewer/src/viewer.js b/suites-experimental/pdf-viewer/src/viewer.js new file mode 100644 index 000000000..f5bae93a1 --- /dev/null +++ b/suites-experimental/pdf-viewer/src/viewer.js @@ -0,0 +1,107 @@ +/** + * A viewer on the pdf.js core API rather than pdf_viewer.mjs, whose render queue, + * scroll and scale handlers and find controller all schedule work with setTimeout - + * any of those timers firing inside a measured step would charge browser scheduling to + * the score. + */ +export class PdfViewer { + #pageContainer; + #thumbnailContainer; + #document; + #scale; + #outputScale; + #thumbnailWidth; + #pages = []; + + constructor({ pages, thumbnails }, pdfDocument, { scale, outputScale, thumbnailWidth }) { + this.#pageContainer = pages; + this.#thumbnailContainer = thumbnails; + this.#document = pdfDocument; + this.#scale = scale; + this.#outputScale = outputScale; + this.#thumbnailWidth = thumbnailWidth; + } + + get pageCount() { + return this.#pages.length; + } + + /** + * Nothing is rendered here on purpose: pdf.js caches the operator list on the + * PDFPageProxy, so rendering a page ahead of the step - including as a thumbnail - + * would hand that step a warm cache and measure almost nothing. + */ + async layout() { + const pageNumbers = Array.from({ length: this.#document.numPages }, (_, index) => index + 1); + const proxies = await Promise.all(pageNumbers.map((pageNumber) => this.#document.getPage(pageNumber))); + + const pageFragment = document.createDocumentFragment(); + const thumbnailFragment = document.createDocumentFragment(); + + this.#pages = proxies.map((proxy, index) => { + const unscaled = proxy.getViewport({ scale: 1 }); + const viewport = proxy.getViewport({ scale: this.#scale }); + const element = document.createElement("div"); + element.className = "pdf-page"; + element.style.width = `${Math.floor(viewport.width)}px`; + element.style.height = `${Math.floor(viewport.height)}px`; + pageFragment.append(element); + + const thumbnailViewport = proxy.getViewport({ scale: this.#thumbnailWidth / unscaled.width }); + const thumbnail = document.createElement("div"); + thumbnail.className = "pdf-thumbnail"; + const thumbnailBox = document.createElement("div"); + thumbnailBox.className = "pdf-thumbnail-box"; + thumbnailBox.style.width = `${Math.floor(thumbnailViewport.width)}px`; + thumbnailBox.style.height = `${Math.floor(thumbnailViewport.height)}px`; + const label = document.createElement("span"); + label.className = "pdf-thumbnail-label"; + label.textContent = String(index + 1); + thumbnail.append(thumbnailBox, label); + thumbnailFragment.append(thumbnail); + + return { proxy, viewport, element, thumbnailViewport, thumbnailBox, canvas: null }; + }); + + this.#pageContainer.replaceChildren(pageFragment); + this.#thumbnailContainer.replaceChildren(thumbnailFragment); + } + + /** + * The pages overlap rather than running one after another: awaiting each in turn + * would leave the step mostly idle, waiting on the worker to parse the next page's + * operator list. + */ + async renderPages(startIndex, count) { + const end = Math.min(startIndex + count, this.#pages.length); + const renders = []; + for (let index = startIndex; index < end; index++) + renders.push(this.#renderPage(this.#pages[index])); + await Promise.all(renders); + } + + #createCanvas(viewport, className) { + const canvas = document.createElement("canvas"); + canvas.className = className; + canvas.width = Math.floor(viewport.width * this.#outputScale); + canvas.height = Math.floor(viewport.height * this.#outputScale); + canvas.style.width = `${Math.floor(viewport.width)}px`; + canvas.style.height = `${Math.floor(viewport.height)}px`; + return canvas; + } + + async #renderPage(page) { + const { proxy, viewport, element, thumbnailViewport, thumbnailBox } = page; + const transform = this.#outputScale === 1 ? null : [this.#outputScale, 0, 0, this.#outputScale, 0, 0]; + + const canvas = this.#createCanvas(viewport, "pdf-page-canvas"); + element.replaceChildren(canvas); + page.canvas = canvas; + + const thumbnailCanvas = this.#createCanvas(thumbnailViewport, "pdf-thumbnail-canvas"); + thumbnailBox.replaceChildren(thumbnailCanvas); + + await proxy.render({ canvas, viewport, transform }).promise; + await proxy.render({ canvas: thumbnailCanvas, viewport: thumbnailViewport, transform }).promise; + } +} diff --git a/suites-experimental/pdf-viewer/src/workload-test.mjs b/suites-experimental/pdf-viewer/src/workload-test.mjs new file mode 100644 index 000000000..9bc4c7912 --- /dev/null +++ b/suites-experimental/pdf-viewer/src/workload-test.mjs @@ -0,0 +1,41 @@ +import { AsyncBenchmarkStep, AsyncBenchmarkSuite } from "speedometer-utils/benchmark.mjs"; +import { params } from "speedometer-utils/params.mjs"; + +export const appName = "pdf-viewer"; +export const appVersion = "1.0.0"; + +// Six is the smallest run that reaches one page of each of the document's four +// layouts, which start after the front page and the table of contents. +const DEFAULT_PAGES_TO_RENDER = 6; + +export function getNumberOfPagesToRender(pageCount) { + return Math.max(1, Math.min(pageCount, Math.round(DEFAULT_PAGES_TO_RENDER * params.complexity))); +} + +/** + * pdf.js chunks every display-intent render on requestAnimationFrame, capped at 15ms of + * operator-list work per chunk, so without this a 60ms page waits for four real frames + * and the suite scores differently on a 60Hz and a 120Hz display. + * + * Scoped to the step, not installed at page load: the step scheduler runs in this same + * frame for a remote suite, and a global shim would rewrite its frame scheduling too. + * It registers both of its frame callbacks before the step body runs, so this only ever + * reaches pdf.js. + */ +async function withoutAnimationFrames(render) { + const { requestAnimationFrame, cancelAnimationFrame } = window; + window.requestAnimationFrame = (callback) => window.setTimeout(() => callback(performance.now()), 0); + window.cancelAnimationFrame = (handle) => window.clearTimeout(handle); + try { + await render(); + } finally { + window.requestAnimationFrame = requestAnimationFrame; + window.cancelAnimationFrame = cancelAnimationFrame; + } +} + +export default function createSuites(viewer) { + return { + default: new AsyncBenchmarkSuite("PDFViewer-PDFjs", [new AsyncBenchmarkStep("RenderPages", () => withoutAnimationFrames(() => viewer.renderPages(0, getNumberOfPagesToRender(viewer.pageCount))))]), + }; +} diff --git a/suites-experimental/pdf-viewer/vite.config.js b/suites-experimental/pdf-viewer/vite.config.js new file mode 100644 index 000000000..b004b6b5f --- /dev/null +++ b/suites-experimental/pdf-viewer/vite.config.js @@ -0,0 +1,48 @@ +import { fileURLToPath } from "node:url"; +import { defineConfig } from "vite"; +import { generateResourcesFile } from "../../resources/shared/generate-resources.mjs"; + +const rootDir = fileURLToPath(new URL(".", import.meta.url)); + +// The suite entry declares a resources.txt, which tests/unittests/suites.mjs validates. +function resourcesManifest() { + return { + name: "pdf-viewer-resources-manifest", + closeBundle() { + generateResourcesFile(new URL("dist", import.meta.url).pathname); + }, + }; +} + +export default defineConfig({ + // The harness loads dist/ from the repo root. + base: "./", + plugins: [resourcesManifest()], + // pdf.worker.mjs is an ES module, so it has to be bundled as one. + worker: { + format: "es", + rollupOptions: { + output: { + entryFileNames: "assets/[name].js", + chunkFileNames: "assets/[name].js", + assetFileNames: "assets/[name].[ext]", + }, + }, + }, + build: { + modulePreload: { polyfill: false }, + // pdfjs-dist ships pdf.mjs unminified and leaves minification to the bundler. + minify: "esbuild", + sourcemap: true, + rollupOptions: { + input: { + index: `${rootDir}index.html`, + }, + output: { + entryFileNames: "assets/[name].js", + chunkFileNames: "assets/[name].js", + assetFileNames: "assets/[name].[ext]", + }, + }, + }, +}); diff --git a/suites-experimental/suites.mjs b/suites-experimental/suites.mjs index 2e4496c79..979d0a866 100644 --- a/suites-experimental/suites.mjs +++ b/suites-experimental/suites.mjs @@ -190,6 +190,14 @@ export const ExperimentalSuites = freezeSuites([ name: "default", // optional param to target non-default tests locally }, */ }, + { + name: "PDFViewer-PDFjs", + url: "suites-experimental/pdf-viewer/dist/index.html", + resources: "suites-experimental/pdf-viewer/dist/resources.txt", + tags: ["pdf", "experimental"], + async prepare() {}, + type: "remote", + }, { name: "Responsive-Design", url: "suites-experimental/responsive-design/dist/index.html", diff --git a/tests/index.html b/tests/index.html index a6bc60a3b..f09c29f68 100644 --- a/tests/index.html +++ b/tests/index.html @@ -27,6 +27,7 @@ }, }); + await import("./unittests/benchmark.mjs"); await import("./unittests/benchmark-runner.mjs"); await import("./unittests/params.mjs"); await import("./unittests/suites.mjs"); diff --git a/tests/unittests/benchmark-runner.mjs b/tests/unittests/benchmark-runner.mjs index b2a692281..a95a28790 100644 --- a/tests/unittests/benchmark-runner.mjs +++ b/tests/unittests/benchmark-runner.mjs @@ -265,7 +265,7 @@ describe("BenchmarkRunner", () => { it("should run StepRunner and return { syncTime, asyncTime }", async () => { const step = new BenchmarkTestStep("SyncStep", sinon.stub()); - const runner = new StepRunner(null, null, params, suite, step, "default"); + const runner = new StepRunner(null, null, params, suite, step); const { syncTime, asyncTime } = await runner.runStep(); expect(typeof syncTime).to.equal("number"); expect(typeof asyncTime).to.equal("number"); @@ -277,7 +277,7 @@ describe("BenchmarkRunner", () => { "AsyncStep", sinon.stub().callsFake(async () => {}) ); - const runner = new AsyncStepRunner(null, null, params, suite, asyncStep, "async"); + const runner = new AsyncStepRunner(null, null, params, suite, asyncStep); const { syncTime, asyncTime } = await runner.runStep(); expect(typeof syncTime).to.equal("number"); expect(typeof asyncTime).to.equal("number"); diff --git a/tests/unittests/benchmark.mjs b/tests/unittests/benchmark.mjs new file mode 100644 index 000000000..de111707b --- /dev/null +++ b/tests/unittests/benchmark.mjs @@ -0,0 +1,54 @@ +import { AsyncBenchmarkStep, AsyncBenchmarkSuite, BenchmarkStep, BenchmarkSuite } from "../../resources/shared/benchmark.mjs"; +import { Params } from "../../resources/shared/params.mjs"; +import { skipInShell } from "../../resources/shared/helpers.mjs"; + +const SLEEP_MS = 200; + +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +describe("BenchmarkSuite", () => { + let params; + + before(function () { + // The step schedulers need requestAnimationFrame and a document. + skipInShell(this); + params = new Params(); + }); + + it("should measure the work of a sync step", async () => { + const suite = new BenchmarkSuite("SyncProbe", [ + new BenchmarkStep("BusyStep", () => { + const start = performance.now(); + while (performance.now() - start < SLEEP_MS) + continue; + }), + ]); + + const { result } = await suite.runAndRecordSuite(params); + + expect(result.tests.BusyStep.tests.Sync).to.be.greaterThan(SLEEP_MS * 0.9); + expect(result.total).to.be.greaterThan(SLEEP_MS * 0.9); + }); +}); + +describe("AsyncBenchmarkSuite", () => { + let params; + + before(function () { + skipInShell(this); + params = new Params(); + }); + + // AsyncBenchmarkStep used to construct its AsyncStepRunner without a type, leaving + // StepRunner on the non-awaiting branch, so this reported ~0ms. + it("should measure the work of a step that resolves asynchronously", async () => { + const suite = new AsyncBenchmarkSuite("AsyncProbe", [new AsyncBenchmarkStep("SleepingStep", () => sleep(SLEEP_MS))]); + + const { result } = await suite.runAndRecordSuite(params); + + expect(result.tests.SleepingStep.tests.Sync).to.be.greaterThan(SLEEP_MS * 0.9); + expect(result.total).to.be.greaterThan(SLEEP_MS * 0.9); + }); +});