Import PDF.js v2.12.313 to the WebKit repo
authoraakash_jain@apple.com <aakash_jain@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Feb 2022 22:19:06 +0000 (22:19 +0000)
committeraakash_jain@apple.com <aakash_jain@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Feb 2022 22:19:06 +0000 (22:19 +0000)
https://bugs.webkit.org/show_bug.cgi?id=236452

Patch by Tim Nguyen <ntim@apple.com> on 2022-02-10
Reviewed by Brent Fulgham.

Add bundle from https://mozilla.github.io/pdf.js/getting_started/#download (Modern browsers version)

Delete the following:
- Sourcemaps (.js.map files)
- Example PDF file (compressed.tracemonkey-pldi-09.pdf)

* pdfjs/LICENSE: Added.
* pdfjs/build/pdf.js: Added.
(webpackUniversalModuleDefinition):
(return.):
(return):
* pdfjs/build/pdf.sandbox.js: Added.
(webpackUniversalModuleDefinition):
(return.):
* pdfjs/build/pdf.worker.js: Added.
(webpackUniversalModuleDefinition):
(return.):
(return):
* pdfjs/web/cmaps/78-EUC-H.bcmap: Added.
* pdfjs/web/cmaps/78-EUC-V.bcmap: Added.
* pdfjs/web/cmaps/78-H.bcmap: Added.
* pdfjs/web/cmaps/78-RKSJ-H.bcmap: Added.
* pdfjs/web/cmaps/78-RKSJ-V.bcmap: Added.
* pdfjs/web/cmaps/78-V.bcmap: Added.
* pdfjs/web/cmaps/78ms-RKSJ-H.bcmap: Added.
* pdfjs/web/cmaps/78ms-RKSJ-V.bcmap: Added.
* pdfjs/web/cmaps/83pv-RKSJ-H.bcmap: Added.
* pdfjs/web/cmaps/90ms-RKSJ-H.bcmap: Added.
* pdfjs/web/cmaps/90ms-RKSJ-V.bcmap: Added.
* pdfjs/web/cmaps/90msp-RKSJ-H.bcmap: Added.
* pdfjs/web/cmaps/90msp-RKSJ-V.bcmap: Added.
* pdfjs/web/cmaps/90pv-RKSJ-H.bcmap: Added.
* pdfjs/web/cmaps/90pv-RKSJ-V.bcmap: Added.
* pdfjs/web/cmaps/Add-H.bcmap: Added.
* pdfjs/web/cmaps/Add-RKSJ-H.bcmap: Added.
* pdfjs/web/cmaps/Add-RKSJ-V.bcmap: Added.
* pdfjs/web/cmaps/Add-V.bcmap: Added.
* pdfjs/web/cmaps/Adobe-CNS1-0.bcmap: Added.
* pdfjs/web/cmaps/Adobe-CNS1-1.bcmap: Added.
* pdfjs/web/cmaps/Adobe-CNS1-2.bcmap: Added.
* pdfjs/web/cmaps/Adobe-CNS1-3.bcmap: Added.
* pdfjs/web/cmaps/Adobe-CNS1-4.bcmap: Added.
* pdfjs/web/cmaps/Adobe-CNS1-5.bcmap: Added.
* pdfjs/web/cmaps/Adobe-CNS1-6.bcmap: Added.
* pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap: Added.
* pdfjs/web/cmaps/Adobe-GB1-0.bcmap: Added.
* pdfjs/web/cmaps/Adobe-GB1-1.bcmap: Added.
* pdfjs/web/cmaps/Adobe-GB1-2.bcmap: Added.
* pdfjs/web/cmaps/Adobe-GB1-3.bcmap: Added.
* pdfjs/web/cmaps/Adobe-GB1-4.bcmap: Added.
* pdfjs/web/cmaps/Adobe-GB1-5.bcmap: Added.
* pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Japan1-0.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Japan1-1.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Japan1-2.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Japan1-3.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Japan1-4.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Japan1-5.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Japan1-6.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Korea1-0.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Korea1-1.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Korea1-2.bcmap: Added.
* pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap: Added.
* pdfjs/web/cmaps/B5-H.bcmap: Added.
* pdfjs/web/cmaps/B5-V.bcmap: Added.
* pdfjs/web/cmaps/B5pc-H.bcmap: Added.
* pdfjs/web/cmaps/B5pc-V.bcmap: Added.
* pdfjs/web/cmaps/CNS-EUC-H.bcmap: Added.
* pdfjs/web/cmaps/CNS-EUC-V.bcmap: Added.
* pdfjs/web/cmaps/CNS1-H.bcmap: Added.
* pdfjs/web/cmaps/CNS1-V.bcmap: Added.
* pdfjs/web/cmaps/CNS2-H.bcmap: Added.
* pdfjs/web/cmaps/CNS2-V.bcmap: Added.
* pdfjs/web/cmaps/ETHK-B5-H.bcmap: Added.
* pdfjs/web/cmaps/ETHK-B5-V.bcmap: Added.
* pdfjs/web/cmaps/ETen-B5-H.bcmap: Added.
* pdfjs/web/cmaps/ETen-B5-V.bcmap: Added.
* pdfjs/web/cmaps/ETenms-B5-H.bcmap: Added.
* pdfjs/web/cmaps/ETenms-B5-V.bcmap: Added.
* pdfjs/web/cmaps/EUC-H.bcmap: Added.
* pdfjs/web/cmaps/EUC-V.bcmap: Added.
* pdfjs/web/cmaps/Ext-H.bcmap: Added.
* pdfjs/web/cmaps/Ext-RKSJ-H.bcmap: Added.
* pdfjs/web/cmaps/Ext-RKSJ-V.bcmap: Added.
* pdfjs/web/cmaps/Ext-V.bcmap: Added.
* pdfjs/web/cmaps/GB-EUC-H.bcmap: Added.
* pdfjs/web/cmaps/GB-EUC-V.bcmap: Added.
* pdfjs/web/cmaps/GB-H.bcmap: Added.
* pdfjs/web/cmaps/GB-V.bcmap: Added.
* pdfjs/web/cmaps/GBK-EUC-H.bcmap: Added.
* pdfjs/web/cmaps/GBK-EUC-V.bcmap: Added.
* pdfjs/web/cmaps/GBK2K-H.bcmap: Added.
* pdfjs/web/cmaps/GBK2K-V.bcmap: Added.
* pdfjs/web/cmaps/GBKp-EUC-H.bcmap: Added.
* pdfjs/web/cmaps/GBKp-EUC-V.bcmap: Added.
* pdfjs/web/cmaps/GBT-EUC-H.bcmap: Added.
* pdfjs/web/cmaps/GBT-EUC-V.bcmap: Added.
* pdfjs/web/cmaps/GBT-H.bcmap: Added.
* pdfjs/web/cmaps/GBT-V.bcmap: Added.
* pdfjs/web/cmaps/GBTpc-EUC-H.bcmap: Added.
* pdfjs/web/cmaps/GBTpc-EUC-V.bcmap: Added.
* pdfjs/web/cmaps/GBpc-EUC-H.bcmap: Added.
* pdfjs/web/cmaps/GBpc-EUC-V.bcmap: Added.
* pdfjs/web/cmaps/H.bcmap: Added.
* pdfjs/web/cmaps/HKdla-B5-H.bcmap: Added.
* pdfjs/web/cmaps/HKdla-B5-V.bcmap: Added.
* pdfjs/web/cmaps/HKdlb-B5-H.bcmap: Added.
* pdfjs/web/cmaps/HKdlb-B5-V.bcmap: Added.
* pdfjs/web/cmaps/HKgccs-B5-H.bcmap: Added.
* pdfjs/web/cmaps/HKgccs-B5-V.bcmap: Added.
* pdfjs/web/cmaps/HKm314-B5-H.bcmap: Added.
* pdfjs/web/cmaps/HKm314-B5-V.bcmap: Added.
* pdfjs/web/cmaps/HKm471-B5-H.bcmap: Added.
* pdfjs/web/cmaps/HKm471-B5-V.bcmap: Added.
* pdfjs/web/cmaps/HKscs-B5-H.bcmap: Added.
* pdfjs/web/cmaps/HKscs-B5-V.bcmap: Added.
* pdfjs/web/cmaps/Hankaku.bcmap: Added.
* pdfjs/web/cmaps/Hiragana.bcmap: Added.
* pdfjs/web/cmaps/KSC-EUC-H.bcmap: Added.
* pdfjs/web/cmaps/KSC-EUC-V.bcmap: Added.
* pdfjs/web/cmaps/KSC-H.bcmap: Added.
* pdfjs/web/cmaps/KSC-Johab-H.bcmap: Added.
* pdfjs/web/cmaps/KSC-Johab-V.bcmap: Added.
* pdfjs/web/cmaps/KSC-V.bcmap: Added.
* pdfjs/web/cmaps/KSCms-UHC-H.bcmap: Added.
* pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap: Added.
* pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap: Added.
* pdfjs/web/cmaps/KSCms-UHC-V.bcmap: Added.
* pdfjs/web/cmaps/KSCpc-EUC-H.bcmap: Added.
* pdfjs/web/cmaps/KSCpc-EUC-V.bcmap: Added.
* pdfjs/web/cmaps/Katakana.bcmap: Added.
* pdfjs/web/cmaps/LICENSE: Added.
* pdfjs/web/cmaps/NWP-H.bcmap: Added.
* pdfjs/web/cmaps/NWP-V.bcmap: Added.
* pdfjs/web/cmaps/RKSJ-H.bcmap: Added.
* pdfjs/web/cmaps/RKSJ-V.bcmap: Added.
* pdfjs/web/cmaps/Roman.bcmap: Added.
* pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap: Added.
* pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap: Added.
* pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap: Added.
* pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap: Added.
* pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap: Added.
* pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap: Added.
* pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap: Added.
* pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap: Added.
* pdfjs/web/cmaps/UniGB-UCS2-H.bcmap: Added.
* pdfjs/web/cmaps/UniGB-UCS2-V.bcmap: Added.
* pdfjs/web/cmaps/UniGB-UTF16-H.bcmap: Added.
* pdfjs/web/cmaps/UniGB-UTF16-V.bcmap: Added.
* pdfjs/web/cmaps/UniGB-UTF32-H.bcmap: Added.
* pdfjs/web/cmaps/UniGB-UTF32-V.bcmap: Added.
* pdfjs/web/cmaps/UniGB-UTF8-H.bcmap: Added.
* pdfjs/web/cmaps/UniGB-UTF8-V.bcmap: Added.
* pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap: Added.
* pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap: Added.
* pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap: Added.
* pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap: Added.
* pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap: Added.
* pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap: Added.
* pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap: Added.
* pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap: Added.
* pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap: Added.
* pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap: Added.
* pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap: Added.
* pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap: Added.
* pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap: Added.
* pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap: Added.
* pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap: Added.
* pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap: Added.
* pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap: Added.
* pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap: Added.
* pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap: Added.
* pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap: Added.
* pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap: Added.
* pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap: Added.
* pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap: Added.
* pdfjs/web/cmaps/UniKS-UCS2-H.bcmap: Added.
* pdfjs/web/cmaps/UniKS-UCS2-V.bcmap: Added.
* pdfjs/web/cmaps/UniKS-UTF16-H.bcmap: Added.
* pdfjs/web/cmaps/UniKS-UTF16-V.bcmap: Added.
* pdfjs/web/cmaps/UniKS-UTF32-H.bcmap: Added.
* pdfjs/web/cmaps/UniKS-UTF32-V.bcmap: Added.
* pdfjs/web/cmaps/UniKS-UTF8-H.bcmap: Added.
* pdfjs/web/cmaps/UniKS-UTF8-V.bcmap: Added.
* pdfjs/web/cmaps/V.bcmap: Added.
* pdfjs/web/cmaps/WP-Symbol.bcmap: Added.
* pdfjs/web/debugger.js: Added.
(FontInspector.FontInspectorClosure.removeSelection):
(FontInspector.FontInspectorClosure.resetSelection):
(FontInspector.FontInspectorClosure.selectFont):
(FontInspector.FontInspectorClosure.textLayerClick):
(FontInspector.FontInspectorClosure.return.init):
(FontInspector.FontInspectorClosure.return.cleanup):
(FontInspector.FontInspectorClosure.return.get active):
(FontInspector.FontInspectorClosure.return.set active):
(FontInspector.FontInspectorClosure.return.properties):
(FontInspector.FontInspectorClosure.return.fontAdded):
(FontInspector):
(StepperManager.StepperManagerClosure.return.init):
(StepperManager.StepperManagerClosure.return.cleanup):
(StepperManager.StepperManagerClosure.return.create):
(StepperManager.StepperManagerClosure.return.selectStepper):
(StepperManager.StepperManagerClosure.return.saveBreakPoints):
(StepperManager):
(const.Stepper.StepperClosure.c):
(const.Stepper.StepperClosure.simplifyArgs):
(const.Stepper.StepperClosure.Stepper):
(const.Stepper.StepperClosure.Stepper.prototype.init):
(const.Stepper.StepperClosure.Stepper.prototype.updateOperatorList.cboxOnClick):
(const.Stepper.StepperClosure.Stepper.prototype.updateOperatorList):
(const.Stepper.StepperClosure.Stepper.prototype.getNextBreakPoint):
(const.Stepper.StepperClosure.Stepper.prototype.breakIt):
(const.Stepper.StepperClosure.Stepper.prototype.goTo):
(const.Stepper):
(Stats.Stats):
(Stats.Stats.getStatIndex):
(Stats):
(window.PDFBug):
* pdfjs/web/images/annotation-check.svg: Added.
* pdfjs/web/images/annotation-comment.svg: Added.
* pdfjs/web/images/annotation-help.svg: Added.
* pdfjs/web/images/annotation-insert.svg: Added.
* pdfjs/web/images/annotation-key.svg: Added.
* pdfjs/web/images/annotation-newparagraph.svg: Added.
* pdfjs/web/images/annotation-noicon.svg: Added.
* pdfjs/web/images/annotation-note.svg: Added.
* pdfjs/web/images/annotation-paragraph.svg: Added.
* pdfjs/web/images/findbarButton-next.svg: Added.
* pdfjs/web/images/findbarButton-previous.svg: Added.
* pdfjs/web/images/grab.cur: Added.
* pdfjs/web/images/grabbing.cur: Added.
* pdfjs/web/images/loading-dark.svg: Added.
* pdfjs/web/images/loading-icon.gif: Added.
* pdfjs/web/images/loading.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-documentProperties.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-firstPage.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-handTool.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-lastPage.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-rotateCw.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-scrollPage.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-selectTool.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-spreadEven.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-spreadNone.svg: Added.
* pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg: Added.
* pdfjs/web/images/shadow.png: Added.
* pdfjs/web/images/toolbarButton-bookmark.svg: Added.
* pdfjs/web/images/toolbarButton-currentOutlineItem.svg: Added.
* pdfjs/web/images/toolbarButton-download.svg: Added.
* pdfjs/web/images/toolbarButton-menuArrow.svg: Added.
* pdfjs/web/images/toolbarButton-openFile.svg: Added.
* pdfjs/web/images/toolbarButton-pageDown.svg: Added.
* pdfjs/web/images/toolbarButton-pageUp.svg: Added.
* pdfjs/web/images/toolbarButton-presentationMode.svg: Added.
* pdfjs/web/images/toolbarButton-print.svg: Added.
* pdfjs/web/images/toolbarButton-search.svg: Added.
* pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg: Added.
* pdfjs/web/images/toolbarButton-sidebarToggle.svg: Added.
* pdfjs/web/images/toolbarButton-viewAttachments.svg: Added.
* pdfjs/web/images/toolbarButton-viewLayers.svg: Added.
* pdfjs/web/images/toolbarButton-viewOutline.svg: Added.
* pdfjs/web/images/toolbarButton-viewThumbnail.svg: Added.
* pdfjs/web/images/toolbarButton-zoomIn.svg: Added.
* pdfjs/web/images/toolbarButton-zoomOut.svg: Added.
* pdfjs/web/images/treeitem-collapsed.svg: Added.
* pdfjs/web/images/treeitem-expanded.svg: Added.
* pdfjs/web/locale/ach/viewer.properties: Added.
* pdfjs/web/locale/af/viewer.properties: Added.
* pdfjs/web/locale/an/viewer.properties: Added.
* pdfjs/web/locale/ar/viewer.properties: Added.
* pdfjs/web/locale/ast/viewer.properties: Added.
* pdfjs/web/locale/az/viewer.properties: Added.
* pdfjs/web/locale/be/viewer.properties: Added.
* pdfjs/web/locale/bg/viewer.properties: Added.
* pdfjs/web/locale/bn/viewer.properties: Added.
* pdfjs/web/locale/bo/viewer.properties: Added.
* pdfjs/web/locale/br/viewer.properties: Added.
* pdfjs/web/locale/brx/viewer.properties: Added.
* pdfjs/web/locale/bs/viewer.properties: Added.
* pdfjs/web/locale/ca/viewer.properties: Added.
* pdfjs/web/locale/cak/viewer.properties: Added.
* pdfjs/web/locale/ckb/viewer.properties: Added.
* pdfjs/web/locale/cs/viewer.properties: Added.
* pdfjs/web/locale/cy/viewer.properties: Added.
* pdfjs/web/locale/da/viewer.properties: Added.
* pdfjs/web/locale/de/viewer.properties: Added.
* pdfjs/web/locale/dsb/viewer.properties: Added.
* pdfjs/web/locale/el/viewer.properties: Added.
* pdfjs/web/locale/en-CA/viewer.properties: Added.
* pdfjs/web/locale/en-GB/viewer.properties: Added.
* pdfjs/web/locale/en-US/viewer.properties: Added.
* pdfjs/web/locale/eo/viewer.properties: Added.
* pdfjs/web/locale/es-AR/viewer.properties: Added.
* pdfjs/web/locale/es-CL/viewer.properties: Added.
* pdfjs/web/locale/es-ES/viewer.properties: Added.
* pdfjs/web/locale/es-MX/viewer.properties: Added.
* pdfjs/web/locale/et/viewer.properties: Added.
* pdfjs/web/locale/eu/viewer.properties: Added.
* pdfjs/web/locale/fa/viewer.properties: Added.
* pdfjs/web/locale/ff/viewer.properties: Added.
* pdfjs/web/locale/fi/viewer.properties: Added.
* pdfjs/web/locale/fr/viewer.properties: Added.
* pdfjs/web/locale/fy-NL/viewer.properties: Added.
* pdfjs/web/locale/ga-IE/viewer.properties: Added.
* pdfjs/web/locale/gd/viewer.properties: Added.
* pdfjs/web/locale/gl/viewer.properties: Added.
* pdfjs/web/locale/gn/viewer.properties: Added.
* pdfjs/web/locale/gu-IN/viewer.properties: Added.
* pdfjs/web/locale/he/viewer.properties: Added.
* pdfjs/web/locale/hi-IN/viewer.properties: Added.
* pdfjs/web/locale/hr/viewer.properties: Added.
* pdfjs/web/locale/hsb/viewer.properties: Added.
* pdfjs/web/locale/hu/viewer.properties: Added.
* pdfjs/web/locale/hy-AM/viewer.properties: Added.
* pdfjs/web/locale/hye/viewer.properties: Added.
* pdfjs/web/locale/ia/viewer.properties: Added.
* pdfjs/web/locale/id/viewer.properties: Added.
* pdfjs/web/locale/is/viewer.properties: Added.
* pdfjs/web/locale/it/viewer.properties: Added.
* pdfjs/web/locale/ja/viewer.properties: Added.
* pdfjs/web/locale/ka/viewer.properties: Added.
* pdfjs/web/locale/kab/viewer.properties: Added.
* pdfjs/web/locale/kk/viewer.properties: Added.
* pdfjs/web/locale/km/viewer.properties: Added.
* pdfjs/web/locale/kn/viewer.properties: Added.
* pdfjs/web/locale/ko/viewer.properties: Added.
* pdfjs/web/locale/lij/viewer.properties: Added.
* pdfjs/web/locale/lo/viewer.properties: Added.
* pdfjs/web/locale/locale.properties: Added.
* pdfjs/web/locale/lt/viewer.properties: Added.
* pdfjs/web/locale/ltg/viewer.properties: Added.
* pdfjs/web/locale/lv/viewer.properties: Added.
* pdfjs/web/locale/meh/viewer.properties: Added.
* pdfjs/web/locale/mk/viewer.properties: Added.
* pdfjs/web/locale/mr/viewer.properties: Added.
* pdfjs/web/locale/ms/viewer.properties: Added.
* pdfjs/web/locale/my/viewer.properties: Added.
* pdfjs/web/locale/nb-NO/viewer.properties: Added.
* pdfjs/web/locale/ne-NP/viewer.properties: Added.
* pdfjs/web/locale/nl/viewer.properties: Added.
* pdfjs/web/locale/nn-NO/viewer.properties: Added.
* pdfjs/web/locale/oc/viewer.properties: Added.
* pdfjs/web/locale/pa-IN/viewer.properties: Added.
* pdfjs/web/locale/pl/viewer.properties: Added.
* pdfjs/web/locale/pt-BR/viewer.properties: Added.
* pdfjs/web/locale/pt-PT/viewer.properties: Added.
* pdfjs/web/locale/rm/viewer.properties: Added.
* pdfjs/web/locale/ro/viewer.properties: Added.
* pdfjs/web/locale/ru/viewer.properties: Added.
* pdfjs/web/locale/sat/viewer.properties: Added.
* pdfjs/web/locale/sc/viewer.properties: Added.
* pdfjs/web/locale/scn/viewer.properties: Added.
* pdfjs/web/locale/sco/viewer.properties: Added.
* pdfjs/web/locale/si/viewer.properties: Added.
* pdfjs/web/locale/sk/viewer.properties: Added.
* pdfjs/web/locale/sl/viewer.properties: Added.
* pdfjs/web/locale/son/viewer.properties: Added.
* pdfjs/web/locale/sq/viewer.properties: Added.
* pdfjs/web/locale/sr/viewer.properties: Added.
* pdfjs/web/locale/sv-SE/viewer.properties: Added.
* pdfjs/web/locale/szl/viewer.properties: Added.
* pdfjs/web/locale/ta/viewer.properties: Added.
* pdfjs/web/locale/te/viewer.properties: Added.
* pdfjs/web/locale/tg/viewer.properties: Added.
* pdfjs/web/locale/th/viewer.properties: Added.
* pdfjs/web/locale/tl/viewer.properties: Added.
* pdfjs/web/locale/tr/viewer.properties: Added.
* pdfjs/web/locale/trs/viewer.properties: Added.
* pdfjs/web/locale/uk/viewer.properties: Added.
* pdfjs/web/locale/ur/viewer.properties: Added.
* pdfjs/web/locale/uz/viewer.properties: Added.
* pdfjs/web/locale/vi/viewer.properties: Added.
* pdfjs/web/locale/wo/viewer.properties: Added.
* pdfjs/web/locale/xh/viewer.properties: Added.
* pdfjs/web/locale/zh-CN/viewer.properties: Added.
* pdfjs/web/locale/zh-TW/viewer.properties: Added.
* pdfjs/web/standard_fonts/FoxitDingbats.pfb: Added.
* pdfjs/web/standard_fonts/FoxitFixed.pfb: Added.
* pdfjs/web/standard_fonts/FoxitFixedBold.pfb: Added.
* pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb: Added.
* pdfjs/web/standard_fonts/FoxitFixedItalic.pfb: Added.
* pdfjs/web/standard_fonts/FoxitSans.pfb: Added.
* pdfjs/web/standard_fonts/FoxitSansBold.pfb: Added.
* pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb: Added.
* pdfjs/web/standard_fonts/FoxitSansItalic.pfb: Added.
* pdfjs/web/standard_fonts/FoxitSerif.pfb: Added.
* pdfjs/web/standard_fonts/FoxitSerifBold.pfb: Added.
* pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb: Added.
* pdfjs/web/standard_fonts/FoxitSerifItalic.pfb: Added.
* pdfjs/web/standard_fonts/FoxitSymbol.pfb: Added.
* pdfjs/web/standard_fonts/LICENSE_FOXIT: Added.
* pdfjs/web/standard_fonts/LICENSE_LIBERATION: Added.
* pdfjs/web/standard_fonts/LiberationSans-Bold.ttf: Added.
* pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf: Added.
* pdfjs/web/standard_fonts/LiberationSans-Italic.ttf: Added.
* pdfjs/web/standard_fonts/LiberationSans-Regular.ttf: Added.
* pdfjs/web/viewer.css: Added.
(.textLayer):
(.textLayer span,):
(.textLayer span.markedContent):
(.textLayer .highlight):
(.textLayer .highlight.appended):
(.textLayer .highlight.begin):
(.textLayer .highlight.end):
(.textLayer .highlight.middle):
(.textLayer .highlight.selected):
(.textLayer ::-moz-selection):
(.textLayer ::selection):
(.textLayer br::-moz-selection):
(.textLayer br::selection):
(.textLayer .endOfContent):
(.textLayer .endOfContent.active):
(:root):
(.annotationLayer section):
(.annotationLayer .linkAnnotation > a,):
(.annotationLayer .buttonWidgetAnnotation.pushButton > canvas):
(.annotationLayer .linkAnnotation > a:hover,):
(.annotationLayer .textAnnotation img):
(.annotationLayer .textWidgetAnnotation input,):
(.annotationLayer .choiceWidgetAnnotation select option):
(.annotationLayer .buttonWidgetAnnotation.radioButton input):
(.annotationLayer .textWidgetAnnotation textarea):
(.annotationLayer .textWidgetAnnotation input[disabled],):
(.annotationLayer .textWidgetAnnotation input:hover,):
(.annotationLayer .textWidgetAnnotation input:focus,):
(.annotationLayer .textWidgetAnnotation input :focus,):
(.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,):
(.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before):
(.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after):
(.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before):
(.annotationLayer .textWidgetAnnotation input.comb):
(.annotationLayer .textWidgetAnnotation input.comb:focus):
(.annotationLayer .buttonWidgetAnnotation.checkBox input,):
(.annotationLayer .popupWrapper):
(.annotationLayer .popup):
(.annotationLayer .popup > *):
(.annotationLayer .popup h1):
(.annotationLayer .popupDate):
(.annotationLayer .popupContent):
(.annotationLayer .richText > *):
(.annotationLayer .highlightAnnotation,):
(.xfaLayer .highlight):
(.xfaLayer .highlight.appended):
(.xfaLayer .highlight.begin):
(.xfaLayer .highlight.end):
(.xfaLayer .highlight.middle):
(.xfaLayer .highlight.selected):
(.xfaLayer ::-moz-selection):
(.xfaLayer ::selection):
(.xfaPage):
(.xfaContentarea):
(.xfaPrintOnly):
(.xfaLayer):
(.xfaLayer *):
(.xfaLayer div):
(.xfaLayer svg):
(.xfaLayer svg *):
(.xfaLayer a):
(.xfaRich li):
(.xfaFont):
(.xfaCaption):
(.xfaCaptionForCheckButton):
(.xfaLabel):
(.xfaLeft):
(.xfaRight):
(.xfaLeft > .xfaCaption,):
(.xfaTop):
(.xfaBottom):
(.xfaTop > .xfaCaption,):
(.xfaBorder):
(.xfaWrapped):
(.xfaTextfield:focus,):
(.xfaCheckbox:focus,):
(.xfaTextfield,):
(.xfaTop > .xfaTextfield,):
(.xfaButton):
(.xfaLink):
(.xfaCheckbox,):
(.xfaRich):
(.xfaImage):
(.xfaLrTb,):
(.xfaLr):
(.xfaRl):
(.xfaTb > div):
(.xfaPosition):
(.xfaArea):
(.xfaValignMiddle):
(.xfaTable):
(.xfaTable .xfaRow):
(.xfaTable .xfaRlRow):
(.xfaTable .xfaRlRow > div):
(.xfaNonInteractive input,):
(@media print .xfaTextfield,):
(@media print .xfaSelect):
(@media screen and (forced-colors: active) :root):
(.pdfViewer):
(.pdfViewer .canvasWrapper):
(.pdfViewer .page):
(.pdfViewer .dummyPage):
(.pdfViewer.removePageBorders .page):
(.pdfViewer.singlePageView):
(.pdfViewer.singlePageView .page):
(.pdfViewer.scrollHorizontal,):
(.pdfViewer.removePageBorders,):
(.spread .page,):
(.pdfViewer.removePageBorders .spread .page,):
(.pdfViewer .page canvas):
(.pdfViewer .page canvas[hidden]):
(.pdfViewer .page .loadingIcon):
(.pdfViewer .page .loadingIcon.notVisible):
(.pdfViewer.enablePermissions .textLayer span):
(.pdfPresentationMode .pdfViewer):
(.pdfPresentationMode .spread):
(.pdfPresentationMode .pdfViewer .page):
(@media (prefers-color-scheme: dark) :root):
(*):
(html):
(body):
(body,):
(.hidden):
([hidden]):
(#viewerContainer.pdfPresentationMode:-webkit-full-screen):
(#viewerContainer.pdfPresentationMode:fullscreen):
(.pdfPresentationMode:-webkit-full-screen a:not(.internalLink)):
(.pdfPresentationMode:fullscreen a:not(.internalLink)):
(.pdfPresentationMode:-webkit-full-screen .textLayer span):
(.pdfPresentationMode:fullscreen .textLayer span):
(.pdfPresentationMode.pdfPresentationModeControls > *,):
(#outerContainer):
(#sidebarContainer):
(html[dir="ltr"] #sidebarContainer):
(html[dir="rtl"] #sidebarContainer):
(#outerContainer.sidebarResizing #sidebarContainer):
(#outerContainer.sidebarMoving #sidebarContainer,):
(html[dir="ltr"] #outerContainer.sidebarOpen #sidebarContainer):
(html[dir="rtl"] #outerContainer.sidebarOpen #sidebarContainer):
(#mainContainer):
(#sidebarContent):
(html[dir="ltr"] #sidebarContent):
(html[dir="rtl"] #sidebarContent):
(#viewerContainer):
(#viewerContainer:not(.pdfPresentationMode)):
(#outerContainer.sidebarResizing #viewerContainer):
(html[dir="ltr"]):
(html[dir="rtl"]):
(.toolbar):
(#toolbarContainer):
(#toolbarSidebar):
(html[dir="ltr"] #toolbarSidebar):
(html[dir="rtl"] #toolbarSidebar):
(html[dir="ltr"] #toolbarSidebar .toolbarButton):
(html[dir="rtl"] #toolbarSidebar .toolbarButton):
(html[dir="ltr"] #toolbarSidebarRight .toolbarButton):
(html[dir="rtl"] #toolbarSidebarRight .toolbarButton):
(#sidebarResizer):
(html[dir="ltr"] #sidebarResizer):
(html[dir="rtl"] #sidebarResizer):
(#toolbarContainer,):
(#toolbarViewer):
(#loadingBar):
(html[dir="ltr"] #loadingBar):
(html[dir="rtl"] #loadingBar):
(html[dir="ltr"] #outerContainer.sidebarOpen #loadingBar):
(html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar):
(#outerContainer.sidebarResizing #loadingBar):
(#loadingBar .progress):
(@-webkit-keyframes progressIndeterminate):
(100%):
(@keyframes progressIndeterminate):
(#loadingBar .progress.indeterminate):
(#loadingBar .progress.indeterminate .glimmer):
(.findbar,):
(.findbar):
(.findbar > div):
(.findbar.wrapContainers > div):
(.findbar.wrapContainers > div#findbarMessageContainer):
(html[dir="ltr"] .findbar):
(html[dir="rtl"] .findbar):
(.findbar .splitToolbarButton):
(html[dir="ltr"] .findbar .splitToolbarButton):
(html[dir="rtl"] .findbar .splitToolbarButton):
(.findbar .splitToolbarButton > .toolbarButton):
(.findbar .splitToolbarButton > .toolbarButton::before):
(.findbar .splitToolbarButton > .findNext):
(html[dir="ltr"] .findbar .splitToolbarButton > .findNext):
(html[dir="rtl"] .findbar .splitToolbarButton > .findNext):
(.findbar input[type="checkbox"]):
(.findbar label):
(.findbar label:hover,):
(html[dir="ltr"] #findInput):
(html[dir="rtl"] #findInput):
(.findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel):
(#findInput):
(#findInput::-moz-placeholder):
(#findInput::placeholder):
(#findInput[data-status="pending"]):
(html[dir="rtl"] #findInput[data-status="pending"]):
(#findInput[data-status="notFound"]):
(.secondaryToolbar):
(html[dir="ltr"] .secondaryToolbar):
(html[dir="rtl"] .secondaryToolbar):
(#secondaryToolbarButtonContainer):
(.doorHanger,):
(.doorHanger:after,):
(.doorHanger:after):
(.doorHangerRight:after):
(.doorHanger:before,):
(html[dir="ltr"] .doorHanger:after,):
(html[dir="ltr"] .doorHanger:before,):
(html[dir="rtl"] .doorHanger:after,):
(html[dir="rtl"] .doorHanger:before,):
(#findResultsCount):
(#findMsg):
(#findMsg:empty):
(#toolbarViewerMiddle):
(html[dir="ltr"] #toolbarViewerLeft,):
(html[dir="ltr"] #toolbarViewerRight,):
(html[dir="ltr"] #toolbarViewerLeft > *,):
(html[dir="rtl"] #toolbarViewerLeft > *,):
(.splitToolbarButton):
(html[dir="ltr"] .splitToolbarButton > .toolbarButton):
(html[dir="rtl"] .splitToolbarButton > .toolbarButton):
(.toolbarButton,):
(.overlayButton:hover,):
(.overlayButton:hover > span,):
(.toolbarButton > span):
(.toolbarButton[disabled],):
(.splitToolbarButton.toggled .toolbarButton):
(.splitToolbarButton > .toolbarButton:hover,):
(.splitToolbarButton > .toolbarButton):
(html[dir="ltr"] .splitToolbarButton > .toolbarButton:first-child,):
(html[dir="ltr"] .splitToolbarButton > .toolbarButton:last-child,):
(.splitToolbarButtonSeparator):
(.findbar .splitToolbarButtonSeparator):
(html[dir="ltr"] .splitToolbarButtonSeparator):
(html[dir="rtl"] .splitToolbarButtonSeparator):
(html[dir="ltr"] #toolbarViewerLeft > .toolbarButton:first-child,):
(html[dir="ltr"] #toolbarViewerRight > .toolbarButton:last-child,):
(.toolbarButton:hover,):
(.secondaryToolbarButton:hover,):
(.toolbarButton.toggled,):
(.secondaryToolbarButton.toggled::before):
(.toolbarButton.toggled::before):
(.toolbarButton.toggled:hover:active,):
(.dropdownToolbarButton):
(.dropdownToolbarButton::after):
(html[dir="ltr"] .dropdownToolbarButton::after):
(html[dir="rtl"] .dropdownToolbarButton::after):
(.dropdownToolbarButton > select):
(html[dir="ltr"] .dropdownToolbarButton > select):
(html[dir="rtl"] .dropdownToolbarButton > select):
(.dropdownToolbarButton > select:hover,):
(.dropdownToolbarButton > select > option):
(#customScaleOption):
(#pageWidthOption):
(.toolbarButtonSpacer):
(.toolbarButton::before,):
(.dropdownToolbarButton:hover::after,):
(.toolbarButton::before):
(.toolbarButton:hover::before,):
(.secondaryToolbarButton::before):
(html[dir="ltr"] .secondaryToolbarButton::before):
(html[dir="rtl"] .secondaryToolbarButton::before):
(.toolbarButton#sidebarToggle::before):
(html[dir="rtl"] .toolbarButton#sidebarToggle::before):
(.toolbarButton#secondaryToolbarToggle::before):
(html[dir="rtl"] .toolbarButton#secondaryToolbarToggle::before):
(.toolbarButton.findPrevious::before):
(.toolbarButton.findNext::before):
(.toolbarButton.pageUp::before):
(.toolbarButton.pageDown::before):
(.toolbarButton.zoomOut::before):
(.toolbarButton.zoomIn::before):
(.toolbarButton.presentationMode::before,):
(.toolbarButton.print::before,):
(.toolbarButton.openFile::before,):
(.toolbarButton.download::before,):
(.secondaryToolbarButton.bookmark):
(.bookmark[href="#"]):
(.toolbarButton.bookmark::before,):
(#viewThumbnail.toolbarButton::before):
(#viewOutline.toolbarButton::before):
(html[dir="rtl"] #viewOutline.toolbarButton::before):
(#viewAttachments.toolbarButton::before):
(#viewLayers.toolbarButton::before):
(#currentOutlineItem.toolbarButton::before):
(html[dir="rtl"] #currentOutlineItem.toolbarButton::before):
(#viewFind.toolbarButton::before):
(.toolbarButton.pdfSidebarNotification::after):
(html[dir="ltr"] .toolbarButton.pdfSidebarNotification::after):
(html[dir="rtl"] .toolbarButton.pdfSidebarNotification::after):
(.secondaryToolbarButton):
(html[dir="ltr"] .secondaryToolbarButton):
(html[dir="rtl"] .secondaryToolbarButton):
(html[dir="ltr"] .secondaryToolbarButton > span):
(html[dir="rtl"] .secondaryToolbarButton > span):
(.secondaryToolbarButton.firstPage::before):
(.secondaryToolbarButton.lastPage::before):
(.secondaryToolbarButton.rotateCcw::before):
(.secondaryToolbarButton.rotateCw::before):
(.secondaryToolbarButton.selectTool::before):
(.secondaryToolbarButton.handTool::before):
(.secondaryToolbarButton.scrollPage::before):
(.secondaryToolbarButton.scrollVertical::before):
(.secondaryToolbarButton.scrollHorizontal::before):
(.secondaryToolbarButton.scrollWrapped::before):
(.secondaryToolbarButton.spreadNone::before):
(.secondaryToolbarButton.spreadOdd::before):
(.secondaryToolbarButton.spreadEven::before):
(.secondaryToolbarButton.documentProperties::before):
(.verticalToolbarSeparator):
(html[dir="ltr"] .verticalToolbarSeparator):
(html[dir="rtl"] .verticalToolbarSeparator):
(.horizontalToolbarSeparator):
(.toolbarField):
(.toolbarField[type="checkbox"]):
(html[dir="ltr"] .toolbarField[type="checkbox"]):
(html[dir="rtl"] .toolbarField[type="checkbox"]):
(.toolbarField.pageNumber):
(.toolbarField.pageNumber.visiblePageIsLoading):
(.toolbarField.pageNumber::-webkit-inner-spin-button,):
(.toolbarField:focus):
(.toolbarLabel):
(html[dir="ltr"] #numPages.toolbarLabel):
(html[dir="rtl"] #numPages.toolbarLabel):
(#thumbnailView):
(#thumbnailView > a:active,):
(.thumbnail):
(html[dir="ltr"] .thumbnail):
(html[dir="rtl"] .thumbnail):
(#thumbnailView > a:last-of-type > .thumbnail):
(#thumbnailView > a:last-of-type > .thumbnail:not([data-loaded])):
(.thumbnail:not([data-loaded])):
(.thumbnailImage):
(.thumbnailSelectionRing):
(a:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage,):
(a:focus > .thumbnail > .thumbnailSelectionRing,):
(.thumbnail.selected > .thumbnailSelectionRing > .thumbnailImage):
(.thumbnail.selected > .thumbnailSelectionRing):
(#outlineView,):
(html[dir="ltr"] .treeWithDeepNesting > .treeItem,):
(html[dir="rtl"] .treeWithDeepNesting > .treeItem,):
(.treeItem > a):
(html[dir="ltr"] .treeItem > a):
(html[dir="rtl"] .treeItem > a):
(#layersView .treeItem > a > *):
(html[dir="ltr"] #layersView .treeItem > a > label):
(html[dir="rtl"] #layersView .treesItem > a > label):
(.treeItemToggler):
(.treeItemToggler::before):
(.treeItemToggler.treeItemsHidden::before):
(html[dir="rtl"] .treeItemToggler.treeItemsHidden::before):
(.treeItemToggler.treeItemsHidden ~ .treeItems):
(html[dir="ltr"] .treeItemToggler):
(html[dir="rtl"] .treeItemToggler):
(html[dir="ltr"] .treeItemToggler::before):
(html[dir="rtl"] .treeItemToggler::before):
(.treeItem.selected > a):
(.treeItemToggler:hover,):
(::-moz-selection):
(::selection):
(#errorWrapper):
(#errorMessageLeft):
(#errorMessageRight):
(#errorMoreInfo):
(.overlayButton):
(#overlayContainer):
(#overlayContainer > *):
(#overlayContainer > .container):
(#overlayContainer > .container > .dialog):
(.dialog > .row):
(.dialog > .row > *):
(.dialog .toolbarField):
(.dialog .separator):
(.dialog .buttonRow):
(.dialog :link):
(#passwordOverlay > .dialog):
(#passwordOverlay .toolbarField):
(#documentPropertiesOverlay > .dialog):
(#documentPropertiesOverlay .row > *):
(html[dir="ltr"] #documentPropertiesOverlay .row > *):
(html[dir="rtl"] #documentPropertiesOverlay .row > *):
(#documentPropertiesOverlay .row > span):
(#documentPropertiesOverlay .row > p):
(#documentPropertiesOverlay .buttonRow):
(.clearBoth):
(.fileInput):
(#PDFBug):
(#PDFBug .controls):
(#PDFBug .panels):
(#PDFBug .panels > div):
(#PDFBug button.active):
(.debuggerShowText):
(.debuggerHideText:hover):
(#PDFBug .stats):
(#PDFBug .stats .title):
(#PDFBug table):
(#PDFBug table.showText):
(#PDFBug table.showText,):
(#PDFBug table.showText td.advance):
(#viewer.textLayer-visible .textLayer):
(#viewer.textLayer-visible .canvasWrapper):
(#viewer.textLayer-visible .canvasWrapper canvas):
(#viewer.textLayer-visible .textLayer span):
(#viewer.textLayer-hover .textLayer span:hover):
(#viewer.textLayer-shadow .textLayer span):
(.grab-to-pan-grab):
(.grab-to-pan-grab:active,):
(@page):
(#printContainer):
(@media print body):
(@media print #sidebarContainer,):
(@media print #viewerContainer):
(@media print #mainContainer,):
(@media print .page):
(@media print .page[data-loaded]):
(@media print .fileInput):
(@media print body[data-pdfjsprinting] #outerContainer):
(@media print body[data-pdfjsprinting] #printContainer):
(@media print #printContainer):
(@media print #printContainer > .printedPage):
(@media print #printContainer > .xfaPrintedPage .xfaPage):
(@media print #printContainer > .xfaPrintedPage):
(@media print #printContainer > .printedPage canvas,):
(.visibleLargeView,):
(@media all and (max-width: 900px) #toolbarViewerMiddle):
(@media all and (max-width: 840px) #sidebarContainer):
(@media all and (max-width: 840px) html[dir="ltr"] #outerContainer.sidebarOpen #viewerContainer):
(@media all and (max-width: 840px) html[dir="rtl"] #outerContainer.sidebarOpen #viewerContainer):
(@media all and (max-width: 840px) #outerContainer .hiddenLargeView,):
(@media all and (max-width: 840px) #outerContainer .visibleLargeView,):
(@media all and (max-width: 770px) #outerContainer .hiddenLargeView):
(@media all and (max-width: 770px) #outerContainer .visibleLargeView):
(@media all and (max-width: 700px) #outerContainer .hiddenMediumView):
(@media all and (max-width: 700px) #outerContainer .visibleMediumView):
(@media all and (max-width: 640px) .hiddenSmallView,):
(@media all and (max-width: 640px) .visibleSmallView):
(@media all and (max-width: 640px) .toolbarButtonSpacer):
(@media all and (max-width: 640px) html[dir="ltr"] .findbar):
(@media all and (max-width: 640px) html[dir="rtl"] .findbar):
(@media all and (max-width: 535px) #scaleSelectContainer):
* pdfjs/web/viewer.html: Added.
* pdfjs/web/viewer.js: Added.
(exports.checkOnBlobSupport):
(exports.checkCanvasSizeLimitation):
(exports.AppOptions):
(exports.AppOptions.get const):
(exports.AppOptions.getAll):
(exports.AppOptions.set userOptions):
(exports.AppOptions.remove):
(exports.AppOptions._hasUserOptions):
(__webpack_require__.DefaultExternalServices):
(__webpack_require__.DefaultExternalServices.updateFindControlState):
(__webpack_require__.DefaultExternalServices.updateFindMatchesCount):
(__webpack_require__.DefaultExternalServices.initPassiveLoading):
(__webpack_require__.DefaultExternalServices.async fallback):
(__webpack_require__.DefaultExternalServices.reportTelemetry):
(__webpack_require__.DefaultExternalServices.createDownloadManager):
(__webpack_require__.DefaultExternalServices.createPreferences):
(__webpack_require__.DefaultExternalServices.createL10n):
(__webpack_require__.DefaultExternalServices.createScripting):
(__webpack_require__.DefaultExternalServices.get supportsIntegratedFind):
(__webpack_require__.DefaultExternalServices.get supportsDocumentFonts):
(__webpack_require__.DefaultExternalServices.get supportedMouseWheelZoomModifierKeys):
(__webpack_require__.DefaultExternalServices.get isInAutomation):
(__webpack_require__.const.PDFViewerApplication.async initialize):
(__webpack_require__.const.PDFViewerApplication.async _readPreferences):
(__webpack_require__.const.PDFViewerApplication.async _parseHashParameters):
(__webpack_require__.const.PDFViewerApplication.async _initializeL10n):
(__webpack_require__.const.PDFViewerApplication._forceCssTheme):
(__webpack_require__.const.PDFViewerApplication.async _initializeViewerComponents):
(__webpack_require__.const.PDFViewerApplication.run):
(__webpack_require__.const.PDFViewerApplication.get initialized):
(__webpack_require__.const.PDFViewerApplication.get initializedPromise):
(__webpack_require__.const.PDFViewerApplication.zoomIn):
(__webpack_require__.const.PDFViewerApplication.zoomOut):
(__webpack_require__.const.PDFViewerApplication.zoomReset):
(__webpack_require__.const.PDFViewerApplication.get pagesCount):
(__webpack_require__.const.PDFViewerApplication.get page):
(__webpack_require__.const.PDFViewerApplication.set page):
(__webpack_require__.const.PDFViewerApplication.get supportsPrinting):
(__webpack_require__.const.PDFViewerApplication.get supportsFullscreen):
(__webpack_require__.const.PDFViewerApplication.get supportsIntegratedFind):
(__webpack_require__.const.PDFViewerApplication.get supportsDocumentFonts):
(__webpack_require__.const.PDFViewerApplication.get loadingBar):
(__webpack_require__.const.PDFViewerApplication.get supportedMouseWheelZoomModifierKeys):
(__webpack_require__.const.PDFViewerApplication.initPassiveLoading):
(__webpack_require__.const.PDFViewerApplication.setTitleUsingUrl):
(__webpack_require__.const.PDFViewerApplication.setTitle):
(__webpack_require__.const.PDFViewerApplication.get _docFilename):
(__webpack_require__.const.PDFViewerApplication._hideViewBookmark):
(__webpack_require__.const.PDFViewerApplication._cancelIdleCallbacks):
(__webpack_require__.const.PDFViewerApplication.async close):
(__webpack_require__.const.PDFViewerApplication.async open):
(__webpack_require__.const.PDFViewerApplication._ensureDownloadComplete):
(__webpack_require__.const.PDFViewerApplication.async download):
(__webpack_require__.const.PDFViewerApplication.):
(__webpack_require__.):
(__webpack_require__):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@289576 268f45cc-cd09-0410-ab3c-d52691b4dbfc

359 files changed:
Source/ThirdParty/ChangeLog
Source/ThirdParty/pdfjs/LICENSE [new file with mode: 0644]
Source/ThirdParty/pdfjs/build/pdf.js [new file with mode: 0644]
Source/ThirdParty/pdfjs/build/pdf.sandbox.js [new file with mode: 0644]
Source/ThirdParty/pdfjs/build/pdf.worker.js [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/78-EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/78-EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/78-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/78-RKSJ-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/78-RKSJ-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/78-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Add-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Add-RKSJ-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Add-RKSJ-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Add-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-GB1-0.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-GB1-1.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-GB1-2.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-GB1-3.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-GB1-4.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-GB1-5.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/B5-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/B5-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/B5pc-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/B5pc-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/CNS-EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/CNS-EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/CNS1-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/CNS1-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/CNS2-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/CNS2-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/ETHK-B5-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/ETHK-B5-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/ETen-B5-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/ETen-B5-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/ETenms-B5-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/ETenms-B5-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Ext-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Ext-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GB-EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GB-EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GB-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GB-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBK-EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBK-EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBK2K-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBK2K-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBKp-EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBKp-EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBT-EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBT-EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBT-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBT-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBpc-EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/GBpc-EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKdla-B5-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKdla-B5-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKdlb-B5-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKdlb-B5-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKgccs-B5-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKgccs-B5-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKm314-B5-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKm314-B5-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKm471-B5-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKm471-B5-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKscs-B5-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/HKscs-B5-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Hankaku.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Hiragana.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSC-EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSC-EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSC-Johab-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSC-Johab-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSCms-UHC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSCms-UHC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Katakana.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/LICENSE [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/NWP-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/NWP-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/RKSJ-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/RKSJ-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/Roman.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/V.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/cmaps/WP-Symbol.bcmap [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/debugger.js [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/annotation-check.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/annotation-comment.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/annotation-help.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/annotation-insert.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/annotation-key.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/annotation-newparagraph.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/annotation-noicon.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/annotation-note.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/annotation-paragraph.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/findbarButton-next.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/findbarButton-previous.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/grab.cur [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/grabbing.cur [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/loading-dark.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/loading-icon.gif [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/loading.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-firstPage.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-handTool.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-lastPage.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-selectTool.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/shadow.png [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-bookmark.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-currentOutlineItem.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-download.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-menuArrow.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-openFile.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-pageDown.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-pageUp.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-presentationMode.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-print.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-search.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-sidebarToggle.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-viewAttachments.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-viewLayers.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-viewOutline.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-viewThumbnail.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-zoomIn.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/toolbarButton-zoomOut.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/treeitem-collapsed.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/images/treeitem-expanded.svg [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ach/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/af/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/an/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ar/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ast/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/az/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/be/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/bg/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/bn/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/bo/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/br/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/brx/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/bs/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ca/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/cak/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ckb/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/cs/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/cy/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/da/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/de/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/dsb/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/el/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/en-CA/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/en-GB/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/en-US/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/eo/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/es-AR/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/es-CL/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/es-ES/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/es-MX/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/et/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/eu/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/fa/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ff/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/fi/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/fr/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/fy-NL/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ga-IE/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/gd/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/gl/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/gn/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/gu-IN/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/he/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/hi-IN/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/hr/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/hsb/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/hu/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/hy-AM/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/hye/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ia/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/id/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/is/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/it/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ja/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ka/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/kab/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/kk/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/km/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/kn/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ko/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/lij/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/lo/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/locale.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/lt/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ltg/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/lv/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/meh/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/mk/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/mr/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ms/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/my/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/nb-NO/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ne-NP/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/nl/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/nn-NO/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/oc/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/pa-IN/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/pl/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/pt-BR/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/pt-PT/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/rm/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ro/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ru/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/sat/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/sc/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/scn/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/sco/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/si/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/sk/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/sl/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/son/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/sq/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/sr/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/sv-SE/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/szl/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ta/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/te/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/tg/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/th/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/tl/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/tr/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/trs/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/uk/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/ur/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/uz/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/vi/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/wo/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/xh/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/zh-CN/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/locale/zh-TW/viewer.properties [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitDingbats.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitFixed.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitFixedBold.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitSans.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitSansBold.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitSansItalic.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitSerif.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitSerifBold.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/FoxitSymbol.pfb [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/LICENSE_FOXIT [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/LICENSE_LIBERATION [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/viewer.css [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/viewer.html [new file with mode: 0644]
Source/ThirdParty/pdfjs/web/viewer.js [new file with mode: 0644]

index c694b92dd2f391e642c23e2e85bf5b4ecae7cb66..5d13b9f42728116aa1cb187333e99f1faacbd84f 100644 (file)
@@ -1,3 +1,914 @@
+2022-02-10  Tim Nguyen  <ntim@apple.com>
+
+        Import PDF.js v2.12.313 to the WebKit repo
+        https://bugs.webkit.org/show_bug.cgi?id=236452
+
+        Reviewed by Brent Fulgham.
+
+        Add bundle from https://mozilla.github.io/pdf.js/getting_started/#download (Modern browsers version)
+
+        Delete the following:
+        - Sourcemaps (.js.map files)
+        - Example PDF file (compressed.tracemonkey-pldi-09.pdf)
+
+        * pdfjs/LICENSE: Added.
+        * pdfjs/build/pdf.js: Added.
+        (webpackUniversalModuleDefinition):
+        (return.):
+        (return):
+        * pdfjs/build/pdf.sandbox.js: Added.
+        (webpackUniversalModuleDefinition):
+        (return.):
+        * pdfjs/build/pdf.worker.js: Added.
+        (webpackUniversalModuleDefinition):
+        (return.):
+        (return):
+        * pdfjs/web/cmaps/78-EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/78-EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/78-H.bcmap: Added.
+        * pdfjs/web/cmaps/78-RKSJ-H.bcmap: Added.
+        * pdfjs/web/cmaps/78-RKSJ-V.bcmap: Added.
+        * pdfjs/web/cmaps/78-V.bcmap: Added.
+        * pdfjs/web/cmaps/78ms-RKSJ-H.bcmap: Added.
+        * pdfjs/web/cmaps/78ms-RKSJ-V.bcmap: Added.
+        * pdfjs/web/cmaps/83pv-RKSJ-H.bcmap: Added.
+        * pdfjs/web/cmaps/90ms-RKSJ-H.bcmap: Added.
+        * pdfjs/web/cmaps/90ms-RKSJ-V.bcmap: Added.
+        * pdfjs/web/cmaps/90msp-RKSJ-H.bcmap: Added.
+        * pdfjs/web/cmaps/90msp-RKSJ-V.bcmap: Added.
+        * pdfjs/web/cmaps/90pv-RKSJ-H.bcmap: Added.
+        * pdfjs/web/cmaps/90pv-RKSJ-V.bcmap: Added.
+        * pdfjs/web/cmaps/Add-H.bcmap: Added.
+        * pdfjs/web/cmaps/Add-RKSJ-H.bcmap: Added.
+        * pdfjs/web/cmaps/Add-RKSJ-V.bcmap: Added.
+        * pdfjs/web/cmaps/Add-V.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-CNS1-0.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-CNS1-1.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-CNS1-2.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-CNS1-3.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-CNS1-4.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-CNS1-5.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-CNS1-6.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-GB1-0.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-GB1-1.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-GB1-2.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-GB1-3.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-GB1-4.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-GB1-5.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Japan1-0.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Japan1-1.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Japan1-2.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Japan1-3.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Japan1-4.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Japan1-5.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Japan1-6.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Korea1-0.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Korea1-1.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Korea1-2.bcmap: Added.
+        * pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap: Added.
+        * pdfjs/web/cmaps/B5-H.bcmap: Added.
+        * pdfjs/web/cmaps/B5-V.bcmap: Added.
+        * pdfjs/web/cmaps/B5pc-H.bcmap: Added.
+        * pdfjs/web/cmaps/B5pc-V.bcmap: Added.
+        * pdfjs/web/cmaps/CNS-EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/CNS-EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/CNS1-H.bcmap: Added.
+        * pdfjs/web/cmaps/CNS1-V.bcmap: Added.
+        * pdfjs/web/cmaps/CNS2-H.bcmap: Added.
+        * pdfjs/web/cmaps/CNS2-V.bcmap: Added.
+        * pdfjs/web/cmaps/ETHK-B5-H.bcmap: Added.
+        * pdfjs/web/cmaps/ETHK-B5-V.bcmap: Added.
+        * pdfjs/web/cmaps/ETen-B5-H.bcmap: Added.
+        * pdfjs/web/cmaps/ETen-B5-V.bcmap: Added.
+        * pdfjs/web/cmaps/ETenms-B5-H.bcmap: Added.
+        * pdfjs/web/cmaps/ETenms-B5-V.bcmap: Added.
+        * pdfjs/web/cmaps/EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/Ext-H.bcmap: Added.
+        * pdfjs/web/cmaps/Ext-RKSJ-H.bcmap: Added.
+        * pdfjs/web/cmaps/Ext-RKSJ-V.bcmap: Added.
+        * pdfjs/web/cmaps/Ext-V.bcmap: Added.
+        * pdfjs/web/cmaps/GB-EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/GB-EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/GB-H.bcmap: Added.
+        * pdfjs/web/cmaps/GB-V.bcmap: Added.
+        * pdfjs/web/cmaps/GBK-EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/GBK-EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/GBK2K-H.bcmap: Added.
+        * pdfjs/web/cmaps/GBK2K-V.bcmap: Added.
+        * pdfjs/web/cmaps/GBKp-EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/GBKp-EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/GBT-EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/GBT-EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/GBT-H.bcmap: Added.
+        * pdfjs/web/cmaps/GBT-V.bcmap: Added.
+        * pdfjs/web/cmaps/GBTpc-EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/GBTpc-EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/GBpc-EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/GBpc-EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/H.bcmap: Added.
+        * pdfjs/web/cmaps/HKdla-B5-H.bcmap: Added.
+        * pdfjs/web/cmaps/HKdla-B5-V.bcmap: Added.
+        * pdfjs/web/cmaps/HKdlb-B5-H.bcmap: Added.
+        * pdfjs/web/cmaps/HKdlb-B5-V.bcmap: Added.
+        * pdfjs/web/cmaps/HKgccs-B5-H.bcmap: Added.
+        * pdfjs/web/cmaps/HKgccs-B5-V.bcmap: Added.
+        * pdfjs/web/cmaps/HKm314-B5-H.bcmap: Added.
+        * pdfjs/web/cmaps/HKm314-B5-V.bcmap: Added.
+        * pdfjs/web/cmaps/HKm471-B5-H.bcmap: Added.
+        * pdfjs/web/cmaps/HKm471-B5-V.bcmap: Added.
+        * pdfjs/web/cmaps/HKscs-B5-H.bcmap: Added.
+        * pdfjs/web/cmaps/HKscs-B5-V.bcmap: Added.
+        * pdfjs/web/cmaps/Hankaku.bcmap: Added.
+        * pdfjs/web/cmaps/Hiragana.bcmap: Added.
+        * pdfjs/web/cmaps/KSC-EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/KSC-EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/KSC-H.bcmap: Added.
+        * pdfjs/web/cmaps/KSC-Johab-H.bcmap: Added.
+        * pdfjs/web/cmaps/KSC-Johab-V.bcmap: Added.
+        * pdfjs/web/cmaps/KSC-V.bcmap: Added.
+        * pdfjs/web/cmaps/KSCms-UHC-H.bcmap: Added.
+        * pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap: Added.
+        * pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap: Added.
+        * pdfjs/web/cmaps/KSCms-UHC-V.bcmap: Added.
+        * pdfjs/web/cmaps/KSCpc-EUC-H.bcmap: Added.
+        * pdfjs/web/cmaps/KSCpc-EUC-V.bcmap: Added.
+        * pdfjs/web/cmaps/Katakana.bcmap: Added.
+        * pdfjs/web/cmaps/LICENSE: Added.
+        * pdfjs/web/cmaps/NWP-H.bcmap: Added.
+        * pdfjs/web/cmaps/NWP-V.bcmap: Added.
+        * pdfjs/web/cmaps/RKSJ-H.bcmap: Added.
+        * pdfjs/web/cmaps/RKSJ-V.bcmap: Added.
+        * pdfjs/web/cmaps/Roman.bcmap: Added.
+        * pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniGB-UCS2-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniGB-UCS2-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniGB-UTF16-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniGB-UTF16-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniGB-UTF32-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniGB-UTF32-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniGB-UTF8-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniGB-UTF8-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniKS-UCS2-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniKS-UCS2-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniKS-UTF16-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniKS-UTF16-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniKS-UTF32-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniKS-UTF32-V.bcmap: Added.
+        * pdfjs/web/cmaps/UniKS-UTF8-H.bcmap: Added.
+        * pdfjs/web/cmaps/UniKS-UTF8-V.bcmap: Added.
+        * pdfjs/web/cmaps/V.bcmap: Added.
+        * pdfjs/web/cmaps/WP-Symbol.bcmap: Added.
+        * pdfjs/web/debugger.js: Added.
+        (FontInspector.FontInspectorClosure.removeSelection):
+        (FontInspector.FontInspectorClosure.resetSelection):
+        (FontInspector.FontInspectorClosure.selectFont):
+        (FontInspector.FontInspectorClosure.textLayerClick):
+        (FontInspector.FontInspectorClosure.return.init):
+        (FontInspector.FontInspectorClosure.return.cleanup):
+        (FontInspector.FontInspectorClosure.return.get active):
+        (FontInspector.FontInspectorClosure.return.set active):
+        (FontInspector.FontInspectorClosure.return.properties):
+        (FontInspector.FontInspectorClosure.return.fontAdded):
+        (FontInspector):
+        (StepperManager.StepperManagerClosure.return.init):
+        (StepperManager.StepperManagerClosure.return.cleanup):
+        (StepperManager.StepperManagerClosure.return.create):
+        (StepperManager.StepperManagerClosure.return.selectStepper):
+        (StepperManager.StepperManagerClosure.return.saveBreakPoints):
+        (StepperManager):
+        (const.Stepper.StepperClosure.c):
+        (const.Stepper.StepperClosure.simplifyArgs):
+        (const.Stepper.StepperClosure.Stepper):
+        (const.Stepper.StepperClosure.Stepper.prototype.init):
+        (const.Stepper.StepperClosure.Stepper.prototype.updateOperatorList.cboxOnClick):
+        (const.Stepper.StepperClosure.Stepper.prototype.updateOperatorList):
+        (const.Stepper.StepperClosure.Stepper.prototype.getNextBreakPoint):
+        (const.Stepper.StepperClosure.Stepper.prototype.breakIt):
+        (const.Stepper.StepperClosure.Stepper.prototype.goTo):
+        (const.Stepper):
+        (Stats.Stats):
+        (Stats.Stats.getStatIndex):
+        (Stats):
+        (window.PDFBug):
+        * pdfjs/web/images/annotation-check.svg: Added.
+        * pdfjs/web/images/annotation-comment.svg: Added.
+        * pdfjs/web/images/annotation-help.svg: Added.
+        * pdfjs/web/images/annotation-insert.svg: Added.
+        * pdfjs/web/images/annotation-key.svg: Added.
+        * pdfjs/web/images/annotation-newparagraph.svg: Added.
+        * pdfjs/web/images/annotation-noicon.svg: Added.
+        * pdfjs/web/images/annotation-note.svg: Added.
+        * pdfjs/web/images/annotation-paragraph.svg: Added.
+        * pdfjs/web/images/findbarButton-next.svg: Added.
+        * pdfjs/web/images/findbarButton-previous.svg: Added.
+        * pdfjs/web/images/grab.cur: Added.
+        * pdfjs/web/images/grabbing.cur: Added.
+        * pdfjs/web/images/loading-dark.svg: Added.
+        * pdfjs/web/images/loading-icon.gif: Added.
+        * pdfjs/web/images/loading.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-documentProperties.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-firstPage.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-handTool.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-lastPage.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-rotateCw.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-scrollPage.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-selectTool.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-spreadEven.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-spreadNone.svg: Added.
+        * pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg: Added.
+        * pdfjs/web/images/shadow.png: Added.
+        * pdfjs/web/images/toolbarButton-bookmark.svg: Added.
+        * pdfjs/web/images/toolbarButton-currentOutlineItem.svg: Added.
+        * pdfjs/web/images/toolbarButton-download.svg: Added.
+        * pdfjs/web/images/toolbarButton-menuArrow.svg: Added.
+        * pdfjs/web/images/toolbarButton-openFile.svg: Added.
+        * pdfjs/web/images/toolbarButton-pageDown.svg: Added.
+        * pdfjs/web/images/toolbarButton-pageUp.svg: Added.
+        * pdfjs/web/images/toolbarButton-presentationMode.svg: Added.
+        * pdfjs/web/images/toolbarButton-print.svg: Added.
+        * pdfjs/web/images/toolbarButton-search.svg: Added.
+        * pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg: Added.
+        * pdfjs/web/images/toolbarButton-sidebarToggle.svg: Added.
+        * pdfjs/web/images/toolbarButton-viewAttachments.svg: Added.
+        * pdfjs/web/images/toolbarButton-viewLayers.svg: Added.
+        * pdfjs/web/images/toolbarButton-viewOutline.svg: Added.
+        * pdfjs/web/images/toolbarButton-viewThumbnail.svg: Added.
+        * pdfjs/web/images/toolbarButton-zoomIn.svg: Added.
+        * pdfjs/web/images/toolbarButton-zoomOut.svg: Added.
+        * pdfjs/web/images/treeitem-collapsed.svg: Added.
+        * pdfjs/web/images/treeitem-expanded.svg: Added.
+        * pdfjs/web/locale/ach/viewer.properties: Added.
+        * pdfjs/web/locale/af/viewer.properties: Added.
+        * pdfjs/web/locale/an/viewer.properties: Added.
+        * pdfjs/web/locale/ar/viewer.properties: Added.
+        * pdfjs/web/locale/ast/viewer.properties: Added.
+        * pdfjs/web/locale/az/viewer.properties: Added.
+        * pdfjs/web/locale/be/viewer.properties: Added.
+        * pdfjs/web/locale/bg/viewer.properties: Added.
+        * pdfjs/web/locale/bn/viewer.properties: Added.
+        * pdfjs/web/locale/bo/viewer.properties: Added.
+        * pdfjs/web/locale/br/viewer.properties: Added.
+        * pdfjs/web/locale/brx/viewer.properties: Added.
+        * pdfjs/web/locale/bs/viewer.properties: Added.
+        * pdfjs/web/locale/ca/viewer.properties: Added.
+        * pdfjs/web/locale/cak/viewer.properties: Added.
+        * pdfjs/web/locale/ckb/viewer.properties: Added.
+        * pdfjs/web/locale/cs/viewer.properties: Added.
+        * pdfjs/web/locale/cy/viewer.properties: Added.
+        * pdfjs/web/locale/da/viewer.properties: Added.
+        * pdfjs/web/locale/de/viewer.properties: Added.
+        * pdfjs/web/locale/dsb/viewer.properties: Added.
+        * pdfjs/web/locale/el/viewer.properties: Added.
+        * pdfjs/web/locale/en-CA/viewer.properties: Added.
+        * pdfjs/web/locale/en-GB/viewer.properties: Added.
+        * pdfjs/web/locale/en-US/viewer.properties: Added.
+        * pdfjs/web/locale/eo/viewer.properties: Added.
+        * pdfjs/web/locale/es-AR/viewer.properties: Added.
+        * pdfjs/web/locale/es-CL/viewer.properties: Added.
+        * pdfjs/web/locale/es-ES/viewer.properties: Added.
+        * pdfjs/web/locale/es-MX/viewer.properties: Added.
+        * pdfjs/web/locale/et/viewer.properties: Added.
+        * pdfjs/web/locale/eu/viewer.properties: Added.
+        * pdfjs/web/locale/fa/viewer.properties: Added.
+        * pdfjs/web/locale/ff/viewer.properties: Added.
+        * pdfjs/web/locale/fi/viewer.properties: Added.
+        * pdfjs/web/locale/fr/viewer.properties: Added.
+        * pdfjs/web/locale/fy-NL/viewer.properties: Added.
+        * pdfjs/web/locale/ga-IE/viewer.properties: Added.
+        * pdfjs/web/locale/gd/viewer.properties: Added.
+        * pdfjs/web/locale/gl/viewer.properties: Added.
+        * pdfjs/web/locale/gn/viewer.properties: Added.
+        * pdfjs/web/locale/gu-IN/viewer.properties: Added.
+        * pdfjs/web/locale/he/viewer.properties: Added.
+        * pdfjs/web/locale/hi-IN/viewer.properties: Added.
+        * pdfjs/web/locale/hr/viewer.properties: Added.
+        * pdfjs/web/locale/hsb/viewer.properties: Added.
+        * pdfjs/web/locale/hu/viewer.properties: Added.
+        * pdfjs/web/locale/hy-AM/viewer.properties: Added.
+        * pdfjs/web/locale/hye/viewer.properties: Added.
+        * pdfjs/web/locale/ia/viewer.properties: Added.
+        * pdfjs/web/locale/id/viewer.properties: Added.
+        * pdfjs/web/locale/is/viewer.properties: Added.
+        * pdfjs/web/locale/it/viewer.properties: Added.
+        * pdfjs/web/locale/ja/viewer.properties: Added.
+        * pdfjs/web/locale/ka/viewer.properties: Added.
+        * pdfjs/web/locale/kab/viewer.properties: Added.
+        * pdfjs/web/locale/kk/viewer.properties: Added.
+        * pdfjs/web/locale/km/viewer.properties: Added.
+        * pdfjs/web/locale/kn/viewer.properties: Added.
+        * pdfjs/web/locale/ko/viewer.properties: Added.
+        * pdfjs/web/locale/lij/viewer.properties: Added.
+        * pdfjs/web/locale/lo/viewer.properties: Added.
+        * pdfjs/web/locale/locale.properties: Added.
+        * pdfjs/web/locale/lt/viewer.properties: Added.
+        * pdfjs/web/locale/ltg/viewer.properties: Added.
+        * pdfjs/web/locale/lv/viewer.properties: Added.
+        * pdfjs/web/locale/meh/viewer.properties: Added.
+        * pdfjs/web/locale/mk/viewer.properties: Added.
+        * pdfjs/web/locale/mr/viewer.properties: Added.
+        * pdfjs/web/locale/ms/viewer.properties: Added.
+        * pdfjs/web/locale/my/viewer.properties: Added.
+        * pdfjs/web/locale/nb-NO/viewer.properties: Added.
+        * pdfjs/web/locale/ne-NP/viewer.properties: Added.
+        * pdfjs/web/locale/nl/viewer.properties: Added.
+        * pdfjs/web/locale/nn-NO/viewer.properties: Added.
+        * pdfjs/web/locale/oc/viewer.properties: Added.
+        * pdfjs/web/locale/pa-IN/viewer.properties: Added.
+        * pdfjs/web/locale/pl/viewer.properties: Added.
+        * pdfjs/web/locale/pt-BR/viewer.properties: Added.
+        * pdfjs/web/locale/pt-PT/viewer.properties: Added.
+        * pdfjs/web/locale/rm/viewer.properties: Added.
+        * pdfjs/web/locale/ro/viewer.properties: Added.
+        * pdfjs/web/locale/ru/viewer.properties: Added.
+        * pdfjs/web/locale/sat/viewer.properties: Added.
+        * pdfjs/web/locale/sc/viewer.properties: Added.
+        * pdfjs/web/locale/scn/viewer.properties: Added.
+        * pdfjs/web/locale/sco/viewer.properties: Added.
+        * pdfjs/web/locale/si/viewer.properties: Added.
+        * pdfjs/web/locale/sk/viewer.properties: Added.
+        * pdfjs/web/locale/sl/viewer.properties: Added.
+        * pdfjs/web/locale/son/viewer.properties: Added.
+        * pdfjs/web/locale/sq/viewer.properties: Added.
+        * pdfjs/web/locale/sr/viewer.properties: Added.
+        * pdfjs/web/locale/sv-SE/viewer.properties: Added.
+        * pdfjs/web/locale/szl/viewer.properties: Added.
+        * pdfjs/web/locale/ta/viewer.properties: Added.
+        * pdfjs/web/locale/te/viewer.properties: Added.
+        * pdfjs/web/locale/tg/viewer.properties: Added.
+        * pdfjs/web/locale/th/viewer.properties: Added.
+        * pdfjs/web/locale/tl/viewer.properties: Added.
+        * pdfjs/web/locale/tr/viewer.properties: Added.
+        * pdfjs/web/locale/trs/viewer.properties: Added.
+        * pdfjs/web/locale/uk/viewer.properties: Added.
+        * pdfjs/web/locale/ur/viewer.properties: Added.
+        * pdfjs/web/locale/uz/viewer.properties: Added.
+        * pdfjs/web/locale/vi/viewer.properties: Added.
+        * pdfjs/web/locale/wo/viewer.properties: Added.
+        * pdfjs/web/locale/xh/viewer.properties: Added.
+        * pdfjs/web/locale/zh-CN/viewer.properties: Added.
+        * pdfjs/web/locale/zh-TW/viewer.properties: Added.
+        * pdfjs/web/standard_fonts/FoxitDingbats.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitFixed.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitFixedBold.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitFixedItalic.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitSans.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitSansBold.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitSansItalic.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitSerif.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitSerifBold.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitSerifItalic.pfb: Added.
+        * pdfjs/web/standard_fonts/FoxitSymbol.pfb: Added.
+        * pdfjs/web/standard_fonts/LICENSE_FOXIT: Added.
+        * pdfjs/web/standard_fonts/LICENSE_LIBERATION: Added.
+        * pdfjs/web/standard_fonts/LiberationSans-Bold.ttf: Added.
+        * pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf: Added.
+        * pdfjs/web/standard_fonts/LiberationSans-Italic.ttf: Added.
+        * pdfjs/web/standard_fonts/LiberationSans-Regular.ttf: Added.
+        * pdfjs/web/viewer.css: Added.
+        (.textLayer):
+        (.textLayer span,):
+        (.textLayer span.markedContent):
+        (.textLayer .highlight):
+        (.textLayer .highlight.appended):
+        (.textLayer .highlight.begin):
+        (.textLayer .highlight.end):
+        (.textLayer .highlight.middle):
+        (.textLayer .highlight.selected):
+        (.textLayer ::-moz-selection):
+        (.textLayer ::selection):
+        (.textLayer br::-moz-selection):
+        (.textLayer br::selection):
+        (.textLayer .endOfContent):
+        (.textLayer .endOfContent.active):
+        (:root):
+        (.annotationLayer section):
+        (.annotationLayer .linkAnnotation > a,):
+        (.annotationLayer .buttonWidgetAnnotation.pushButton > canvas):
+        (.annotationLayer .linkAnnotation > a:hover,):
+        (.annotationLayer .textAnnotation img):
+        (.annotationLayer .textWidgetAnnotation input,):
+        (.annotationLayer .choiceWidgetAnnotation select option):
+        (.annotationLayer .buttonWidgetAnnotation.radioButton input):
+        (.annotationLayer .textWidgetAnnotation textarea):
+        (.annotationLayer .textWidgetAnnotation input[disabled],):
+        (.annotationLayer .textWidgetAnnotation input:hover,):
+        (.annotationLayer .textWidgetAnnotation input:focus,):
+        (.annotationLayer .textWidgetAnnotation input :focus,):
+        (.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,):
+        (.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before):
+        (.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after):
+        (.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before):
+        (.annotationLayer .textWidgetAnnotation input.comb):
+        (.annotationLayer .textWidgetAnnotation input.comb:focus):
+        (.annotationLayer .buttonWidgetAnnotation.checkBox input,):
+        (.annotationLayer .popupWrapper):
+        (.annotationLayer .popup):
+        (.annotationLayer .popup > *):
+        (.annotationLayer .popup h1):
+        (.annotationLayer .popupDate):
+        (.annotationLayer .popupContent):
+        (.annotationLayer .richText > *):
+        (.annotationLayer .highlightAnnotation,):
+        (.xfaLayer .highlight):
+        (.xfaLayer .highlight.appended):
+        (.xfaLayer .highlight.begin):
+        (.xfaLayer .highlight.end):
+        (.xfaLayer .highlight.middle):
+        (.xfaLayer .highlight.selected):
+        (.xfaLayer ::-moz-selection):
+        (.xfaLayer ::selection):
+        (.xfaPage):
+        (.xfaContentarea):
+        (.xfaPrintOnly):
+        (.xfaLayer):
+        (.xfaLayer *):
+        (.xfaLayer div):
+        (.xfaLayer svg):
+        (.xfaLayer svg *):
+        (.xfaLayer a):
+        (.xfaRich li):
+        (.xfaFont):
+        (.xfaCaption):
+        (.xfaCaptionForCheckButton):
+        (.xfaLabel):
+        (.xfaLeft):
+        (.xfaRight):
+        (.xfaLeft > .xfaCaption,):
+        (.xfaTop):
+        (.xfaBottom):
+        (.xfaTop > .xfaCaption,):
+        (.xfaBorder):
+        (.xfaWrapped):
+        (.xfaTextfield:focus,):
+        (.xfaCheckbox:focus,):
+        (.xfaTextfield,):
+        (.xfaTop > .xfaTextfield,):
+        (.xfaButton):
+        (.xfaLink):
+        (.xfaCheckbox,):
+        (.xfaRich):
+        (.xfaImage):
+        (.xfaLrTb,):
+        (.xfaLr):
+        (.xfaRl):
+        (.xfaTb > div):
+        (.xfaPosition):
+        (.xfaArea):
+        (.xfaValignMiddle):
+        (.xfaTable):
+        (.xfaTable .xfaRow):
+        (.xfaTable .xfaRlRow):
+        (.xfaTable .xfaRlRow > div):
+        (.xfaNonInteractive input,):
+        (@media print .xfaTextfield,):
+        (@media print .xfaSelect):
+        (@media screen and (forced-colors: active) :root):
+        (.pdfViewer):
+        (.pdfViewer .canvasWrapper):
+        (.pdfViewer .page):
+        (.pdfViewer .dummyPage):
+        (.pdfViewer.removePageBorders .page):
+        (.pdfViewer.singlePageView):
+        (.pdfViewer.singlePageView .page):
+        (.pdfViewer.scrollHorizontal,):
+        (.pdfViewer.removePageBorders,):
+        (.spread .page,):
+        (.pdfViewer.removePageBorders .spread .page,):
+        (.pdfViewer .page canvas):
+        (.pdfViewer .page canvas[hidden]):
+        (.pdfViewer .page .loadingIcon):
+        (.pdfViewer .page .loadingIcon.notVisible):
+        (.pdfViewer.enablePermissions .textLayer span):
+        (.pdfPresentationMode .pdfViewer):
+        (.pdfPresentationMode .spread):
+        (.pdfPresentationMode .pdfViewer .page):
+        (@media (prefers-color-scheme: dark) :root):
+        (*):
+        (html):
+        (body):
+        (body,):
+        (.hidden):
+        ([hidden]):
+        (#viewerContainer.pdfPresentationMode:-webkit-full-screen):
+        (#viewerContainer.pdfPresentationMode:fullscreen):
+        (.pdfPresentationMode:-webkit-full-screen a:not(.internalLink)):
+        (.pdfPresentationMode:fullscreen a:not(.internalLink)):
+        (.pdfPresentationMode:-webkit-full-screen .textLayer span):
+        (.pdfPresentationMode:fullscreen .textLayer span):
+        (.pdfPresentationMode.pdfPresentationModeControls > *,):
+        (#outerContainer):
+        (#sidebarContainer):
+        (html[dir="ltr"] #sidebarContainer):
+        (html[dir="rtl"] #sidebarContainer):
+        (#outerContainer.sidebarResizing #sidebarContainer):
+        (#outerContainer.sidebarMoving #sidebarContainer,):
+        (html[dir="ltr"] #outerContainer.sidebarOpen #sidebarContainer):
+        (html[dir="rtl"] #outerContainer.sidebarOpen #sidebarContainer):
+        (#mainContainer):
+        (#sidebarContent):
+        (html[dir="ltr"] #sidebarContent):
+        (html[dir="rtl"] #sidebarContent):
+        (#viewerContainer):
+        (#viewerContainer:not(.pdfPresentationMode)):
+        (#outerContainer.sidebarResizing #viewerContainer):
+        (html[dir="ltr"]):
+        (html[dir="rtl"]):
+        (.toolbar):
+        (#toolbarContainer):
+        (#toolbarSidebar):
+        (html[dir="ltr"] #toolbarSidebar):
+        (html[dir="rtl"] #toolbarSidebar):
+        (html[dir="ltr"] #toolbarSidebar .toolbarButton):
+        (html[dir="rtl"] #toolbarSidebar .toolbarButton):
+        (html[dir="ltr"] #toolbarSidebarRight .toolbarButton):
+        (html[dir="rtl"] #toolbarSidebarRight .toolbarButton):
+        (#sidebarResizer):
+        (html[dir="ltr"] #sidebarResizer):
+        (html[dir="rtl"] #sidebarResizer):
+        (#toolbarContainer,):
+        (#toolbarViewer):
+        (#loadingBar):
+        (html[dir="ltr"] #loadingBar):
+        (html[dir="rtl"] #loadingBar):
+        (html[dir="ltr"] #outerContainer.sidebarOpen #loadingBar):
+        (html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar):
+        (#outerContainer.sidebarResizing #loadingBar):
+        (#loadingBar .progress):
+        (@-webkit-keyframes progressIndeterminate):
+        (100%):
+        (@keyframes progressIndeterminate):
+        (#loadingBar .progress.indeterminate):
+        (#loadingBar .progress.indeterminate .glimmer):
+        (.findbar,):
+        (.findbar):
+        (.findbar > div):
+        (.findbar.wrapContainers > div):
+        (.findbar.wrapContainers > div#findbarMessageContainer):
+        (html[dir="ltr"] .findbar):
+        (html[dir="rtl"] .findbar):
+        (.findbar .splitToolbarButton):
+        (html[dir="ltr"] .findbar .splitToolbarButton):
+        (html[dir="rtl"] .findbar .splitToolbarButton):
+        (.findbar .splitToolbarButton > .toolbarButton):
+        (.findbar .splitToolbarButton > .toolbarButton::before):
+        (.findbar .splitToolbarButton > .findNext):
+        (html[dir="ltr"] .findbar .splitToolbarButton > .findNext):
+        (html[dir="rtl"] .findbar .splitToolbarButton > .findNext):
+        (.findbar input[type="checkbox"]):
+        (.findbar label):
+        (.findbar label:hover,):
+        (html[dir="ltr"] #findInput):
+        (html[dir="rtl"] #findInput):
+        (.findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel):
+        (#findInput):
+        (#findInput::-moz-placeholder):
+        (#findInput::placeholder):
+        (#findInput[data-status="pending"]):
+        (html[dir="rtl"] #findInput[data-status="pending"]):
+        (#findInput[data-status="notFound"]):
+        (.secondaryToolbar):
+        (html[dir="ltr"] .secondaryToolbar):
+        (html[dir="rtl"] .secondaryToolbar):
+        (#secondaryToolbarButtonContainer):
+        (.doorHanger,):
+        (.doorHanger:after,):
+        (.doorHanger:after):
+        (.doorHangerRight:after):
+        (.doorHanger:before,):
+        (html[dir="ltr"] .doorHanger:after,):
+        (html[dir="ltr"] .doorHanger:before,):
+        (html[dir="rtl"] .doorHanger:after,):
+        (html[dir="rtl"] .doorHanger:before,):
+        (#findResultsCount):
+        (#findMsg):
+        (#findMsg:empty):
+        (#toolbarViewerMiddle):
+        (html[dir="ltr"] #toolbarViewerLeft,):
+        (html[dir="ltr"] #toolbarViewerRight,):
+        (html[dir="ltr"] #toolbarViewerLeft > *,):
+        (html[dir="rtl"] #toolbarViewerLeft > *,):
+        (.splitToolbarButton):
+        (html[dir="ltr"] .splitToolbarButton > .toolbarButton):
+        (html[dir="rtl"] .splitToolbarButton > .toolbarButton):
+        (.toolbarButton,):
+        (.overlayButton:hover,):
+        (.overlayButton:hover > span,):
+        (.toolbarButton > span):
+        (.toolbarButton[disabled],):
+        (.splitToolbarButton.toggled .toolbarButton):
+        (.splitToolbarButton > .toolbarButton:hover,):
+        (.splitToolbarButton > .toolbarButton):
+        (html[dir="ltr"] .splitToolbarButton > .toolbarButton:first-child,):
+        (html[dir="ltr"] .splitToolbarButton > .toolbarButton:last-child,):
+        (.splitToolbarButtonSeparator):
+        (.findbar .splitToolbarButtonSeparator):
+        (html[dir="ltr"] .splitToolbarButtonSeparator):
+        (html[dir="rtl"] .splitToolbarButtonSeparator):
+        (html[dir="ltr"] #toolbarViewerLeft > .toolbarButton:first-child,):
+        (html[dir="ltr"] #toolbarViewerRight > .toolbarButton:last-child,):
+        (.toolbarButton:hover,):
+        (.secondaryToolbarButton:hover,):
+        (.toolbarButton.toggled,):
+        (.secondaryToolbarButton.toggled::before):
+        (.toolbarButton.toggled::before):
+        (.toolbarButton.toggled:hover:active,):
+        (.dropdownToolbarButton):
+        (.dropdownToolbarButton::after):
+        (html[dir="ltr"] .dropdownToolbarButton::after):
+        (html[dir="rtl"] .dropdownToolbarButton::after):
+        (.dropdownToolbarButton > select):
+        (html[dir="ltr"] .dropdownToolbarButton > select):
+        (html[dir="rtl"] .dropdownToolbarButton > select):
+        (.dropdownToolbarButton > select:hover,):
+        (.dropdownToolbarButton > select > option):
+        (#customScaleOption):
+        (#pageWidthOption):
+        (.toolbarButtonSpacer):
+        (.toolbarButton::before,):
+        (.dropdownToolbarButton:hover::after,):
+        (.toolbarButton::before):
+        (.toolbarButton:hover::before,):
+        (.secondaryToolbarButton::before):
+        (html[dir="ltr"] .secondaryToolbarButton::before):
+        (html[dir="rtl"] .secondaryToolbarButton::before):
+        (.toolbarButton#sidebarToggle::before):
+        (html[dir="rtl"] .toolbarButton#sidebarToggle::before):
+        (.toolbarButton#secondaryToolbarToggle::before):
+        (html[dir="rtl"] .toolbarButton#secondaryToolbarToggle::before):
+        (.toolbarButton.findPrevious::before):
+        (.toolbarButton.findNext::before):
+        (.toolbarButton.pageUp::before):
+        (.toolbarButton.pageDown::before):
+        (.toolbarButton.zoomOut::before):
+        (.toolbarButton.zoomIn::before):
+        (.toolbarButton.presentationMode::before,):
+        (.toolbarButton.print::before,):
+        (.toolbarButton.openFile::before,):
+        (.toolbarButton.download::before,):
+        (.secondaryToolbarButton.bookmark):
+        (.bookmark[href="#"]):
+        (.toolbarButton.bookmark::before,):
+        (#viewThumbnail.toolbarButton::before):
+        (#viewOutline.toolbarButton::before):
+        (html[dir="rtl"] #viewOutline.toolbarButton::before):
+        (#viewAttachments.toolbarButton::before):
+        (#viewLayers.toolbarButton::before):
+        (#currentOutlineItem.toolbarButton::before):
+        (html[dir="rtl"] #currentOutlineItem.toolbarButton::before):
+        (#viewFind.toolbarButton::before):
+        (.toolbarButton.pdfSidebarNotification::after):
+        (html[dir="ltr"] .toolbarButton.pdfSidebarNotification::after):
+        (html[dir="rtl"] .toolbarButton.pdfSidebarNotification::after):
+        (.secondaryToolbarButton):
+        (html[dir="ltr"] .secondaryToolbarButton):
+        (html[dir="rtl"] .secondaryToolbarButton):
+        (html[dir="ltr"] .secondaryToolbarButton > span):
+        (html[dir="rtl"] .secondaryToolbarButton > span):
+        (.secondaryToolbarButton.firstPage::before):
+        (.secondaryToolbarButton.lastPage::before):
+        (.secondaryToolbarButton.rotateCcw::before):
+        (.secondaryToolbarButton.rotateCw::before):
+        (.secondaryToolbarButton.selectTool::before):
+        (.secondaryToolbarButton.handTool::before):
+        (.secondaryToolbarButton.scrollPage::before):
+        (.secondaryToolbarButton.scrollVertical::before):
+        (.secondaryToolbarButton.scrollHorizontal::before):
+        (.secondaryToolbarButton.scrollWrapped::before):
+        (.secondaryToolbarButton.spreadNone::before):
+        (.secondaryToolbarButton.spreadOdd::before):
+        (.secondaryToolbarButton.spreadEven::before):
+        (.secondaryToolbarButton.documentProperties::before):
+        (.verticalToolbarSeparator):
+        (html[dir="ltr"] .verticalToolbarSeparator):
+        (html[dir="rtl"] .verticalToolbarSeparator):
+        (.horizontalToolbarSeparator):
+        (.toolbarField):
+        (.toolbarField[type="checkbox"]):
+        (html[dir="ltr"] .toolbarField[type="checkbox"]):
+        (html[dir="rtl"] .toolbarField[type="checkbox"]):
+        (.toolbarField.pageNumber):
+        (.toolbarField.pageNumber.visiblePageIsLoading):
+        (.toolbarField.pageNumber::-webkit-inner-spin-button,):
+        (.toolbarField:focus):
+        (.toolbarLabel):
+        (html[dir="ltr"] #numPages.toolbarLabel):
+        (html[dir="rtl"] #numPages.toolbarLabel):
+        (#thumbnailView):
+        (#thumbnailView > a:active,):
+        (.thumbnail):
+        (html[dir="ltr"] .thumbnail):
+        (html[dir="rtl"] .thumbnail):
+        (#thumbnailView > a:last-of-type > .thumbnail):
+        (#thumbnailView > a:last-of-type > .thumbnail:not([data-loaded])):
+        (.thumbnail:not([data-loaded])):
+        (.thumbnailImage):
+        (.thumbnailSelectionRing):
+        (a:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage,):
+        (a:focus > .thumbnail > .thumbnailSelectionRing,):
+        (.thumbnail.selected > .thumbnailSelectionRing > .thumbnailImage):
+        (.thumbnail.selected > .thumbnailSelectionRing):
+        (#outlineView,):
+        (html[dir="ltr"] .treeWithDeepNesting > .treeItem,):
+        (html[dir="rtl"] .treeWithDeepNesting > .treeItem,):
+        (.treeItem > a):
+        (html[dir="ltr"] .treeItem > a):
+        (html[dir="rtl"] .treeItem > a):
+        (#layersView .treeItem > a > *):
+        (html[dir="ltr"] #layersView .treeItem > a > label):
+        (html[dir="rtl"] #layersView .treesItem > a > label):
+        (.treeItemToggler):
+        (.treeItemToggler::before):
+        (.treeItemToggler.treeItemsHidden::before):
+        (html[dir="rtl"] .treeItemToggler.treeItemsHidden::before):
+        (.treeItemToggler.treeItemsHidden ~ .treeItems):
+        (html[dir="ltr"] .treeItemToggler):
+        (html[dir="rtl"] .treeItemToggler):
+        (html[dir="ltr"] .treeItemToggler::before):
+        (html[dir="rtl"] .treeItemToggler::before):
+        (.treeItem.selected > a):
+        (.treeItemToggler:hover,):
+        (::-moz-selection):
+        (::selection):
+        (#errorWrapper):
+        (#errorMessageLeft):
+        (#errorMessageRight):
+        (#errorMoreInfo):
+        (.overlayButton):
+        (#overlayContainer):
+        (#overlayContainer > *):
+        (#overlayContainer > .container):
+        (#overlayContainer > .container > .dialog):
+        (.dialog > .row):
+        (.dialog > .row > *):
+        (.dialog .toolbarField):
+        (.dialog .separator):
+        (.dialog .buttonRow):
+        (.dialog :link):
+        (#passwordOverlay > .dialog):
+        (#passwordOverlay .toolbarField):
+        (#documentPropertiesOverlay > .dialog):
+        (#documentPropertiesOverlay .row > *):
+        (html[dir="ltr"] #documentPropertiesOverlay .row > *):
+        (html[dir="rtl"] #documentPropertiesOverlay .row > *):
+        (#documentPropertiesOverlay .row > span):
+        (#documentPropertiesOverlay .row > p):
+        (#documentPropertiesOverlay .buttonRow):
+        (.clearBoth):
+        (.fileInput):
+        (#PDFBug):
+        (#PDFBug .controls):
+        (#PDFBug .panels):
+        (#PDFBug .panels > div):
+        (#PDFBug button.active):
+        (.debuggerShowText):
+        (.debuggerHideText:hover):
+        (#PDFBug .stats):
+        (#PDFBug .stats .title):
+        (#PDFBug table):
+        (#PDFBug table.showText):
+        (#PDFBug table.showText,):
+        (#PDFBug table.showText td.advance):
+        (#viewer.textLayer-visible .textLayer):
+        (#viewer.textLayer-visible .canvasWrapper):
+        (#viewer.textLayer-visible .canvasWrapper canvas):
+        (#viewer.textLayer-visible .textLayer span):
+        (#viewer.textLayer-hover .textLayer span:hover):
+        (#viewer.textLayer-shadow .textLayer span):
+        (.grab-to-pan-grab):
+        (.grab-to-pan-grab:active,):
+        (@page):
+        (#printContainer):
+        (@media print body):
+        (@media print #sidebarContainer,):
+        (@media print #viewerContainer):
+        (@media print #mainContainer,):
+        (@media print .page):
+        (@media print .page[data-loaded]):
+        (@media print .fileInput):
+        (@media print body[data-pdfjsprinting] #outerContainer):
+        (@media print body[data-pdfjsprinting] #printContainer):
+        (@media print #printContainer):
+        (@media print #printContainer > .printedPage):
+        (@media print #printContainer > .xfaPrintedPage .xfaPage):
+        (@media print #printContainer > .xfaPrintedPage):
+        (@media print #printContainer > .printedPage canvas,):
+        (.visibleLargeView,):
+        (@media all and (max-width: 900px) #toolbarViewerMiddle):
+        (@media all and (max-width: 840px) #sidebarContainer):
+        (@media all and (max-width: 840px) html[dir="ltr"] #outerContainer.sidebarOpen #viewerContainer):
+        (@media all and (max-width: 840px) html[dir="rtl"] #outerContainer.sidebarOpen #viewerContainer):
+        (@media all and (max-width: 840px) #outerContainer .hiddenLargeView,):
+        (@media all and (max-width: 840px) #outerContainer .visibleLargeView,):
+        (@media all and (max-width: 770px) #outerContainer .hiddenLargeView):
+        (@media all and (max-width: 770px) #outerContainer .visibleLargeView):
+        (@media all and (max-width: 700px) #outerContainer .hiddenMediumView):
+        (@media all and (max-width: 700px) #outerContainer .visibleMediumView):
+        (@media all and (max-width: 640px) .hiddenSmallView,):
+        (@media all and (max-width: 640px) .visibleSmallView):
+        (@media all and (max-width: 640px) .toolbarButtonSpacer):
+        (@media all and (max-width: 640px) html[dir="ltr"] .findbar):
+        (@media all and (max-width: 640px) html[dir="rtl"] .findbar):
+        (@media all and (max-width: 535px) #scaleSelectContainer):
+        * pdfjs/web/viewer.html: Added.
+        * pdfjs/web/viewer.js: Added.
+        (exports.checkOnBlobSupport):
+        (exports.checkCanvasSizeLimitation):
+        (exports.AppOptions):
+        (exports.AppOptions.get const):
+        (exports.AppOptions.getAll):
+        (exports.AppOptions.set userOptions):
+        (exports.AppOptions.remove):
+        (exports.AppOptions._hasUserOptions):
+        (__webpack_require__.DefaultExternalServices):
+        (__webpack_require__.DefaultExternalServices.updateFindControlState):
+        (__webpack_require__.DefaultExternalServices.updateFindMatchesCount):
+        (__webpack_require__.DefaultExternalServices.initPassiveLoading):
+        (__webpack_require__.DefaultExternalServices.async fallback):
+        (__webpack_require__.DefaultExternalServices.reportTelemetry):
+        (__webpack_require__.DefaultExternalServices.createDownloadManager):
+        (__webpack_require__.DefaultExternalServices.createPreferences):
+        (__webpack_require__.DefaultExternalServices.createL10n):
+        (__webpack_require__.DefaultExternalServices.createScripting):
+        (__webpack_require__.DefaultExternalServices.get supportsIntegratedFind):
+        (__webpack_require__.DefaultExternalServices.get supportsDocumentFonts):
+        (__webpack_require__.DefaultExternalServices.get supportedMouseWheelZoomModifierKeys):
+        (__webpack_require__.DefaultExternalServices.get isInAutomation):
+        (__webpack_require__.const.PDFViewerApplication.async initialize):
+        (__webpack_require__.const.PDFViewerApplication.async _readPreferences):
+        (__webpack_require__.const.PDFViewerApplication.async _parseHashParameters):
+        (__webpack_require__.const.PDFViewerApplication.async _initializeL10n):
+        (__webpack_require__.const.PDFViewerApplication._forceCssTheme):
+        (__webpack_require__.const.PDFViewerApplication.async _initializeViewerComponents):
+        (__webpack_require__.const.PDFViewerApplication.run):
+        (__webpack_require__.const.PDFViewerApplication.get initialized):
+        (__webpack_require__.const.PDFViewerApplication.get initializedPromise):
+        (__webpack_require__.const.PDFViewerApplication.zoomIn):
+        (__webpack_require__.const.PDFViewerApplication.zoomOut):
+        (__webpack_require__.const.PDFViewerApplication.zoomReset):
+        (__webpack_require__.const.PDFViewerApplication.get pagesCount):
+        (__webpack_require__.const.PDFViewerApplication.get page):
+        (__webpack_require__.const.PDFViewerApplication.set page):
+        (__webpack_require__.const.PDFViewerApplication.get supportsPrinting):
+        (__webpack_require__.const.PDFViewerApplication.get supportsFullscreen):
+        (__webpack_require__.const.PDFViewerApplication.get supportsIntegratedFind):
+        (__webpack_require__.const.PDFViewerApplication.get supportsDocumentFonts):
+        (__webpack_require__.const.PDFViewerApplication.get loadingBar):
+        (__webpack_require__.const.PDFViewerApplication.get supportedMouseWheelZoomModifierKeys):
+        (__webpack_require__.const.PDFViewerApplication.initPassiveLoading):
+        (__webpack_require__.const.PDFViewerApplication.setTitleUsingUrl):
+        (__webpack_require__.const.PDFViewerApplication.setTitle):
+        (__webpack_require__.const.PDFViewerApplication.get _docFilename):
+        (__webpack_require__.const.PDFViewerApplication._hideViewBookmark):
+        (__webpack_require__.const.PDFViewerApplication._cancelIdleCallbacks):
+        (__webpack_require__.const.PDFViewerApplication.async close):
+        (__webpack_require__.const.PDFViewerApplication.async open):
+        (__webpack_require__.const.PDFViewerApplication._ensureDownloadComplete):
+        (__webpack_require__.const.PDFViewerApplication.async download):
+        (__webpack_require__.const.PDFViewerApplication.):
+        (__webpack_require__.):
+        (__webpack_require__):
+
 2022-02-02  Elliott Williams  <emw@apple.com>
 
         [XCBuild] Users of libgtest.a depend on headers from gtest.framework
diff --git a/Source/ThirdParty/pdfjs/LICENSE b/Source/ThirdParty/pdfjs/LICENSE
new file mode 100644 (file)
index 0000000..f433b1a
--- /dev/null
@@ -0,0 +1,177 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
diff --git a/Source/ThirdParty/pdfjs/build/pdf.js b/Source/ThirdParty/pdfjs/build/pdf.js
new file mode 100644 (file)
index 0000000..4316828
--- /dev/null
@@ -0,0 +1,15955 @@
+/**
+ * @licstart The following is the entire license notice for the
+ * Javascript code in this page
+ *
+ * Copyright 2021 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @licend The above is the entire license notice for the
+ * Javascript code in this page
+ */
+
+(function webpackUniversalModuleDefinition(root, factory) {
+       if(typeof exports === 'object' && typeof module === 'object')
+               module.exports = factory();
+       else if(typeof define === 'function' && define.amd)
+               define("pdfjs-dist/build/pdf", [], factory);
+       else if(typeof exports === 'object')
+               exports["pdfjs-dist/build/pdf"] = factory();
+       else
+               root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory();
+})(this, function() {
+return /******/ (() => { // webpackBootstrap
+/******/       "use strict";
+/******/       var __webpack_modules__ = ([
+/* 0 */,
+/* 1 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.LinkTarget = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0;
+exports.addLinkAttributes = addLinkAttributes;
+exports.deprecated = deprecated;
+exports.getFilenameFromUrl = getFilenameFromUrl;
+exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;
+exports.getXfaPageViewport = getXfaPageViewport;
+exports.isDataScheme = isDataScheme;
+exports.isPdfFile = isPdfFile;
+exports.isValidFetchUrl = isValidFetchUrl;
+exports.loadScript = loadScript;
+
+var _util = __w_pdfjs_require__(2);
+
+var _base_factory = __w_pdfjs_require__(5);
+
+const DEFAULT_LINK_REL = "noopener noreferrer nofollow";
+const SVG_NS = "http://www.w3.org/2000/svg";
+const PixelsPerInch = {
+  CSS: 96.0,
+  PDF: 72.0,
+
+  get PDF_TO_CSS_UNITS() {
+    return (0, _util.shadow)(this, "PDF_TO_CSS_UNITS", this.CSS / this.PDF);
+  }
+
+};
+exports.PixelsPerInch = PixelsPerInch;
+
+class DOMCanvasFactory extends _base_factory.BaseCanvasFactory {
+  constructor({
+    ownerDocument = globalThis.document
+  } = {}) {
+    super();
+    this._document = ownerDocument;
+  }
+
+  _createCanvas(width, height) {
+    const canvas = this._document.createElement("canvas");
+
+    canvas.width = width;
+    canvas.height = height;
+    return canvas;
+  }
+
+}
+
+exports.DOMCanvasFactory = DOMCanvasFactory;
+
+async function fetchData(url, asTypedArray = false) {
+  if (isValidFetchUrl(url, document.baseURI)) {
+    const response = await fetch(url);
+
+    if (!response.ok) {
+      throw new Error(response.statusText);
+    }
+
+    return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text());
+  }
+
+  return new Promise((resolve, reject) => {
+    const request = new XMLHttpRequest();
+    request.open("GET", url, true);
+
+    if (asTypedArray) {
+      request.responseType = "arraybuffer";
+    }
+
+    request.onreadystatechange = () => {
+      if (request.readyState !== XMLHttpRequest.DONE) {
+        return;
+      }
+
+      if (request.status === 200 || request.status === 0) {
+        let data;
+
+        if (asTypedArray && request.response) {
+          data = new Uint8Array(request.response);
+        } else if (!asTypedArray && request.responseText) {
+          data = (0, _util.stringToBytes)(request.responseText);
+        }
+
+        if (data) {
+          resolve(data);
+          return;
+        }
+      }
+
+      reject(new Error(request.statusText));
+    };
+
+    request.send(null);
+  });
+}
+
+class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {
+  _fetchData(url, compressionType) {
+    return fetchData(url, this.isCompressed).then(data => {
+      return {
+        cMapData: data,
+        compressionType
+      };
+    });
+  }
+
+}
+
+exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
+
+class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {
+  _fetchData(url) {
+    return fetchData(url, true);
+  }
+
+}
+
+exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;
+
+class DOMSVGFactory extends _base_factory.BaseSVGFactory {
+  _createSVG(type) {
+    return document.createElementNS(SVG_NS, type);
+  }
+
+}
+
+exports.DOMSVGFactory = DOMSVGFactory;
+
+class PageViewport {
+  constructor({
+    viewBox,
+    scale,
+    rotation,
+    offsetX = 0,
+    offsetY = 0,
+    dontFlip = false
+  }) {
+    this.viewBox = viewBox;
+    this.scale = scale;
+    this.rotation = rotation;
+    this.offsetX = offsetX;
+    this.offsetY = offsetY;
+    const centerX = (viewBox[2] + viewBox[0]) / 2;
+    const centerY = (viewBox[3] + viewBox[1]) / 2;
+    let rotateA, rotateB, rotateC, rotateD;
+    rotation %= 360;
+
+    if (rotation < 0) {
+      rotation += 360;
+    }
+
+    switch (rotation) {
+      case 180:
+        rotateA = -1;
+        rotateB = 0;
+        rotateC = 0;
+        rotateD = 1;
+        break;
+
+      case 90:
+        rotateA = 0;
+        rotateB = 1;
+        rotateC = 1;
+        rotateD = 0;
+        break;
+
+      case 270:
+        rotateA = 0;
+        rotateB = -1;
+        rotateC = -1;
+        rotateD = 0;
+        break;
+
+      case 0:
+        rotateA = 1;
+        rotateB = 0;
+        rotateC = 0;
+        rotateD = -1;
+        break;
+
+      default:
+        throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.");
+    }
+
+    if (dontFlip) {
+      rotateC = -rotateC;
+      rotateD = -rotateD;
+    }
+
+    let offsetCanvasX, offsetCanvasY;
+    let width, height;
+
+    if (rotateA === 0) {
+      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
+      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
+      width = Math.abs(viewBox[3] - viewBox[1]) * scale;
+      height = Math.abs(viewBox[2] - viewBox[0]) * scale;
+    } else {
+      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
+      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
+      width = Math.abs(viewBox[2] - viewBox[0]) * scale;
+      height = Math.abs(viewBox[3] - viewBox[1]) * scale;
+    }
+
+    this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
+    this.width = width;
+    this.height = height;
+  }
+
+  clone({
+    scale = this.scale,
+    rotation = this.rotation,
+    offsetX = this.offsetX,
+    offsetY = this.offsetY,
+    dontFlip = false
+  } = {}) {
+    return new PageViewport({
+      viewBox: this.viewBox.slice(),
+      scale,
+      rotation,
+      offsetX,
+      offsetY,
+      dontFlip
+    });
+  }
+
+  convertToViewportPoint(x, y) {
+    return _util.Util.applyTransform([x, y], this.transform);
+  }
+
+  convertToViewportRectangle(rect) {
+    const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
+
+    const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
+
+    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
+  }
+
+  convertToPdfPoint(x, y) {
+    return _util.Util.applyInverseTransform([x, y], this.transform);
+  }
+
+}
+
+exports.PageViewport = PageViewport;
+
+class RenderingCancelledException extends _util.BaseException {
+  constructor(msg, type) {
+    super(msg, "RenderingCancelledException");
+    this.type = type;
+  }
+
+}
+
+exports.RenderingCancelledException = RenderingCancelledException;
+const LinkTarget = {
+  NONE: 0,
+  SELF: 1,
+  BLANK: 2,
+  PARENT: 3,
+  TOP: 4
+};
+exports.LinkTarget = LinkTarget;
+
+function addLinkAttributes(link, {
+  url,
+  target,
+  rel,
+  enabled = true
+} = {}) {
+  (0, _util.assert)(url && typeof url === "string", 'addLinkAttributes: A valid "url" parameter must provided.');
+  const urlNullRemoved = (0, _util.removeNullCharacters)(url);
+
+  if (enabled) {
+    link.href = link.title = urlNullRemoved;
+  } else {
+    link.href = "";
+    link.title = `Disabled: ${urlNullRemoved}`;
+
+    link.onclick = () => {
+      return false;
+    };
+  }
+
+  let targetStr = "";
+
+  switch (target) {
+    case LinkTarget.NONE:
+      break;
+
+    case LinkTarget.SELF:
+      targetStr = "_self";
+      break;
+
+    case LinkTarget.BLANK:
+      targetStr = "_blank";
+      break;
+
+    case LinkTarget.PARENT:
+      targetStr = "_parent";
+      break;
+
+    case LinkTarget.TOP:
+      targetStr = "_top";
+      break;
+  }
+
+  link.target = targetStr;
+  link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL;
+}
+
+function isDataScheme(url) {
+  const ii = url.length;
+  let i = 0;
+
+  while (i < ii && url[i].trim() === "") {
+    i++;
+  }
+
+  return url.substring(i, i + 5).toLowerCase() === "data:";
+}
+
+function isPdfFile(filename) {
+  return typeof filename === "string" && /\.pdf$/i.test(filename);
+}
+
+function getFilenameFromUrl(url) {
+  const anchor = url.indexOf("#");
+  const query = url.indexOf("?");
+  const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
+  return url.substring(url.lastIndexOf("/", end) + 1, end);
+}
+
+function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") {
+  if (typeof url !== "string") {
+    return defaultFilename;
+  }
+
+  if (isDataScheme(url)) {
+    (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.');
+    return defaultFilename;
+  }
+
+  const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
+  const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
+  const splitURI = reURI.exec(url);
+  let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
+
+  if (suggestedFilename) {
+    suggestedFilename = suggestedFilename[0];
+
+    if (suggestedFilename.includes("%")) {
+      try {
+        suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
+      } catch (ex) {}
+    }
+  }
+
+  return suggestedFilename || defaultFilename;
+}
+
+class StatTimer {
+  constructor() {
+    this.started = Object.create(null);
+    this.times = [];
+  }
+
+  time(name) {
+    if (name in this.started) {
+      (0, _util.warn)(`Timer is already running for ${name}`);
+    }
+
+    this.started[name] = Date.now();
+  }
+
+  timeEnd(name) {
+    if (!(name in this.started)) {
+      (0, _util.warn)(`Timer has not been started for ${name}`);
+    }
+
+    this.times.push({
+      name,
+      start: this.started[name],
+      end: Date.now()
+    });
+    delete this.started[name];
+  }
+
+  toString() {
+    const outBuf = [];
+    let longest = 0;
+
+    for (const time of this.times) {
+      const name = time.name;
+
+      if (name.length > longest) {
+        longest = name.length;
+      }
+    }
+
+    for (const time of this.times) {
+      const duration = time.end - time.start;
+      outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`);
+    }
+
+    return outBuf.join("");
+  }
+
+}
+
+exports.StatTimer = StatTimer;
+
+function isValidFetchUrl(url, baseUrl) {
+  try {
+    const {
+      protocol
+    } = baseUrl ? new URL(url, baseUrl) : new URL(url);
+    return protocol === "http:" || protocol === "https:";
+  } catch (ex) {
+    return false;
+  }
+}
+
+function loadScript(src, removeScriptElement = false) {
+  return new Promise((resolve, reject) => {
+    const script = document.createElement("script");
+    script.src = src;
+
+    script.onload = function (evt) {
+      if (removeScriptElement) {
+        script.remove();
+      }
+
+      resolve(evt);
+    };
+
+    script.onerror = function () {
+      reject(new Error(`Cannot load script at: ${script.src}`));
+    };
+
+    (document.head || document.documentElement).appendChild(script);
+  });
+}
+
+function deprecated(details) {
+  console.log("Deprecated API usage: " + details);
+}
+
+let pdfDateStringRegex;
+
+class PDFDateString {
+  static toDateObject(input) {
+    if (!input || !(0, _util.isString)(input)) {
+      return null;
+    }
+
+    if (!pdfDateStringRegex) {
+      pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?");
+    }
+
+    const matches = pdfDateStringRegex.exec(input);
+
+    if (!matches) {
+      return null;
+    }
+
+    const year = parseInt(matches[1], 10);
+    let month = parseInt(matches[2], 10);
+    month = month >= 1 && month <= 12 ? month - 1 : 0;
+    let day = parseInt(matches[3], 10);
+    day = day >= 1 && day <= 31 ? day : 1;
+    let hour = parseInt(matches[4], 10);
+    hour = hour >= 0 && hour <= 23 ? hour : 0;
+    let minute = parseInt(matches[5], 10);
+    minute = minute >= 0 && minute <= 59 ? minute : 0;
+    let second = parseInt(matches[6], 10);
+    second = second >= 0 && second <= 59 ? second : 0;
+    const universalTimeRelation = matches[7] || "Z";
+    let offsetHour = parseInt(matches[8], 10);
+    offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
+    let offsetMinute = parseInt(matches[9], 10) || 0;
+    offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
+
+    if (universalTimeRelation === "-") {
+      hour += offsetHour;
+      minute += offsetMinute;
+    } else if (universalTimeRelation === "+") {
+      hour -= offsetHour;
+      minute -= offsetMinute;
+    }
+
+    return new Date(Date.UTC(year, month, day, hour, minute, second));
+  }
+
+}
+
+exports.PDFDateString = PDFDateString;
+
+function getXfaPageViewport(xfaPage, {
+  scale = 1,
+  rotation = 0
+}) {
+  const {
+    width,
+    height
+  } = xfaPage.attributes.style;
+  const viewBox = [0, 0, parseInt(width), parseInt(height)];
+  return new PageViewport({
+    viewBox,
+    scale,
+    rotation
+  });
+}
+
+/***/ }),
+/* 2 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
+exports.arrayByteLength = arrayByteLength;
+exports.arraysToBytes = arraysToBytes;
+exports.assert = assert;
+exports.bytesToString = bytesToString;
+exports.createObjectURL = createObjectURL;
+exports.createPromiseCapability = createPromiseCapability;
+exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.escapeString = escapeString;
+exports.getModificationDate = getModificationDate;
+exports.getVerbosityLevel = getVerbosityLevel;
+exports.info = info;
+exports.isArrayBuffer = isArrayBuffer;
+exports.isArrayEqual = isArrayEqual;
+exports.isAscii = isAscii;
+exports.isBool = isBool;
+exports.isNum = isNum;
+exports.isSameOrigin = isSameOrigin;
+exports.isString = isString;
+exports.objectFromMap = objectFromMap;
+exports.objectSize = objectSize;
+exports.removeNullCharacters = removeNullCharacters;
+exports.setVerbosityLevel = setVerbosityLevel;
+exports.shadow = shadow;
+exports.string32 = string32;
+exports.stringToBytes = stringToBytes;
+exports.stringToPDFString = stringToPDFString;
+exports.stringToUTF16BEString = stringToUTF16BEString;
+exports.stringToUTF8String = stringToUTF8String;
+exports.unreachable = unreachable;
+exports.utf8StringToString = utf8StringToString;
+exports.warn = warn;
+
+__w_pdfjs_require__(3);
+
+const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
+exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
+const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
+exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
+const RenderingIntentFlag = {
+  ANY: 0x01,
+  DISPLAY: 0x02,
+  PRINT: 0x04,
+  ANNOTATIONS_FORMS: 0x10,
+  ANNOTATIONS_STORAGE: 0x20,
+  ANNOTATIONS_DISABLE: 0x40,
+  OPLIST: 0x100
+};
+exports.RenderingIntentFlag = RenderingIntentFlag;
+const AnnotationMode = {
+  DISABLE: 0,
+  ENABLE: 1,
+  ENABLE_FORMS: 2,
+  ENABLE_STORAGE: 3
+};
+exports.AnnotationMode = AnnotationMode;
+const PermissionFlag = {
+  PRINT: 0x04,
+  MODIFY_CONTENTS: 0x08,
+  COPY: 0x10,
+  MODIFY_ANNOTATIONS: 0x20,
+  FILL_INTERACTIVE_FORMS: 0x100,
+  COPY_FOR_ACCESSIBILITY: 0x200,
+  ASSEMBLE: 0x400,
+  PRINT_HIGH_QUALITY: 0x800
+};
+exports.PermissionFlag = PermissionFlag;
+const TextRenderingMode = {
+  FILL: 0,
+  STROKE: 1,
+  FILL_STROKE: 2,
+  INVISIBLE: 3,
+  FILL_ADD_TO_PATH: 4,
+  STROKE_ADD_TO_PATH: 5,
+  FILL_STROKE_ADD_TO_PATH: 6,
+  ADD_TO_PATH: 7,
+  FILL_STROKE_MASK: 3,
+  ADD_TO_PATH_FLAG: 4
+};
+exports.TextRenderingMode = TextRenderingMode;
+const ImageKind = {
+  GRAYSCALE_1BPP: 1,
+  RGB_24BPP: 2,
+  RGBA_32BPP: 3
+};
+exports.ImageKind = ImageKind;
+const AnnotationType = {
+  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
+};
+exports.AnnotationType = AnnotationType;
+const AnnotationStateModelType = {
+  MARKED: "Marked",
+  REVIEW: "Review"
+};
+exports.AnnotationStateModelType = AnnotationStateModelType;
+const AnnotationMarkedState = {
+  MARKED: "Marked",
+  UNMARKED: "Unmarked"
+};
+exports.AnnotationMarkedState = AnnotationMarkedState;
+const AnnotationReviewState = {
+  ACCEPTED: "Accepted",
+  REJECTED: "Rejected",
+  CANCELLED: "Cancelled",
+  COMPLETED: "Completed",
+  NONE: "None"
+};
+exports.AnnotationReviewState = AnnotationReviewState;
+const AnnotationReplyType = {
+  GROUP: "Group",
+  REPLY: "R"
+};
+exports.AnnotationReplyType = AnnotationReplyType;
+const AnnotationFlag = {
+  INVISIBLE: 0x01,
+  HIDDEN: 0x02,
+  PRINT: 0x04,
+  NOZOOM: 0x08,
+  NOROTATE: 0x10,
+  NOVIEW: 0x20,
+  READONLY: 0x40,
+  LOCKED: 0x80,
+  TOGGLENOVIEW: 0x100,
+  LOCKEDCONTENTS: 0x200
+};
+exports.AnnotationFlag = AnnotationFlag;
+const AnnotationFieldFlag = {
+  READONLY: 0x0000001,
+  REQUIRED: 0x0000002,
+  NOEXPORT: 0x0000004,
+  MULTILINE: 0x0001000,
+  PASSWORD: 0x0002000,
+  NOTOGGLETOOFF: 0x0004000,
+  RADIO: 0x0008000,
+  PUSHBUTTON: 0x0010000,
+  COMBO: 0x0020000,
+  EDIT: 0x0040000,
+  SORT: 0x0080000,
+  FILESELECT: 0x0100000,
+  MULTISELECT: 0x0200000,
+  DONOTSPELLCHECK: 0x0400000,
+  DONOTSCROLL: 0x0800000,
+  COMB: 0x1000000,
+  RICHTEXT: 0x2000000,
+  RADIOSINUNISON: 0x2000000,
+  COMMITONSELCHANGE: 0x4000000
+};
+exports.AnnotationFieldFlag = AnnotationFieldFlag;
+const AnnotationBorderStyleType = {
+  SOLID: 1,
+  DASHED: 2,
+  BEVELED: 3,
+  INSET: 4,
+  UNDERLINE: 5
+};
+exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
+const AnnotationActionEventType = {
+  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"
+};
+exports.AnnotationActionEventType = AnnotationActionEventType;
+const DocumentActionEventType = {
+  WC: "WillClose",
+  WS: "WillSave",
+  DS: "DidSave",
+  WP: "WillPrint",
+  DP: "DidPrint"
+};
+exports.DocumentActionEventType = DocumentActionEventType;
+const PageActionEventType = {
+  O: "PageOpen",
+  C: "PageClose"
+};
+exports.PageActionEventType = PageActionEventType;
+const StreamType = {
+  UNKNOWN: "UNKNOWN",
+  FLATE: "FLATE",
+  LZW: "LZW",
+  DCT: "DCT",
+  JPX: "JPX",
+  JBIG: "JBIG",
+  A85: "A85",
+  AHX: "AHX",
+  CCF: "CCF",
+  RLX: "RLX"
+};
+exports.StreamType = StreamType;
+const FontType = {
+  UNKNOWN: "UNKNOWN",
+  TYPE1: "TYPE1",
+  TYPE1STANDARD: "TYPE1STANDARD",
+  TYPE1C: "TYPE1C",
+  CIDFONTTYPE0: "CIDFONTTYPE0",
+  CIDFONTTYPE0C: "CIDFONTTYPE0C",
+  TRUETYPE: "TRUETYPE",
+  CIDFONTTYPE2: "CIDFONTTYPE2",
+  TYPE3: "TYPE3",
+  OPENTYPE: "OPENTYPE",
+  TYPE0: "TYPE0",
+  MMTYPE1: "MMTYPE1"
+};
+exports.FontType = FontType;
+const VerbosityLevel = {
+  ERRORS: 0,
+  WARNINGS: 1,
+  INFOS: 5
+};
+exports.VerbosityLevel = VerbosityLevel;
+const CMapCompressionType = {
+  NONE: 0,
+  BINARY: 1,
+  STREAM: 2
+};
+exports.CMapCompressionType = CMapCompressionType;
+const OPS = {
+  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,
+  beginAnnotations: 78,
+  endAnnotations: 79,
+  beginAnnotation: 80,
+  endAnnotation: 81,
+  paintJpegXObject: 82,
+  paintImageMaskXObject: 83,
+  paintImageMaskXObjectGroup: 84,
+  paintImageXObject: 85,
+  paintInlineImageXObject: 86,
+  paintInlineImageXObjectGroup: 87,
+  paintImageXObjectRepeat: 88,
+  paintImageMaskXObjectRepeat: 89,
+  paintSolidColorImageMask: 90,
+  constructPath: 91
+};
+exports.OPS = OPS;
+const UNSUPPORTED_FEATURES = {
+  unknown: "unknown",
+  forms: "forms",
+  javaScript: "javaScript",
+  signatures: "signatures",
+  smask: "smask",
+  shadingPattern: "shadingPattern",
+  font: "font",
+  errorTilingPattern: "errorTilingPattern",
+  errorExtGState: "errorExtGState",
+  errorXObject: "errorXObject",
+  errorFontLoadType3: "errorFontLoadType3",
+  errorFontState: "errorFontState",
+  errorFontMissing: "errorFontMissing",
+  errorFontTranslate: "errorFontTranslate",
+  errorColorSpace: "errorColorSpace",
+  errorOperatorList: "errorOperatorList",
+  errorFontToUnicode: "errorFontToUnicode",
+  errorFontLoadNative: "errorFontLoadNative",
+  errorFontBuildPath: "errorFontBuildPath",
+  errorFontGetPath: "errorFontGetPath",
+  errorMarkedContent: "errorMarkedContent",
+  errorContentSubStream: "errorContentSubStream"
+};
+exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
+const PasswordResponses = {
+  NEED_PASSWORD: 1,
+  INCORRECT_PASSWORD: 2
+};
+exports.PasswordResponses = PasswordResponses;
+let verbosity = VerbosityLevel.WARNINGS;
+
+function setVerbosityLevel(level) {
+  if (Number.isInteger(level)) {
+    verbosity = level;
+  }
+}
+
+function getVerbosityLevel() {
+  return verbosity;
+}
+
+function info(msg) {
+  if (verbosity >= VerbosityLevel.INFOS) {
+    console.log(`Info: ${msg}`);
+  }
+}
+
+function warn(msg) {
+  if (verbosity >= VerbosityLevel.WARNINGS) {
+    console.log(`Warning: ${msg}`);
+  }
+}
+
+function unreachable(msg) {
+  throw new Error(msg);
+}
+
+function assert(cond, msg) {
+  if (!cond) {
+    unreachable(msg);
+  }
+}
+
+function isSameOrigin(baseUrl, otherUrl) {
+  let base;
+
+  try {
+    base = new URL(baseUrl);
+
+    if (!base.origin || base.origin === "null") {
+      return false;
+    }
+  } catch (e) {
+    return false;
+  }
+
+  const other = new URL(otherUrl, base);
+  return base.origin === other.origin;
+}
+
+function _isValidProtocol(url) {
+  if (!url) {
+    return false;
+  }
+
+  switch (url.protocol) {
+    case "http:":
+    case "https:":
+    case "ftp:":
+    case "mailto:":
+    case "tel:":
+      return true;
+
+    default:
+      return false;
+  }
+}
+
+function createValidAbsoluteUrl(url, baseUrl = null, options = null) {
+  if (!url) {
+    return null;
+  }
+
+  try {
+    if (options && typeof url === "string") {
+      if (options.addDefaultProtocol && url.startsWith("www.")) {
+        const dots = url.match(/\./g);
+
+        if (dots && dots.length >= 2) {
+          url = `http://${url}`;
+        }
+      }
+
+      if (options.tryConvertEncoding) {
+        try {
+          url = stringToUTF8String(url);
+        } catch (ex) {}
+      }
+    }
+
+    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);
+
+    if (_isValidProtocol(absoluteUrl)) {
+      return absoluteUrl;
+    }
+  } catch (ex) {}
+
+  return null;
+}
+
+function shadow(obj, prop, value) {
+  Object.defineProperty(obj, prop, {
+    value,
+    enumerable: true,
+    configurable: true,
+    writable: false
+  });
+  return value;
+}
+
+const BaseException = function BaseExceptionClosure() {
+  function BaseException(message, name) {
+    if (this.constructor === BaseException) {
+      unreachable("Cannot initialize BaseException.");
+    }
+
+    this.message = message;
+    this.name = name;
+  }
+
+  BaseException.prototype = new Error();
+  BaseException.constructor = BaseException;
+  return BaseException;
+}();
+
+exports.BaseException = BaseException;
+
+class PasswordException extends BaseException {
+  constructor(msg, code) {
+    super(msg, "PasswordException");
+    this.code = code;
+  }
+
+}
+
+exports.PasswordException = PasswordException;
+
+class UnknownErrorException extends BaseException {
+  constructor(msg, details) {
+    super(msg, "UnknownErrorException");
+    this.details = details;
+  }
+
+}
+
+exports.UnknownErrorException = UnknownErrorException;
+
+class InvalidPDFException extends BaseException {
+  constructor(msg) {
+    super(msg, "InvalidPDFException");
+  }
+
+}
+
+exports.InvalidPDFException = InvalidPDFException;
+
+class MissingPDFException extends BaseException {
+  constructor(msg) {
+    super(msg, "MissingPDFException");
+  }
+
+}
+
+exports.MissingPDFException = MissingPDFException;
+
+class UnexpectedResponseException extends BaseException {
+  constructor(msg, status) {
+    super(msg, "UnexpectedResponseException");
+    this.status = status;
+  }
+
+}
+
+exports.UnexpectedResponseException = UnexpectedResponseException;
+
+class FormatError extends BaseException {
+  constructor(msg) {
+    super(msg, "FormatError");
+  }
+
+}
+
+exports.FormatError = FormatError;
+
+class AbortException extends BaseException {
+  constructor(msg) {
+    super(msg, "AbortException");
+  }
+
+}
+
+exports.AbortException = AbortException;
+const NullCharactersRegExp = /\x00+/g;
+const InvisibleCharactersRegExp = /[\x01-\x1F]/g;
+
+function removeNullCharacters(str, replaceInvisible = false) {
+  if (typeof str !== "string") {
+    warn("The argument for removeNullCharacters must be a string.");
+    return str;
+  }
+
+  if (replaceInvisible) {
+    str = str.replace(InvisibleCharactersRegExp, " ");
+  }
+
+  return str.replace(NullCharactersRegExp, "");
+}
+
+function bytesToString(bytes) {
+  assert(bytes !== null && typeof bytes === "object" && bytes.length !== undefined, "Invalid argument for bytesToString");
+  const length = bytes.length;
+  const MAX_ARGUMENT_COUNT = 8192;
+
+  if (length < MAX_ARGUMENT_COUNT) {
+    return String.fromCharCode.apply(null, bytes);
+  }
+
+  const strBuf = [];
+
+  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
+    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
+    const chunk = bytes.subarray(i, chunkEnd);
+    strBuf.push(String.fromCharCode.apply(null, chunk));
+  }
+
+  return strBuf.join("");
+}
+
+function stringToBytes(str) {
+  assert(typeof str === "string", "Invalid argument for stringToBytes");
+  const length = str.length;
+  const bytes = new Uint8Array(length);
+
+  for (let i = 0; i < length; ++i) {
+    bytes[i] = str.charCodeAt(i) & 0xff;
+  }
+
+  return bytes;
+}
+
+function arrayByteLength(arr) {
+  if (arr.length !== undefined) {
+    return arr.length;
+  }
+
+  assert(arr.byteLength !== undefined, "arrayByteLength - invalid argument.");
+  return arr.byteLength;
+}
+
+function arraysToBytes(arr) {
+  const length = arr.length;
+
+  if (length === 1 && arr[0] instanceof Uint8Array) {
+    return arr[0];
+  }
+
+  let resultLength = 0;
+
+  for (let i = 0; i < length; i++) {
+    resultLength += arrayByteLength(arr[i]);
+  }
+
+  let pos = 0;
+  const data = new Uint8Array(resultLength);
+
+  for (let i = 0; i < length; i++) {
+    let item = arr[i];
+
+    if (!(item instanceof Uint8Array)) {
+      if (typeof item === "string") {
+        item = stringToBytes(item);
+      } else {
+        item = new Uint8Array(item);
+      }
+    }
+
+    const itemLength = item.byteLength;
+    data.set(item, pos);
+    pos += itemLength;
+  }
+
+  return data;
+}
+
+function string32(value) {
+  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
+}
+
+function objectSize(obj) {
+  return Object.keys(obj).length;
+}
+
+function objectFromMap(map) {
+  const obj = Object.create(null);
+
+  for (const [key, value] of map) {
+    obj[key] = value;
+  }
+
+  return obj;
+}
+
+function isLittleEndian() {
+  const buffer8 = new Uint8Array(4);
+  buffer8[0] = 1;
+  const view32 = new Uint32Array(buffer8.buffer, 0, 1);
+  return view32[0] === 1;
+}
+
+const IsLittleEndianCached = {
+  get value() {
+    return shadow(this, "value", isLittleEndian());
+  }
+
+};
+exports.IsLittleEndianCached = IsLittleEndianCached;
+
+function isEvalSupported() {
+  try {
+    new Function("");
+    return true;
+  } catch (e) {
+    return false;
+  }
+}
+
+const IsEvalSupportedCached = {
+  get value() {
+    return shadow(this, "value", isEvalSupported());
+  }
+
+};
+exports.IsEvalSupportedCached = IsEvalSupportedCached;
+const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0"));
+
+class Util {
+  static makeHexColor(r, g, b) {
+    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;
+  }
+
+  static transform(m1, m2) {
+    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]];
+  }
+
+  static applyTransform(p, m) {
+    const xt = p[0] * m[0] + p[1] * m[2] + m[4];
+    const yt = p[0] * m[1] + p[1] * m[3] + m[5];
+    return [xt, yt];
+  }
+
+  static applyInverseTransform(p, m) {
+    const d = m[0] * m[3] - m[1] * m[2];
+    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
+    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
+    return [xt, yt];
+  }
+
+  static getAxialAlignedBoundingBox(r, m) {
+    const p1 = Util.applyTransform(r, m);
+    const p2 = Util.applyTransform(r.slice(2, 4), m);
+    const p3 = Util.applyTransform([r[0], r[3]], m);
+    const p4 = Util.applyTransform([r[2], r[1]], m);
+    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];
+  }
+
+  static inverseTransform(m) {
+    const d = m[0] * m[3] - m[1] * m[2];
+    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];
+  }
+
+  static apply3dTransform(m, v) {
+    return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];
+  }
+
+  static singularValueDecompose2dScale(m) {
+    const transpose = [m[0], m[2], m[1], m[3]];
+    const a = m[0] * transpose[0] + m[1] * transpose[2];
+    const b = m[0] * transpose[1] + m[1] * transpose[3];
+    const c = m[2] * transpose[0] + m[3] * transpose[2];
+    const d = m[2] * transpose[1] + m[3] * transpose[3];
+    const first = (a + d) / 2;
+    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;
+    const sx = first + second || 1;
+    const sy = first - second || 1;
+    return [Math.sqrt(sx), Math.sqrt(sy)];
+  }
+
+  static normalizeRect(rect) {
+    const r = rect.slice(0);
+
+    if (rect[0] > rect[2]) {
+      r[0] = rect[2];
+      r[2] = rect[0];
+    }
+
+    if (rect[1] > rect[3]) {
+      r[1] = rect[3];
+      r[3] = rect[1];
+    }
+
+    return r;
+  }
+
+  static intersect(rect1, rect2) {
+    function compare(a, b) {
+      return a - b;
+    }
+
+    const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);
+    const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);
+    const result = [];
+    rect1 = Util.normalizeRect(rect1);
+    rect2 = Util.normalizeRect(rect2);
+
+    if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
+      result[0] = orderedX[1];
+      result[2] = orderedX[2];
+    } else {
+      return null;
+    }
+
+    if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
+      result[1] = orderedY[1];
+      result[3] = orderedY[2];
+    } else {
+      return null;
+    }
+
+    return result;
+  }
+
+  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {
+    const tvalues = [],
+          bounds = [[], []];
+    let a, b, c, t, t1, t2, b2ac, sqrtb2ac;
+
+    for (let i = 0; i < 2; ++i) {
+      if (i === 0) {
+        b = 6 * x0 - 12 * x1 + 6 * x2;
+        a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;
+        c = 3 * x1 - 3 * x0;
+      } else {
+        b = 6 * y0 - 12 * y1 + 6 * y2;
+        a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;
+        c = 3 * y1 - 3 * y0;
+      }
+
+      if (Math.abs(a) < 1e-12) {
+        if (Math.abs(b) < 1e-12) {
+          continue;
+        }
+
+        t = -c / b;
+
+        if (0 < t && t < 1) {
+          tvalues.push(t);
+        }
+
+        continue;
+      }
+
+      b2ac = b * b - 4 * c * a;
+      sqrtb2ac = Math.sqrt(b2ac);
+
+      if (b2ac < 0) {
+        continue;
+      }
+
+      t1 = (-b + sqrtb2ac) / (2 * a);
+
+      if (0 < t1 && t1 < 1) {
+        tvalues.push(t1);
+      }
+
+      t2 = (-b - sqrtb2ac) / (2 * a);
+
+      if (0 < t2 && t2 < 1) {
+        tvalues.push(t2);
+      }
+    }
+
+    let j = tvalues.length,
+        mt;
+    const jlen = j;
+
+    while (j--) {
+      t = tvalues[j];
+      mt = 1 - t;
+      bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;
+      bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;
+    }
+
+    bounds[0][jlen] = x0;
+    bounds[1][jlen] = y0;
+    bounds[0][jlen + 1] = x3;
+    bounds[1][jlen + 1] = y3;
+    bounds[0].length = bounds[1].length = jlen + 2;
+    return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])];
+  }
+
+}
+
+exports.Util = Util;
+const 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];
+
+function stringToPDFString(str) {
+  const length = str.length,
+        strBuf = [];
+
+  if (str[0] === "\xFE" && str[1] === "\xFF") {
+    for (let i = 2; i < length; i += 2) {
+      strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
+    }
+  } else if (str[0] === "\xFF" && str[1] === "\xFE") {
+    for (let i = 2; i < length; i += 2) {
+      strBuf.push(String.fromCharCode(str.charCodeAt(i + 1) << 8 | str.charCodeAt(i)));
+    }
+  } else {
+    for (let i = 0; i < length; ++i) {
+      const code = PDFStringTranslateTable[str.charCodeAt(i)];
+      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
+    }
+  }
+
+  return strBuf.join("");
+}
+
+function escapeString(str) {
+  return str.replace(/([()\\\n\r])/g, match => {
+    if (match === "\n") {
+      return "\\n";
+    } else if (match === "\r") {
+      return "\\r";
+    }
+
+    return `\\${match}`;
+  });
+}
+
+function isAscii(str) {
+  return /^[\x00-\x7F]*$/.test(str);
+}
+
+function stringToUTF16BEString(str) {
+  const buf = ["\xFE\xFF"];
+
+  for (let i = 0, ii = str.length; i < ii; i++) {
+    const char = str.charCodeAt(i);
+    buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));
+  }
+
+  return buf.join("");
+}
+
+function stringToUTF8String(str) {
+  return decodeURIComponent(escape(str));
+}
+
+function utf8StringToString(str) {
+  return unescape(encodeURIComponent(str));
+}
+
+function isBool(v) {
+  return typeof v === "boolean";
+}
+
+function isNum(v) {
+  return typeof v === "number";
+}
+
+function isString(v) {
+  return typeof v === "string";
+}
+
+function isArrayBuffer(v) {
+  return typeof v === "object" && v !== null && v.byteLength !== undefined;
+}
+
+function isArrayEqual(arr1, arr2) {
+  if (arr1.length !== arr2.length) {
+    return false;
+  }
+
+  for (let i = 0, ii = arr1.length; i < ii; i++) {
+    if (arr1[i] !== arr2[i]) {
+      return false;
+    }
+  }
+
+  return true;
+}
+
+function getModificationDate(date = new Date()) {
+  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")];
+  return buffer.join("");
+}
+
+function createPromiseCapability() {
+  const capability = Object.create(null);
+  let isSettled = false;
+  Object.defineProperty(capability, "settled", {
+    get() {
+      return isSettled;
+    }
+
+  });
+  capability.promise = new Promise(function (resolve, reject) {
+    capability.resolve = function (data) {
+      isSettled = true;
+      resolve(data);
+    };
+
+    capability.reject = function (reason) {
+      isSettled = true;
+      reject(reason);
+    };
+  });
+  return capability;
+}
+
+function createObjectURL(data, contentType = "", forceDataSchema = false) {
+  if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) {
+    return URL.createObjectURL(new Blob([data], {
+      type: contentType
+    }));
+  }
+
+  const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+  let buffer = `data:${contentType};base64,`;
+
+  for (let i = 0, ii = data.length; i < ii; i += 3) {
+    const b1 = data[i] & 0xff;
+    const b2 = data[i + 1] & 0xff;
+    const b3 = data[i + 2] & 0xff;
+    const d1 = b1 >> 2,
+          d2 = (b1 & 3) << 4 | b2 >> 4;
+    const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;
+    const d4 = i + 2 < ii ? b3 & 0x3f : 64;
+    buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
+  }
+
+  return buffer;
+}
+
+/***/ }),
+/* 3 */
+/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {
+
+
+
+var _is_node = __w_pdfjs_require__(4);
+
+;
+
+/***/ }),
+/* 4 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.isNodeJS = void 0;
+const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser");
+exports.isNodeJS = isNodeJS;
+
+/***/ }),
+/* 5 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+class BaseCanvasFactory {
+  constructor() {
+    if (this.constructor === BaseCanvasFactory) {
+      (0, _util.unreachable)("Cannot initialize BaseCanvasFactory.");
+    }
+  }
+
+  create(width, height) {
+    if (width <= 0 || height <= 0) {
+      throw new Error("Invalid canvas size");
+    }
+
+    const canvas = this._createCanvas(width, height);
+
+    return {
+      canvas,
+      context: canvas.getContext("2d")
+    };
+  }
+
+  reset(canvasAndContext, width, height) {
+    if (!canvasAndContext.canvas) {
+      throw new Error("Canvas is not specified");
+    }
+
+    if (width <= 0 || height <= 0) {
+      throw new Error("Invalid canvas size");
+    }
+
+    canvasAndContext.canvas.width = width;
+    canvasAndContext.canvas.height = height;
+  }
+
+  destroy(canvasAndContext) {
+    if (!canvasAndContext.canvas) {
+      throw new Error("Canvas is not specified");
+    }
+
+    canvasAndContext.canvas.width = 0;
+    canvasAndContext.canvas.height = 0;
+    canvasAndContext.canvas = null;
+    canvasAndContext.context = null;
+  }
+
+  _createCanvas(width, height) {
+    (0, _util.unreachable)("Abstract method `_createCanvas` called.");
+  }
+
+}
+
+exports.BaseCanvasFactory = BaseCanvasFactory;
+
+class BaseCMapReaderFactory {
+  constructor({
+    baseUrl = null,
+    isCompressed = false
+  }) {
+    if (this.constructor === BaseCMapReaderFactory) {
+      (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory.");
+    }
+
+    this.baseUrl = baseUrl;
+    this.isCompressed = isCompressed;
+  }
+
+  async fetch({
+    name
+  }) {
+    if (!this.baseUrl) {
+      throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
+    }
+
+    if (!name) {
+      throw new Error("CMap name must be specified.");
+    }
+
+    const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : "");
+    const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
+    return this._fetchData(url, compressionType).catch(reason => {
+      throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`);
+    });
+  }
+
+  _fetchData(url, compressionType) {
+    (0, _util.unreachable)("Abstract method `_fetchData` called.");
+  }
+
+}
+
+exports.BaseCMapReaderFactory = BaseCMapReaderFactory;
+
+class BaseStandardFontDataFactory {
+  constructor({
+    baseUrl = null
+  }) {
+    if (this.constructor === BaseStandardFontDataFactory) {
+      (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory.");
+    }
+
+    this.baseUrl = baseUrl;
+  }
+
+  async fetch({
+    filename
+  }) {
+    if (!this.baseUrl) {
+      throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.');
+    }
+
+    if (!filename) {
+      throw new Error("Font filename must be specified.");
+    }
+
+    const url = `${this.baseUrl}${filename}`;
+    return this._fetchData(url).catch(reason => {
+      throw new Error(`Unable to load font data at: ${url}`);
+    });
+  }
+
+  _fetchData(url) {
+    (0, _util.unreachable)("Abstract method `_fetchData` called.");
+  }
+
+}
+
+exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;
+
+class BaseSVGFactory {
+  constructor() {
+    if (this.constructor === BaseSVGFactory) {
+      (0, _util.unreachable)("Cannot initialize BaseSVGFactory.");
+    }
+  }
+
+  create(width, height) {
+    if (width <= 0 || height <= 0) {
+      throw new Error("Invalid SVG dimensions");
+    }
+
+    const svg = this._createSVG("svg:svg");
+
+    svg.setAttribute("version", "1.1");
+    svg.setAttribute("width", `${width}px`);
+    svg.setAttribute("height", `${height}px`);
+    svg.setAttribute("preserveAspectRatio", "none");
+    svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
+    return svg;
+  }
+
+  createElement(type) {
+    if (typeof type !== "string") {
+      throw new Error("Invalid SVG element type");
+    }
+
+    return this._createSVG(type);
+  }
+
+  _createSVG(type) {
+    (0, _util.unreachable)("Abstract method `_createSVG` called.");
+  }
+
+}
+
+exports.BaseSVGFactory = BaseSVGFactory;
+
+/***/ }),
+/* 6 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.build = exports.RenderTask = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;
+exports.getDocument = getDocument;
+exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
+exports.version = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _display_utils = __w_pdfjs_require__(1);
+
+var _font_loader = __w_pdfjs_require__(7);
+
+var _node_utils = __w_pdfjs_require__(8);
+
+var _annotation_storage = __w_pdfjs_require__(9);
+
+var _canvas = __w_pdfjs_require__(10);
+
+var _worker_options = __w_pdfjs_require__(12);
+
+var _is_node = __w_pdfjs_require__(4);
+
+var _message_handler = __w_pdfjs_require__(13);
+
+var _metadata = __w_pdfjs_require__(14);
+
+var _optional_content_config = __w_pdfjs_require__(15);
+
+var _transport_stream = __w_pdfjs_require__(16);
+
+var _xfa_text = __w_pdfjs_require__(17);
+
+const DEFAULT_RANGE_CHUNK_SIZE = 65536;
+const RENDERING_CANCELLED_TIMEOUT = 100;
+const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;
+exports.DefaultCanvasFactory = DefaultCanvasFactory;
+const DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;
+exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;
+const DefaultStandardFontDataFactory = _is_node.isNodeJS ? _node_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory;
+exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;
+let createPDFNetworkStream;
+
+function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
+  createPDFNetworkStream = pdfNetworkStreamFactory;
+}
+
+function getDocument(src) {
+  const task = new PDFDocumentLoadingTask();
+  let source;
+
+  if (typeof src === "string" || src instanceof URL) {
+    source = {
+      url: src
+    };
+  } else if ((0, _util.isArrayBuffer)(src)) {
+    source = {
+      data: src
+    };
+  } else if (src instanceof PDFDataRangeTransport) {
+    source = {
+      range: src
+    };
+  } else {
+    if (typeof src !== "object") {
+      throw new Error("Invalid parameter in getDocument, " + "need either string, URL, Uint8Array, or parameter object.");
+    }
+
+    if (!src.url && !src.data && !src.range) {
+      throw new Error("Invalid parameter object: need either .data, .range or .url");
+    }
+
+    source = src;
+  }
+
+  const params = Object.create(null);
+  let rangeTransport = null,
+      worker = null;
+
+  for (const key in source) {
+    const value = source[key];
+
+    switch (key) {
+      case "url":
+        if (typeof window !== "undefined") {
+          try {
+            params[key] = new URL(value, window.location).href;
+            continue;
+          } catch (ex) {
+            (0, _util.warn)(`Cannot create valid URL: "${ex}".`);
+          }
+        } else if (typeof value === "string" || value instanceof URL) {
+          params[key] = value.toString();
+          continue;
+        }
+
+        throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property.");
+
+      case "range":
+        rangeTransport = value;
+        continue;
+
+      case "worker":
+        worker = value;
+        continue;
+
+      case "data":
+        if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) {
+          params[key] = new Uint8Array(value);
+        } else if (value instanceof Uint8Array) {
+          break;
+        } else if (typeof value === "string") {
+          params[key] = (0, _util.stringToBytes)(value);
+        } else if (typeof value === "object" && value !== null && !isNaN(value.length)) {
+          params[key] = new Uint8Array(value);
+        } else if ((0, _util.isArrayBuffer)(value)) {
+          params[key] = new Uint8Array(value);
+        } else {
+          throw new Error("Invalid PDF binary data: either typed array, " + "string, or array-like object is expected in the data property.");
+        }
+
+        continue;
+    }
+
+    params[key] = value;
+  }
+
+  params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
+  params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;
+  params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory;
+  params.ignoreErrors = params.stopAtErrors !== true;
+  params.fontExtraProperties = params.fontExtraProperties === true;
+  params.pdfBug = params.pdfBug === true;
+  params.enableXfa = params.enableXfa === true;
+
+  if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) {
+    params.docBaseUrl = null;
+  }
+
+  if (!Number.isInteger(params.maxImageSize)) {
+    params.maxImageSize = -1;
+  }
+
+  if (typeof params.useWorkerFetch !== "boolean") {
+    params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory;
+  }
+
+  if (typeof params.isEvalSupported !== "boolean") {
+    params.isEvalSupported = true;
+  }
+
+  if (typeof params.disableFontFace !== "boolean") {
+    params.disableFontFace = _is_node.isNodeJS;
+  }
+
+  if (typeof params.useSystemFonts !== "boolean") {
+    params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace;
+  }
+
+  if (typeof params.ownerDocument === "undefined") {
+    params.ownerDocument = globalThis.document;
+  }
+
+  if (typeof params.disableRange !== "boolean") {
+    params.disableRange = false;
+  }
+
+  if (typeof params.disableStream !== "boolean") {
+    params.disableStream = false;
+  }
+
+  if (typeof params.disableAutoFetch !== "boolean") {
+    params.disableAutoFetch = false;
+  }
+
+  (0, _util.setVerbosityLevel)(params.verbosity);
+
+  if (!worker) {
+    const workerParams = {
+      verbosity: params.verbosity,
+      port: _worker_options.GlobalWorkerOptions.workerPort
+    };
+    worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);
+    task._worker = worker;
+  }
+
+  const docId = task.docId;
+  worker.promise.then(function () {
+    if (task.destroyed) {
+      throw new Error("Loading aborted");
+    }
+
+    const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);
+
+    const networkStreamPromise = new Promise(function (resolve) {
+      let networkStream;
+
+      if (rangeTransport) {
+        networkStream = new _transport_stream.PDFDataTransportStream({
+          length: params.length,
+          initialData: params.initialData,
+          progressiveDone: params.progressiveDone,
+          contentDispositionFilename: params.contentDispositionFilename,
+          disableRange: params.disableRange,
+          disableStream: params.disableStream
+        }, rangeTransport);
+      } else if (!params.data) {
+        networkStream = createPDFNetworkStream({
+          url: params.url,
+          length: params.length,
+          httpHeaders: params.httpHeaders,
+          withCredentials: params.withCredentials,
+          rangeChunkSize: params.rangeChunkSize,
+          disableRange: params.disableRange,
+          disableStream: params.disableStream
+        });
+      }
+
+      resolve(networkStream);
+    });
+    return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {
+      if (task.destroyed) {
+        throw new Error("Loading aborted");
+      }
+
+      const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
+      const transport = new WorkerTransport(messageHandler, task, networkStream, params);
+      task._transport = transport;
+      messageHandler.send("Ready", null);
+    });
+  }).catch(task._capability.reject);
+  return task;
+}
+
+async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
+  if (worker.destroyed) {
+    throw new Error("Worker was destroyed");
+  }
+
+  if (pdfDataRangeTransport) {
+    source.length = pdfDataRangeTransport.length;
+    source.initialData = pdfDataRangeTransport.initialData;
+    source.progressiveDone = pdfDataRangeTransport.progressiveDone;
+    source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename;
+  }
+
+  const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", {
+    docId,
+    apiVersion: '2.12.313',
+    source: {
+      data: source.data,
+      url: source.url,
+      password: source.password,
+      disableAutoFetch: source.disableAutoFetch,
+      rangeChunkSize: source.rangeChunkSize,
+      length: source.length
+    },
+    maxImageSize: source.maxImageSize,
+    disableFontFace: source.disableFontFace,
+    docBaseUrl: source.docBaseUrl,
+    ignoreErrors: source.ignoreErrors,
+    isEvalSupported: source.isEvalSupported,
+    fontExtraProperties: source.fontExtraProperties,
+    enableXfa: source.enableXfa,
+    useSystemFonts: source.useSystemFonts,
+    cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,
+    standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null
+  });
+
+  if (worker.destroyed) {
+    throw new Error("Worker was destroyed");
+  }
+
+  return workerId;
+}
+
+class PDFDocumentLoadingTask {
+  static get idCounters() {
+    return (0, _util.shadow)(this, "idCounters", {
+      doc: 0
+    });
+  }
+
+  constructor() {
+    this._capability = (0, _util.createPromiseCapability)();
+    this._transport = null;
+    this._worker = null;
+    this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;
+    this.destroyed = false;
+    this.onPassword = null;
+    this.onProgress = null;
+    this.onUnsupportedFeature = null;
+  }
+
+  get promise() {
+    return this._capability.promise;
+  }
+
+  async destroy() {
+    this.destroyed = true;
+    await this._transport?.destroy();
+    this._transport = null;
+
+    if (this._worker) {
+      this._worker.destroy();
+
+      this._worker = null;
+    }
+  }
+
+}
+
+exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;
+
+class PDFDataRangeTransport {
+  constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {
+    this.length = length;
+    this.initialData = initialData;
+    this.progressiveDone = progressiveDone;
+    this.contentDispositionFilename = contentDispositionFilename;
+    this._rangeListeners = [];
+    this._progressListeners = [];
+    this._progressiveReadListeners = [];
+    this._progressiveDoneListeners = [];
+    this._readyCapability = (0, _util.createPromiseCapability)();
+  }
+
+  addRangeListener(listener) {
+    this._rangeListeners.push(listener);
+  }
+
+  addProgressListener(listener) {
+    this._progressListeners.push(listener);
+  }
+
+  addProgressiveReadListener(listener) {
+    this._progressiveReadListeners.push(listener);
+  }
+
+  addProgressiveDoneListener(listener) {
+    this._progressiveDoneListeners.push(listener);
+  }
+
+  onDataRange(begin, chunk) {
+    for (const listener of this._rangeListeners) {
+      listener(begin, chunk);
+    }
+  }
+
+  onDataProgress(loaded, total) {
+    this._readyCapability.promise.then(() => {
+      for (const listener of this._progressListeners) {
+        listener(loaded, total);
+      }
+    });
+  }
+
+  onDataProgressiveRead(chunk) {
+    this._readyCapability.promise.then(() => {
+      for (const listener of this._progressiveReadListeners) {
+        listener(chunk);
+      }
+    });
+  }
+
+  onDataProgressiveDone() {
+    this._readyCapability.promise.then(() => {
+      for (const listener of this._progressiveDoneListeners) {
+        listener();
+      }
+    });
+  }
+
+  transportReady() {
+    this._readyCapability.resolve();
+  }
+
+  requestDataRange(begin, end) {
+    (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange");
+  }
+
+  abort() {}
+
+}
+
+exports.PDFDataRangeTransport = PDFDataRangeTransport;
+
+class PDFDocumentProxy {
+  constructor(pdfInfo, transport) {
+    this._pdfInfo = pdfInfo;
+    this._transport = transport;
+    Object.defineProperty(this, "fingerprint", {
+      get() {
+        (0, _display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, " + "please use `PDFDocumentProxy.fingerprints` instead.");
+        return this.fingerprints[0];
+      }
+
+    });
+    Object.defineProperty(this, "getStats", {
+      value: async () => {
+        (0, _display_utils.deprecated)("`PDFDocumentProxy.getStats`, " + "please use the `PDFDocumentProxy.stats`-getter instead.");
+        return this.stats || {
+          streamTypes: {},
+          fontTypes: {}
+        };
+      }
+    });
+  }
+
+  get annotationStorage() {
+    return this._transport.annotationStorage;
+  }
+
+  get numPages() {
+    return this._pdfInfo.numPages;
+  }
+
+  get fingerprints() {
+    return this._pdfInfo.fingerprints;
+  }
+
+  get stats() {
+    return this._transport.stats;
+  }
+
+  get isPureXfa() {
+    return !!this._transport._htmlForXfa;
+  }
+
+  get allXfaHtml() {
+    return this._transport._htmlForXfa;
+  }
+
+  getPage(pageNumber) {
+    return this._transport.getPage(pageNumber);
+  }
+
+  getPageIndex(ref) {
+    return this._transport.getPageIndex(ref);
+  }
+
+  getDestinations() {
+    return this._transport.getDestinations();
+  }
+
+  getDestination(id) {
+    return this._transport.getDestination(id);
+  }
+
+  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();
+  }
+
+  getJavaScript() {
+    return this._transport.getJavaScript();
+  }
+
+  getJSActions() {
+    return this._transport.getDocJSActions();
+  }
+
+  getOutline() {
+    return this._transport.getOutline();
+  }
+
+  getOptionalContentConfig() {
+    return this._transport.getOptionalContentConfig();
+  }
+
+  getPermissions() {
+    return this._transport.getPermissions();
+  }
+
+  getMetadata() {
+    return this._transport.getMetadata();
+  }
+
+  getMarkInfo() {
+    return this._transport.getMarkInfo();
+  }
+
+  getData() {
+    return this._transport.getData();
+  }
+
+  getDownloadInfo() {
+    return this._transport.downloadInfoCapability.promise;
+  }
+
+  cleanup(keepLoadedFonts = false) {
+    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);
+  }
+
+  destroy() {
+    return this.loadingTask.destroy();
+  }
+
+  get loadingParams() {
+    return this._transport.loadingParams;
+  }
+
+  get loadingTask() {
+    return this._transport.loadingTask;
+  }
+
+  saveDocument() {
+    if (this._transport.annotationStorage.size <= 0) {
+      (0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead.");
+    }
+
+    return this._transport.saveDocument();
+  }
+
+  getFieldObjects() {
+    return this._transport.getFieldObjects();
+  }
+
+  hasJSActions() {
+    return this._transport.hasJSActions();
+  }
+
+  getCalculationOrderIds() {
+    return this._transport.getCalculationOrderIds();
+  }
+
+}
+
+exports.PDFDocumentProxy = PDFDocumentProxy;
+
+class PDFPageProxy {
+  constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {
+    this._pageIndex = pageIndex;
+    this._pageInfo = pageInfo;
+    this._ownerDocument = ownerDocument;
+    this._transport = transport;
+    this._stats = pdfBug ? new _display_utils.StatTimer() : null;
+    this._pdfBug = pdfBug;
+    this.commonObjs = transport.commonObjs;
+    this.objs = new PDFObjects();
+    this.cleanupAfterRender = false;
+    this.pendingCleanup = false;
+    this._intentStates = new Map();
+    this._annotationPromises = new Map();
+    this.destroyed = false;
+  }
+
+  get pageNumber() {
+    return this._pageIndex + 1;
+  }
+
+  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,
+    rotation = this.rotate,
+    offsetX = 0,
+    offsetY = 0,
+    dontFlip = false
+  } = {}) {
+    return new _display_utils.PageViewport({
+      viewBox: this.view,
+      scale,
+      rotation,
+      offsetX,
+      offsetY,
+      dontFlip
+    });
+  }
+
+  getAnnotations({
+    intent = "display"
+  } = {}) {
+    const intentArgs = this._transport.getRenderingIntent(intent);
+
+    let promise = this._annotationPromises.get(intentArgs.cacheKey);
+
+    if (!promise) {
+      promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent);
+
+      this._annotationPromises.set(intentArgs.cacheKey, promise);
+
+      promise = promise.then(annotations => {
+        for (const annotation of annotations) {
+          if (annotation.titleObj !== undefined) {
+            Object.defineProperty(annotation, "title", {
+              get() {
+                (0, _display_utils.deprecated)("`title`-property on annotation, please use `titleObj` instead.");
+                return annotation.titleObj.str;
+              }
+
+            });
+          }
+
+          if (annotation.contentsObj !== undefined) {
+            Object.defineProperty(annotation, "contents", {
+              get() {
+                (0, _display_utils.deprecated)("`contents`-property on annotation, please use `contentsObj` instead.");
+                return annotation.contentsObj.str;
+              }
+
+            });
+          }
+        }
+
+        return annotations;
+      });
+    }
+
+    return promise;
+  }
+
+  getJSActions() {
+    return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex);
+  }
+
+  async getXfa() {
+    return this._transport._htmlForXfa?.children[this._pageIndex] || null;
+  }
+
+  render({
+    canvasContext,
+    viewport,
+    intent = "display",
+    annotationMode = _util.AnnotationMode.ENABLE,
+    transform = null,
+    imageLayer = null,
+    canvasFactory = null,
+    background = null,
+    optionalContentConfigPromise = null,
+    annotationCanvasMap = null
+  }) {
+    if (arguments[0]?.renderInteractiveForms !== undefined) {
+      (0, _display_utils.deprecated)("render no longer accepts the `renderInteractiveForms`-option, " + "please use the `annotationMode`-option instead.");
+
+      if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) {
+        annotationMode = _util.AnnotationMode.ENABLE_FORMS;
+      }
+    }
+
+    if (arguments[0]?.includeAnnotationStorage !== undefined) {
+      (0, _display_utils.deprecated)("render no longer accepts the `includeAnnotationStorage`-option, " + "please use the `annotationMode`-option instead.");
+
+      if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) {
+        annotationMode = _util.AnnotationMode.ENABLE_STORAGE;
+      }
+    }
+
+    if (this._stats) {
+      this._stats.time("Overall");
+    }
+
+    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode);
+
+    this.pendingCleanup = false;
+
+    if (!optionalContentConfigPromise) {
+      optionalContentConfigPromise = this._transport.getOptionalContentConfig();
+    }
+
+    let intentState = this._intentStates.get(intentArgs.cacheKey);
+
+    if (!intentState) {
+      intentState = Object.create(null);
+
+      this._intentStates.set(intentArgs.cacheKey, intentState);
+    }
+
+    if (intentState.streamReaderCancelTimeout) {
+      clearTimeout(intentState.streamReaderCancelTimeout);
+      intentState.streamReaderCancelTimeout = null;
+    }
+
+    const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({
+      ownerDocument: this._ownerDocument
+    });
+    const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT);
+
+    if (!intentState.displayReadyCapability) {
+      intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
+      intentState.operatorList = {
+        fnArray: [],
+        argsArray: [],
+        lastChunk: false
+      };
+
+      if (this._stats) {
+        this._stats.time("Page Request");
+      }
+
+      this._pumpOperatorList(intentArgs);
+    }
+
+    const complete = error => {
+      intentState.renderTasks.delete(internalRenderTask);
+
+      if (this.cleanupAfterRender || intentPrint) {
+        this.pendingCleanup = true;
+      }
+
+      this._tryCleanup();
+
+      if (error) {
+        internalRenderTask.capability.reject(error);
+
+        this._abortOperatorList({
+          intentState,
+          reason: error instanceof Error ? error : new Error(error)
+        });
+      } else {
+        internalRenderTask.capability.resolve();
+      }
+
+      if (this._stats) {
+        this._stats.timeEnd("Rendering");
+
+        this._stats.timeEnd("Overall");
+      }
+    };
+
+    const internalRenderTask = new InternalRenderTask({
+      callback: complete,
+      params: {
+        canvasContext,
+        viewport,
+        transform,
+        imageLayer,
+        background
+      },
+      objs: this.objs,
+      commonObjs: this.commonObjs,
+      annotationCanvasMap,
+      operatorList: intentState.operatorList,
+      pageIndex: this._pageIndex,
+      canvasFactory: canvasFactoryInstance,
+      useRequestAnimationFrame: !intentPrint,
+      pdfBug: this._pdfBug
+    });
+    (intentState.renderTasks ||= new Set()).add(internalRenderTask);
+    const renderTask = internalRenderTask.task;
+    Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {
+      if (this.pendingCleanup) {
+        complete();
+        return;
+      }
+
+      if (this._stats) {
+        this._stats.time("Rendering");
+      }
+
+      internalRenderTask.initializeGraphics({
+        transparency,
+        optionalContentConfig
+      });
+      internalRenderTask.operatorListChanged();
+    }).catch(complete);
+    return renderTask;
+  }
+
+  getOperatorList({
+    intent = "display",
+    annotationMode = _util.AnnotationMode.ENABLE
+  } = {}) {
+    function operatorListChanged() {
+      if (intentState.operatorList.lastChunk) {
+        intentState.opListReadCapability.resolve(intentState.operatorList);
+        intentState.renderTasks.delete(opListTask);
+      }
+    }
+
+    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, true);
+
+    let intentState = this._intentStates.get(intentArgs.cacheKey);
+
+    if (!intentState) {
+      intentState = Object.create(null);
+
+      this._intentStates.set(intentArgs.cacheKey, intentState);
+    }
+
+    let opListTask;
+
+    if (!intentState.opListReadCapability) {
+      opListTask = Object.create(null);
+      opListTask.operatorListChanged = operatorListChanged;
+      intentState.opListReadCapability = (0, _util.createPromiseCapability)();
+      (intentState.renderTasks ||= new Set()).add(opListTask);
+      intentState.operatorList = {
+        fnArray: [],
+        argsArray: [],
+        lastChunk: false
+      };
+
+      if (this._stats) {
+        this._stats.time("Page Request");
+      }
+
+      this._pumpOperatorList(intentArgs);
+    }
+
+    return intentState.opListReadCapability.promise;
+  }
+
+  streamTextContent({
+    normalizeWhitespace = false,
+    disableCombineTextItems = false,
+    includeMarkedContent = false
+  } = {}) {
+    const TEXT_CONTENT_CHUNK_SIZE = 100;
+    return this._transport.messageHandler.sendWithStream("GetTextContent", {
+      pageIndex: this._pageIndex,
+      normalizeWhitespace: normalizeWhitespace === true,
+      combineTextItems: disableCombineTextItems !== true,
+      includeMarkedContent: includeMarkedContent === true
+    }, {
+      highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
+
+      size(textContent) {
+        return textContent.items.length;
+      }
+
+    });
+  }
+
+  getTextContent(params = {}) {
+    if (this._transport._htmlForXfa) {
+      return this.getXfa().then(xfa => {
+        return _xfa_text.XfaText.textContent(xfa);
+      });
+    }
+
+    const readableStream = this.streamTextContent(params);
+    return new Promise(function (resolve, reject) {
+      function pump() {
+        reader.read().then(function ({
+          value,
+          done
+        }) {
+          if (done) {
+            resolve(textContent);
+            return;
+          }
+
+          Object.assign(textContent.styles, value.styles);
+          textContent.items.push(...value.items);
+          pump();
+        }, reject);
+      }
+
+      const reader = readableStream.getReader();
+      const textContent = {
+        items: [],
+        styles: Object.create(null)
+      };
+      pump();
+    });
+  }
+
+  getStructTree() {
+    return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex);
+  }
+
+  _destroy() {
+    this.destroyed = true;
+    const waitOn = [];
+
+    for (const intentState of this._intentStates.values()) {
+      this._abortOperatorList({
+        intentState,
+        reason: new Error("Page was destroyed."),
+        force: true
+      });
+
+      if (intentState.opListReadCapability) {
+        continue;
+      }
+
+      for (const internalRenderTask of intentState.renderTasks) {
+        waitOn.push(internalRenderTask.completed);
+        internalRenderTask.cancel();
+      }
+    }
+
+    this.objs.clear();
+
+    this._annotationPromises.clear();
+
+    this._jsActionsPromise = null;
+    this._structTreePromise = null;
+    this.pendingCleanup = false;
+    return Promise.all(waitOn);
+  }
+
+  cleanup(resetStats = false) {
+    this.pendingCleanup = true;
+    return this._tryCleanup(resetStats);
+  }
+
+  _tryCleanup(resetStats = false) {
+    if (!this.pendingCleanup) {
+      return false;
+    }
+
+    for (const {
+      renderTasks,
+      operatorList
+    } of this._intentStates.values()) {
+      if (renderTasks.size > 0 || !operatorList.lastChunk) {
+        return false;
+      }
+    }
+
+    this._intentStates.clear();
+
+    this.objs.clear();
+
+    this._annotationPromises.clear();
+
+    this._jsActionsPromise = null;
+    this._structTreePromise = null;
+
+    if (resetStats && this._stats) {
+      this._stats = new _display_utils.StatTimer();
+    }
+
+    this.pendingCleanup = false;
+    return true;
+  }
+
+  _startRenderPage(transparency, cacheKey) {
+    const intentState = this._intentStates.get(cacheKey);
+
+    if (!intentState) {
+      return;
+    }
+
+    if (this._stats) {
+      this._stats.timeEnd("Page Request");
+    }
+
+    if (intentState.displayReadyCapability) {
+      intentState.displayReadyCapability.resolve(transparency);
+    }
+  }
+
+  _renderPageChunk(operatorListChunk, intentState) {
+    for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {
+      intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
+      intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
+    }
+
+    intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
+
+    for (const internalRenderTask of intentState.renderTasks) {
+      internalRenderTask.operatorListChanged();
+    }
+
+    if (operatorListChunk.lastChunk) {
+      this._tryCleanup();
+    }
+  }
+
+  _pumpOperatorList({
+    renderingIntent,
+    cacheKey
+  }) {
+    const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", {
+      pageIndex: this._pageIndex,
+      intent: renderingIntent,
+      cacheKey,
+      annotationStorage: renderingIntent & _util.RenderingIntentFlag.ANNOTATIONS_STORAGE ? this._transport.annotationStorage.serializable : null
+    });
+
+    const reader = readableStream.getReader();
+
+    const intentState = this._intentStates.get(cacheKey);
+
+    intentState.streamReader = reader;
+
+    const pump = () => {
+      reader.read().then(({
+        value,
+        done
+      }) => {
+        if (done) {
+          intentState.streamReader = null;
+          return;
+        }
+
+        if (this._transport.destroyed) {
+          return;
+        }
+
+        this._renderPageChunk(value, intentState);
+
+        pump();
+      }, reason => {
+        intentState.streamReader = null;
+
+        if (this._transport.destroyed) {
+          return;
+        }
+
+        if (intentState.operatorList) {
+          intentState.operatorList.lastChunk = true;
+
+          for (const internalRenderTask of intentState.renderTasks) {
+            internalRenderTask.operatorListChanged();
+          }
+
+          this._tryCleanup();
+        }
+
+        if (intentState.displayReadyCapability) {
+          intentState.displayReadyCapability.reject(reason);
+        } else if (intentState.opListReadCapability) {
+          intentState.opListReadCapability.reject(reason);
+        } else {
+          throw reason;
+        }
+      });
+    };
+
+    pump();
+  }
+
+  _abortOperatorList({
+    intentState,
+    reason,
+    force = false
+  }) {
+    if (!intentState.streamReader) {
+      return;
+    }
+
+    if (!force) {
+      if (intentState.renderTasks.size > 0) {
+        return;
+      }
+
+      if (reason instanceof _display_utils.RenderingCancelledException) {
+        intentState.streamReaderCancelTimeout = setTimeout(() => {
+          this._abortOperatorList({
+            intentState,
+            reason,
+            force: true
+          });
+
+          intentState.streamReaderCancelTimeout = null;
+        }, RENDERING_CANCELLED_TIMEOUT);
+        return;
+      }
+    }
+
+    intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {});
+    intentState.streamReader = null;
+
+    if (this._transport.destroyed) {
+      return;
+    }
+
+    for (const [curCacheKey, curIntentState] of this._intentStates) {
+      if (curIntentState === intentState) {
+        this._intentStates.delete(curCacheKey);
+
+        break;
+      }
+    }
+
+    this.cleanup();
+  }
+
+  get stats() {
+    return this._stats;
+  }
+
+}
+
+exports.PDFPageProxy = PDFPageProxy;
+
+class LoopbackPort {
+  constructor() {
+    this._listeners = [];
+    this._deferred = Promise.resolve();
+  }
+
+  postMessage(obj, transfers) {
+    function cloneValue(object) {
+      if (globalThis.structuredClone) {
+        return globalThis.structuredClone(object, transfers);
+      }
+
+      function fallbackCloneValue(value) {
+        if (typeof value === "function" || typeof value === "symbol" || value instanceof URL) {
+          throw new Error(`LoopbackPort.postMessage - cannot clone: ${value?.toString()}`);
+        }
+
+        if (typeof value !== "object" || value === null) {
+          return value;
+        }
+
+        if (cloned.has(value)) {
+          return cloned.get(value);
+        }
+
+        let buffer, result;
+
+        if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
+          if (transfers?.includes(buffer)) {
+            result = new value.constructor(buffer, value.byteOffset, value.byteLength);
+          } else {
+            result = new value.constructor(value);
+          }
+
+          cloned.set(value, result);
+          return result;
+        }
+
+        if (value instanceof Map) {
+          result = new Map();
+          cloned.set(value, result);
+
+          for (const [key, val] of value) {
+            result.set(key, fallbackCloneValue(val));
+          }
+
+          return result;
+        }
+
+        if (value instanceof Set) {
+          result = new Set();
+          cloned.set(value, result);
+
+          for (const val of value) {
+            result.add(fallbackCloneValue(val));
+          }
+
+          return result;
+        }
+
+        result = Array.isArray(value) ? [] : Object.create(null);
+        cloned.set(value, result);
+
+        for (const i in value) {
+          let desc,
+              p = value;
+
+          while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
+            p = Object.getPrototypeOf(p);
+          }
+
+          if (typeof desc.value === "undefined") {
+            continue;
+          }
+
+          if (typeof desc.value === "function" && !value.hasOwnProperty?.(i)) {
+            continue;
+          }
+
+          result[i] = fallbackCloneValue(desc.value);
+        }
+
+        return result;
+      }
+
+      const cloned = new WeakMap();
+      return fallbackCloneValue(object);
+    }
+
+    const event = {
+      data: cloneValue(obj)
+    };
+
+    this._deferred.then(() => {
+      for (const listener of this._listeners) {
+        listener.call(this, event);
+      }
+    });
+  }
+
+  addEventListener(name, listener) {
+    this._listeners.push(listener);
+  }
+
+  removeEventListener(name, listener) {
+    const i = this._listeners.indexOf(listener);
+
+    this._listeners.splice(i, 1);
+  }
+
+  terminate() {
+    this._listeners.length = 0;
+  }
+
+}
+
+exports.LoopbackPort = LoopbackPort;
+const PDFWorkerUtil = {
+  isWorkerDisabled: false,
+  fallbackWorkerSrc: null,
+  fakeWorkerId: 0
+};
+{
+  if (_is_node.isNodeJS && typeof require === "function") {
+    PDFWorkerUtil.isWorkerDisabled = true;
+    PDFWorkerUtil.fallbackWorkerSrc = "./pdf.worker.js";
+  } else if (typeof document === "object") {
+    const pdfjsFilePath = document?.currentScript?.src;
+
+    if (pdfjsFilePath) {
+      PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2");
+    }
+  }
+
+  PDFWorkerUtil.createCDNWrapper = function (url) {
+    const wrapper = `importScripts("${url}");`;
+    return URL.createObjectURL(new Blob([wrapper]));
+  };
+}
+
+class PDFWorker {
+  static get _workerPorts() {
+    return (0, _util.shadow)(this, "_workerPorts", new WeakMap());
+  }
+
+  constructor({
+    name = null,
+    port = null,
+    verbosity = (0, _util.getVerbosityLevel)()
+  } = {}) {
+    if (port && PDFWorker._workerPorts.has(port)) {
+      throw new Error("Cannot use more than one PDFWorker per port.");
+    }
+
+    this.name = name;
+    this.destroyed = false;
+    this.verbosity = verbosity;
+    this._readyCapability = (0, _util.createPromiseCapability)();
+    this._port = null;
+    this._webWorker = null;
+    this._messageHandler = null;
+
+    if (port) {
+      PDFWorker._workerPorts.set(port, this);
+
+      this._initializeFromPort(port);
+
+      return;
+    }
+
+    this._initialize();
+  }
+
+  get promise() {
+    return this._readyCapability.promise;
+  }
+
+  get port() {
+    return this._port;
+  }
+
+  get messageHandler() {
+    return this._messageHandler;
+  }
+
+  _initializeFromPort(port) {
+    this._port = port;
+    this._messageHandler = new _message_handler.MessageHandler("main", "worker", port);
+
+    this._messageHandler.on("ready", function () {});
+
+    this._readyCapability.resolve();
+  }
+
+  _initialize() {
+    if (typeof Worker !== "undefined" && !PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {
+      let workerSrc = PDFWorker.workerSrc;
+
+      try {
+        if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
+          workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);
+        }
+
+        const worker = new Worker(workerSrc);
+        const messageHandler = new _message_handler.MessageHandler("main", "worker", worker);
+
+        const terminateEarly = () => {
+          worker.removeEventListener("error", onWorkerError);
+          messageHandler.destroy();
+          worker.terminate();
+
+          if (this.destroyed) {
+            this._readyCapability.reject(new Error("Worker was destroyed"));
+          } else {
+            this._setupFakeWorker();
+          }
+        };
+
+        const onWorkerError = () => {
+          if (!this._webWorker) {
+            terminateEarly();
+          }
+        };
+
+        worker.addEventListener("error", onWorkerError);
+        messageHandler.on("test", data => {
+          worker.removeEventListener("error", onWorkerError);
+
+          if (this.destroyed) {
+            terminateEarly();
+            return;
+          }
+
+          if (data) {
+            this._messageHandler = messageHandler;
+            this._port = worker;
+            this._webWorker = worker;
+
+            this._readyCapability.resolve();
+
+            messageHandler.send("configure", {
+              verbosity: this.verbosity
+            });
+          } else {
+            this._setupFakeWorker();
+
+            messageHandler.destroy();
+            worker.terminate();
+          }
+        });
+        messageHandler.on("ready", data => {
+          worker.removeEventListener("error", onWorkerError);
+
+          if (this.destroyed) {
+            terminateEarly();
+            return;
+          }
+
+          try {
+            sendTest();
+          } catch (e) {
+            this._setupFakeWorker();
+          }
+        });
+
+        const sendTest = () => {
+          const testObj = new Uint8Array([255]);
+
+          try {
+            messageHandler.send("test", testObj, [testObj.buffer]);
+          } catch (ex) {
+            (0, _util.warn)("Cannot use postMessage transfers.");
+            testObj[0] = 0;
+            messageHandler.send("test", testObj);
+          }
+        };
+
+        sendTest();
+        return;
+      } catch (e) {
+        (0, _util.info)("The worker has been disabled.");
+      }
+    }
+
+    this._setupFakeWorker();
+  }
+
+  _setupFakeWorker() {
+    if (!PDFWorkerUtil.isWorkerDisabled) {
+      (0, _util.warn)("Setting up fake worker.");
+      PDFWorkerUtil.isWorkerDisabled = true;
+    }
+
+    PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {
+      if (this.destroyed) {
+        this._readyCapability.reject(new Error("Worker was destroyed"));
+
+        return;
+      }
+
+      const port = new LoopbackPort();
+      this._port = port;
+      const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;
+      const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port);
+      WorkerMessageHandler.setup(workerHandler, port);
+      const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port);
+      this._messageHandler = messageHandler;
+
+      this._readyCapability.resolve();
+
+      messageHandler.send("configure", {
+        verbosity: this.verbosity
+      });
+    }).catch(reason => {
+      this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`));
+    });
+  }
+
+  destroy() {
+    this.destroyed = true;
+
+    if (this._webWorker) {
+      this._webWorker.terminate();
+
+      this._webWorker = null;
+    }
+
+    PDFWorker._workerPorts.delete(this._port);
+
+    this._port = null;
+
+    if (this._messageHandler) {
+      this._messageHandler.destroy();
+
+      this._messageHandler = null;
+    }
+  }
+
+  static fromPort(params) {
+    if (!params?.port) {
+      throw new Error("PDFWorker.fromPort - invalid method signature.");
+    }
+
+    if (this._workerPorts.has(params.port)) {
+      return this._workerPorts.get(params.port);
+    }
+
+    return new PDFWorker(params);
+  }
+
+  static get workerSrc() {
+    if (_worker_options.GlobalWorkerOptions.workerSrc) {
+      return _worker_options.GlobalWorkerOptions.workerSrc;
+    }
+
+    if (PDFWorkerUtil.fallbackWorkerSrc !== null) {
+      if (!_is_node.isNodeJS) {
+        (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');
+      }
+
+      return PDFWorkerUtil.fallbackWorkerSrc;
+    }
+
+    throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
+  }
+
+  static get _mainThreadWorkerMessageHandler() {
+    try {
+      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;
+    } catch (ex) {
+      return null;
+    }
+  }
+
+  static get _setupFakeWorkerGlobal() {
+    const loader = async () => {
+      const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;
+
+      if (mainWorkerMessageHandler) {
+        return mainWorkerMessageHandler;
+      }
+
+      if (_is_node.isNodeJS && typeof require === "function") {
+        const worker = eval("require")(this.workerSrc);
+        return worker.WorkerMessageHandler;
+      }
+
+      await (0, _display_utils.loadScript)(this.workerSrc);
+      return window.pdfjsWorker.WorkerMessageHandler;
+    };
+
+    return (0, _util.shadow)(this, "_setupFakeWorkerGlobal", loader());
+  }
+
+}
+
+exports.PDFWorker = PDFWorker;
+{
+  PDFWorker.getWorkerSrc = function () {
+    (0, _display_utils.deprecated)("`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.");
+    return this.workerSrc;
+  };
+}
+
+class WorkerTransport {
+  #docStats = null;
+  #pageCache = new Map();
+  #pagePromises = new Map();
+  #metadataPromise = null;
+
+  constructor(messageHandler, loadingTask, networkStream, params) {
+    this.messageHandler = messageHandler;
+    this.loadingTask = loadingTask;
+    this.commonObjs = new PDFObjects();
+    this.fontLoader = new _font_loader.FontLoader({
+      docId: loadingTask.docId,
+      onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
+      ownerDocument: params.ownerDocument,
+      styleElement: params.styleElement
+    });
+    this._params = params;
+
+    if (!params.useWorkerFetch) {
+      this.CMapReaderFactory = new params.CMapReaderFactory({
+        baseUrl: params.cMapUrl,
+        isCompressed: params.cMapPacked
+      });
+      this.StandardFontDataFactory = new params.StandardFontDataFactory({
+        baseUrl: params.standardFontDataUrl
+      });
+    }
+
+    this.destroyed = false;
+    this.destroyCapability = null;
+    this._passwordCapability = null;
+    this._networkStream = networkStream;
+    this._fullReader = null;
+    this._lastProgress = null;
+    this.downloadInfoCapability = (0, _util.createPromiseCapability)();
+    this.setupMessageHandler();
+  }
+
+  get annotationStorage() {
+    return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage());
+  }
+
+  get stats() {
+    return this.#docStats;
+  }
+
+  getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, isOpList = false) {
+    let renderingIntent = _util.RenderingIntentFlag.DISPLAY;
+    let lastModified = "";
+
+    switch (intent) {
+      case "any":
+        renderingIntent = _util.RenderingIntentFlag.ANY;
+        break;
+
+      case "display":
+        break;
+
+      case "print":
+        renderingIntent = _util.RenderingIntentFlag.PRINT;
+        break;
+
+      default:
+        (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`);
+    }
+
+    switch (annotationMode) {
+      case _util.AnnotationMode.DISABLE:
+        renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;
+        break;
+
+      case _util.AnnotationMode.ENABLE:
+        break;
+
+      case _util.AnnotationMode.ENABLE_FORMS:
+        renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;
+        break;
+
+      case _util.AnnotationMode.ENABLE_STORAGE:
+        renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;
+        lastModified = this.annotationStorage.lastModified;
+        break;
+
+      default:
+        (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);
+    }
+
+    if (isOpList) {
+      renderingIntent += _util.RenderingIntentFlag.OPLIST;
+    }
+
+    return {
+      renderingIntent,
+      cacheKey: `${renderingIntent}_${lastModified}`
+    };
+  }
+
+  destroy() {
+    if (this.destroyCapability) {
+      return this.destroyCapability.promise;
+    }
+
+    this.destroyed = true;
+    this.destroyCapability = (0, _util.createPromiseCapability)();
+
+    if (this._passwordCapability) {
+      this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));
+    }
+
+    const waitOn = [];
+
+    for (const page of this.#pageCache.values()) {
+      waitOn.push(page._destroy());
+    }
+
+    this.#pageCache.clear();
+    this.#pagePromises.clear();
+
+    if (this.hasOwnProperty("annotationStorage")) {
+      this.annotationStorage.resetModified();
+    }
+
+    const terminated = this.messageHandler.sendWithPromise("Terminate", null);
+    waitOn.push(terminated);
+    Promise.all(waitOn).then(() => {
+      this.commonObjs.clear();
+      this.fontLoader.clear();
+      this.#metadataPromise = null;
+      this._getFieldObjectsPromise = null;
+      this._hasJSActionsPromise = null;
+
+      if (this._networkStream) {
+        this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated."));
+      }
+
+      if (this.messageHandler) {
+        this.messageHandler.destroy();
+        this.messageHandler = null;
+      }
+
+      this.destroyCapability.resolve();
+    }, this.destroyCapability.reject);
+    return this.destroyCapability.promise;
+  }
+
+  setupMessageHandler() {
+    const {
+      messageHandler,
+      loadingTask
+    } = this;
+    messageHandler.on("GetReader", (data, sink) => {
+      (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available.");
+      this._fullReader = this._networkStream.getFullReader();
+
+      this._fullReader.onProgress = evt => {
+        this._lastProgress = {
+          loaded: evt.loaded,
+          total: evt.total
+        };
+      };
+
+      sink.onPull = () => {
+        this._fullReader.read().then(function ({
+          value,
+          done
+        }) {
+          if (done) {
+            sink.close();
+            return;
+          }
+
+          (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer.");
+          sink.enqueue(new Uint8Array(value), 1, [value]);
+        }).catch(reason => {
+          sink.error(reason);
+        });
+      };
+
+      sink.onCancel = reason => {
+        this._fullReader.cancel(reason);
+
+        sink.ready.catch(readyReason => {
+          if (this.destroyed) {
+            return;
+          }
+
+          throw readyReason;
+        });
+      };
+    });
+    messageHandler.on("ReaderHeadersReady", data => {
+      const headersCapability = (0, _util.createPromiseCapability)();
+      const fullReader = this._fullReader;
+      fullReader.headersReady.then(() => {
+        if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
+          if (this._lastProgress) {
+            loadingTask.onProgress?.(this._lastProgress);
+          }
+
+          fullReader.onProgress = evt => {
+            loadingTask.onProgress?.({
+              loaded: evt.loaded,
+              total: evt.total
+            });
+          };
+        }
+
+        headersCapability.resolve({
+          isStreamingSupported: fullReader.isStreamingSupported,
+          isRangeSupported: fullReader.isRangeSupported,
+          contentLength: fullReader.contentLength
+        });
+      }, headersCapability.reject);
+      return headersCapability.promise;
+    });
+    messageHandler.on("GetRangeReader", (data, sink) => {
+      (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available.");
+
+      const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
+
+      if (!rangeReader) {
+        sink.close();
+        return;
+      }
+
+      sink.onPull = () => {
+        rangeReader.read().then(function ({
+          value,
+          done
+        }) {
+          if (done) {
+            sink.close();
+            return;
+          }
+
+          (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer.");
+          sink.enqueue(new Uint8Array(value), 1, [value]);
+        }).catch(reason => {
+          sink.error(reason);
+        });
+      };
+
+      sink.onCancel = reason => {
+        rangeReader.cancel(reason);
+        sink.ready.catch(readyReason => {
+          if (this.destroyed) {
+            return;
+          }
+
+          throw readyReason;
+        });
+      };
+    });
+    messageHandler.on("GetDoc", ({
+      pdfInfo
+    }) => {
+      this._numPages = pdfInfo.numPages;
+      this._htmlForXfa = pdfInfo.htmlForXfa;
+      delete pdfInfo.htmlForXfa;
+
+      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
+    });
+    messageHandler.on("DocException", function (ex) {
+      let reason;
+
+      switch (ex.name) {
+        case "PasswordException":
+          reason = new _util.PasswordException(ex.message, ex.code);
+          break;
+
+        case "InvalidPDFException":
+          reason = new _util.InvalidPDFException(ex.message);
+          break;
+
+        case "MissingPDFException":
+          reason = new _util.MissingPDFException(ex.message);
+          break;
+
+        case "UnexpectedResponseException":
+          reason = new _util.UnexpectedResponseException(ex.message, ex.status);
+          break;
+
+        case "UnknownErrorException":
+          reason = new _util.UnknownErrorException(ex.message, ex.details);
+          break;
+
+        default:
+          (0, _util.unreachable)("DocException - expected a valid Error.");
+      }
+
+      loadingTask._capability.reject(reason);
+    });
+    messageHandler.on("PasswordRequest", exception => {
+      this._passwordCapability = (0, _util.createPromiseCapability)();
+
+      if (loadingTask.onPassword) {
+        const updatePassword = password => {
+          this._passwordCapability.resolve({
+            password
+          });
+        };
+
+        try {
+          loadingTask.onPassword(updatePassword, exception.code);
+        } catch (ex) {
+          this._passwordCapability.reject(ex);
+        }
+      } else {
+        this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
+      }
+
+      return this._passwordCapability.promise;
+    });
+    messageHandler.on("DataLoaded", data => {
+      loadingTask.onProgress?.({
+        loaded: data.length,
+        total: data.length
+      });
+      this.downloadInfoCapability.resolve(data);
+    });
+    messageHandler.on("StartRenderPage", data => {
+      if (this.destroyed) {
+        return;
+      }
+
+      const page = this.#pageCache.get(data.pageIndex);
+
+      page._startRenderPage(data.transparency, data.cacheKey);
+    });
+    messageHandler.on("commonobj", ([id, type, exportedData]) => {
+      if (this.destroyed) {
+        return;
+      }
+
+      if (this.commonObjs.has(id)) {
+        return;
+      }
+
+      switch (type) {
+        case "Font":
+          const params = this._params;
+
+          if ("error" in exportedData) {
+            const exportedError = exportedData.error;
+            (0, _util.warn)(`Error during font loading: ${exportedError}`);
+            this.commonObjs.resolve(id, exportedError);
+            break;
+          }
+
+          let fontRegistry = null;
+
+          if (params.pdfBug && globalThis.FontInspector?.enabled) {
+            fontRegistry = {
+              registerFont(font, url) {
+                globalThis.FontInspector.fontAdded(font, url);
+              }
+
+            };
+          }
+
+          const font = new _font_loader.FontFaceObject(exportedData, {
+            isEvalSupported: params.isEvalSupported,
+            disableFontFace: params.disableFontFace,
+            ignoreErrors: params.ignoreErrors,
+            onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
+            fontRegistry
+          });
+          this.fontLoader.bind(font).catch(reason => {
+            return messageHandler.sendWithPromise("FontFallback", {
+              id
+            });
+          }).finally(() => {
+            if (!params.fontExtraProperties && font.data) {
+              font.data = null;
+            }
+
+            this.commonObjs.resolve(id, font);
+          });
+          break;
+
+        case "FontPath":
+        case "Image":
+          this.commonObjs.resolve(id, exportedData);
+          break;
+
+        default:
+          throw new Error(`Got unknown common object type ${type}`);
+      }
+    });
+    messageHandler.on("obj", ([id, pageIndex, type, imageData]) => {
+      if (this.destroyed) {
+        return;
+      }
+
+      const pageProxy = this.#pageCache.get(pageIndex);
+
+      if (pageProxy.objs.has(id)) {
+        return;
+      }
+
+      switch (type) {
+        case "Image":
+          pageProxy.objs.resolve(id, imageData);
+          const MAX_IMAGE_SIZE_TO_STORE = 8000000;
+
+          if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {
+            pageProxy.cleanupAfterRender = true;
+          }
+
+          break;
+
+        case "Pattern":
+          pageProxy.objs.resolve(id, imageData);
+          break;
+
+        default:
+          throw new Error(`Got unknown object type ${type}`);
+      }
+    });
+    messageHandler.on("DocProgress", data => {
+      if (this.destroyed) {
+        return;
+      }
+
+      loadingTask.onProgress?.({
+        loaded: data.loaded,
+        total: data.total
+      });
+    });
+    messageHandler.on("DocStats", data => {
+      if (this.destroyed) {
+        return;
+      }
+
+      this.#docStats = Object.freeze({
+        streamTypes: Object.freeze(data.streamTypes),
+        fontTypes: Object.freeze(data.fontTypes)
+      });
+    });
+    messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this));
+    messageHandler.on("FetchBuiltInCMap", data => {
+      if (this.destroyed) {
+        return Promise.reject(new Error("Worker was destroyed."));
+      }
+
+      if (!this.CMapReaderFactory) {
+        return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."));
+      }
+
+      return this.CMapReaderFactory.fetch(data);
+    });
+    messageHandler.on("FetchStandardFontData", data => {
+      if (this.destroyed) {
+        return Promise.reject(new Error("Worker was destroyed."));
+      }
+
+      if (!this.StandardFontDataFactory) {
+        return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter."));
+      }
+
+      return this.StandardFontDataFactory.fetch(data);
+    });
+  }
+
+  _onUnsupportedFeature({
+    featureId
+  }) {
+    if (this.destroyed) {
+      return;
+    }
+
+    this.loadingTask.onUnsupportedFeature?.(featureId);
+  }
+
+  getData() {
+    return this.messageHandler.sendWithPromise("GetData", null);
+  }
+
+  getPage(pageNumber) {
+    if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {
+      return Promise.reject(new Error("Invalid page request"));
+    }
+
+    const pageIndex = pageNumber - 1,
+          cachedPromise = this.#pagePromises.get(pageIndex);
+
+    if (cachedPromise) {
+      return cachedPromise;
+    }
+
+    const promise = this.messageHandler.sendWithPromise("GetPage", {
+      pageIndex
+    }).then(pageInfo => {
+      if (this.destroyed) {
+        throw new Error("Transport destroyed");
+      }
+
+      const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug);
+      this.#pageCache.set(pageIndex, page);
+      return page;
+    });
+    this.#pagePromises.set(pageIndex, promise);
+    return promise;
+  }
+
+  getPageIndex(ref) {
+    return this.messageHandler.sendWithPromise("GetPageIndex", {
+      ref
+    });
+  }
+
+  getAnnotations(pageIndex, intent) {
+    return this.messageHandler.sendWithPromise("GetAnnotations", {
+      pageIndex,
+      intent
+    });
+  }
+
+  saveDocument() {
+    return this.messageHandler.sendWithPromise("SaveDocument", {
+      isPureXfa: !!this._htmlForXfa,
+      numPages: this._numPages,
+      annotationStorage: this.annotationStorage.serializable,
+      filename: this._fullReader?.filename ?? null
+    }).finally(() => {
+      this.annotationStorage.resetModified();
+    });
+  }
+
+  getFieldObjects() {
+    return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise("GetFieldObjects", null);
+  }
+
+  hasJSActions() {
+    return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise("HasJSActions", null);
+  }
+
+  getCalculationOrderIds() {
+    return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null);
+  }
+
+  getDestinations() {
+    return this.messageHandler.sendWithPromise("GetDestinations", null);
+  }
+
+  getDestination(id) {
+    if (typeof id !== "string") {
+      return Promise.reject(new Error("Invalid destination request."));
+    }
+
+    return this.messageHandler.sendWithPromise("GetDestination", {
+      id
+    });
+  }
+
+  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);
+  }
+
+  getJavaScript() {
+    return this.messageHandler.sendWithPromise("GetJavaScript", null);
+  }
+
+  getDocJSActions() {
+    return this.messageHandler.sendWithPromise("GetDocJSActions", null);
+  }
+
+  getPageJSActions(pageIndex) {
+    return this.messageHandler.sendWithPromise("GetPageJSActions", {
+      pageIndex
+    });
+  }
+
+  getStructTree(pageIndex) {
+    return this.messageHandler.sendWithPromise("GetStructTree", {
+      pageIndex
+    });
+  }
+
+  getOutline() {
+    return this.messageHandler.sendWithPromise("GetOutline", null);
+  }
+
+  getOptionalContentConfig() {
+    return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => {
+      return new _optional_content_config.OptionalContentConfig(results);
+    });
+  }
+
+  getPermissions() {
+    return this.messageHandler.sendWithPromise("GetPermissions", null);
+  }
+
+  getMetadata() {
+    return this.#metadataPromise ||= this.messageHandler.sendWithPromise("GetMetadata", null).then(results => {
+      return {
+        info: results[0],
+        metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
+        contentDispositionFilename: this._fullReader?.filename ?? null,
+        contentLength: this._fullReader?.contentLength ?? null
+      };
+    });
+  }
+
+  getMarkInfo() {
+    return this.messageHandler.sendWithPromise("GetMarkInfo", null);
+  }
+
+  async startCleanup(keepLoadedFonts = false) {
+    await this.messageHandler.sendWithPromise("Cleanup", null);
+
+    if (this.destroyed) {
+      return;
+    }
+
+    for (const page of this.#pageCache.values()) {
+      const cleanupSuccessful = page.cleanup();
+
+      if (!cleanupSuccessful) {
+        throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);
+      }
+    }
+
+    this.commonObjs.clear();
+
+    if (!keepLoadedFonts) {
+      this.fontLoader.clear();
+    }
+
+    this.#metadataPromise = null;
+    this._getFieldObjectsPromise = null;
+    this._hasJSActionsPromise = null;
+  }
+
+  get loadingParams() {
+    const params = this._params;
+    return (0, _util.shadow)(this, "loadingParams", {
+      disableAutoFetch: params.disableAutoFetch,
+      enableXfa: params.enableXfa
+    });
+  }
+
+}
+
+class PDFObjects {
+  constructor() {
+    this._objs = Object.create(null);
+  }
+
+  _ensureObj(objId) {
+    if (this._objs[objId]) {
+      return this._objs[objId];
+    }
+
+    return this._objs[objId] = {
+      capability: (0, _util.createPromiseCapability)(),
+      data: null,
+      resolved: false
+    };
+  }
+
+  get(objId, callback = null) {
+    if (callback) {
+      this._ensureObj(objId).capability.promise.then(callback);
+
+      return null;
+    }
+
+    const obj = this._objs[objId];
+
+    if (!obj || !obj.resolved) {
+      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
+    }
+
+    return obj.data;
+  }
+
+  has(objId) {
+    const obj = this._objs[objId];
+    return obj?.resolved || false;
+  }
+
+  resolve(objId, data) {
+    const obj = this._ensureObj(objId);
+
+    obj.resolved = true;
+    obj.data = data;
+    obj.capability.resolve(data);
+  }
+
+  clear() {
+    this._objs = Object.create(null);
+  }
+
+}
+
+class RenderTask {
+  constructor(internalRenderTask) {
+    this._internalRenderTask = internalRenderTask;
+    this.onContinue = null;
+  }
+
+  get promise() {
+    return this._internalRenderTask.capability.promise;
+  }
+
+  cancel() {
+    this._internalRenderTask.cancel();
+  }
+
+}
+
+exports.RenderTask = RenderTask;
+
+class InternalRenderTask {
+  static get canvasInUse() {
+    return (0, _util.shadow)(this, "canvasInUse", new WeakSet());
+  }
+
+  constructor({
+    callback,
+    params,
+    objs,
+    commonObjs,
+    annotationCanvasMap,
+    operatorList,
+    pageIndex,
+    canvasFactory,
+    useRequestAnimationFrame = false,
+    pdfBug = false
+  }) {
+    this.callback = callback;
+    this.params = params;
+    this.objs = objs;
+    this.commonObjs = commonObjs;
+    this.annotationCanvasMap = annotationCanvasMap;
+    this.operatorListIdx = null;
+    this.operatorList = operatorList;
+    this._pageIndex = pageIndex;
+    this.canvasFactory = canvasFactory;
+    this._pdfBug = pdfBug;
+    this.running = false;
+    this.graphicsReadyCallback = null;
+    this.graphicsReady = false;
+    this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined";
+    this.cancelled = false;
+    this.capability = (0, _util.createPromiseCapability)();
+    this.task = new RenderTask(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 = params.canvasContext.canvas;
+  }
+
+  get completed() {
+    return this.capability.promise.catch(function () {});
+  }
+
+  initializeGraphics({
+    transparency = false,
+    optionalContentConfig
+  }) {
+    if (this.cancelled) {
+      return;
+    }
+
+    if (this._canvas) {
+      if (InternalRenderTask.canvasInUse.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.");
+      }
+
+      InternalRenderTask.canvasInUse.add(this._canvas);
+    }
+
+    if (this._pdfBug && globalThis.StepperManager?.enabled) {
+      this.stepper = globalThis.StepperManager.create(this._pageIndex);
+      this.stepper.init(this.operatorList);
+      this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
+    }
+
+    const {
+      canvasContext,
+      viewport,
+      transform,
+      imageLayer,
+      background
+    } = this.params;
+    this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap);
+    this.gfx.beginDrawing({
+      transform,
+      viewport,
+      transparency,
+      background
+    });
+    this.operatorListIdx = 0;
+    this.graphicsReady = true;
+
+    if (this.graphicsReadyCallback) {
+      this.graphicsReadyCallback();
+    }
+  }
+
+  cancel(error = null) {
+    this.running = false;
+    this.cancelled = true;
+
+    if (this.gfx) {
+      this.gfx.endDrawing();
+    }
+
+    if (this._canvas) {
+      InternalRenderTask.canvasInUse.delete(this._canvas);
+    }
+
+    this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas"));
+  }
+
+  operatorListChanged() {
+    if (!this.graphicsReady) {
+      if (!this.graphicsReadyCallback) {
+        this.graphicsReadyCallback = this._continueBound;
+      }
+
+      return;
+    }
+
+    if (this.stepper) {
+      this.stepper.updateOperatorList(this.operatorList);
+    }
+
+    if (this.running) {
+      return;
+    }
+
+    this._continue();
+  }
+
+  _continue() {
+    this.running = true;
+
+    if (this.cancelled) {
+      return;
+    }
+
+    if (this.task.onContinue) {
+      this.task.onContinue(this._scheduleNextBound);
+    } else {
+      this._scheduleNext();
+    }
+  }
+
+  _scheduleNext() {
+    if (this._useRequestAnimationFrame) {
+      window.requestAnimationFrame(() => {
+        this._nextBound().catch(this._cancelBound);
+      });
+    } else {
+      Promise.resolve().then(this._nextBound).catch(this._cancelBound);
+    }
+  }
+
+  async _next() {
+    if (this.cancelled) {
+      return;
+    }
+
+    this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
+
+    if (this.operatorListIdx === this.operatorList.argsArray.length) {
+      this.running = false;
+
+      if (this.operatorList.lastChunk) {
+        this.gfx.endDrawing();
+
+        if (this._canvas) {
+          InternalRenderTask.canvasInUse.delete(this._canvas);
+        }
+
+        this.callback();
+      }
+    }
+  }
+
+}
+
+const version = '2.12.313';
+exports.version = version;
+const build = 'a2ae56f39';
+exports.build = build;
+
+/***/ }),
+/* 7 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.FontLoader = exports.FontFaceObject = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+class BaseFontLoader {
+  constructor({
+    docId,
+    onUnsupportedFeature,
+    ownerDocument = globalThis.document,
+    styleElement = null
+  }) {
+    if (this.constructor === BaseFontLoader) {
+      (0, _util.unreachable)("Cannot initialize BaseFontLoader.");
+    }
+
+    this.docId = docId;
+    this._onUnsupportedFeature = onUnsupportedFeature;
+    this._document = ownerDocument;
+    this.nativeFontFaces = [];
+    this.styleElement = null;
+  }
+
+  addNativeFontFace(nativeFontFace) {
+    this.nativeFontFaces.push(nativeFontFace);
+
+    this._document.fonts.add(nativeFontFace);
+  }
+
+  insertRule(rule) {
+    let styleElement = this.styleElement;
+
+    if (!styleElement) {
+      styleElement = this.styleElement = this._document.createElement("style");
+      styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;
+
+      this._document.documentElement.getElementsByTagName("head")[0].appendChild(styleElement);
+    }
+
+    const styleSheet = styleElement.sheet;
+    styleSheet.insertRule(rule, styleSheet.cssRules.length);
+  }
+
+  clear() {
+    for (const nativeFontFace of this.nativeFontFaces) {
+      this._document.fonts.delete(nativeFontFace);
+    }
+
+    this.nativeFontFaces.length = 0;
+
+    if (this.styleElement) {
+      this.styleElement.remove();
+      this.styleElement = null;
+    }
+  }
+
+  async bind(font) {
+    if (font.attached || font.missingFile) {
+      return;
+    }
+
+    font.attached = true;
+
+    if (this.isFontLoadingAPISupported) {
+      const nativeFontFace = font.createNativeFontFace();
+
+      if (nativeFontFace) {
+        this.addNativeFontFace(nativeFontFace);
+
+        try {
+          await nativeFontFace.loaded;
+        } catch (ex) {
+          this._onUnsupportedFeature({
+            featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative
+          });
+
+          (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);
+          font.disableFontFace = true;
+          throw ex;
+        }
+      }
+
+      return;
+    }
+
+    const rule = font.createFontFaceRule();
+
+    if (rule) {
+      this.insertRule(rule);
+
+      if (this.isSyncFontLoadingSupported) {
+        return;
+      }
+
+      await new Promise(resolve => {
+        const request = this._queueLoadingCallback(resolve);
+
+        this._prepareFontLoadEvent([rule], [font], request);
+      });
+    }
+  }
+
+  _queueLoadingCallback(callback) {
+    (0, _util.unreachable)("Abstract method `_queueLoadingCallback`.");
+  }
+
+  get isFontLoadingAPISupported() {
+    const hasFonts = !!this._document?.fonts;
+    return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts);
+  }
+
+  get isSyncFontLoadingSupported() {
+    (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`.");
+  }
+
+  get _loadTestFont() {
+    (0, _util.unreachable)("Abstract method `_loadTestFont`.");
+  }
+
+  _prepareFontLoadEvent(rules, fontsToLoad, request) {
+    (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`.");
+  }
+
+}
+
+let FontLoader;
+exports.FontLoader = FontLoader;
+{
+  exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader {
+    constructor(params) {
+      super(params);
+      this.loadingContext = {
+        requests: [],
+        nextRequestId: 0
+      };
+      this.loadTestFontId = 0;
+    }
+
+    get isSyncFontLoadingSupported() {
+      let supported = false;
+
+      if (typeof navigator === "undefined") {
+        supported = true;
+      } else {
+        const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
+
+        if (m?.[1] >= 14) {
+          supported = true;
+        }
+      }
+
+      return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported);
+    }
+
+    _queueLoadingCallback(callback) {
+      function completeRequest() {
+        (0, _util.assert)(!request.done, "completeRequest() cannot be called twice.");
+        request.done = true;
+
+        while (context.requests.length > 0 && context.requests[0].done) {
+          const otherRequest = context.requests.shift();
+          setTimeout(otherRequest.callback, 0);
+        }
+      }
+
+      const context = this.loadingContext;
+      const request = {
+        id: `pdfjs-font-loading-${context.nextRequestId++}`,
+        done: false,
+        complete: completeRequest,
+        callback
+      };
+      context.requests.push(request);
+      return request;
+    }
+
+    get _loadTestFont() {
+      const getLoadTestFont = function () {
+        return 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==");
+      };
+
+      return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont());
+    }
+
+    _prepareFontLoadEvent(rules, fonts, request) {
+      function int32(data, offset) {
+        return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
+      }
+
+      function spliceString(s, offset, remove, insert) {
+        const chunk1 = s.substring(0, offset);
+        const chunk2 = s.substring(offset + remove);
+        return chunk1 + insert + chunk2;
+      }
+
+      let i, ii;
+
+      const canvas = this._document.createElement("canvas");
+
+      canvas.width = 1;
+      canvas.height = 1;
+      const ctx = canvas.getContext("2d");
+      let called = 0;
+
+      function isFontReady(name, callback) {
+        called++;
+
+        if (called > 30) {
+          (0, _util.warn)("Load test font never loaded.");
+          callback();
+          return;
+        }
+
+        ctx.font = "30px " + name;
+        ctx.fillText(".", 0, 20);
+        const imageData = ctx.getImageData(0, 0, 1, 1);
+
+        if (imageData.data[3] > 0) {
+          callback();
+          return;
+        }
+
+        setTimeout(isFontReady.bind(null, name, callback));
+      }
+
+      const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;
+      let data = this._loadTestFont;
+      const COMMENT_OFFSET = 976;
+      data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
+      const CFF_CHECKSUM_OFFSET = 16;
+      const XXXX_VALUE = 0x58585858;
+      let checksum = int32(data, CFF_CHECKSUM_OFFSET);
+
+      for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
+        checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
+      }
+
+      if (i < loadTestFontId.length) {
+        checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0;
+      }
+
+      data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
+      const url = `url(data:font/opentype;base64,${btoa(data)});`;
+      const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`;
+      this.insertRule(rule);
+      const names = [];
+
+      for (const font of fonts) {
+        names.push(font.loadedName);
+      }
+
+      names.push(loadTestFontId);
+
+      const div = this._document.createElement("div");
+
+      div.style.visibility = "hidden";
+      div.style.width = div.style.height = "10px";
+      div.style.position = "absolute";
+      div.style.top = div.style.left = "0px";
+
+      for (const name of names) {
+        const span = this._document.createElement("span");
+
+        span.textContent = "Hi";
+        span.style.fontFamily = name;
+        div.appendChild(span);
+      }
+
+      this._document.body.appendChild(div);
+
+      isFontReady(loadTestFontId, () => {
+        div.remove();
+        request.complete();
+      });
+    }
+
+  };
+}
+
+class FontFaceObject {
+  constructor(translatedData, {
+    isEvalSupported = true,
+    disableFontFace = false,
+    ignoreErrors = false,
+    onUnsupportedFeature,
+    fontRegistry = null
+  }) {
+    this.compiledGlyphs = Object.create(null);
+
+    for (const i in translatedData) {
+      this[i] = translatedData[i];
+    }
+
+    this.isEvalSupported = isEvalSupported !== false;
+    this.disableFontFace = disableFontFace === true;
+    this.ignoreErrors = ignoreErrors === true;
+    this._onUnsupportedFeature = onUnsupportedFeature;
+    this.fontRegistry = fontRegistry;
+  }
+
+  createNativeFontFace() {
+    if (!this.data || this.disableFontFace) {
+      return null;
+    }
+
+    let nativeFontFace;
+
+    if (!this.cssFontInfo) {
+      nativeFontFace = new FontFace(this.loadedName, this.data, {});
+    } else {
+      const css = {
+        weight: this.cssFontInfo.fontWeight
+      };
+
+      if (this.cssFontInfo.italicAngle) {
+        css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;
+      }
+
+      nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);
+    }
+
+    if (this.fontRegistry) {
+      this.fontRegistry.registerFont(this);
+    }
+
+    return nativeFontFace;
+  }
+
+  createFontFaceRule() {
+    if (!this.data || this.disableFontFace) {
+      return null;
+    }
+
+    const data = (0, _util.bytesToString)(this.data);
+    const url = `url(data:${this.mimetype};base64,${btoa(data)});`;
+    let rule;
+
+    if (!this.cssFontInfo) {
+      rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`;
+    } else {
+      let css = `font-weight: ${this.cssFontInfo.fontWeight};`;
+
+      if (this.cssFontInfo.italicAngle) {
+        css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;
+      }
+
+      rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`;
+    }
+
+    if (this.fontRegistry) {
+      this.fontRegistry.registerFont(this, url);
+    }
+
+    return rule;
+  }
+
+  getPathGenerator(objs, character) {
+    if (this.compiledGlyphs[character] !== undefined) {
+      return this.compiledGlyphs[character];
+    }
+
+    let cmds;
+
+    try {
+      cmds = objs.get(this.loadedName + "_path_" + character);
+    } catch (ex) {
+      if (!this.ignoreErrors) {
+        throw ex;
+      }
+
+      this._onUnsupportedFeature({
+        featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath
+      });
+
+      (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`);
+      return this.compiledGlyphs[character] = function (c, size) {};
+    }
+
+    if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {
+      const jsBuf = [];
+
+      for (const current of cmds) {
+        const args = current.args !== undefined ? current.args.join(",") : "";
+        jsBuf.push("c.", current.cmd, "(", args, ");\n");
+      }
+
+      return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join(""));
+    }
+
+    return this.compiledGlyphs[character] = function (c, size) {
+      for (const current of cmds) {
+        if (current.cmd === "scale") {
+          current.args = [size, -size];
+        }
+
+        c[current.cmd].apply(c, current.args);
+      }
+    };
+  }
+
+}
+
+exports.FontFaceObject = FontFaceObject;
+
+/***/ }),
+/* 8 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;
+
+var _base_factory = __w_pdfjs_require__(5);
+
+var _is_node = __w_pdfjs_require__(4);
+
+var _util = __w_pdfjs_require__(2);
+
+let NodeCanvasFactory = class {
+  constructor() {
+    (0, _util.unreachable)("Not implemented: NodeCanvasFactory");
+  }
+
+};
+exports.NodeCanvasFactory = NodeCanvasFactory;
+let NodeCMapReaderFactory = class {
+  constructor() {
+    (0, _util.unreachable)("Not implemented: NodeCMapReaderFactory");
+  }
+
+};
+exports.NodeCMapReaderFactory = NodeCMapReaderFactory;
+let NodeStandardFontDataFactory = class {
+  constructor() {
+    (0, _util.unreachable)("Not implemented: NodeStandardFontDataFactory");
+  }
+
+};
+exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;
+
+if (_is_node.isNodeJS) {
+  const fetchData = function (url) {
+    return new Promise((resolve, reject) => {
+      const fs = require("fs");
+
+      fs.readFile(url, (error, data) => {
+        if (error || !data) {
+          reject(new Error(error));
+          return;
+        }
+
+        resolve(new Uint8Array(data));
+      });
+    });
+  };
+
+  exports.NodeCanvasFactory = NodeCanvasFactory = class extends _base_factory.BaseCanvasFactory {
+    _createCanvas(width, height) {
+      const Canvas = require("canvas");
+
+      return Canvas.createCanvas(width, height);
+    }
+
+  };
+  exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _base_factory.BaseCMapReaderFactory {
+    _fetchData(url, compressionType) {
+      return fetchData(url).then(data => {
+        return {
+          cMapData: data,
+          compressionType
+        };
+      });
+    }
+
+  };
+  exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory = class extends _base_factory.BaseStandardFontDataFactory {
+    _fetchData(url) {
+      return fetchData(url);
+    }
+
+  };
+}
+
+/***/ }),
+/* 9 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.AnnotationStorage = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+class AnnotationStorage {
+  constructor() {
+    this._storage = new Map();
+    this._timeStamp = Date.now();
+    this._modified = false;
+    this.onSetModified = null;
+    this.onResetModified = null;
+  }
+
+  getValue(key, defaultValue) {
+    const value = this._storage.get(key);
+
+    if (value === undefined) {
+      return defaultValue;
+    }
+
+    return Object.assign(defaultValue, value);
+  }
+
+  setValue(key, value) {
+    const obj = this._storage.get(key);
+
+    let modified = false;
+
+    if (obj !== undefined) {
+      for (const [entry, val] of Object.entries(value)) {
+        if (obj[entry] !== val) {
+          modified = true;
+          obj[entry] = val;
+        }
+      }
+    } else {
+      modified = true;
+
+      this._storage.set(key, value);
+    }
+
+    if (modified) {
+      this._timeStamp = Date.now();
+
+      this._setModified();
+    }
+  }
+
+  getAll() {
+    return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null;
+  }
+
+  get size() {
+    return this._storage.size;
+  }
+
+  _setModified() {
+    if (!this._modified) {
+      this._modified = true;
+
+      if (typeof this.onSetModified === "function") {
+        this.onSetModified();
+      }
+    }
+  }
+
+  resetModified() {
+    if (this._modified) {
+      this._modified = false;
+
+      if (typeof this.onResetModified === "function") {
+        this.onResetModified();
+      }
+    }
+  }
+
+  get serializable() {
+    return this._storage.size > 0 ? this._storage : null;
+  }
+
+  get lastModified() {
+    return this._timeStamp.toString();
+  }
+
+}
+
+exports.AnnotationStorage = AnnotationStorage;
+
+/***/ }),
+/* 10 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.CanvasGraphics = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _pattern_helper = __w_pdfjs_require__(11);
+
+var _display_utils = __w_pdfjs_require__(1);
+
+const MIN_FONT_SIZE = 16;
+const MAX_FONT_SIZE = 100;
+const MAX_GROUP_SIZE = 4096;
+const EXECUTION_TIME = 15;
+const EXECUTION_STEPS = 10;
+const COMPILE_TYPE3_GLYPHS = true;
+const MAX_SIZE_TO_COMPILE = 1000;
+const FULL_CHUNK_HEIGHT = 16;
+const LINEWIDTH_SCALE_FACTOR = 1.000001;
+
+function mirrorContextOperations(ctx, destCtx) {
+  if (ctx._removeMirroring) {
+    throw new Error("Context is already forwarding operations.");
+  }
+
+  ctx.__originalSave = ctx.save;
+  ctx.__originalRestore = ctx.restore;
+  ctx.__originalRotate = ctx.rotate;
+  ctx.__originalScale = ctx.scale;
+  ctx.__originalTranslate = ctx.translate;
+  ctx.__originalTransform = ctx.transform;
+  ctx.__originalSetTransform = ctx.setTransform;
+  ctx.__originalResetTransform = ctx.resetTransform;
+  ctx.__originalClip = ctx.clip;
+  ctx.__originalMoveTo = ctx.moveTo;
+  ctx.__originalLineTo = ctx.lineTo;
+  ctx.__originalBezierCurveTo = ctx.bezierCurveTo;
+  ctx.__originalRect = ctx.rect;
+  ctx.__originalClosePath = ctx.closePath;
+  ctx.__originalBeginPath = ctx.beginPath;
+
+  ctx._removeMirroring = () => {
+    ctx.save = ctx.__originalSave;
+    ctx.restore = ctx.__originalRestore;
+    ctx.rotate = ctx.__originalRotate;
+    ctx.scale = ctx.__originalScale;
+    ctx.translate = ctx.__originalTranslate;
+    ctx.transform = ctx.__originalTransform;
+    ctx.setTransform = ctx.__originalSetTransform;
+    ctx.resetTransform = ctx.__originalResetTransform;
+    ctx.clip = ctx.__originalClip;
+    ctx.moveTo = ctx.__originalMoveTo;
+    ctx.lineTo = ctx.__originalLineTo;
+    ctx.bezierCurveTo = ctx.__originalBezierCurveTo;
+    ctx.rect = ctx.__originalRect;
+    ctx.closePath = ctx.__originalClosePath;
+    ctx.beginPath = ctx.__originalBeginPath;
+    delete ctx._removeMirroring;
+  };
+
+  ctx.save = function ctxSave() {
+    destCtx.save();
+
+    this.__originalSave();
+  };
+
+  ctx.restore = function ctxRestore() {
+    destCtx.restore();
+
+    this.__originalRestore();
+  };
+
+  ctx.translate = function ctxTranslate(x, y) {
+    destCtx.translate(x, y);
+
+    this.__originalTranslate(x, y);
+  };
+
+  ctx.scale = function ctxScale(x, y) {
+    destCtx.scale(x, y);
+
+    this.__originalScale(x, y);
+  };
+
+  ctx.transform = function ctxTransform(a, b, c, d, e, f) {
+    destCtx.transform(a, b, c, d, e, f);
+
+    this.__originalTransform(a, b, c, d, e, f);
+  };
+
+  ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
+    destCtx.setTransform(a, b, c, d, e, f);
+
+    this.__originalSetTransform(a, b, c, d, e, f);
+  };
+
+  ctx.resetTransform = function ctxResetTransform() {
+    destCtx.resetTransform();
+
+    this.__originalResetTransform();
+  };
+
+  ctx.rotate = function ctxRotate(angle) {
+    destCtx.rotate(angle);
+
+    this.__originalRotate(angle);
+  };
+
+  ctx.clip = function ctxRotate(rule) {
+    destCtx.clip(rule);
+
+    this.__originalClip(rule);
+  };
+
+  ctx.moveTo = function (x, y) {
+    destCtx.moveTo(x, y);
+
+    this.__originalMoveTo(x, y);
+  };
+
+  ctx.lineTo = function (x, y) {
+    destCtx.lineTo(x, y);
+
+    this.__originalLineTo(x, y);
+  };
+
+  ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {
+    destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
+
+    this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
+  };
+
+  ctx.rect = function (x, y, width, height) {
+    destCtx.rect(x, y, width, height);
+
+    this.__originalRect(x, y, width, height);
+  };
+
+  ctx.closePath = function () {
+    destCtx.closePath();
+
+    this.__originalClosePath();
+  };
+
+  ctx.beginPath = function () {
+    destCtx.beginPath();
+
+    this.__originalBeginPath();
+  };
+}
+
+function addContextCurrentTransform(ctx) {
+  if (ctx.mozCurrentTransform) {
+    return;
+  }
+
+  ctx._originalSave = ctx.save;
+  ctx._originalRestore = ctx.restore;
+  ctx._originalRotate = ctx.rotate;
+  ctx._originalScale = ctx.scale;
+  ctx._originalTranslate = ctx.translate;
+  ctx._originalTransform = ctx.transform;
+  ctx._originalSetTransform = ctx.setTransform;
+  ctx._originalResetTransform = ctx.resetTransform;
+  ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];
+  ctx._transformStack = [];
+
+  try {
+    const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), "lineWidth");
+    ctx._setLineWidth = desc.set;
+    ctx._getLineWidth = desc.get;
+    Object.defineProperty(ctx, "lineWidth", {
+      set: function setLineWidth(width) {
+        this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);
+      },
+      get: function getLineWidth() {
+        return this._getLineWidth();
+      }
+    });
+  } catch (_) {}
+
+  Object.defineProperty(ctx, "mozCurrentTransform", {
+    get: function getCurrentTransform() {
+      return this._transformMatrix;
+    }
+  });
+  Object.defineProperty(ctx, "mozCurrentTransformInverse", {
+    get: function getCurrentTransformInverse() {
+      const [a, b, c, d, e, f] = this._transformMatrix;
+      const ad_bc = a * d - b * c;
+      const bc_ad = b * c - a * d;
+      return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];
+    }
+  });
+
+  ctx.save = function ctxSave() {
+    const old = this._transformMatrix;
+
+    this._transformStack.push(old);
+
+    this._transformMatrix = old.slice(0, 6);
+
+    this._originalSave();
+  };
+
+  ctx.restore = function ctxRestore() {
+    const prev = this._transformStack.pop();
+
+    if (prev) {
+      this._transformMatrix = prev;
+
+      this._originalRestore();
+    }
+  };
+
+  ctx.translate = function ctxTranslate(x, y) {
+    const m = this._transformMatrix;
+    m[4] = m[0] * x + m[2] * y + m[4];
+    m[5] = m[1] * x + m[3] * y + m[5];
+
+    this._originalTranslate(x, y);
+  };
+
+  ctx.scale = function ctxScale(x, y) {
+    const m = this._transformMatrix;
+    m[0] *= x;
+    m[1] *= x;
+    m[2] *= y;
+    m[3] *= y;
+
+    this._originalScale(x, y);
+  };
+
+  ctx.transform = function ctxTransform(a, b, c, d, e, f) {
+    const m = this._transformMatrix;
+    this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];
+
+    ctx._originalTransform(a, b, c, d, e, f);
+  };
+
+  ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
+    this._transformMatrix = [a, b, c, d, e, f];
+
+    ctx._originalSetTransform(a, b, c, d, e, f);
+  };
+
+  ctx.resetTransform = function ctxResetTransform() {
+    this._transformMatrix = [1, 0, 0, 1, 0, 0];
+
+    ctx._originalResetTransform();
+  };
+
+  ctx.rotate = function ctxRotate(angle) {
+    const cosValue = Math.cos(angle);
+    const sinValue = Math.sin(angle);
+    const m = this._transformMatrix;
+    this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];
+
+    this._originalRotate(angle);
+  };
+}
+
+class CachedCanvases {
+  constructor(canvasFactory) {
+    this.canvasFactory = canvasFactory;
+    this.cache = Object.create(null);
+  }
+
+  getCanvas(id, width, height, trackTransform) {
+    let canvasEntry;
+
+    if (this.cache[id] !== undefined) {
+      canvasEntry = this.cache[id];
+      this.canvasFactory.reset(canvasEntry, width, height);
+      canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);
+    } else {
+      canvasEntry = this.canvasFactory.create(width, height);
+      this.cache[id] = canvasEntry;
+    }
+
+    if (trackTransform) {
+      addContextCurrentTransform(canvasEntry.context);
+    }
+
+    return canvasEntry;
+  }
+
+  clear() {
+    for (const id in this.cache) {
+      const canvasEntry = this.cache[id];
+      this.canvasFactory.destroy(canvasEntry);
+      delete this.cache[id];
+    }
+  }
+
+}
+
+function compileType3Glyph(imgData) {
+  const POINT_TO_PROCESS_LIMIT = 1000;
+  const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
+  const width = imgData.width,
+        height = imgData.height,
+        width1 = width + 1;
+  let i, ii, j, j0;
+  const points = new Uint8Array(width1 * (height + 1));
+  const lineSize = width + 7 & ~7,
+        data0 = imgData.data;
+  const data = new Uint8Array(lineSize * height);
+  let pos = 0;
+
+  for (i = 0, ii = data0.length; i < ii; i++) {
+    const elem = data0[i];
+    let mask = 128;
+
+    while (mask > 0) {
+      data[pos++] = elem & mask ? 0 : 255;
+      mask >>= 1;
+    }
+  }
+
+  let count = 0;
+  pos = 0;
+
+  if (data[pos] !== 0) {
+    points[0] = 1;
+    ++count;
+  }
+
+  for (j = 1; j < width; j++) {
+    if (data[pos] !== data[pos + 1]) {
+      points[j] = data[pos] ? 2 : 1;
+      ++count;
+    }
+
+    pos++;
+  }
+
+  if (data[pos] !== 0) {
+    points[j] = 2;
+    ++count;
+  }
+
+  for (i = 1; i < height; i++) {
+    pos = i * lineSize;
+    j0 = i * width1;
+
+    if (data[pos - lineSize] !== data[pos]) {
+      points[j0] = data[pos] ? 1 : 8;
+      ++count;
+    }
+
+    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
+
+    for (j = 1; j < width; j++) {
+      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
+
+      if (POINT_TYPES[sum]) {
+        points[j0 + j] = POINT_TYPES[sum];
+        ++count;
+      }
+
+      pos++;
+    }
+
+    if (data[pos - lineSize] !== data[pos]) {
+      points[j0 + j] = data[pos] ? 2 : 4;
+      ++count;
+    }
+
+    if (count > POINT_TO_PROCESS_LIMIT) {
+      return null;
+    }
+  }
+
+  pos = lineSize * (height - 1);
+  j0 = i * width1;
+
+  if (data[pos] !== 0) {
+    points[j0] = 8;
+    ++count;
+  }
+
+  for (j = 1; j < width; j++) {
+    if (data[pos] !== data[pos + 1]) {
+      points[j0 + j] = data[pos] ? 4 : 8;
+      ++count;
+    }
+
+    pos++;
+  }
+
+  if (data[pos] !== 0) {
+    points[j0 + j] = 4;
+    ++count;
+  }
+
+  if (count > POINT_TO_PROCESS_LIMIT) {
+    return null;
+  }
+
+  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
+  const outlines = [];
+
+  for (i = 0; count && i <= height; i++) {
+    let p = i * width1;
+    const end = p + width;
+
+    while (p < end && !points[p]) {
+      p++;
+    }
+
+    if (p === end) {
+      continue;
+    }
+
+    const coords = [p % width1, i];
+    const p0 = p;
+    let type = points[p];
+
+    do {
+      const step = steps[type];
+
+      do {
+        p += step;
+      } while (!points[p]);
+
+      const pp = points[p];
+
+      if (pp !== 5 && pp !== 10) {
+        type = pp;
+        points[p] = 0;
+      } else {
+        type = pp & 0x33 * type >> 4;
+        points[p] &= type >> 2 | type << 2;
+      }
+
+      coords.push(p % width1, p / width1 | 0);
+
+      if (!points[p]) {
+        --count;
+      }
+    } while (p0 !== p);
+
+    outlines.push(coords);
+    --i;
+  }
+
+  const drawOutline = function (c) {
+    c.save();
+    c.scale(1 / width, -1 / height);
+    c.translate(0, -height);
+    c.beginPath();
+
+    for (let k = 0, kk = outlines.length; k < kk; k++) {
+      const o = outlines[k];
+      c.moveTo(o[0], o[1]);
+
+      for (let l = 2, ll = o.length; l < ll; l += 2) {
+        c.lineTo(o[l], o[l + 1]);
+      }
+    }
+
+    c.fill();
+    c.beginPath();
+    c.restore();
+  };
+
+  return drawOutline;
+}
+
+class CanvasExtraState {
+  constructor(width, height) {
+    this.alphaIsShape = false;
+    this.fontSize = 0;
+    this.fontSizeScale = 1;
+    this.textMatrix = _util.IDENTITY_MATRIX;
+    this.textMatrixScale = 1;
+    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
+    this.leading = 0;
+    this.x = 0;
+    this.y = 0;
+    this.lineX = 0;
+    this.lineY = 0;
+    this.charSpacing = 0;
+    this.wordSpacing = 0;
+    this.textHScale = 1;
+    this.textRenderingMode = _util.TextRenderingMode.FILL;
+    this.textRise = 0;
+    this.fillColor = "#000000";
+    this.strokeColor = "#000000";
+    this.patternFill = false;
+    this.fillAlpha = 1;
+    this.strokeAlpha = 1;
+    this.lineWidth = 1;
+    this.activeSMask = null;
+    this.transferMaps = null;
+    this.startNewPathAndClipBox([0, 0, width, height]);
+  }
+
+  clone() {
+    const clone = Object.create(this);
+    clone.clipBox = this.clipBox.slice();
+    return clone;
+  }
+
+  setCurrentPoint(x, y) {
+    this.x = x;
+    this.y = y;
+  }
+
+  updatePathMinMax(transform, x, y) {
+    [x, y] = _util.Util.applyTransform([x, y], transform);
+    this.minX = Math.min(this.minX, x);
+    this.minY = Math.min(this.minY, y);
+    this.maxX = Math.max(this.maxX, x);
+    this.maxY = Math.max(this.maxY, y);
+  }
+
+  updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3) {
+    const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);
+
+    this.updatePathMinMax(transform, box[0], box[1]);
+    this.updatePathMinMax(transform, box[2], box[3]);
+  }
+
+  getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {
+    const box = [this.minX, this.minY, this.maxX, this.maxY];
+
+    if (pathType === _pattern_helper.PathType.STROKE) {
+      if (!transform) {
+        (0, _util.unreachable)("Stroke bounding box must include transform.");
+      }
+
+      const scale = _util.Util.singularValueDecompose2dScale(transform);
+
+      const xStrokePad = scale[0] * this.lineWidth / 2;
+      const yStrokePad = scale[1] * this.lineWidth / 2;
+      box[0] -= xStrokePad;
+      box[1] -= yStrokePad;
+      box[2] += xStrokePad;
+      box[3] += yStrokePad;
+    }
+
+    return box;
+  }
+
+  updateClipFromPath() {
+    const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox());
+
+    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);
+  }
+
+  startNewPathAndClipBox(box) {
+    this.clipBox = box;
+    this.minX = Infinity;
+    this.minY = Infinity;
+    this.maxX = 0;
+    this.maxY = 0;
+  }
+
+  getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {
+    return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));
+  }
+
+}
+
+function putBinaryImageData(ctx, imgData, transferMaps = null) {
+  if (typeof ImageData !== "undefined" && imgData instanceof ImageData) {
+    ctx.putImageData(imgData, 0, 0);
+    return;
+  }
+
+  const height = imgData.height,
+        width = imgData.width;
+  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+  let srcPos = 0,
+      destPos;
+  const src = imgData.data;
+  const dest = chunkImgData.data;
+  let i, j, thisChunkHeight, elemsInThisChunk;
+  let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;
+
+  if (transferMaps) {
+    switch (transferMaps.length) {
+      case 1:
+        transferMapRed = transferMaps[0];
+        transferMapGreen = transferMaps[0];
+        transferMapBlue = transferMaps[0];
+        transferMapGray = transferMaps[0];
+        break;
+
+      case 4:
+        transferMapRed = transferMaps[0];
+        transferMapGreen = transferMaps[1];
+        transferMapBlue = transferMaps[2];
+        transferMapGray = transferMaps[3];
+        break;
+    }
+  }
+
+  if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
+    const srcLength = src.byteLength;
+    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
+    const dest32DataLength = dest32.length;
+    const fullSrcDiff = width + 7 >> 3;
+    let white = 0xffffffff;
+    let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;
+
+    if (transferMapGray) {
+      if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {
+        [white, black] = [black, white];
+      }
+    }
+
+    for (i = 0; i < totalChunks; i++) {
+      thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+      destPos = 0;
+
+      for (j = 0; j < thisChunkHeight; j++) {
+        const srcDiff = srcLength - srcPos;
+        let k = 0;
+        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
+        const kEndUnrolled = kEnd & ~7;
+        let mask = 0;
+        let srcByte = 0;
+
+        for (; k < kEndUnrolled; k += 8) {
+          srcByte = src[srcPos++];
+          dest32[destPos++] = srcByte & 128 ? white : black;
+          dest32[destPos++] = srcByte & 64 ? white : black;
+          dest32[destPos++] = srcByte & 32 ? white : black;
+          dest32[destPos++] = srcByte & 16 ? white : black;
+          dest32[destPos++] = srcByte & 8 ? white : black;
+          dest32[destPos++] = srcByte & 4 ? white : black;
+          dest32[destPos++] = srcByte & 2 ? white : black;
+          dest32[destPos++] = srcByte & 1 ? white : black;
+        }
+
+        for (; k < kEnd; k++) {
+          if (mask === 0) {
+            srcByte = src[srcPos++];
+            mask = 128;
+          }
+
+          dest32[destPos++] = srcByte & mask ? white : black;
+          mask >>= 1;
+        }
+      }
+
+      while (destPos < dest32DataLength) {
+        dest32[destPos++] = 0;
+      }
+
+      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+    }
+  } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {
+    const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);
+    j = 0;
+    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
+
+    for (i = 0; i < fullChunks; i++) {
+      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+      srcPos += elemsInThisChunk;
+
+      if (hasTransferMaps) {
+        for (let k = 0; k < elemsInThisChunk; k += 4) {
+          if (transferMapRed) {
+            dest[k + 0] = transferMapRed[dest[k + 0]];
+          }
+
+          if (transferMapGreen) {
+            dest[k + 1] = transferMapGreen[dest[k + 1]];
+          }
+
+          if (transferMapBlue) {
+            dest[k + 2] = transferMapBlue[dest[k + 2]];
+          }
+        }
+      }
+
+      ctx.putImageData(chunkImgData, 0, j);
+      j += FULL_CHUNK_HEIGHT;
+    }
+
+    if (i < totalChunks) {
+      elemsInThisChunk = width * partialChunkHeight * 4;
+      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+
+      if (hasTransferMaps) {
+        for (let k = 0; k < elemsInThisChunk; k += 4) {
+          if (transferMapRed) {
+            dest[k + 0] = transferMapRed[dest[k + 0]];
+          }
+
+          if (transferMapGreen) {
+            dest[k + 1] = transferMapGreen[dest[k + 1]];
+          }
+
+          if (transferMapBlue) {
+            dest[k + 2] = transferMapBlue[dest[k + 2]];
+          }
+        }
+      }
+
+      ctx.putImageData(chunkImgData, 0, j);
+    }
+  } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {
+    const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);
+    thisChunkHeight = FULL_CHUNK_HEIGHT;
+    elemsInThisChunk = width * thisChunkHeight;
+
+    for (i = 0; i < totalChunks; i++) {
+      if (i >= fullChunks) {
+        thisChunkHeight = partialChunkHeight;
+        elemsInThisChunk = width * thisChunkHeight;
+      }
+
+      destPos = 0;
+
+      for (j = elemsInThisChunk; j--;) {
+        dest[destPos++] = src[srcPos++];
+        dest[destPos++] = src[srcPos++];
+        dest[destPos++] = src[srcPos++];
+        dest[destPos++] = 255;
+      }
+
+      if (hasTransferMaps) {
+        for (let k = 0; k < destPos; k += 4) {
+          if (transferMapRed) {
+            dest[k + 0] = transferMapRed[dest[k + 0]];
+          }
+
+          if (transferMapGreen) {
+            dest[k + 1] = transferMapGreen[dest[k + 1]];
+          }
+
+          if (transferMapBlue) {
+            dest[k + 2] = transferMapBlue[dest[k + 2]];
+          }
+        }
+      }
+
+      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+    }
+  } else {
+    throw new Error(`bad image kind: ${imgData.kind}`);
+  }
+}
+
+function putBinaryImageMask(ctx, imgData) {
+  const height = imgData.height,
+        width = imgData.width;
+  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+  let srcPos = 0;
+  const src = imgData.data;
+  const dest = chunkImgData.data;
+
+  for (let i = 0; i < totalChunks; i++) {
+    const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+    let destPos = 3;
+
+    for (let j = 0; j < thisChunkHeight; j++) {
+      let elem,
+          mask = 0;
+
+      for (let k = 0; k < width; k++) {
+        if (!mask) {
+          elem = src[srcPos++];
+          mask = 128;
+        }
+
+        dest[destPos] = elem & mask ? 0 : 255;
+        destPos += 4;
+        mask >>= 1;
+      }
+    }
+
+    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+  }
+}
+
+function copyCtxState(sourceCtx, destCtx) {
+  const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"];
+
+  for (let i = 0, ii = properties.length; i < ii; i++) {
+    const property = properties[i];
+
+    if (sourceCtx[property] !== undefined) {
+      destCtx[property] = sourceCtx[property];
+    }
+  }
+
+  if (sourceCtx.setLineDash !== undefined) {
+    destCtx.setLineDash(sourceCtx.getLineDash());
+    destCtx.lineDashOffset = sourceCtx.lineDashOffset;
+  }
+}
+
+function resetCtxToDefault(ctx) {
+  ctx.strokeStyle = "#000000";
+  ctx.fillStyle = "#000000";
+  ctx.fillRule = "nonzero";
+  ctx.globalAlpha = 1;
+  ctx.lineWidth = 1;
+  ctx.lineCap = "butt";
+  ctx.lineJoin = "miter";
+  ctx.miterLimit = 10;
+  ctx.globalCompositeOperation = "source-over";
+  ctx.font = "10px sans-serif";
+
+  if (ctx.setLineDash !== undefined) {
+    ctx.setLineDash([]);
+    ctx.lineDashOffset = 0;
+  }
+}
+
+function composeSMaskBackdrop(bytes, r0, g0, b0) {
+  const length = bytes.length;
+
+  for (let i = 3; i < length; i += 4) {
+    const alpha = bytes[i];
+
+    if (alpha === 0) {
+      bytes[i - 3] = r0;
+      bytes[i - 2] = g0;
+      bytes[i - 1] = b0;
+    } else if (alpha < 255) {
+      const alpha_ = 255 - alpha;
+      bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
+      bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
+      bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
+    }
+  }
+}
+
+function composeSMaskAlpha(maskData, layerData, transferMap) {
+  const length = maskData.length;
+  const scale = 1 / 255;
+
+  for (let i = 3; i < length; i += 4) {
+    const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
+    layerData[i] = layerData[i] * alpha * scale | 0;
+  }
+}
+
+function composeSMaskLuminosity(maskData, layerData, transferMap) {
+  const length = maskData.length;
+
+  for (let i = 3; i < length; i += 4) {
+    const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
+    layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
+  }
+}
+
+function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {
+  const hasBackdrop = !!backdrop;
+  const r0 = hasBackdrop ? backdrop[0] : 0;
+  const g0 = hasBackdrop ? backdrop[1] : 0;
+  const b0 = hasBackdrop ? backdrop[2] : 0;
+  let composeFn;
+
+  if (subtype === "Luminosity") {
+    composeFn = composeSMaskLuminosity;
+  } else {
+    composeFn = composeSMaskAlpha;
+  }
+
+  const PIXELS_TO_PROCESS = 1048576;
+  const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
+
+  for (let row = 0; row < height; row += chunkSize) {
+    const chunkHeight = Math.min(chunkSize, height - row);
+    const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight);
+    const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight);
+
+    if (hasBackdrop) {
+      composeSMaskBackdrop(maskData.data, r0, g0, b0);
+    }
+
+    composeFn(maskData.data, layerData.data, transferMap);
+    layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);
+  }
+}
+
+function composeSMask(ctx, smask, layerCtx, layerBox) {
+  const layerOffsetX = layerBox[0];
+  const layerOffsetY = layerBox[1];
+  const layerWidth = layerBox[2] - layerOffsetX;
+  const layerHeight = layerBox[3] - layerOffsetY;
+
+  if (layerWidth === 0 || layerHeight === 0) {
+    return;
+  }
+
+  genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);
+  ctx.save();
+  ctx.globalAlpha = 1;
+  ctx.globalCompositeOperation = "source-over";
+  ctx.setTransform(1, 0, 0, 1, 0, 0);
+  ctx.drawImage(layerCtx.canvas, 0, 0);
+  ctx.restore();
+}
+
+function getImageSmoothingEnabled(transform, interpolate) {
+  const scale = _util.Util.singularValueDecompose2dScale(transform);
+
+  scale[0] = Math.fround(scale[0]);
+  scale[1] = Math.fround(scale[1]);
+  const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);
+
+  if (interpolate !== undefined) {
+    return interpolate;
+  } else if (scale[0] <= actualScale || scale[1] <= actualScale) {
+    return true;
+  }
+
+  return false;
+}
+
+const LINE_CAP_STYLES = ["butt", "round", "square"];
+const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
+const NORMAL_CLIP = {};
+const EO_CLIP = {};
+
+class CanvasGraphics {
+  constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap) {
+    this.ctx = canvasCtx;
+    this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);
+    this.stateStack = [];
+    this.pendingClip = null;
+    this.pendingEOFill = false;
+    this.res = null;
+    this.xobjs = null;
+    this.commonObjs = commonObjs;
+    this.objs = objs;
+    this.canvasFactory = canvasFactory;
+    this.imageLayer = imageLayer;
+    this.groupStack = [];
+    this.processingType3 = null;
+    this.baseTransform = null;
+    this.baseTransformStack = [];
+    this.groupLevel = 0;
+    this.smaskStack = [];
+    this.smaskCounter = 0;
+    this.tempSMask = null;
+    this.suspendedCtx = null;
+    this.contentVisible = true;
+    this.markedContentStack = [];
+    this.optionalContentConfig = optionalContentConfig;
+    this.cachedCanvases = new CachedCanvases(this.canvasFactory);
+    this.cachedPatterns = new Map();
+    this.annotationCanvasMap = annotationCanvasMap;
+    this.viewportScale = 1;
+    this.outputScaleX = 1;
+    this.outputScaleY = 1;
+
+    if (canvasCtx) {
+      addContextCurrentTransform(canvasCtx);
+    }
+
+    this._cachedGetSinglePixelWidth = null;
+  }
+
+  beginDrawing({
+    transform,
+    viewport,
+    transparency = false,
+    background = null
+  }) {
+    const width = this.ctx.canvas.width;
+    const height = this.ctx.canvas.height;
+    this.ctx.save();
+    this.ctx.fillStyle = background || "rgb(255, 255, 255)";
+    this.ctx.fillRect(0, 0, width, height);
+    this.ctx.restore();
+
+    if (transparency) {
+      const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true);
+      this.compositeCtx = this.ctx;
+      this.transparentCanvas = transparentCanvas.canvas;
+      this.ctx = transparentCanvas.context;
+      this.ctx.save();
+      this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);
+    }
+
+    this.ctx.save();
+    resetCtxToDefault(this.ctx);
+
+    if (transform) {
+      this.ctx.transform.apply(this.ctx, transform);
+      this.outputScaleX = transform[0];
+      this.outputScaleY = transform[0];
+    }
+
+    this.ctx.transform.apply(this.ctx, viewport.transform);
+    this.viewportScale = viewport.scale;
+    this.baseTransform = this.ctx.mozCurrentTransform.slice();
+    this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]);
+
+    if (this.imageLayer) {
+      this.imageLayer.beginLayout();
+    }
+  }
+
+  executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
+    const argsArray = operatorList.argsArray;
+    const fnArray = operatorList.fnArray;
+    let i = executionStartIdx || 0;
+    const argsArrayLen = argsArray.length;
+
+    if (argsArrayLen === i) {
+      return i;
+    }
+
+    const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function";
+    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
+    let steps = 0;
+    const commonObjs = this.commonObjs;
+    const objs = this.objs;
+    let fnId;
+
+    while (true) {
+      if (stepper !== undefined && i === stepper.nextBreakPoint) {
+        stepper.breakIt(i, continueCallback);
+        return i;
+      }
+
+      fnId = fnArray[i];
+
+      if (fnId !== _util.OPS.dependency) {
+        this[fnId].apply(this, argsArray[i]);
+      } else {
+        for (const depObjId of argsArray[i]) {
+          const objsPool = depObjId.startsWith("g_") ? commonObjs : objs;
+
+          if (!objsPool.has(depObjId)) {
+            objsPool.get(depObjId, continueCallback);
+            return i;
+          }
+        }
+      }
+
+      i++;
+
+      if (i === argsArrayLen) {
+        return i;
+      }
+
+      if (chunkOperations && ++steps > EXECUTION_STEPS) {
+        if (Date.now() > endTime) {
+          continueCallback();
+          return i;
+        }
+
+        steps = 0;
+      }
+    }
+  }
+
+  endDrawing() {
+    while (this.stateStack.length || this.current.activeSMask !== null) {
+      this.restore();
+    }
+
+    this.ctx.restore();
+
+    if (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.transparentCanvas = null;
+    }
+
+    this.cachedCanvases.clear();
+    this.cachedPatterns.clear();
+
+    if (this.imageLayer) {
+      this.imageLayer.endLayout();
+    }
+  }
+
+  _scaleImage(img, inverseTransform) {
+    const width = img.width;
+    const height = img.height;
+    let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);
+    let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);
+    let paintWidth = width,
+        paintHeight = height;
+    let tmpCanvasId = "prescale1";
+    let tmpCanvas, tmpCtx;
+
+    while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
+      let newWidth = paintWidth,
+          newHeight = paintHeight;
+
+      if (widthScale > 2 && paintWidth > 1) {
+        newWidth = Math.ceil(paintWidth / 2);
+        widthScale /= paintWidth / newWidth;
+      }
+
+      if (heightScale > 2 && paintHeight > 1) {
+        newHeight = Math.ceil(paintHeight / 2);
+        heightScale /= paintHeight / newHeight;
+      }
+
+      tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
+      tmpCtx = tmpCanvas.context;
+      tmpCtx.clearRect(0, 0, newWidth, newHeight);
+      tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
+      img = tmpCanvas.canvas;
+      paintWidth = newWidth;
+      paintHeight = newHeight;
+      tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1";
+    }
+
+    return {
+      img,
+      paintWidth,
+      paintHeight
+    };
+  }
+
+  _createMaskCanvas(img) {
+    const ctx = this.ctx;
+    const width = img.width,
+          height = img.height;
+    const fillColor = this.current.fillColor;
+    const isPatternFill = this.current.patternFill;
+    const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+    const maskCtx = maskCanvas.context;
+    putBinaryImageMask(maskCtx, img);
+    const objToCanvas = ctx.mozCurrentTransform;
+
+    let maskToCanvas = _util.Util.transform(objToCanvas, [1 / width, 0, 0, -1 / height, 0, 0]);
+
+    maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);
+
+    const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);
+
+    const cord2 = _util.Util.applyTransform([width, height], maskToCanvas);
+
+    const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);
+
+    const drawnWidth = Math.ceil(rect[2] - rect[0]);
+    const drawnHeight = Math.ceil(rect[3] - rect[1]);
+    const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight, true);
+    const fillCtx = fillCanvas.context;
+    const offsetX = Math.min(cord1[0], cord2[0]);
+    const offsetY = Math.min(cord1[1], cord2[1]);
+    fillCtx.translate(-offsetX, -offsetY);
+    fillCtx.transform.apply(fillCtx, maskToCanvas);
+
+    const scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse);
+
+    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(fillCtx.mozCurrentTransform, img.interpolate);
+    fillCtx.drawImage(scaled.img, 0, 0, scaled.img.width, scaled.img.height, 0, 0, width, height);
+    fillCtx.globalCompositeOperation = "source-in";
+
+    const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, -offsetY]);
+
+    fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor;
+    fillCtx.fillRect(0, 0, width, height);
+    return {
+      canvas: fillCanvas.canvas,
+      offsetX: Math.round(offsetX),
+      offsetY: Math.round(offsetY)
+    };
+  }
+
+  setLineWidth(width) {
+    this.current.lineWidth = width;
+    this.ctx.lineWidth = width;
+  }
+
+  setLineCap(style) {
+    this.ctx.lineCap = LINE_CAP_STYLES[style];
+  }
+
+  setLineJoin(style) {
+    this.ctx.lineJoin = LINE_JOIN_STYLES[style];
+  }
+
+  setMiterLimit(limit) {
+    this.ctx.miterLimit = limit;
+  }
+
+  setDash(dashArray, dashPhase) {
+    const ctx = this.ctx;
+
+    if (ctx.setLineDash !== undefined) {
+      ctx.setLineDash(dashArray);
+      ctx.lineDashOffset = dashPhase;
+    }
+  }
+
+  setRenderingIntent(intent) {}
+
+  setFlatness(flatness) {}
+
+  setGState(states) {
+    for (let i = 0, ii = states.length; i < ii; i++) {
+      const state = states[i];
+      const key = state[0];
+      const value = state[1];
+
+      switch (key) {
+        case "LW":
+          this.setLineWidth(value);
+          break;
+
+        case "LC":
+          this.setLineCap(value);
+          break;
+
+        case "LJ":
+          this.setLineJoin(value);
+          break;
+
+        case "ML":
+          this.setMiterLimit(value);
+          break;
+
+        case "D":
+          this.setDash(value[0], value[1]);
+          break;
+
+        case "RI":
+          this.setRenderingIntent(value);
+          break;
+
+        case "FL":
+          this.setFlatness(value);
+          break;
+
+        case "Font":
+          this.setFont(value[0], value[1]);
+          break;
+
+        case "CA":
+          this.current.strokeAlpha = state[1];
+          break;
+
+        case "ca":
+          this.current.fillAlpha = state[1];
+          this.ctx.globalAlpha = state[1];
+          break;
+
+        case "BM":
+          this.ctx.globalCompositeOperation = value;
+          break;
+
+        case "SMask":
+          this.current.activeSMask = value ? this.tempSMask : null;
+          this.tempSMask = null;
+          this.checkSMaskState();
+          break;
+
+        case "TR":
+          this.current.transferMaps = value;
+      }
+    }
+  }
+
+  checkSMaskState() {
+    const inSMaskMode = !!this.suspendedCtx;
+
+    if (this.current.activeSMask && !inSMaskMode) {
+      this.beginSMaskMode();
+    } else if (!this.current.activeSMask && inSMaskMode) {
+      this.endSMaskMode();
+    }
+  }
+
+  beginSMaskMode() {
+    if (this.suspendedCtx) {
+      throw new Error("beginSMaskMode called while already in smask mode");
+    }
+
+    const drawnWidth = this.ctx.canvas.width;
+    const drawnHeight = this.ctx.canvas.height;
+    const cacheId = "smaskGroupAt" + this.groupLevel;
+    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+    this.suspendedCtx = this.ctx;
+    this.ctx = scratchCanvas.context;
+    const ctx = this.ctx;
+    ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform);
+    copyCtxState(this.suspendedCtx, ctx);
+    mirrorContextOperations(ctx, this.suspendedCtx);
+    this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
+  }
+
+  endSMaskMode() {
+    if (!this.suspendedCtx) {
+      throw new Error("endSMaskMode called while not in smask mode");
+    }
+
+    this.ctx._removeMirroring();
+
+    copyCtxState(this.ctx, this.suspendedCtx);
+    this.ctx = this.suspendedCtx;
+    this.current.activeSMask = null;
+    this.suspendedCtx = null;
+  }
+
+  compose(dirtyBox) {
+    if (!this.current.activeSMask) {
+      return;
+    }
+
+    if (!dirtyBox) {
+      dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];
+    } else {
+      dirtyBox[0] = Math.floor(dirtyBox[0]);
+      dirtyBox[1] = Math.floor(dirtyBox[1]);
+      dirtyBox[2] = Math.ceil(dirtyBox[2]);
+      dirtyBox[3] = Math.ceil(dirtyBox[3]);
+    }
+
+    const smask = this.current.activeSMask;
+    const suspendedCtx = this.suspendedCtx;
+    composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);
+    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();
+  }
+
+  save() {
+    this.ctx.save();
+    const old = this.current;
+    this.stateStack.push(old);
+    this.current = old.clone();
+  }
+
+  restore() {
+    if (this.stateStack.length === 0 && this.current.activeSMask) {
+      this.endSMaskMode();
+    }
+
+    if (this.stateStack.length !== 0) {
+      this.current = this.stateStack.pop();
+      this.ctx.restore();
+      this.checkSMaskState();
+      this.pendingClip = null;
+      this._cachedGetSinglePixelWidth = null;
+    }
+  }
+
+  transform(a, b, c, d, e, f) {
+    this.ctx.transform(a, b, c, d, e, f);
+    this._cachedGetSinglePixelWidth = null;
+  }
+
+  constructPath(ops, args) {
+    const ctx = this.ctx;
+    const current = this.current;
+    let x = current.x,
+        y = current.y;
+    let startX, startY;
+
+    for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {
+      switch (ops[i] | 0) {
+        case _util.OPS.rectangle:
+          x = args[j++];
+          y = args[j++];
+          const width = args[j++];
+          const height = args[j++];
+          const xw = x + width;
+          const yh = y + height;
+          ctx.moveTo(x, y);
+
+          if (width === 0 || height === 0) {
+            ctx.lineTo(xw, yh);
+          } else {
+            ctx.lineTo(xw, y);
+            ctx.lineTo(xw, yh);
+            ctx.lineTo(x, yh);
+          }
+
+          current.updatePathMinMax(ctx.mozCurrentTransform, x, y);
+          current.updatePathMinMax(ctx.mozCurrentTransform, xw, yh);
+          ctx.closePath();
+          break;
+
+        case _util.OPS.moveTo:
+          x = args[j++];
+          y = args[j++];
+          ctx.moveTo(x, y);
+          current.updatePathMinMax(ctx.mozCurrentTransform, x, y);
+          break;
+
+        case _util.OPS.lineTo:
+          x = args[j++];
+          y = args[j++];
+          ctx.lineTo(x, y);
+          current.updatePathMinMax(ctx.mozCurrentTransform, x, y);
+          break;
+
+        case _util.OPS.curveTo:
+          startX = x;
+          startY = y;
+          x = args[j + 4];
+          y = args[j + 5];
+          ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
+          current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
+          j += 6;
+          break;
+
+        case _util.OPS.curveTo2:
+          startX = x;
+          startY = y;
+          ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
+          current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
+          x = args[j + 2];
+          y = args[j + 3];
+          j += 4;
+          break;
+
+        case _util.OPS.curveTo3:
+          startX = x;
+          startY = y;
+          x = args[j + 2];
+          y = args[j + 3];
+          ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
+          current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, args[j], args[j + 1], x, y, x, y);
+          j += 4;
+          break;
+
+        case _util.OPS.closePath:
+          ctx.closePath();
+          break;
+      }
+    }
+
+    current.setCurrentPoint(x, y);
+  }
+
+  closePath() {
+    this.ctx.closePath();
+  }
+
+  stroke(consumePath) {
+    consumePath = typeof consumePath !== "undefined" ? consumePath : true;
+    const ctx = this.ctx;
+    const strokeColor = this.current.strokeColor;
+    ctx.globalAlpha = this.current.strokeAlpha;
+
+    if (this.contentVisible) {
+      if (typeof strokeColor === "object" && strokeColor?.getPattern) {
+        const lineWidth = this.getSinglePixelWidth();
+        ctx.save();
+        ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.STROKE);
+        ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
+        ctx.stroke();
+        ctx.restore();
+      } else {
+        const lineWidth = this.getSinglePixelWidth();
+
+        if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {
+          ctx.save();
+          ctx.resetTransform();
+          ctx.lineWidth = Math.round(this._combinedScaleFactor);
+          ctx.stroke();
+          ctx.restore();
+        } else {
+          ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
+          ctx.stroke();
+        }
+      }
+    }
+
+    if (consumePath) {
+      this.consumePath(this.current.getClippedPathBoundingBox());
+    }
+
+    ctx.globalAlpha = this.current.fillAlpha;
+  }
+
+  closeStroke() {
+    this.closePath();
+    this.stroke();
+  }
+
+  fill(consumePath) {
+    consumePath = typeof consumePath !== "undefined" ? consumePath : true;
+    const ctx = this.ctx;
+    const fillColor = this.current.fillColor;
+    const isPatternFill = this.current.patternFill;
+    let needRestore = false;
+
+    if (isPatternFill) {
+      ctx.save();
+      ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL);
+      needRestore = true;
+    }
+
+    const intersect = this.current.getClippedPathBoundingBox();
+
+    if (this.contentVisible && intersect !== null) {
+      if (this.pendingEOFill) {
+        ctx.fill("evenodd");
+        this.pendingEOFill = false;
+      } else {
+        ctx.fill();
+      }
+    }
+
+    if (needRestore) {
+      ctx.restore();
+    }
+
+    if (consumePath) {
+      this.consumePath(intersect);
+    }
+  }
+
+  eoFill() {
+    this.pendingEOFill = true;
+    this.fill();
+  }
+
+  fillStroke() {
+    this.fill(false);
+    this.stroke(false);
+    this.consumePath();
+  }
+
+  eoFillStroke() {
+    this.pendingEOFill = true;
+    this.fillStroke();
+  }
+
+  closeFillStroke() {
+    this.closePath();
+    this.fillStroke();
+  }
+
+  closeEOFillStroke() {
+    this.pendingEOFill = true;
+    this.closePath();
+    this.fillStroke();
+  }
+
+  endPath() {
+    this.consumePath();
+  }
+
+  clip() {
+    this.pendingClip = NORMAL_CLIP;
+  }
+
+  eoClip() {
+    this.pendingClip = EO_CLIP;
+  }
+
+  beginText() {
+    this.current.textMatrix = _util.IDENTITY_MATRIX;
+    this.current.textMatrixScale = 1;
+    this.current.x = this.current.lineX = 0;
+    this.current.y = this.current.lineY = 0;
+  }
+
+  endText() {
+    const paths = this.pendingTextPaths;
+    const ctx = this.ctx;
+
+    if (paths === undefined) {
+      ctx.beginPath();
+      return;
+    }
+
+    ctx.save();
+    ctx.beginPath();
+
+    for (let i = 0; i < paths.length; i++) {
+      const path = paths[i];
+      ctx.setTransform.apply(ctx, path.transform);
+      ctx.translate(path.x, path.y);
+      path.addToPath(ctx, path.fontSize);
+    }
+
+    ctx.restore();
+    ctx.clip();
+    ctx.beginPath();
+    delete this.pendingTextPaths;
+  }
+
+  setCharSpacing(spacing) {
+    this.current.charSpacing = spacing;
+  }
+
+  setWordSpacing(spacing) {
+    this.current.wordSpacing = spacing;
+  }
+
+  setHScale(scale) {
+    this.current.textHScale = scale / 100;
+  }
+
+  setLeading(leading) {
+    this.current.leading = -leading;
+  }
+
+  setFont(fontRefName, size) {
+    const fontObj = this.commonObjs.get(fontRefName);
+    const current = this.current;
+
+    if (!fontObj) {
+      throw new Error(`Can't find font for ${fontRefName}`);
+    }
+
+    current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+
+    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
+      (0, _util.warn)("Invalid font matrix for font " + fontRefName);
+    }
+
+    if (size < 0) {
+      size = -size;
+      current.fontDirection = -1;
+    } else {
+      current.fontDirection = 1;
+    }
+
+    this.current.font = fontObj;
+    this.current.fontSize = size;
+
+    if (fontObj.isType3Font) {
+      return;
+    }
+
+    const name = fontObj.loadedName || "sans-serif";
+    let bold = "normal";
+
+    if (fontObj.black) {
+      bold = "900";
+    } else if (fontObj.bold) {
+      bold = "bold";
+    }
+
+    const italic = fontObj.italic ? "italic" : "normal";
+    const typeface = `"${name}", ${fontObj.fallbackName}`;
+    let browserFontSize = size;
+
+    if (size < MIN_FONT_SIZE) {
+      browserFontSize = MIN_FONT_SIZE;
+    } else if (size > MAX_FONT_SIZE) {
+      browserFontSize = MAX_FONT_SIZE;
+    }
+
+    this.current.fontSizeScale = size / browserFontSize;
+    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;
+  }
+
+  setTextRenderingMode(mode) {
+    this.current.textRenderingMode = mode;
+  }
+
+  setTextRise(rise) {
+    this.current.textRise = rise;
+  }
+
+  moveText(x, y) {
+    this.current.x = this.current.lineX += x;
+    this.current.y = this.current.lineY += y;
+  }
+
+  setLeadingMoveText(x, y) {
+    this.setLeading(-y);
+    this.moveText(x, y);
+  }
+
+  setTextMatrix(a, b, c, d, e, f) {
+    this.current.textMatrix = [a, b, c, d, e, f];
+    this.current.textMatrixScale = Math.hypot(a, b);
+    this.current.x = this.current.lineX = 0;
+    this.current.y = this.current.lineY = 0;
+  }
+
+  nextLine() {
+    this.moveText(0, this.current.leading);
+  }
+
+  paintChar(character, x, y, patternTransform, resetLineWidthToOne) {
+    const ctx = this.ctx;
+    const current = this.current;
+    const font = current.font;
+    const textRenderingMode = current.textRenderingMode;
+    const fontSize = current.fontSize / current.fontSizeScale;
+    const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+    const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
+    const patternFill = current.patternFill && !font.missingFile;
+    let addToPath;
+
+    if (font.disableFontFace || isAddToPathSet || patternFill) {
+      addToPath = font.getPathGenerator(this.commonObjs, character);
+    }
+
+    if (font.disableFontFace || patternFill) {
+      ctx.save();
+      ctx.translate(x, y);
+      ctx.beginPath();
+      addToPath(ctx, fontSize);
+
+      if (patternTransform) {
+        ctx.setTransform.apply(ctx, patternTransform);
+      }
+
+      if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+        ctx.fill();
+      }
+
+      if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+        if (resetLineWidthToOne) {
+          ctx.resetTransform();
+          ctx.lineWidth = Math.round(this._combinedScaleFactor);
+        }
+
+        ctx.stroke();
+      }
+
+      ctx.restore();
+    } else {
+      if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+        ctx.fillText(character, x, y);
+      }
+
+      if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+        if (resetLineWidthToOne) {
+          ctx.save();
+          ctx.moveTo(x, y);
+          ctx.resetTransform();
+          ctx.lineWidth = Math.round(this._combinedScaleFactor);
+          ctx.strokeText(character, 0, 0);
+          ctx.restore();
+        } else {
+          ctx.strokeText(character, x, y);
+        }
+      }
+    }
+
+    if (isAddToPathSet) {
+      const paths = this.pendingTextPaths || (this.pendingTextPaths = []);
+      paths.push({
+        transform: ctx.mozCurrentTransform,
+        x,
+        y,
+        fontSize,
+        addToPath
+      });
+    }
+  }
+
+  get isFontSubpixelAAEnabled() {
+    const {
+      context: ctx
+    } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
+    ctx.scale(1.5, 1);
+    ctx.fillText("I", 0, 10);
+    const data = ctx.getImageData(0, 0, 10, 10).data;
+    let enabled = false;
+
+    for (let i = 3; i < data.length; i += 4) {
+      if (data[i] > 0 && data[i] < 255) {
+        enabled = true;
+        break;
+      }
+    }
+
+    return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled);
+  }
+
+  showText(glyphs) {
+    const current = this.current;
+    const font = current.font;
+
+    if (font.isType3Font) {
+      return this.showType3Text(glyphs);
+    }
+
+    const fontSize = current.fontSize;
+
+    if (fontSize === 0) {
+      return undefined;
+    }
+
+    const ctx = this.ctx;
+    const fontSizeScale = current.fontSizeScale;
+    const charSpacing = current.charSpacing;
+    const wordSpacing = current.wordSpacing;
+    const fontDirection = current.fontDirection;
+    const textHScale = current.textHScale * fontDirection;
+    const glyphsLength = glyphs.length;
+    const vertical = font.vertical;
+    const spacingDir = vertical ? 1 : -1;
+    const defaultVMetrics = font.defaultVMetrics;
+    const widthAdvanceScale = fontSize * current.fontMatrix[0];
+    const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;
+    ctx.save();
+    ctx.transform.apply(ctx, current.textMatrix);
+    ctx.translate(current.x, current.y + current.textRise);
+
+    if (fontDirection > 0) {
+      ctx.scale(textHScale, -1);
+    } else {
+      ctx.scale(textHScale, 1);
+    }
+
+    let patternTransform;
+
+    if (current.patternFill) {
+      ctx.save();
+      const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL);
+      patternTransform = ctx.mozCurrentTransform;
+      ctx.restore();
+      ctx.fillStyle = pattern;
+    }
+
+    let lineWidth = current.lineWidth;
+    let resetLineWidthToOne = false;
+    const scale = current.textMatrixScale;
+
+    if (scale === 0 || lineWidth === 0) {
+      const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+
+      if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+        this._cachedGetSinglePixelWidth = null;
+        lineWidth = this.getSinglePixelWidth();
+        resetLineWidthToOne = lineWidth < 0;
+      }
+    } else {
+      lineWidth /= scale;
+    }
+
+    if (fontSizeScale !== 1.0) {
+      ctx.scale(fontSizeScale, fontSizeScale);
+      lineWidth /= fontSizeScale;
+    }
+
+    ctx.lineWidth = lineWidth;
+    let x = 0,
+        i;
+
+    for (i = 0; i < glyphsLength; ++i) {
+      const glyph = glyphs[i];
+
+      if ((0, _util.isNum)(glyph)) {
+        x += spacingDir * glyph * fontSize / 1000;
+        continue;
+      }
+
+      let restoreNeeded = false;
+      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+      const character = glyph.fontChar;
+      const accent = glyph.accent;
+      let scaledX, scaledY;
+      let width = glyph.width;
+
+      if (vertical) {
+        const vmetric = glyph.vmetric || defaultVMetrics;
+        const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;
+        const vy = vmetric[2] * widthAdvanceScale;
+        width = vmetric ? -vmetric[0] : width;
+        scaledX = vx / fontSizeScale;
+        scaledY = (x + vy) / fontSizeScale;
+      } else {
+        scaledX = x / fontSizeScale;
+        scaledY = 0;
+      }
+
+      if (font.remeasure && width > 0) {
+        const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
+
+        if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
+          const characterScaleX = width / measuredWidth;
+          restoreNeeded = true;
+          ctx.save();
+          ctx.scale(characterScaleX, 1);
+          scaledX /= characterScaleX;
+        } else if (width !== measuredWidth) {
+          scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
+        }
+      }
+
+      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {
+        if (simpleFillText && !accent) {
+          ctx.fillText(character, scaledX, scaledY);
+        } else {
+          this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne);
+
+          if (accent) {
+            const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;
+            const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;
+            this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform, resetLineWidthToOne);
+          }
+        }
+      }
+
+      let charWidth;
+
+      if (vertical) {
+        charWidth = width * widthAdvanceScale - spacing * fontDirection;
+      } else {
+        charWidth = width * widthAdvanceScale + spacing * fontDirection;
+      }
+
+      x += charWidth;
+
+      if (restoreNeeded) {
+        ctx.restore();
+      }
+    }
+
+    if (vertical) {
+      current.y -= x;
+    } else {
+      current.x += x * textHScale;
+    }
+
+    ctx.restore();
+    this.compose();
+    return undefined;
+  }
+
+  showType3Text(glyphs) {
+    const ctx = this.ctx;
+    const current = this.current;
+    const font = current.font;
+    const fontSize = current.fontSize;
+    const fontDirection = current.fontDirection;
+    const spacingDir = font.vertical ? 1 : -1;
+    const charSpacing = current.charSpacing;
+    const wordSpacing = current.wordSpacing;
+    const textHScale = current.textHScale * fontDirection;
+    const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+    const glyphsLength = glyphs.length;
+    const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
+    let i, glyph, width, spacingLength;
+
+    if (isTextInvisible || fontSize === 0) {
+      return;
+    }
+
+    this._cachedGetSinglePixelWidth = null;
+    ctx.save();
+    ctx.transform.apply(ctx, current.textMatrix);
+    ctx.translate(current.x, current.y);
+    ctx.scale(textHScale, fontDirection);
+
+    for (i = 0; i < glyphsLength; ++i) {
+      glyph = glyphs[i];
+
+      if ((0, _util.isNum)(glyph)) {
+        spacingLength = spacingDir * glyph * fontSize / 1000;
+        this.ctx.translate(spacingLength, 0);
+        current.x += spacingLength * textHScale;
+        continue;
+      }
+
+      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+      const operatorList = font.charProcOperatorList[glyph.operatorListId];
+
+      if (!operatorList) {
+        (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`);
+        continue;
+      }
+
+      if (this.contentVisible) {
+        this.processingType3 = glyph;
+        this.save();
+        ctx.scale(fontSize, fontSize);
+        ctx.transform.apply(ctx, fontMatrix);
+        this.executeOperatorList(operatorList);
+        this.restore();
+      }
+
+      const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
+
+      width = transformed[0] * fontSize + spacing;
+      ctx.translate(width, 0);
+      current.x += width * textHScale;
+    }
+
+    ctx.restore();
+    this.processingType3 = null;
+  }
+
+  setCharWidth(xWidth, yWidth) {}
+
+  setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
+    this.ctx.rect(llx, lly, urx - llx, ury - lly);
+    this.clip();
+    this.endPath();
+  }
+
+  getColorN_Pattern(IR) {
+    let pattern;
+
+    if (IR[0] === "TilingPattern") {
+      const color = IR[1];
+      const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
+      const canvasGraphicsFactory = {
+        createCanvasGraphics: ctx => {
+          return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory);
+        }
+      };
+      pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);
+    } else {
+      pattern = this._getPattern(IR[1], IR[2]);
+    }
+
+    return pattern;
+  }
+
+  setStrokeColorN() {
+    this.current.strokeColor = this.getColorN_Pattern(arguments);
+  }
+
+  setFillColorN() {
+    this.current.fillColor = this.getColorN_Pattern(arguments);
+    this.current.patternFill = true;
+  }
+
+  setStrokeRGBColor(r, g, b) {
+    const color = _util.Util.makeHexColor(r, g, b);
+
+    this.ctx.strokeStyle = color;
+    this.current.strokeColor = color;
+  }
+
+  setFillRGBColor(r, g, b) {
+    const color = _util.Util.makeHexColor(r, g, b);
+
+    this.ctx.fillStyle = color;
+    this.current.fillColor = color;
+    this.current.patternFill = false;
+  }
+
+  _getPattern(objId, matrix = null) {
+    let pattern;
+
+    if (this.cachedPatterns.has(objId)) {
+      pattern = this.cachedPatterns.get(objId);
+    } else {
+      pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId));
+      this.cachedPatterns.set(objId, pattern);
+    }
+
+    if (matrix) {
+      pattern.matrix = matrix;
+    }
+
+    return pattern;
+  }
+
+  shadingFill(objId) {
+    if (!this.contentVisible) {
+      return;
+    }
+
+    const ctx = this.ctx;
+    this.save();
+
+    const pattern = this._getPattern(objId);
+
+    ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.SHADING);
+    const inv = ctx.mozCurrentTransformInverse;
+
+    if (inv) {
+      const canvas = ctx.canvas;
+      const width = canvas.width;
+      const height = canvas.height;
+
+      const bl = _util.Util.applyTransform([0, 0], inv);
+
+      const br = _util.Util.applyTransform([0, height], inv);
+
+      const ul = _util.Util.applyTransform([width, 0], inv);
+
+      const ur = _util.Util.applyTransform([width, height], inv);
+
+      const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
+      const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
+      const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
+      const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
+      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
+    } else {
+      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
+    }
+
+    this.compose(this.current.getClippedPathBoundingBox());
+    this.restore();
+  }
+
+  beginInlineImage() {
+    (0, _util.unreachable)("Should not call beginInlineImage");
+  }
+
+  beginImageData() {
+    (0, _util.unreachable)("Should not call beginImageData");
+  }
+
+  paintFormXObjectBegin(matrix, bbox) {
+    if (!this.contentVisible) {
+      return;
+    }
+
+    this.save();
+    this.baseTransformStack.push(this.baseTransform);
+
+    if (Array.isArray(matrix) && matrix.length === 6) {
+      this.transform.apply(this, matrix);
+    }
+
+    this.baseTransform = this.ctx.mozCurrentTransform;
+
+    if (bbox) {
+      const width = bbox[2] - bbox[0];
+      const height = bbox[3] - bbox[1];
+      this.ctx.rect(bbox[0], bbox[1], width, height);
+      this.current.updatePathMinMax(this.ctx.mozCurrentTransform, bbox[0], bbox[1]);
+      this.current.updatePathMinMax(this.ctx.mozCurrentTransform, bbox[2], bbox[3]);
+      this.clip();
+      this.endPath();
+    }
+  }
+
+  paintFormXObjectEnd() {
+    if (!this.contentVisible) {
+      return;
+    }
+
+    this.restore();
+    this.baseTransform = this.baseTransformStack.pop();
+  }
+
+  beginGroup(group) {
+    if (!this.contentVisible) {
+      return;
+    }
+
+    this.save();
+    const suspendedCtx = this.suspendedCtx;
+
+    if (this.current.activeSMask) {
+      this.suspendedCtx = null;
+      this.current.activeSMask = null;
+    }
+
+    const currentCtx = this.ctx;
+
+    if (!group.isolated) {
+      (0, _util.info)("TODO: Support non-isolated groups.");
+    }
+
+    if (group.knockout) {
+      (0, _util.warn)("Knockout groups not supported.");
+    }
+
+    const currentTransform = currentCtx.mozCurrentTransform;
+
+    if (group.matrix) {
+      currentCtx.transform.apply(currentCtx, group.matrix);
+    }
+
+    if (!group.bbox) {
+      throw new Error("Bounding box is required.");
+    }
+
+    let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
+
+    const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
+    bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
+    const offsetX = Math.floor(bounds[0]);
+    const offsetY = Math.floor(bounds[1]);
+    let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
+    let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
+    let scaleX = 1,
+        scaleY = 1;
+
+    if (drawnWidth > MAX_GROUP_SIZE) {
+      scaleX = drawnWidth / MAX_GROUP_SIZE;
+      drawnWidth = MAX_GROUP_SIZE;
+    }
+
+    if (drawnHeight > MAX_GROUP_SIZE) {
+      scaleY = drawnHeight / MAX_GROUP_SIZE;
+      drawnHeight = MAX_GROUP_SIZE;
+    }
+
+    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);
+    let cacheId = "groupAt" + this.groupLevel;
+
+    if (group.smask) {
+      cacheId += "_smask_" + this.smaskCounter++ % 2;
+    }
+
+    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+    const groupCtx = scratchCanvas.context;
+    groupCtx.scale(1 / scaleX, 1 / scaleY);
+    groupCtx.translate(-offsetX, -offsetY);
+    groupCtx.transform.apply(groupCtx, currentTransform);
+
+    if (group.smask) {
+      this.smaskStack.push({
+        canvas: scratchCanvas.canvas,
+        context: groupCtx,
+        offsetX,
+        offsetY,
+        scaleX,
+        scaleY,
+        subtype: group.smask.subtype,
+        backdrop: group.smask.backdrop,
+        transferMap: group.smask.transferMap || null,
+        startTransformInverse: null
+      });
+    } else {
+      currentCtx.setTransform(1, 0, 0, 1, 0, 0);
+      currentCtx.translate(offsetX, offsetY);
+      currentCtx.scale(scaleX, scaleY);
+      currentCtx.save();
+    }
+
+    copyCtxState(currentCtx, groupCtx);
+    this.ctx = groupCtx;
+    this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
+    this.groupStack.push({
+      ctx: currentCtx,
+      suspendedCtx
+    });
+    this.groupLevel++;
+  }
+
+  endGroup(group) {
+    if (!this.contentVisible) {
+      return;
+    }
+
+    this.groupLevel--;
+    const groupCtx = this.ctx;
+    const {
+      ctx,
+      suspendedCtx
+    } = this.groupStack.pop();
+    this.ctx = ctx;
+    this.ctx.imageSmoothingEnabled = false;
+
+    if (suspendedCtx) {
+      this.suspendedCtx = suspendedCtx;
+    }
+
+    if (group.smask) {
+      this.tempSMask = this.smaskStack.pop();
+      this.restore();
+    } else {
+      this.ctx.restore();
+      const currentMtx = this.ctx.mozCurrentTransform;
+      this.restore();
+      this.ctx.save();
+      this.ctx.setTransform.apply(this.ctx, currentMtx);
+
+      const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);
+
+      this.ctx.drawImage(groupCtx.canvas, 0, 0);
+      this.ctx.restore();
+      this.compose(dirtyBox);
+    }
+  }
+
+  beginAnnotations() {
+    this.save();
+
+    if (this.baseTransform) {
+      this.ctx.setTransform.apply(this.ctx, this.baseTransform);
+    }
+  }
+
+  endAnnotations() {
+    this.restore();
+  }
+
+  beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {
+    this.save();
+
+    if (Array.isArray(rect) && rect.length === 4) {
+      const width = rect[2] - rect[0];
+      const height = rect[3] - rect[1];
+
+      if (hasOwnCanvas && this.annotationCanvasMap) {
+        transform = transform.slice();
+        transform[4] -= rect[0];
+        transform[5] -= rect[1];
+        rect = rect.slice();
+        rect[0] = rect[1] = 0;
+        rect[2] = width;
+        rect[3] = height;
+
+        const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(this.ctx.mozCurrentTransform);
+
+        const {
+          viewportScale
+        } = this;
+        const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);
+        const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);
+        this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);
+        const {
+          canvas,
+          context
+        } = this.annotationCanvas;
+        canvas.style.width = `calc(${width}px * var(--viewport-scale-factor))`;
+        canvas.style.height = `calc(${height}px * var(--viewport-scale-factor))`;
+        this.annotationCanvasMap.set(id, canvas);
+        this.annotationCanvas.savedCtx = this.ctx;
+        this.ctx = context;
+        this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);
+        addContextCurrentTransform(this.ctx);
+        resetCtxToDefault(this.ctx);
+      } else {
+        resetCtxToDefault(this.ctx);
+        this.ctx.rect(rect[0], rect[1], width, height);
+        this.clip();
+        this.endPath();
+      }
+    }
+
+    this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);
+    this.transform.apply(this, transform);
+    this.transform.apply(this, matrix);
+  }
+
+  endAnnotation() {
+    if (this.annotationCanvas) {
+      this.ctx = this.annotationCanvas.savedCtx;
+      delete this.annotationCanvas.savedCtx;
+      delete this.annotationCanvas;
+    }
+
+    this.restore();
+  }
+
+  paintImageMaskXObject(img) {
+    if (!this.contentVisible) {
+      return;
+    }
+
+    const ctx = this.ctx;
+    const width = img.width,
+          height = img.height;
+    const glyph = this.processingType3;
+
+    if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
+      if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
+        glyph.compiled = compileType3Glyph({
+          data: img.data,
+          width,
+          height
+        });
+      } else {
+        glyph.compiled = null;
+      }
+    }
+
+    if (glyph?.compiled) {
+      glyph.compiled(ctx);
+      return;
+    }
+
+    const mask = this._createMaskCanvas(img);
+
+    const maskCanvas = mask.canvas;
+    ctx.save();
+    ctx.setTransform(1, 0, 0, 1, 0, 0);
+    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);
+    ctx.restore();
+    this.compose();
+  }
+
+  paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) {
+    if (!this.contentVisible) {
+